# README
Zed parser
This directory contains the Zed parser implemented in PEG.
There is a single PEG input file that works with pigeon to generate the Go parser.
Build
To build the parser, just run make:
make
This will ensure the required libraries are installed and then produce the Go parser (parser.go).
Testing
The zed dev compile command can be used for easily testing the output of the Zed parser.
Development
During development, the easiest way to run the parser
is with this make
command at the root of this repository:
make peg
This will ensure the PEG-generated Go parser is up to date with parser.peg
To update the parser and launch the zc -repl
, your can run make peg-run
.
# Functions
AllowInvalidUTF8 creates an Option to allow invalid UTF-8 bytes.
ConcatSource concatenates the source files in filenames followed by src, returning a SourceSet.
Debug creates an Option to set the debug flag to b.
Entrypoint creates an Option to set the rule name to use as entrypoint.
GlobalStore creates an Option to set a key to a certain value in the globalStore.
InitState creates an Option to set a key to a certain value in the global "state" store.
MaxExpressions creates an Option to stop parsing after the provided number of expressions have been parsed, if the value is 0 then the parser will parse for as many steps as needed (possibly an infinite number).
Memoize creates an Option to set the memoize flag to b.
Parse parses the data from b using filename as information in the error messages.
ParseFile parses the file identified by filename.
ParseReader parses the data from r using filename as information in the error messages.
ParseZed calls ConcatSource followed by Parse.
Recover creates an Option to set the recover flag to b.
Statistics adds a user provided Stats struct to the parser to allow the user to process the results after the parsing has finished.
# Structs
No description provided by the author
No description provided by the author
SourceInfo holds source file offsets.
No description provided by the author
Stats stores some statistics, gathered during parsing.
# Interfaces
Cloner is implemented by any value that has a Clone method, which returns a copy of the value.