Awesome Go

peg

CategorySoftware Packages
SubcategoryOther Software
Stars0

Peg, Parsing Expression Grammar, is an implementation of a Packrat parser generator

About peg

PEG, an Implementation of a Packrat Parsing Expression Grammar in Go

Go Reference Go Report Card

A Parsing Expression Grammar ( hence peg) is a way to create grammars similar in principle to regular expressions but which allow better code integration. Specifically, peg is an implementation of the Packrat parser generator originally implemented as peg/leg by Ian Piumarta in C. A Packrat parser is a "descent recursive parser" capable of backtracking and negative look-ahead assertions which are problematic for regular expression engines.

Installation

go install github.com/pointlander/peg@latest

Usage

Build executable

go generate && go build

Help

./peg -h

Example

This creates the file peg.peg.go:

./peg -inline -switch peg.peg

PEG file syntax

See peg-file-syntax.md

Development

Requirements

Generate

Bootstrap and generate grammar *.peg.go. This commands should initially be executed once before other commands.

go generate

Build

go build

(go generate required once beforehand)

Set version

Use the version from the tag if the current commit has a tag. If not use the current commit hash.

go build -ldflags "-X main.Version=$(git describe --tags --exact-match 2>/dev/null || git rev-parse --short HEAD)"

Additionally, since Go 1.18 the go command embeds version control information. Read the information:

go version -m peg

Test

go test -short ./...

(go generate required once beforehand)

Lint

golangci-lint run

(go generate required once beforehand)

Format

golangci-lint fmt

Benchmark

go test -benchmem -bench .

(go generate required once beforehand)

Author

Andrew Snodgrass

Frequently Asked Questions

What is peg?

peg is a Software Packages library for the Go programming language. Peg, Parsing Expression Grammar, is an implementation of a Packrat parser generator

How do I install peg?

Install peg with the Go module system using `go get pointlander/peg`. Check the repository for the current installation instructions.

What category does peg belong to?

peg is listed under Software Packages, specifically Other Software.

← Back to Other Software