Change Log

Not Yet Released

Code change: <https://github.com/soasme/PeppaPEG/compare/v1.16.0..HEAD>.

1.16.0 (4 Sep, 2021)

Code change: <https://github.com/soasme/PeppaPEG/compare/v1.15.0..v1.16.0>.

  • [API Change]: Rename Shell subcommand peppa ast to peppa parse. #123.

  • [Performance]: Optimize the code to reduce errmsg string printf calls. #122.

  • [Performance]: Optimize the code to reduce frame malloc by keeping unused frame. #121.

  • [Performance]: Optimize the code to reduce backref malloc in sequence matching. #120.

  • [Performance]: Optimize the code to reduce strlen call in literal matching. #119.

  • [Enhancement]: Shell support reading files from a glob pattern. #118.

  • [Example]: Added Golang grammar written in Peppa PEG Specification. #117.

  • [Bug Fix]: Non-terminal choice should lift the only child. #116.

  • [API Change]: Rename Cut operator to ~. #115 <https://github.com/soasme/PeppaPEG/pull/115>.

  • [Feature]: Support Left Recursion. #112, #113, #114.

1.15.0 (22 Aug, 2021)

Code change: <https://github.com/soasme/PeppaPEG/compare/v1.14.0..v1.15.0>.

  • [Documentation]: Upgrade Peppa PEG Specification and fixed various bugs. #111.

  • [Tests]: Introduced JSON-based TINOUT-style test specs. #103 #105 #106.

  • [Feature]: New shell command: peppa ast. #102 #104.

  • [Feature]: Install a command-line utility peppa if -DENABLE_CLI=On. #101.

  • [Enhancement]: Support installing shared library to the system via make install. #100.

  • [Feature]: Extend range category to support Unicode Property & General Category. #99.

  • [Example]: Provide an example of Peppa definition of Toml v1.0 specification. #98 #107 #108 #109.

  • [Performance]: Optimize the code to reduce the call frames in runtime. #97.

  • [Feature]: Upgrade insensitive to support both literal and back reference. #96.

  • [Feature]: Support back reference in Peppa specification. #95.

  • [Enhancement]: Improved the error message. #93 #94.

1.14.0 (8 Aug, 2021)

Code change: <https://github.com/soasme/PeppaPEG/compare/v1.13.0..v1.14.0>.

  • [Enhancement]: Support an additional callback for catch_err(). This is internal. #92.

  • [Bug Fix]: Fix wrong lineno:offset from the error output. #91.

  • [Feature]: New PEG expression: @cut. #90.

  • [API Change]: P4_JsonifySourceAst now doesn’t require grammar in the parameters. #89.

  • [Enhancement]: Wrap errors with catch_err / catch_oom in the .c implementation. #88

  • [Bug Fix]: Error report now can display correct lineno:offset information. #87.

  • [API Change]: P4_RuleID is now deprecated. Please use string (char*) for finding a rule. #84 #86.

  • [API Change]: struct P4_Grammar, struct P4_Expression, struct P4_Frame are now private structures. However, you can still access P4_Grammar, P4_Expression as typedefs.

  • [Example]: Added a example TOML v1.0 parser. #81.

  • [Feature]: New escape type: xXX. This allows terser form for ASCII chars. #80.

  • [API Change]: u{XXXX} is now deprecated. Please use uXXXX or UXXXXXXXX. #79.

  • [API Change]: P4_Token is now renamed to P4_Node. #78.

1.13.0 (6 May, 2021)

Code change: <https://github.com/soasme/PeppaPEG/compare/v1.12.0..v1.13.0>.

  • [Enhancement]: Explicitly specify the expected rule & the position where error occurs. #70 #71 #72 #74 #75

1.12.0 (17 Apr, 2021)

Code change: <https://github.com/soasme/PeppaPEG/compare/v1.11.0..v1.12.0>.

  • [Feature]: Support Comment for PEG Grammar. #69

  • [Feature]: Support Unicode Character Categories for P4_Range. #65, #67

1.11.0 (8 Apr, 2021)

Code change: <https://github.com/soasme/PeppaPEG/compare/v1.10.0..v1.11.0>.

  • [Feature]: Allow setting arbitrary number of @spaced rules. #66

  • [Feature]: Add P4_AcquireSourceAst. #64

  • [Example]: Add tutjson page to docs. #63

  • [Feature]: Add P4_ResetSource. #62

  • [Feature]: Add P4_InspectSourceAst. #61

  • [Feature]: Customize malloc/free/realloc. #60

