diff --git a/alib2algo/test-src/grammar/generate/GrammarGenerateUpToLength.cpp b/alib2algo/test-src/grammar/generate/GrammarGenerateUpToLength.cpp index 36c351885317cbd4e2ffbb0efeca81e0bf952d14..023d3c1a74a5bb28c7852ed203c21cc841c7d9b2 100644 --- a/alib2algo/test-src/grammar/generate/GrammarGenerateUpToLength.cpp +++ b/alib2algo/test-src/grammar/generate/GrammarGenerateUpToLength.cpp @@ -52,20 +52,20 @@ void GrammarGenerateUpToLength::testGenerate2() { grammar::EpsilonFreeCFG < > grammar1(S); grammar1.setNonterminalAlphabet({S, A, B, C, D}); grammar1.setTerminalAlphabet({a, b, c, d}); - grammar1.addRule({S}, {A, D}); - grammar1.addRule({S}, {A}); - grammar1.addRule({S}, {D}); - grammar1.addRule({A}, {a, A, d}); - grammar1.addRule({A}, {a, d}); - grammar1.addRule({A}, {B, C}); - grammar1.addRule({A}, {B}); - grammar1.addRule({A}, {C}); - grammar1.addRule({B}, {b, B, c}); - grammar1.addRule({B}, {b, c}); - grammar1.addRule({C}, {c, C}); - grammar1.addRule({C}, {c}); - grammar1.addRule({D}, {d, D}); - grammar1.addRule({D}, {d}); + grammar1.addRule(S, {A, D}); + grammar1.addRule(S, {A}); + grammar1.addRule(S, {D}); + grammar1.addRule(A, {a, A, d}); + grammar1.addRule(A, {a, d}); + grammar1.addRule(A, {B, C}); + grammar1.addRule(A, {B}); + grammar1.addRule(A, {C}); + grammar1.addRule(B, {b, B, c}); + grammar1.addRule(B, {b, c}); + grammar1.addRule(C, {c, C}); + grammar1.addRule(C, {c}); + grammar1.addRule(D, {d, D}); + grammar1.addRule(D, {d}); grammar1.setGeneratesEpsilon(true); ext::set<string::LinearString < >> strings; @@ -108,19 +108,19 @@ void GrammarGenerateUpToLength::testGenerate3() { grammar::EpsilonFreeCFG < > grammar1(S); grammar1.setNonterminalAlphabet({S, A, B, C, D}); grammar1.setTerminalAlphabet({a, b, c, d}); - grammar1.addRule({S}, {A, D}); - grammar1.addRule({S}, {D}); - grammar1.addRule({A}, {a, A, d}); - grammar1.addRule({A}, {a, d}); - grammar1.addRule({A}, {B, C}); - grammar1.addRule({A}, {B}); - grammar1.addRule({A}, {C}); - grammar1.addRule({B}, {b, B, c}); - grammar1.addRule({B}, {b, c}); - grammar1.addRule({C}, {c, C}); - grammar1.addRule({C}, {c}); - grammar1.addRule({D}, {d, D}); - grammar1.addRule({D}, {d}); + grammar1.addRule(S, {A, D}); + grammar1.addRule(S, {D}); + grammar1.addRule(A, {a, A, d}); + grammar1.addRule(A, {a, d}); + grammar1.addRule(A, {B, C}); + grammar1.addRule(A, {B}); + grammar1.addRule(A, {C}); + grammar1.addRule(B, {b, B, c}); + grammar1.addRule(B, {b, c}); + grammar1.addRule(C, {c, C}); + grammar1.addRule(C, {c}); + grammar1.addRule(D, {d, D}); + grammar1.addRule(D, {d}); ext::set<string::LinearString < >> strings; strings.insert(string::LinearString < >(ext::vector<DefaultSymbolType>{d})); diff --git a/alib2algo/test-src/grammar/simplify/GrammarEpsilonRemoverTest.cpp b/alib2algo/test-src/grammar/simplify/GrammarEpsilonRemoverTest.cpp index cc535a8ac9776b6366e191534c187ff0bce8146c..4a7f343798d2cdb333b0e8973a5f1a6380f6f967 100644 --- a/alib2algo/test-src/grammar/simplify/GrammarEpsilonRemoverTest.cpp +++ b/alib2algo/test-src/grammar/simplify/GrammarEpsilonRemoverTest.cpp @@ -52,35 +52,35 @@ void GrammarEpsilonRemoverTest::testRemoveEpsilonRules2() { grammar::CFG < > grammar1(S); grammar1.setNonterminalAlphabet({S, A, B, C, D}); grammar1.setTerminalAlphabet({a, b, c, d}); - grammar1.addRule({S}, {A, D}); - grammar1.addRule({A}, {a, A, d}); - grammar1.addRule({A}, {B, C}); - grammar1.addRule({B}, {b, B, c}); - grammar1.addRule({B}, {}); - grammar1.addRule({C}, {c, C}); - grammar1.addRule({C}, {}); - grammar1.addRule({D}, {d, D}); - grammar1.addRule({D}, {}); + grammar1.addRule(S, {A, D}); + grammar1.addRule(A, {a, A, d}); + grammar1.addRule(A, {B, C}); + grammar1.addRule(B, {b, B, c}); + grammar1.addRule(B, {}); + grammar1.addRule(C, {c, C}); + grammar1.addRule(C, {}); + grammar1.addRule(D, {d, D}); + grammar1.addRule(D, {}); grammar::EpsilonFreeCFG < > grammar2 = grammar::simplify::EpsilonRemover::remove(grammar1); grammar::EpsilonFreeCFG < > grammar3(S); grammar3.setNonterminalAlphabet({S, A, B, C, D}); grammar3.setTerminalAlphabet({a, b, c, d}); - grammar3.addRule({S}, {A, D}); - grammar3.addRule({S}, {A}); - grammar3.addRule({S}, {D}); - grammar3.addRule({A}, {a, A, d}); - grammar3.addRule({A}, {a, d}); - grammar3.addRule({A}, {B, C}); - grammar3.addRule({A}, {B}); - grammar3.addRule({A}, {C}); - grammar3.addRule({B}, {b, B, c}); - grammar3.addRule({B}, {b, c}); - grammar3.addRule({C}, {c, C}); - grammar3.addRule({C}, {c}); - grammar3.addRule({D}, {d, D}); - grammar3.addRule({D}, {d}); + grammar3.addRule(S, {A, D}); + grammar3.addRule(S, {A}); + grammar3.addRule(S, {D}); + grammar3.addRule(A, {a, A, d}); + grammar3.addRule(A, {a, d}); + grammar3.addRule(A, {B, C}); + grammar3.addRule(A, {B}); + grammar3.addRule(A, {C}); + grammar3.addRule(B, {b, B, c}); + grammar3.addRule(B, {b, c}); + grammar3.addRule(C, {c, C}); + grammar3.addRule(C, {c}); + grammar3.addRule(D, {d, D}); + grammar3.addRule(D, {d}); grammar3.setGeneratesEpsilon(true); CPPUNIT_ASSERT(grammar2 == grammar3); @@ -101,34 +101,34 @@ void GrammarEpsilonRemoverTest::testRemoveEpsilonRules3() { grammar::CFG < > grammar1(S); grammar1.setNonterminalAlphabet({S, A, B, C, D}); grammar1.setTerminalAlphabet({a, b, c, d}); - grammar1.addRule({S}, {A, D}); - grammar1.addRule({A}, {a, A, d}); - grammar1.addRule({A}, {B, C}); - grammar1.addRule({B}, {b, B, c}); - grammar1.addRule({B}, {}); - grammar1.addRule({C}, {c, C}); - grammar1.addRule({C}, {}); - grammar1.addRule({D}, {d, D}); - grammar1.addRule({D}, {d}); + grammar1.addRule(S, {A, D}); + grammar1.addRule(A, {a, A, d}); + grammar1.addRule(A, {B, C}); + grammar1.addRule(B, {b, B, c}); + grammar1.addRule(B, {}); + grammar1.addRule(C, {c, C}); + grammar1.addRule(C, {}); + grammar1.addRule(D, {d, D}); + grammar1.addRule(D, {d}); grammar::EpsilonFreeCFG < > grammar2 = grammar::simplify::EpsilonRemover::remove(grammar1); grammar::EpsilonFreeCFG < > grammar3(S); grammar3.setNonterminalAlphabet({S, A, B, C, D}); grammar3.setTerminalAlphabet({a, b, c, d}); - grammar3.addRule({S}, {A, D}); - grammar3.addRule({S}, {D}); - grammar3.addRule({A}, {a, A, d}); - grammar3.addRule({A}, {a, d}); - grammar3.addRule({A}, {B, C}); - grammar3.addRule({A}, {B}); - grammar3.addRule({A}, {C}); - grammar3.addRule({B}, {b, B, c}); - grammar3.addRule({B}, {b, c}); - grammar3.addRule({C}, {c, C}); - grammar3.addRule({C}, {c}); - grammar3.addRule({D}, {d, D}); - grammar3.addRule({D}, {d}); + grammar3.addRule(S, {A, D}); + grammar3.addRule(S, {D}); + grammar3.addRule(A, {a, A, d}); + grammar3.addRule(A, {a, d}); + grammar3.addRule(A, {B, C}); + grammar3.addRule(A, {B}); + grammar3.addRule(A, {C}); + grammar3.addRule(B, {b, B, c}); + grammar3.addRule(B, {b, c}); + grammar3.addRule(C, {c, C}); + grammar3.addRule(C, {c}); + grammar3.addRule(D, {d, D}); + grammar3.addRule(D, {d}); CPPUNIT_ASSERT(grammar2 == grammar3); } diff --git a/alib2algo/test-src/grammar/simplify/GrammarSimpleRulesRemoverTest.cpp b/alib2algo/test-src/grammar/simplify/GrammarSimpleRulesRemoverTest.cpp index 4b75a48ad783eb85f0936e9c02fa035d43c6799f..6ea9683ca4b52b6f4110e9d77380215c9cd9f77e 100644 --- a/alib2algo/test-src/grammar/simplify/GrammarSimpleRulesRemoverTest.cpp +++ b/alib2algo/test-src/grammar/simplify/GrammarSimpleRulesRemoverTest.cpp @@ -52,33 +52,33 @@ void GrammarSimpleRulesRemoverTest::testRemoveSimpleRulesRules2() { grammar::CFG < > grammar1(S); grammar1.setNonterminalAlphabet({S, A, B, C, D}); grammar1.setTerminalAlphabet({a, b, c, d}); - grammar1.addRule({S}, {A}); - grammar1.addRule({A}, {a, A, d, D}); - grammar1.addRule({A}, {B}); - grammar1.addRule({B}, {b, B, c, C}); - grammar1.addRule({B}, {}); - grammar1.addRule({C}, {c, C}); - grammar1.addRule({C}, {}); - grammar1.addRule({D}, {d, D}); - grammar1.addRule({D}, {}); + grammar1.addRule(S, {A}); + grammar1.addRule(A, {a, A, d, D}); + grammar1.addRule(A, {B}); + grammar1.addRule(B, {b, B, c, C}); + grammar1.addRule(B, {}); + grammar1.addRule(C, {c, C}); + grammar1.addRule(C, {}); + grammar1.addRule(D, {d, D}); + grammar1.addRule(D, {}); grammar::CFG < > grammar2 = grammar::simplify::SimpleRulesRemover::remove(grammar1); grammar::CFG < > grammar3(S); grammar3.setNonterminalAlphabet({S, A, B, C, D}); grammar3.setTerminalAlphabet({a, b, c, d}); - grammar3.addRule({S}, {a, A, d, D}); - grammar3.addRule({S}, {b, B, c, C}); - grammar3.addRule({S}, {}); - grammar3.addRule({A}, {a, A, d, D}); - grammar3.addRule({A}, {b, B, c, C}); - grammar3.addRule({A}, {}); - grammar3.addRule({B}, {b, B, c, C}); - grammar3.addRule({B}, {}); - grammar3.addRule({C}, {c, C}); - grammar3.addRule({C}, {}); - grammar3.addRule({D}, {d, D}); - grammar3.addRule({D}, {}); + grammar3.addRule(S, {a, A, d, D}); + grammar3.addRule(S, {b, B, c, C}); + grammar3.addRule(S, {}); + grammar3.addRule(A, {a, A, d, D}); + grammar3.addRule(A, {b, B, c, C}); + grammar3.addRule(A, {}); + grammar3.addRule(B, {b, B, c, C}); + grammar3.addRule(B, {}); + grammar3.addRule(C, {c, C}); + grammar3.addRule(C, {}); + grammar3.addRule(D, {d, D}); + grammar3.addRule(D, {}); CPPUNIT_ASSERT(grammar2 == grammar3); } @@ -98,33 +98,33 @@ void GrammarSimpleRulesRemoverTest::testRemoveSimpleRulesRules3() { grammar::EpsilonFreeCFG < > grammar1(S); grammar1.setNonterminalAlphabet({S, A, B, C, D}); grammar1.setTerminalAlphabet({a, b, c, d}); - grammar1.addRule({S}, {A}); - grammar1.addRule({A}, {a, A, d, D}); - grammar1.addRule({A}, {B}); - grammar1.addRule({B}, {b, B, c, C}); - grammar1.addRule({B}, {c}); - grammar1.addRule({C}, {c, C}); - grammar1.addRule({C}, {b}); - grammar1.addRule({D}, {d, D}); - grammar1.addRule({D}, {a}); + grammar1.addRule(S, {A}); + grammar1.addRule(A, {a, A, d, D}); + grammar1.addRule(A, {B}); + grammar1.addRule(B, {b, B, c, C}); + grammar1.addRule(B, {c}); + grammar1.addRule(C, {c, C}); + grammar1.addRule(C, {b}); + grammar1.addRule(D, {d, D}); + grammar1.addRule(D, {a}); grammar::EpsilonFreeCFG < > grammar2 = grammar::simplify::SimpleRulesRemover::remove(grammar1); grammar::EpsilonFreeCFG < > grammar3(S); grammar3.setNonterminalAlphabet({S, A, B, C, D}); grammar3.setTerminalAlphabet({a, b, c, d}); - grammar3.addRule({S}, {a, A, d, D}); - grammar3.addRule({S}, {b, B, c, C}); - grammar3.addRule({S}, {c}); - grammar3.addRule({A}, {a, A, d, D}); - grammar3.addRule({A}, {b, B, c, C}); - grammar3.addRule({A}, {c}); - grammar3.addRule({B}, {b, B, c, C}); - grammar3.addRule({B}, {c}); - grammar3.addRule({C}, {c, C}); - grammar3.addRule({C}, {b}); - grammar3.addRule({D}, {d, D}); - grammar3.addRule({D}, {a}); + grammar3.addRule(S, {a, A, d, D}); + grammar3.addRule(S, {b, B, c, C}); + grammar3.addRule(S, {c}); + grammar3.addRule(A, {a, A, d, D}); + grammar3.addRule(A, {b, B, c, C}); + grammar3.addRule(A, {c}); + grammar3.addRule(B, {b, B, c, C}); + grammar3.addRule(B, {c}); + grammar3.addRule(C, {c, C}); + grammar3.addRule(C, {b}); + grammar3.addRule(D, {d, D}); + grammar3.addRule(D, {a}); CPPUNIT_ASSERT(grammar2 == grammar3); } diff --git a/alib2algo_experimental/test-src/grammar/parsing/FirstTest.cpp b/alib2algo_experimental/test-src/grammar/parsing/FirstTest.cpp index 64da2b9aa46f34a91e49f009aa8126787ec2c31f..e51164a2f718af211aa669f7adef1c5bf69d3518 100644 --- a/alib2algo_experimental/test-src/grammar/parsing/FirstTest.cpp +++ b/alib2algo_experimental/test-src/grammar/parsing/FirstTest.cpp @@ -190,7 +190,7 @@ void FirstTest::testFirst2 ( ) { grammar::CFG < > grammar ( A ); grammar.setTerminalAlphabet ( { c, d } ); - grammar.setNonterminalAlphabet ( { { A } } ); + grammar.setNonterminalAlphabet ( { A } ); grammar.setInitialSymbol ( A ); grammar.addRule ( A, ext::vector < ext::variant < DefaultSymbolType, DefaultSymbolType > > { A, c } ); @@ -213,7 +213,7 @@ void FirstTest::testFirst3 ( ) { grammar::CFG < > grammar ( S ); grammar.setTerminalAlphabet ( { a, b, c, d, f } ); - grammar.setNonterminalAlphabet ( { { S, A, B } } ); + grammar.setNonterminalAlphabet ( { S, A, B } ); grammar.setInitialSymbol ( S ); grammar.addRule ( S, ext::vector < ext::variant < DefaultSymbolType, DefaultSymbolType > > { A, a } ); diff --git a/alib2algo_experimental/test-src/grammar/parsing/LR0Parser.cpp b/alib2algo_experimental/test-src/grammar/parsing/LR0Parser.cpp index ba5b4df136963067dcb83ad140258b85fd3b6cf6..4a9a9c458fbd37235d5dc2eb7a4b3f05a96182ef 100644 --- a/alib2algo_experimental/test-src/grammar/parsing/LR0Parser.cpp +++ b/alib2algo_experimental/test-src/grammar/parsing/LR0Parser.cpp @@ -21,12 +21,12 @@ grammar::CFG < > LR0Parser::getExpressionGrammar() { E ); - expressionGrammar.addRule ( { E }, { E, plus, T } ); - expressionGrammar.addRule ( { E }, { T } ); - expressionGrammar.addRule ( { T }, { T, times, F } ); - expressionGrammar.addRule ( { T }, { F } ); - expressionGrammar.addRule ( { F }, { leftParenthesis, E, rightParenthesis } ); - expressionGrammar.addRule ( { F }, { identifier } ); + expressionGrammar.addRule ( E, { E, plus, T } ); + expressionGrammar.addRule ( E, { T } ); + expressionGrammar.addRule ( T, { T, times, F } ); + expressionGrammar.addRule ( T, { F } ); + expressionGrammar.addRule ( F, { leftParenthesis, E, rightParenthesis } ); + expressionGrammar.addRule ( F, { identifier } ); return expressionGrammar; } @@ -109,9 +109,9 @@ void LR0Parser::testNextStateItems ( ) { void LR0Parser::testAutomaton ( ) { ext::vector < grammar::parsing::LR0Items > items(12); - + grammar::CFG < > augmentedExpressionGrammar = grammar::parsing::LRParser::getAugmentedGrammar ( getExpressionGrammar ( ) ); - + items[0] = { { augmentedExpressionGrammar.getInitialSymbol(), @@ -141,7 +141,7 @@ void LR0Parser::testAutomaton ( ) { } } }; - + items[1] = { { augmentedExpressionGrammar.getInitialSymbol(), @@ -214,7 +214,7 @@ void LR0Parser::testAutomaton ( ) { } } }; - + items[6] = { { E, @@ -237,7 +237,7 @@ void LR0Parser::testAutomaton ( ) { } } }; - + items[7] = { { T, @@ -253,7 +253,7 @@ void LR0Parser::testAutomaton ( ) { } } }; - + items[8] = { { E, @@ -268,7 +268,7 @@ void LR0Parser::testAutomaton ( ) { } } }; - + items[9] = { { E, @@ -283,7 +283,7 @@ void LR0Parser::testAutomaton ( ) { } } }; - + items[10] = { { T, @@ -292,7 +292,7 @@ void LR0Parser::testAutomaton ( ) { } } }; - + items[11] = { { F, @@ -301,17 +301,17 @@ void LR0Parser::testAutomaton ( ) { } } }; - + automaton::DFA < ext::variant < DefaultSymbolType, DefaultSymbolType >, grammar::parsing::LR0Items > parsingAutomaton ( items[0] ); for ( const DefaultSymbolType & nonterminal : augmentedExpressionGrammar.getNonterminalAlphabet ( ) ) parsingAutomaton.addInputSymbol ( nonterminal ); for ( const DefaultSymbolType & terminal : augmentedExpressionGrammar.getTerminalAlphabet ( ) ) parsingAutomaton.addInputSymbol ( terminal ); - + for (const grammar::parsing::LR0Items & state : items) { parsingAutomaton.addState(state); } - + parsingAutomaton.addTransition(items[0], E, items[1]); parsingAutomaton.addTransition(items[0], T, items[2]); parsingAutomaton.addTransition(items[0], identifier, items[5]); @@ -319,15 +319,15 @@ void LR0Parser::testAutomaton ( ) { parsingAutomaton.addTransition(items[0], F, items[3]); parsingAutomaton.addTransition(items[1], plus, items[6]); - + parsingAutomaton.addTransition(items[2], times, items[7]); - + parsingAutomaton.addTransition(items[4], E, items[8]); parsingAutomaton.addTransition(items[4], F, items[3]); parsingAutomaton.addTransition(items[4], T, items[2]); parsingAutomaton.addTransition(items[4], leftParenthesis, items[4]); parsingAutomaton.addTransition(items[4], identifier, items[5]); - + parsingAutomaton.addTransition(items[6], T, items[9]); parsingAutomaton.addTransition(items[6], F, items[3]); parsingAutomaton.addTransition(items[6], leftParenthesis, items[4]); @@ -341,6 +341,6 @@ void LR0Parser::testAutomaton ( ) { parsingAutomaton.addTransition(items[8], plus, items[6]); parsingAutomaton.addTransition(items[9], times, items[7]); - + CPPUNIT_ASSERT ( grammar::parsing::LR0Parser::getAutomaton(getExpressionGrammar()) == parsingAutomaton ); } diff --git a/alib2algo_experimental/test-src/grammar/parsing/LRParser.cpp b/alib2algo_experimental/test-src/grammar/parsing/LRParser.cpp index a5bb9c5fb6cccff735ec23f454ac9a6a198adb98..e19d9aa31d410b5fcbb66b9f6db50cbdb8f438da 100644 --- a/alib2algo_experimental/test-src/grammar/parsing/LRParser.cpp +++ b/alib2algo_experimental/test-src/grammar/parsing/LRParser.cpp @@ -21,12 +21,12 @@ grammar::CFG < > LRParser::getExpressionGrammar() { E ); - expressionGrammar.addRule ( { E }, { E, plus, T } ); - expressionGrammar.addRule ( { E }, { T } ); - expressionGrammar.addRule ( { T }, { T, times, F } ); - expressionGrammar.addRule ( { T }, { F } ); - expressionGrammar.addRule ( { F }, { leftParenthesis, E, rightParenthesis } ); - expressionGrammar.addRule ( { F }, { identifier } ); + expressionGrammar.addRule ( E, { E, plus, T } ); + expressionGrammar.addRule ( E, { T } ); + expressionGrammar.addRule ( T, { T, times, F } ); + expressionGrammar.addRule ( T, { F } ); + expressionGrammar.addRule ( F, { leftParenthesis, E, rightParenthesis } ); + expressionGrammar.addRule ( F, { identifier } ); return expressionGrammar; } diff --git a/alib2algo_experimental/test-src/grammar/parsing/SLR1ParseTable.cpp b/alib2algo_experimental/test-src/grammar/parsing/SLR1ParseTable.cpp index 832dfc56dc13f843467a44ab85bc1e8607a24765..2fe9d0b961d34d70e07a873ff6d35e48f110fdc2 100644 --- a/alib2algo_experimental/test-src/grammar/parsing/SLR1ParseTable.cpp +++ b/alib2algo_experimental/test-src/grammar/parsing/SLR1ParseTable.cpp @@ -22,12 +22,12 @@ grammar::CFG < > SLR1ParseTable::getExpressionGrammar() { E ); - expressionGrammar.addRule ( { E }, { E, plus, T } ); - expressionGrammar.addRule ( { E }, { T } ); - expressionGrammar.addRule ( { T }, { T, times, F } ); - expressionGrammar.addRule ( { T }, { F } ); - expressionGrammar.addRule ( { F }, { leftParenthesis, E, rightParenthesis } ); - expressionGrammar.addRule ( { F }, { identifier } ); + expressionGrammar.addRule ( E, { E, plus, T } ); + expressionGrammar.addRule ( E, { T } ); + expressionGrammar.addRule ( T, { T, times, F } ); + expressionGrammar.addRule ( T, { F } ); + expressionGrammar.addRule ( F, { leftParenthesis, E, rightParenthesis } ); + expressionGrammar.addRule ( F, { identifier } ); return expressionGrammar; } @@ -539,20 +539,20 @@ void SLR1ParseTable::testUnambiguousNotSLR1Grammar ( ) { DefaultSymbolType S = DefaultSymbolType ( 'S' ); DefaultSymbolType L = DefaultSymbolType ( 'L' ); DefaultSymbolType R = DefaultSymbolType ( 'R' ); - + DefaultSymbolType assignment = DefaultSymbolType ( '=' ); - + grammar::CFG < > unambiguousNotSLR1Grammar( { S, L, R }, { assignment, times, identifier }, S ); - - unambiguousNotSLR1Grammar.addRule ( { S }, { L, assignment, R } ); - unambiguousNotSLR1Grammar.addRule ( { S }, { R } ); - unambiguousNotSLR1Grammar.addRule ( { L }, { times, R } ); - unambiguousNotSLR1Grammar.addRule ( { L }, { identifier } ); - unambiguousNotSLR1Grammar.addRule ( { R }, { L } ); - + + unambiguousNotSLR1Grammar.addRule ( S, { L, assignment, R } ); + unambiguousNotSLR1Grammar.addRule ( S, { R } ); + unambiguousNotSLR1Grammar.addRule ( L, { times, R } ); + unambiguousNotSLR1Grammar.addRule ( L, { identifier } ); + unambiguousNotSLR1Grammar.addRule ( R, { L } ); + CPPUNIT_ASSERT_THROW ( grammar::parsing::SLR1ParseTable::getActionTable ( unambiguousNotSLR1Grammar ), exception::CommonException ); }