[Module]
Name=MarpaX::Grammar::Parser
Changelog.Creator=Module::Metadata::Changes V 2.12
Changelog.Parser=Config::IniFiles V 2.94

[V 2.01]
Date=2016-06-17T11:34:00
Comments= <<EOT
- Adopt workflow techniques suggested by Kent Fredric. This means a cleaner workdir and a
much more reliable dist. The latter now has auto-generated MANIFEST and META.* files.
See http://savage.net.au/Ron/html/My.Workflow.for.Building.Distros.html for details.
- Remove 'use utf8' within modules.
- Remove 'use open qw(:std :utf8)' within modules.
- Switch from File::Slurp to File::Slurper, since it's my new standard, and because CPAN
testers report the former gets, for recent Perls, a deprecated warning about using sysread()
on a utf8 file handle.
- Patch Parser.pm to untaint both the BNF and the input stream.
- Rework because some tests fail with recent Perls.
EOT

[V 2.00]
Date=2015-03-17T08:38:00
Comments= <<EOT
- Replace Data::TreeDumper with Data::RenderAsTree.
- Remove the feature which allowed the user to output the user's BNF rules as a hashref. I see
little value in this feature.
- Remove various output files from share/. E.g. trees with attributes included. They can easily
be generated using the bind_attributes option to bnf2tree.pl.
- Remove share/*.treedumper. Now that Data::RenderAsTree is used, that file is obsolete.
- Add lib/MarpaX/Grammar/Parser/Filer.pm. It's used by the following.
- Add scripts/generate.trees.pl, which converts all share/*.bnf files into their corresponding
share/*.(cooked,raw).tree versions.
EOT

[V 1.09]
Date=2015-02-06T09:21:00
Comments= <<EOT
- Tree::DAG_Node V 1.24 changed the output indentation slightly, and the expected output was
hard-coded in t/basic.t, so that was fixed.
- Update Makefile.PL to require V 1.24 of Tree::DAG_Node.
EOT

[V 1.08]
Date=2014-10-25T17:20:00
Comments= <<EOT
- Bump pre-req version of Tree::DAG_Node to 1.23, because of the new output format generated by
tree2string().
EOT

[V 1.07]
Date=2014-10-22T16:13:00
Comments= <<EOT
- Bug fix: Clean up search for first rule (in case there is no :start rule).
- Clean up visual breaks, which should have all be 50 chars long.
EOT

[V 1.06]
Date=2014-10-22T13:37:00
Comments= <<EOT
- Oops. Forgot to run homegrown validate.build.make.pl to cross-check pre-reqs.
Added List::AllUtils and Types::Standard.
EOT

[V 1.05]
Date=2014-10-19T17:45:00
Comments= <<EOT
- Update BNF from Marpa (share/metag.bnf).
- Update BNF from MarpaX::Languages::C::AST (share/c.ast.bnf).
- Update BNF from MarpaX::Demo::StringParser.
- Add a feature to convert the cooked tree into a hashref. See output_hashref in the docs.
Sample output is in share/*.hashref.
- Update the code to correspond to the tree of grammar generated by Marpa, which has changed
slightly since the last version of this module.
- Reformat this file so line lengths are 100 chars max.
- Update the docs generally.
- Ship share/metag.cooked.tree, share/metag.hashref and share/metag.raw.tree.
- Ship share/stringparser.hashref.
EOT

[V 1.04]
Date=2014-10-06T15:32:00
Comments= <<EOT
- Bump the required version of Marpa::R2 from V 2.066000 to V 2.096000. This is necessary since
the forgiving and latm tokens were introduced after V 2.066000, and I was starting to get
CPAN tester failures.
EOT

[V 1.03]
Date=2014-09-19T11:40:00
Comments= <<EOT
- Handle new Marpa output (from when it dumps its own grammar).
- Update Build.PL and Makefile.PL about this module being on github.
- Re-generate share/*.[cooked,raw].*.
EOT

[V 1.02]
Date=2014-09-09T09:57:00
Comments= <<EOT
- Remove redundant Algorithm::Diff from t/runner.t.
- Switch from Perl6::Slurp to File::Slurp.
- Update copy of Marpa's metag.bnf.
- Add share/json.3.bnf.
- Re-generate share/*.[cooked,raw].*.
EOT

[V 1.01]
Date=2013-08-16T14:53:00
Comments= <<EOT
- Explicitly test for the files marpa_bnf_file and user_bnf_file. Die if missing.
- Patch Data::TreeDumper::Renderer::Marpa. The first 2 daughters of each node are the start and
end offsets of the token within the input stream. Their attribute type should be 'Marpa',
not 'Grammar'.
- Remove the 'level' attribute from the nodes in the raw tree. It didn't offer any value.
- Add methods clean_name(), compress_tree(), compress_branch(), cooked_tree() and
cooked_tree_file().
- Change the no_attributes option to bind_attributes. This reverses the sense of the option it's
true, but at least makes it positive logic (as it should have been all along). This was
bugging me, both here and (potentially) in the next module in the chain,
Marpa::Grammar::GraphViz2.
- Expand the docs to cover all the features.
EOT

[V 1.00]
Date=2013-08-06T15:47:00
Comments=- Original version
