static Grammar GetIncludesGrammar() { if (grammarForIncludes == null) { var fileContent = LoadFromResource(DefaultNamespaceName, "Grammar", "IncludesGrammar1.ebnf"); EbnfStyle style = (EbnfStyle)( (uint)EbnfStyle.Iso14977 //& ~(uint) EbnfStyle.WhitespaceSeparator | (uint)EbnfStyle.EscapeTerminalStrings); EbnfGrammar grammar; try { grammar = new EbnfGrammar(style); grammarForIncludes = grammar.Build(fileContent, "file"); } catch (Exception ex) { Trace.WriteLine(ex.ToString()); /* * System.ArgumentException: the topParser specified is not found in this ebnf * at Eto.Parse.Grammars.EbnfGrammar.Build (System.String bnf, System.String startParserName) [0x00048] in <filename unknown>:0 * at Globals.Main (System.String[] args) [0x0002b] in /var/calculate/remote/distfiles/egit-src/SqlParser-on-EtoParse.git/test1/Program.cs:20 */ throw; } } return(grammarForIncludes); }
public void TestSqlParser() { const string sqlStatement = @"select * from MyTable where MyColumn = hello"; var ebnfGrammar = new EbnfGrammar(EbnfStyle.W3c | EbnfStyle.SquareBracketAsOptional | EbnfStyle.WhitespaceSeparator); var xmlGrammar = ebnfGrammar.Build(sqlW3cEbnf, "command"); var match = xmlGrammar.Match(sqlStatement); Assert.IsTrue(match.Success, match.ErrorMessage); }
public void TestEbnf() { var ebnfGrammar = new EbnfGrammar(EbnfStyle.Iso14977 | EbnfStyle.UseCommentRuleWithSeparator); var myEbnf = ebnfGrammar.Build(ebnf, "syntax"); SetEbnfRules(myEbnf); var match = myEbnf.Match(ebnf); Assert.IsTrue(match.Success, match.ErrorMessage); }
public void TestXmlParser() { const string xmlDocument = @"<?xml version='1.0' encoding='utf-8' ?> <body class=""blah""> <div>some text</div> <!-- some comment --> </body>"; var ebnfGrammar = new EbnfGrammar(EbnfStyle.W3c & ~EbnfStyle.UseCommentRuleWithSeparator); var xmlGrammar = ebnfGrammar.Build(xmlW3cEbnf, "document"); var match = xmlGrammar.Match(xmlDocument); Assert.True(match.Success, match.ErrorMessage); }
public void TestXmlParser() { const string xmlDocument = @"<?xml version='1.0' encoding='utf-8' ?> <body class=""blah""> <div>some text</div> <!-- some comment --> </body>"; var ebnfGrammar = new EbnfGrammar(EbnfStyle.W3c & ~EbnfStyle.UseCommentRuleWithSeparator); var xmlGrammar = ebnfGrammar.Build(xmlW3cEbnf, "document"); // define the terminals in the grammar xmlGrammar.SetTerminals("Letter", "BaseChar", "Ideographic", "CombiningChar", "Digit", "Extender", "PubidChar", "Char", "S", "EnumeratedType", "NameChar", "Eq"); var match = xmlGrammar.Match(xmlDocument); Assert.IsTrue(match.Success, match.ErrorMessage); }
static void Main(string[] args) { var fileContent = LoadFromResource(nameof(rus_gramm_norm), "Grammar", "syntax2.ebnf"); EbnfStyle style = (EbnfStyle)( (uint)EbnfStyle.Iso14977 //& ~(uint) EbnfStyle.WhitespaceSeparator | (uint)EbnfStyle.EscapeTerminalStrings); EbnfGrammar grammar; Grammar parser; try { grammar = new EbnfGrammar(style); parser = grammar.Build(fileContent, nameOfTheStartingRule); } catch (Exception ex) { Trace.WriteLine(ex.ToString()); /* * System.ArgumentException: the topParser specified is not found in this ebnf * at Eto.Parse.Grammars.EbnfGrammar.Build (System.String bnf, System.String startParserName) [0x00048] in <filename unknown>:0 * at Globals.Main (System.String[] args) [0x0002b] in /var/calculate/remote/distfiles/egit-src/SqlParser-on-EtoParse.git/test1/Program.cs:20 */ throw; } var originalContent = LoadFromResource(nameof(rus_gramm_norm), "Grammar", "syntax1.ebnf"); var match = parser.Match(originalContent); if (match.Success == false) { Console.Out.WriteLine("No luck!"); } else { DumpAllMatches(match, nameOfTheStartingRule); } }
public void InvalidGrammarShouldFail() => Assert.That(() => grammar.Build(source, "unknown"), Throws.InstanceOf <ArgumentException>());