All Projects → gpakosz → peg

gpakosz / peg

Licence: other
Import of Ian Piumarta's peg/leg recursive-descent parser generators for C

Programming Languages

c
50402 projects - #5 most used programming language
Roff
2310 projects

Projects that are alternatives of or similar to peg

Cpp Peglib
A single file C++ header-only PEG (Parsing Expression Grammars) library
Stars: ✭ 435 (+960.98%)
Mutual labels:  parser-generator, peg
Rust Peg
Parsing Expression Grammar (PEG) parser generator for Rust
Stars: ✭ 836 (+1939.02%)
Mutual labels:  parser-generator, peg
Pegjs
PEG.js: Parser generator for JavaScript
Stars: ✭ 4,176 (+10085.37%)
Mutual labels:  parser-generator, peg
chumsky
A parser library for humans with powerful error recovery.
Stars: ✭ 740 (+1704.88%)
Mutual labels:  peg, recursive-descent-parser
pe
Fastest general-purpose parsing library for Python with a familiar API
Stars: ✭ 21 (-48.78%)
Mutual labels:  parser-generator, peg
Lug
Parsing expression grammar (PEG) embedded domain specific language and parsing machine for C++17
Stars: ✭ 44 (+7.32%)
Mutual labels:  parser-generator, peg
Pigeon
Command pigeon generates parsers in Go from a PEG grammar.
Stars: ✭ 603 (+1370.73%)
Mutual labels:  parser-generator, peg
kiuatan
A parser library for Pony.
Stars: ✭ 15 (-63.41%)
Mutual labels:  parser-generator, peg
Npeg
PEGs for Nim, another take
Stars: ✭ 163 (+297.56%)
Mutual labels:  parser-generator, peg
Ts Pegjs
Plugin for pegjs to generate TypeScript parsers.
Stars: ✭ 76 (+85.37%)
Mutual labels:  parser-generator, peg
Pegparser
💡 Build your own programming language! A C++17 PEG parser generator supporting parser combination, memoization, left-recursion and context-dependent grammars.
Stars: ✭ 164 (+300%)
Mutual labels:  parser-generator, peg
PackCC
PackCC is a packrat parser generator for C.
Stars: ✭ 22 (-46.34%)
Mutual labels:  parser-generator, recursive-descent
kison
A LALR(1)/LL(1)/LL(K) parser generator for javascript/typescript
Stars: ✭ 40 (-2.44%)
Mutual labels:  parser-generator
filter spirit
Advanced item filter generator for Path of Exile that uses it's own DSL and online item price APIs
Stars: ✭ 28 (-31.71%)
Mutual labels:  parser-generator
pegnet
pegnet.org
Stars: ✭ 41 (+0%)
Mutual labels:  peg
abnf parsec
ABNF in, parser out
Stars: ✭ 42 (+2.44%)
Mutual labels:  parser-generator
lemon-grove
The Lemon parser generator and sibling projects.
Stars: ✭ 27 (-34.15%)
Mutual labels:  parser-generator
parsesig
A Telegram bot that forwards messages from one private/public channel to another after formatting
Stars: ✭ 40 (-2.44%)
Mutual labels:  parser-generator
pyrser
A PEG Parsing Tool
Stars: ✭ 32 (-21.95%)
Mutual labels:  peg
lilt
LILT: noun, A characteristic rising and falling of the voice when speaking; a pleasant gentle accent.
Stars: ✭ 18 (-56.1%)
Mutual labels:  parser-generator

peg/leg — recursive-descent parser generators for C

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.

References

Version history

  • 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 to YY_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 to yytext (thanks to Grégory Pakosz). Hexadecimal character escapes are supported by leg (thanks to Hugo Etchegoyen).
  • 0.1.12 (zip, tar.gz) — 2013-07-20
    Use BSD-licensed getopt() 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.
    Rename getline -> nextline to avoid C namespace conflict.
  • 0.1.3 (zip, tar.gz) — 2007-09-13
    Allow matched braces inside leg 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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].