1.10.0 (8 Apr, 2021)

Code change: <https://github.com/soasme/PeppaPEG/compare/v1.9.0..v1.10.0>.

  • [Feature]: Support . (maps to [u{1}-u{10ffff}]). #59

  • [Example]: Refactor the JSON example to use PEG API. #58

  • [Feature]: Jsonify token AST using grammar rule name. #57

  • [Feature]: Added function: P4_LoadGrammar. #56

1.9.0 (1 Apr, 2021)

Code change: <https://github.com/soasme/PeppaPEG/compare/v1.8.0..v1.9.0>.

  • [Test]: Enable Valgrind for gcc check. #55

  • [Feature]: Support specifying a name for a grammar rule. #53

  • [Feature]: Added Lineno and Col Offset for P4_Tokens. #52

  • [Feature]: Support parsing a subset of source input (P4_SetSourceSlice). #51

  • [Feature]: Added a new flag: P4_FLAG_NON_TERMINAL. #50

1.8.0 (25 Mar, 2021)

Code change: <https://github.com/soasme/PeppaPEG/compare/v1.7.0..v1.8.0>.

  • [Bugfix]: Support non-ASCII case insensitive literal match. #48 #49

  • [Feature]: Allow user setting Userdata for P4_Tokens. #47

  • [Feature]: Print source ast in JSON format. #46

1.7.0 (10 Mar, 2021)

Code change: <https://github.com/soasme/PeppaPEG/compare/v1.6.0..v1.7.0>.

  • [Enhancement]: Provided P4_GetErrorString. #45

  • [Feature]: Added Join. #44

  • [Example]: Wrote an Calculator example in Peppa PEG. #43

  • [Feature]: Added StartOfInput and EndOfInput. #42

  • [Feature]: Added parameter stride for Range. #41

1.6.0 (4 Mar, 2021)

Code change: <https://github.com/soasme/PeppaPEG/compare/v1.5.0..v1.6.0>.

  • [Enhancement]: Replaced token->expr with token->rule_id. #40

  • [Bugfix]: Insert no whitespace while spacing is ongoing. #39

  • [Example]: JSON example parser passes full JSON test suite. #37

  • [Enhancement]: Support Emoji 🐷 #36

  • [Bugfix]: Return NULL if CreateExpression receives invalid parameters. #35

  • [Test]: Build docs & tests using GitHub Actions. #32, #34

1.5.0 (28 Feb, 2021)

Code change: <https://github.com/soasme/PeppaPEG/compare/v1.4.0..v1.5.0>.

1.4.0 (24 Feb, 2021)

Code change: <https://github.com/soasme/PeppaPEG/compare/v1.3.0..v1.4.0>.

  • Feature: Added P4_ReplaceGrammarRule and P4_SetGrammarCallback. #28.

  • Added some documentation for data structures.

  • Example: Make JSON example RFC7159 compatible. #25.

  • Bugfix: Replace int with size_t. #22, #23.

  • Experiment: Add Python Binding. #20, #24.

1.3.0 (19 Feb, 2021)

Code change: <https://github.com/soasme/PeppaPEG/compare/v1.2.0..v1.3.0>.

  • Feature: Added P4_GetRecursionLimit and P4_SetRecursionLimit. (#19).

  • Performance Optimization: the performance is now 10x faster than 1.2.0. (#15, #16, #17, #18.

  • Bugfix: Memory leak fixed. #14.

  • Example: Write a JSON Parser using Peppa PEG. #13.

  • Example: Write a Mustache Parser using Peppa PEG. #12.

  • Bugfix: Raise P4_AdvanceError if repeated expression consumes no input. #11.

1.2.0 (15 Feb, 2021)

  • Add New Expression Kind: P4_BackReference. (#10)

  • Change the return value to P4_Error for P4_AddGrammarRule. (#9)

  • Added P4_GetSourcePosition. (#8)

1.1.0 (10 Feb, 2021)

  • C89 compliant. (#7)

  • Add PUBLIC(P4_Error) P4_SetGrammarRuleFlag. (#6)

  • Example: Write an INI Parser using Peppa PEG. (#5)

  • Has/Get error and error message (#4)

  • Turn Get/Set Whitespaces as PRIVATE functions. (#3)

  • AddSequenceMembers/AddChoicMembers functions. (#2)

  • Add ExpressionFlag Getter/Setter Functions. (#1)

1.0.0 (08 Feb, 2021)

Kia Ora! This is the very fist release of Peppa PEG! It was strongly influenced by [Pest](https://pest.rs).