diff options
Diffstat (limited to 'grammar')
-rw-r--r-- | grammar/grammar_test.go | 2 | ||||
-rw-r--r-- | grammar/lalr1_test.go | 56 | ||||
-rw-r--r-- | grammar/lr0_test.go | 11 | ||||
-rw-r--r-- | grammar/parsing_table_test.go | 62 |
4 files changed, 66 insertions, 65 deletions
diff --git a/grammar/grammar_test.go b/grammar/grammar_test.go index 62823e1..e61e422 100644 --- a/grammar/grammar_test.go +++ b/grammar/grammar_test.go @@ -2786,7 +2786,7 @@ s : foo ; -foo #alias Foo +foo #alias bar : 'foo'; `, errs: []*SemanticError{semErrDirInvalidParam}, diff --git a/grammar/lalr1_test.go b/grammar/lalr1_test.go index 94dfd65..2f8074b 100644 --- a/grammar/lalr1_test.go +++ b/grammar/lalr1_test.go @@ -12,9 +12,9 @@ func TestGenLALR1Automaton(t *testing.T) { src := ` #name test; -S: L eq R | R; -L: ref R | id; -R: L; +s: l eq r | r; +l: ref r | id; +r: l; eq: '='; ref: '*'; id: "[A-Za-z0-9_]+"; @@ -66,35 +66,35 @@ id: "[A-Za-z0-9_]+"; expectedKernels := map[int][]*lrItem{ 0: { - withLookAhead(genLR0Item("S'", 0, "S"), symbolEOF), + withLookAhead(genLR0Item("s'", 0, "s"), symbolEOF), }, 1: { - withLookAhead(genLR0Item("S'", 1, "S"), symbolEOF), + withLookAhead(genLR0Item("s'", 1, "s"), symbolEOF), }, 2: { - withLookAhead(genLR0Item("S", 1, "L", "eq", "R"), symbolEOF), - withLookAhead(genLR0Item("R", 1, "L"), symbolEOF), + withLookAhead(genLR0Item("s", 1, "l", "eq", "r"), symbolEOF), + withLookAhead(genLR0Item("r", 1, "l"), symbolEOF), }, 3: { - withLookAhead(genLR0Item("S", 1, "R"), symbolEOF), + withLookAhead(genLR0Item("s", 1, "r"), symbolEOF), }, 4: { - withLookAhead(genLR0Item("L", 1, "ref", "R"), genSym("eq"), symbolEOF), + withLookAhead(genLR0Item("l", 1, "ref", "r"), genSym("eq"), symbolEOF), }, 5: { - withLookAhead(genLR0Item("L", 1, "id"), genSym("eq"), symbolEOF), + withLookAhead(genLR0Item("l", 1, "id"), genSym("eq"), symbolEOF), }, 6: { - withLookAhead(genLR0Item("S", 2, "L", "eq", "R"), symbolEOF), + withLookAhead(genLR0Item("s", 2, "l", "eq", "r"), symbolEOF), }, 7: { - withLookAhead(genLR0Item("L", 2, "ref", "R"), genSym("eq"), symbolEOF), + withLookAhead(genLR0Item("l", 2, "ref", "r"), genSym("eq"), symbolEOF), }, 8: { - withLookAhead(genLR0Item("R", 1, "L"), genSym("eq"), symbolEOF), + withLookAhead(genLR0Item("r", 1, "l"), genSym("eq"), symbolEOF), }, 9: { - withLookAhead(genLR0Item("S", 3, "L", "eq", "R"), symbolEOF), + withLookAhead(genLR0Item("s", 3, "l", "eq", "r"), symbolEOF), }, } @@ -102,9 +102,9 @@ id: "[A-Za-z0-9_]+"; { kernelItems: expectedKernels[0], nextStates: map[symbol][]*lrItem{ - genSym("S"): expectedKernels[1], - genSym("L"): expectedKernels[2], - genSym("R"): expectedKernels[3], + genSym("s"): expectedKernels[1], + genSym("l"): expectedKernels[2], + genSym("r"): expectedKernels[3], genSym("ref"): expectedKernels[4], genSym("id"): expectedKernels[5], }, @@ -114,7 +114,7 @@ id: "[A-Za-z0-9_]+"; kernelItems: expectedKernels[1], nextStates: map[symbol][]*lrItem{}, reducibleProds: []*production{ - genProd("S'", "S"), + genProd("s'", "s"), }, }, { @@ -123,21 +123,21 @@ id: "[A-Za-z0-9_]+"; genSym("eq"): expectedKernels[6], }, reducibleProds: []*production{ - genProd("R", "L"), + genProd("r", "l"), }, }, { kernelItems: expectedKernels[3], nextStates: map[symbol][]*lrItem{}, reducibleProds: []*production{ - genProd("S", "R"), + genProd("s", "r"), }, }, { kernelItems: expectedKernels[4], nextStates: map[symbol][]*lrItem{ - genSym("R"): expectedKernels[7], - genSym("L"): expectedKernels[8], + genSym("r"): expectedKernels[7], + genSym("l"): expectedKernels[8], genSym("ref"): expectedKernels[4], genSym("id"): expectedKernels[5], }, @@ -147,14 +147,14 @@ id: "[A-Za-z0-9_]+"; kernelItems: expectedKernels[5], nextStates: map[symbol][]*lrItem{}, reducibleProds: []*production{ - genProd("L", "id"), + genProd("l", "id"), }, }, { kernelItems: expectedKernels[6], nextStates: map[symbol][]*lrItem{ - genSym("R"): expectedKernels[9], - genSym("L"): expectedKernels[8], + genSym("r"): expectedKernels[9], + genSym("l"): expectedKernels[8], genSym("ref"): expectedKernels[4], genSym("id"): expectedKernels[5], }, @@ -164,21 +164,21 @@ id: "[A-Za-z0-9_]+"; kernelItems: expectedKernels[7], nextStates: map[symbol][]*lrItem{}, reducibleProds: []*production{ - genProd("L", "ref", "R"), + genProd("l", "ref", "r"), }, }, { kernelItems: expectedKernels[8], nextStates: map[symbol][]*lrItem{}, reducibleProds: []*production{ - genProd("R", "L"), + genProd("r", "l"), }, }, { kernelItems: expectedKernels[9], nextStates: map[symbol][]*lrItem{}, reducibleProds: []*production{ - genProd("S", "L", "eq", "R"), + genProd("s", "l", "eq", "r"), }, }, } diff --git a/grammar/lr0_test.go b/grammar/lr0_test.go index 1b20d78..b31126e 100644 --- a/grammar/lr0_test.go +++ b/grammar/lr0_test.go @@ -236,10 +236,11 @@ foo : ; bar - : BAR + : b | ; -BAR: "bar"; + +b: "bar"; ` var gram *Grammar @@ -290,7 +291,7 @@ BAR: "bar"; genLR0Item("s", 2, "foo", "bar"), }, 4: { - genLR0Item("bar", 1, "BAR"), + genLR0Item("bar", 1, "b"), }, } @@ -319,7 +320,7 @@ BAR: "bar"; kernelItems: expectedKernels[2], nextStates: map[symbol][]*lrItem{ genSym("bar"): expectedKernels[3], - genSym("BAR"): expectedKernels[4], + genSym("b"): expectedKernels[4], }, reducibleProds: []*production{ genProd("bar"), @@ -339,7 +340,7 @@ BAR: "bar"; kernelItems: expectedKernels[4], nextStates: map[symbol][]*lrItem{}, reducibleProds: []*production{ - genProd("bar", "BAR"), + genProd("bar", "b"), }, }, } diff --git a/grammar/parsing_table_test.go b/grammar/parsing_table_test.go index 522ec1c..4ce8455 100644 --- a/grammar/parsing_table_test.go +++ b/grammar/parsing_table_test.go @@ -18,9 +18,9 @@ func TestGenLALRParsingTable(t *testing.T) { src := ` #name test; -S: L eq R | R; -L: ref R | id; -R: L; +s: l eq r | r; +l: ref r | id; +r: l; eq: '='; ref: '*'; id: "[A-Za-z0-9_]+"; @@ -89,35 +89,35 @@ id: "[A-Za-z0-9_]+"; expectedKernels := map[int][]*lrItem{ 0: { - withLookAhead(genLR0Item("S'", 0, "S"), symbolEOF), + withLookAhead(genLR0Item("s'", 0, "s"), symbolEOF), }, 1: { - withLookAhead(genLR0Item("S'", 1, "S"), symbolEOF), + withLookAhead(genLR0Item("s'", 1, "s"), symbolEOF), }, 2: { - withLookAhead(genLR0Item("S", 1, "L", "eq", "R"), symbolEOF), - withLookAhead(genLR0Item("R", 1, "L"), symbolEOF), + withLookAhead(genLR0Item("s", 1, "l", "eq", "r"), symbolEOF), + withLookAhead(genLR0Item("r", 1, "l"), symbolEOF), }, 3: { - withLookAhead(genLR0Item("S", 1, "R"), symbolEOF), + withLookAhead(genLR0Item("s", 1, "r"), symbolEOF), }, 4: { - withLookAhead(genLR0Item("L", 1, "ref", "R"), genSym("eq"), symbolEOF), + withLookAhead(genLR0Item("l", 1, "ref", "r"), genSym("eq"), symbolEOF), }, 5: { - withLookAhead(genLR0Item("L", 1, "id"), genSym("eq"), symbolEOF), + withLookAhead(genLR0Item("l", 1, "id"), genSym("eq"), symbolEOF), }, 6: { - withLookAhead(genLR0Item("S", 2, "L", "eq", "R"), symbolEOF), + withLookAhead(genLR0Item("s", 2, "l", "eq", "r"), symbolEOF), }, 7: { - withLookAhead(genLR0Item("L", 2, "ref", "R"), genSym("eq"), symbolEOF), + withLookAhead(genLR0Item("l", 2, "ref", "r"), genSym("eq"), symbolEOF), }, 8: { - withLookAhead(genLR0Item("R", 1, "L"), genSym("eq"), symbolEOF), + withLookAhead(genLR0Item("r", 1, "l"), genSym("eq"), symbolEOF), }, 9: { - withLookAhead(genLR0Item("S", 3, "L", "eq", "R"), symbolEOF), + withLookAhead(genLR0Item("s", 3, "l", "eq", "r"), symbolEOF), }, } @@ -135,9 +135,9 @@ id: "[A-Za-z0-9_]+"; }, }, goTos: map[symbol][]*lrItem{ - genSym("S"): expectedKernels[1], - genSym("L"): expectedKernels[2], - genSym("R"): expectedKernels[3], + genSym("s"): expectedKernels[1], + genSym("l"): expectedKernels[2], + genSym("r"): expectedKernels[3], }, }, { @@ -145,7 +145,7 @@ id: "[A-Za-z0-9_]+"; acts: map[symbol]testActionEntry{ symbolEOF: { ty: ActionTypeReduce, - production: genProd("S'", "S"), + production: genProd("s'", "s"), }, }, }, @@ -158,7 +158,7 @@ id: "[A-Za-z0-9_]+"; }, symbolEOF: { ty: ActionTypeReduce, - production: genProd("R", "L"), + production: genProd("r", "l"), }, }, }, @@ -167,7 +167,7 @@ id: "[A-Za-z0-9_]+"; acts: map[symbol]testActionEntry{ symbolEOF: { ty: ActionTypeReduce, - production: genProd("S", "R"), + production: genProd("s", "r"), }, }, }, @@ -184,8 +184,8 @@ id: "[A-Za-z0-9_]+"; }, }, goTos: map[symbol][]*lrItem{ - genSym("R"): expectedKernels[7], - genSym("L"): expectedKernels[8], + genSym("r"): expectedKernels[7], + genSym("l"): expectedKernels[8], }, }, { @@ -193,11 +193,11 @@ id: "[A-Za-z0-9_]+"; acts: map[symbol]testActionEntry{ genSym("eq"): { ty: ActionTypeReduce, - production: genProd("L", "id"), + production: genProd("l", "id"), }, symbolEOF: { ty: ActionTypeReduce, - production: genProd("L", "id"), + production: genProd("l", "id"), }, }, }, @@ -214,8 +214,8 @@ id: "[A-Za-z0-9_]+"; }, }, goTos: map[symbol][]*lrItem{ - genSym("L"): expectedKernels[8], - genSym("R"): expectedKernels[9], + genSym("l"): expectedKernels[8], + genSym("r"): expectedKernels[9], }, }, { @@ -223,11 +223,11 @@ id: "[A-Za-z0-9_]+"; acts: map[symbol]testActionEntry{ genSym("eq"): { ty: ActionTypeReduce, - production: genProd("L", "ref", "R"), + production: genProd("l", "ref", "r"), }, symbolEOF: { ty: ActionTypeReduce, - production: genProd("L", "ref", "R"), + production: genProd("l", "ref", "r"), }, }, }, @@ -236,11 +236,11 @@ id: "[A-Za-z0-9_]+"; acts: map[symbol]testActionEntry{ genSym("eq"): { ty: ActionTypeReduce, - production: genProd("R", "L"), + production: genProd("r", "l"), }, symbolEOF: { ty: ActionTypeReduce, - production: genProd("R", "L"), + production: genProd("r", "l"), }, }, }, @@ -249,7 +249,7 @@ id: "[A-Za-z0-9_]+"; acts: map[symbol]testActionEntry{ symbolEOF: { ty: ActionTypeReduce, - production: genProd("S", "L", "eq", "R"), + production: genProd("s", "l", "eq", "r"), }, }, }, |