NLT is free, open-source C# lexer and GLR parser suite -- which translates to ability to parse ambiguous grammars. Grammar can be defined directly in code or (preferably) in separate file (lex/yacc-like) for included generator.
If you understand/guess the meaning of grammar in C#:
// scanning
lexer.AddStringRule(")", match => SymbolEnum.RPAREN);
// parsing
prod_builder.AddProduction(SymbolEnum.exp,
SymbolEnum.LPAREN, SymbolEnum.exp, SymbolEnum.RPAREN,
(_1, e, _3) => (AstNode)e);
or grammar in NLT format:
// scanning
/[A-Za-z_][A-Za-z_0-9]*/ -> IDENTIFIER, IdentifierSymbol.Create($text);
// parsing
program -> list:namespace_list
{ new Program(currCoords(), (Namespaces)list) };
you should be able to use it :-).
I am not able to focus on this project except bug fixes.
There is Example project included which serves as tutorial. There is "Grammar file format.html" document in the Generator project.
- https://sourceforge.net/projects/naivelangtools/
- https://www.assembla.com/spaces/naive-language-tools
Please visit https://aboutskila.wordpress.com/ to read news and get up-to-date links.
Irony -- https://irony.codeplex.com/ Coco/R -- http://ssw.jku.at/coco/ GOLD -- http://goldparser.org/
ANTLR -- http://www.antlr.org/ LLLPG -- http://www.codeproject.com/Articles/664785/A-New-Parser-Generator-for-Csharp
Sprache -- https://github.com/sprache/sprache
Above software is mentioned for reference purpose only.
You can support further development of NLT by sharing your knowledge with me or even by writing some code. ANY help is welcome and I wholeheartedly thank you in advance.