Coder Social home page Coder Social logo

none2lose / peg Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gpakosz/peg

0.0 0.0 0.0 205 KB

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

Home Page: http://piumarta.com/software/peg/

License: Other

Makefile 1.07% Shell 0.08% Batchfile 0.08% Python 1.01% C 73.78% Roff 23.09% Emacs Lisp 0.90%

peg's Introduction

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.20 (zip, tar.gz) — 2019-11-19
    Experimental support for variables and semantic values in ‘inline actions’ executed during recognition (separate from the parser actions that are run after the input is fully recognised).
    Don't print #line directives for headers if -P was given and pathnames on WIN32 have \ changed to / to keep #line directives happy (thanks to Ben Hines for the problem report).
  • 0.1.19 (zip, tar.gz) — 2019-03-06
    Experimental support for re-entrant parsing through yyparsefrom_r().
  • 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.

peg's People

Contributors

gpakosz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.