Beispiel #1
0
    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);
    }
Beispiel #2
0
        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);
        }
Beispiel #3
0
		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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
 public void InvalidGrammarShouldFail() =>
 Assert.That(() => grammar.Build(source, "unknown"), Throws.InstanceOf <ArgumentException>());