protected internal virtual void PerformGrammarAnalysis(CodeGenerator generator, Grammar grammar) { // Build NFAs from the grammar AST grammar.BuildNFA(); // Create the DFA predictors for each decision grammar.CreateLookaheadDFAs(); }
private void checkRule(Grammar g, string rule, string expecting) { g.BuildNFA(); State startState = g.GetRuleStartState(rule); FASerializer serializer = new FASerializer(g); string result = serializer.Serialize(startState); //System.out.print(result); Assert.AreEqual(expecting, result); }
public void TestFiniteCommonLeftPrefixes() { Grammar g = new Grammar( "lexer grammar t;\n" + "A : 'a' 'b' | 'a' 'c' | 'd' 'e' ;" ); g.BuildNFA(); g.CreateLookaheadDFAs( false ); DFA dfa = g.GetLookaheadDFA( 1 ); checkPrediction( dfa, "ab", 1 ); checkPrediction( dfa, "ac", 2 ); checkPrediction( dfa, "de", 3 ); checkPrediction( dfa, "q", NFA.INVALID_ALT_NUMBER ); }
public void TestSets() { Grammar g = new Grammar( "lexer grammar t;\n" + "A : {;}'a'..'z' | ';' | '0'..'9' ;" ); g.BuildNFA(); g.CreateLookaheadDFAs( false ); DFA dfa = g.GetLookaheadDFA( 1 ); checkPrediction( dfa, "a", 1 ); checkPrediction( dfa, "q", 1 ); checkPrediction( dfa, "z", 1 ); checkPrediction( dfa, ";", 2 ); checkPrediction( dfa, "9", 3 ); }
public void TestFiniteCommonLeftPrefixes() /*throws Exception*/ { Grammar g = new Grammar( "lexer grammar t;\n" + "A : 'a' 'b' | 'a' 'c' | 'd' 'e' ;"); g.BuildNFA(); g.CreateLookaheadDFAs(false); DFA dfa = g.GetLookaheadDFA(1); checkPrediction(dfa, "ab", 1); checkPrediction(dfa, "ac", 2); checkPrediction(dfa, "de", 3); checkPrediction(dfa, "q", NFA.INVALID_ALT_NUMBER); }
public void TestSimpleAltCharTest() /*throws Exception*/ { Grammar g = new Grammar( "lexer grammar t;\n" + "A : {;}'a' | 'b' | 'c';"); g.BuildNFA(); g.CreateLookaheadDFAs(false); DFA dfa = g.GetLookaheadDFA(1); checkPrediction(dfa, "a", 1); checkPrediction(dfa, "b", 2); checkPrediction(dfa, "c", 3); checkPrediction(dfa, "d", NFA.INVALID_ALT_NUMBER); }
public void TestSimpleLoops() /*throws Exception*/ { Grammar g = new Grammar( "lexer grammar t;\n" + "A : (DIGIT)+ '.' DIGIT | (DIGIT)+ ;\n" + "fragment DIGIT : '0'..'9' ;\n"); g.BuildNFA(); g.CreateLookaheadDFAs(false); DFA dfa = g.GetLookaheadDFA(3); checkPrediction(dfa, "32", 2); checkPrediction(dfa, "999.2", 1); checkPrediction(dfa, ".2", NFA.INVALID_ALT_NUMBER); }
public void TestSets() /*throws Exception*/ { Grammar g = new Grammar( "lexer grammar t;\n" + "A : {;}'a'..'z' | ';' | '0'..'9' ;"); g.BuildNFA(); g.CreateLookaheadDFAs(false); DFA dfa = g.GetLookaheadDFA(1); checkPrediction(dfa, "a", 1); checkPrediction(dfa, "q", 1); checkPrediction(dfa, "z", 1); checkPrediction(dfa, ";", 2); checkPrediction(dfa, "9", 3); }
private void checkRule( Grammar g, string rule, string expecting ) { g.BuildNFA(); State startState = g.GetRuleStartState( rule ); FASerializer serializer = new FASerializer( g ); string result = serializer.Serialize( startState ); //System.out.print(result); Assert.AreEqual( expecting, result ); }
protected internal virtual void PerformGrammarAnalysis( CodeGenerator generator, Grammar grammar ) { // Build NFAs from the grammar AST grammar.BuildNFA(); // Create the DFA predictors for each decision grammar.CreateLookaheadDFAs(); }
public void TestSimpleAltCharTest() { Grammar g = new Grammar( "lexer grammar t;\n" + "A : {;}'a' | 'b' | 'c';" ); g.BuildNFA(); g.CreateLookaheadDFAs( false ); DFA dfa = g.GetLookaheadDFA( 1 ); checkPrediction( dfa, "a", 1 ); checkPrediction( dfa, "b", 2 ); checkPrediction( dfa, "c", 3 ); checkPrediction( dfa, "d", NFA.INVALID_ALT_NUMBER ); }
public void TestSimpleLoops() { Grammar g = new Grammar( "lexer grammar t;\n" + "A : (DIGIT)+ '.' DIGIT | (DIGIT)+ ;\n" + "fragment DIGIT : '0'..'9' ;\n" ); g.BuildNFA(); g.CreateLookaheadDFAs( false ); DFA dfa = g.GetLookaheadDFA( 3 ); checkPrediction( dfa, "32", 2 ); checkPrediction( dfa, "999.2", 1 ); checkPrediction( dfa, ".2", NFA.INVALID_ALT_NUMBER ); }