- Added case insensitive option to string literals
"Str"i
from https://github.com/AboutUs/pegleg - Added the extra features from
leg
topeg
(~{}
,@{}
) - Did a kind of fix for debug dump to properly show literals like
'"]"'
- Added string literals to the alternatives inside actions to properly handle actions with strings containing
"some }"
- Some other still moving changes to improve error messages
- Add 2 new examples that convert peg/leg grammars to naked ones
- Fix the handling of
-
as last character on charset class without quoting[+-]
- ... see commits
peg
and leg
are tools for generating recursive-descent parsers: programs that perform pattern matching on
text. They processes a Parsing Expression Grammar (PEG)[Ford 2004] to produce a program that recognises legal sentences of that grammar.
peg
processes PEGs written using the original syntax described by Ford.
leg
processes PEGs written using slightly different syntax and conventions that are intended to make it an attractive replacement for parsers built with lex
and yacc
.
Unlike lex
and yacc
, peg
and leg
support unlimited backtracking, provide ordered choice as a means for disambiguation, and can combine scanning (lexical analysis) and parsing (syntactic analysis) into a single activity.
peg
is distributed under the MIT license. It will not infect your project with a contagious license disease if you
decide to modify it for your own use. The parser generators that peg
creates are unencumbered and you are free to use and/or
distribute them any way you like.
peg
/leg
is copyright (c) 2007 by Ian Piumarta.
-
peg
/leg
manual page: peg.1.html -
[Ford 2004] Bryan Ford, Parsing Expression Grammars: A Recognition-Based Syntactic Foundation. ACM SIGPLAN Symposium on Principles of Programming Languages (POPL), 2004.
- 0.1.18 (zip, tar.gz) — 2016-07-22
Add-P
option to disable#line
directives.
Emit#line
directives for all actions. - 0.1.17 (zip, tar.gz) — 2016-07-14
Emit#line
directives for header and trailer in the generated source file. - 0.1.16 (zip, tar.gz) — 2016-06-25
Add@{...}
actions that are performed during matching. - 0.1.15 (zip, tar.gz) — 2013-12-17
Calls toYY_FREE
fixed (thanks to Andrew Dunham). - 0.1.14 (zip, tar.gz) — 2013-12-01
Documentation typos fixed (thanks to Giulio Paci). - 0.1.13 (zip, tar.gz) — 2013-08-16
Predicate actions can refer toyytext
(thanks to Grégory Pakosz). Hexadecimal character escapes are supported byleg
(thanks to Hugo Etchegoyen). - 0.1.12 (zip, tar.gz) — 2013-07-20
Use BSD-licensedgetopt()
in Windows build.
Verbose mode handles Variable nodes. - 0.1.11 (zip, tar.gz) — 2013-06-03
Add error actions via"~"
operator.
Support declaration of local variables at the top level of semantic actions.
Dynamically grow data structures to remove artificial limits on rule recursion (thanks to Alex Klinkhamer).
Many small changes to better support C++.
Add build files for Win32 and MacOS (thanks to Fyodor Sheremetyev).
Update manual page to describe new features. - 0.1.10 — missing in upstream
- 0.1.9 (zip, tar.gz) — 2012-04-29
Move global state into a structure to facilitate reentrant and thread-safe parsers (thanks to Dmitry Lipovoi). - 0.1.8 (zip, tar.gz) — 2012-03-29
Allow nested, matched braces within actions. - 0.1.7 (zip, tar.gz) — 2011-11-25
Fix matching of 8-bit chars to allow utf-8 sequences in matching expressions (thanks to Grégory Pakosz). - 0.1.6 (zip, tar.gz) — 2011-11-24
Allow octal escapes in character classes. - 0.1.5 (zip, tar.gz) — 2011-11-24
Remove dwarf sym dirs when cleaning.
Fix size calculation when resizing text buffers.
Backslash can be escaped. - 0.1.4 (zip, tar.gz) — 2009-08-26
Fix match of a single single quote character.
Renamegetline
->nextline
to avoid C namespace conflict. - 0.1.3 (zip, tar.gz) — 2007-09-13
Allow matched braces insideleg
actions.
Handle empty rules.
Handle empty grammars. - 0.1.2 (zip, tar.gz) — 2007-08-31
Grow buffers while (not if) they are too small.
Remove dependencies on grammar files.
Add more basic examples. - 0.1.1 (zip, tar.gz) — 2007-05-15
First public release.