[Module]
Name=MarpaX::Demo::StringParser
Changelog.Creator=Module::Metadata::Changes V 2.05
Changelog.Parser=Config::IniFiles V 2.83

[V 2.02]
Date=2014-10-17T09:35:00
Comments= <<EOT
- Add explicit start rule to BNF, although Marpa allows this to be optional.
- Expand the DASH definition of a graph to include starting or ending graphs with edges, or
using contiguous edges. Explain these are not accepted by Graphviz, but the default renderer
compensates, to keep Graphviz happy.
- Bump required version of Tree::DAG_Node to 1.23, because of the latter's recent change in
output format, as emitted by tree2string().
EOT

[V 2.01]
Date=2014-10-11T12:02:00
Comments= <<EOT
- Validate event names differently.
- Simplify the code in the main loop, _process().
- Fix data/graph.04.dash.
EOT

[V 2.00]
Date=2014-10-09T17:39:00
Comments= <<EOT
- Re-write the grammar for DASH (a wrapper around Graphviz's DOT), and also re-write the
non-Marpa parsers for the strings with internal spaces.
- Move the renderer from Graph::Easy::Marpa::Renderer::GraphViz2 into this module, and call it
MarpaX::Demo::StringParser::Renderer.
- Remove MarpaX::Demo::StringParser::Actions, since this new grammar relies exclusively on
Marpa's event handling.
- Delete Graph::Easy::Marpa from CPAN.
- Re-write the docs, including a long explanation of the DASH language.
- Change some of the examples.
- Update the scripts, and add scripts/render.*.
EOT

[V 1.10]
Date=2014-09-19T16:38:00
Comments= <<EOT
- Clean up bareword file handles.
- Re-generate the demo files.
- Rename data/*.dot to data/*.gv, to match other Graphviz-oriented modules.
This required patching my own ge2svg.pl, which is not shipped with any package.
- Switch from Perl6::Slurp to File::Slurp, to reduce the # of external module I use in all my modules.
EOT

[V 1.09]
Date=2014-09-19T09:15:00
Comments=- Fix typo in repo in Build.PL.

[V 1.08]
Date=2014-09-17T16:58:00
Comments= <<EOT
- Update Build.PL and Makefile.PL re putting this package on github.
- Replace the deprecated 'action_object' parameter to Marpa::R2::Scanless::G with the 'semantics_package'
parameter to Marpa::R2::Scanless::R.
EOT

[V 1.07]
Date=2014-02-22T17:44:00
Comments= <<EOT
- Add 'lexeme default = latm => 1' to the grammar.
- Make V 2.082 the minimum version for Marpa::R2.
EOT

[V 1.06]
Date=2014-01-14T15:58:00
Comments= <<EOT
- Fix a typo in one of the samples in the docs:
Old: -> {label: Start} -> {color: red} [node.1] {color: green] -> [node.2]
New: -> {label: Start} -> {color: red} [node.1] {color: green} -> [node.2]
- Add data/graph.04.ge, which is just a combination of samples from the docs.
- Add installation instructions to the docs.
- Remove 'use open qw(:std :utf8)' and 'use charnames qw(:full :short)' from all modules.
'use open' is global (i.e. applies to /all/ modules), and I don't use any charnames.
It does mean you have to use 'use open qw(:std :utf8)' in any scripts calling this code,
if that's what you want to do.
- Switch from bareword file handles to lexically-named file handles. This stop these types of msgs:
Use of bareword filehandle in open at lib/MarpaX/Demo/StringParser.pm line 472.
EOT

[V 1.05]
Date=2013-07-29T14:42:00
Comments= <<EOT
- Simplify the code in Actions.pm.
- Add Marpa's homepage to the FAQ.
- Fix the description in the FAQ where it described the grammar parsed as a version of DOT when it's actually
a version of Graph::Easy::Marpa.
- Add data/edge.06.* and html/edge.06.svg to demonstrate juxtaposition of edges without spaces.
- Patch MarpaX::Demo::StringParser::Utils to call get_files() from MarpaX::Demo::StringParser::Filer, now
that that method has been shifted out of *::Utils.
- Clean up the docs in various ways.
EOT

[V 1.04]
Date=2013-07-26T09:47:00
Comments= <<EOT
- Remove hard-coded temp dir name from t/ge2tokens.t, which was left over from testing the testing code.
- Move sub edge() from Actions.pm into StringParser.pm, because it's never called by Marpa as an action.
It was left in Actions.pm to simplify my switching back-and-forth between actions and pauses as I
studied the behaviour of these 2 mechanisms.
- Document that my usage of pauses is more of an intermediate/advanced usage rather than something for
beginners.
- Re-write docs where lexing and parsing is discussed, vis-a-vis the Marpa view of processing.
This re-write also applies to the accompanying article mentioned in the docs.
- Expand docs describing the methods. Some methods were not included in previous documentation.
EOT

[V 1.03]
Date=2013-07-25T12:10:00
Comments= <<EOT
- Remove Regexp::Common from being 'use'd by MarpaX::Demo::StringParser. It was not used.
- Add File::Temp to the pre-reqs.
EOT

[V 1.02]
Date=2013-07-24T13:05:00
Comments= <<EOT
- Split Utils into Filer and Utils. The former does not use the config file.
The test code used Utils, which loaded Config, which looked for a config file only installed on
the authors PC.
- Fix typo in die in sub process():
Was: Unexpected lexeme '$event_name' without a pause.
Is: Unexpected lexeme '$lexeme_name' with a pause.
EOT

[V 1.01]
Date=2013-07-23T17:52:00
Comments=- Simplify the grammar and hence the code.

[V 1.00]
Date=2013-07-15T09:22:00
Comments=- Original version
