diff options
Diffstat (limited to 'driver/parser_test.go')
-rw-r--r-- | driver/parser_test.go | 68 |
1 files changed, 48 insertions, 20 deletions
diff --git a/driver/parser_test.go b/driver/parser_test.go index dd58dd5..da4f714 100644 --- a/driver/parser_test.go +++ b/driver/parser_test.go @@ -186,7 +186,9 @@ bar : bar_text | ; -bar_text: "bar"; + +bar_text + : "bar"; `, src: `bar`, cst: nonTermNode("s", @@ -399,8 +401,10 @@ white_space #skip s : tagline ; -tagline: "\f{words} IS OUT THERE."; -fragment words: "[A-Za-z\u{0020}]+"; +tagline + : "\f{words} IS OUT THERE."; +fragment words + : "[A-Za-z\u{0020}]+"; `, src: `THE TRUTH IS OUT THERE.`, }, @@ -410,15 +414,21 @@ fragment words: "[A-Za-z\u{0020}]+"; #name test; list - : '[' elems ']' #ast elems... + : l_bracket elems r_bracket #ast elems... ; elems - : elems ',' id #ast elems... id + : elems comma id #ast elems... id | id ; whitespace #skip : "\u{0020}+"; +l_bracket + : '['; +r_bracket + : ']'; +comma + : ','; id : "[A-Za-z]+"; `, @@ -453,10 +463,12 @@ s : a #ast a... ; a - : a ',' foo #ast a... foo + : a comma foo #ast a... foo | foo ; +comma + : ','; foo : 'foo'; `, @@ -473,12 +485,14 @@ foo #name test; s - : a ';' #ast a... + : a semi_colon #ast a... ; - a : ; + +semi_colon + : ';'; `, src: `;`, ast: nonTermNode("s"), @@ -497,9 +511,13 @@ expr | expr@lhs sub expr@rhs #ast sub lhs rhs | num ; -add: '+'; -sub: '-'; -num: "0|[1-9][0-9]*"; + +add + : '+'; +sub + : '-'; +num + : "0|[1-9][0-9]*"; `, src: `1+2-3`, ast: nonTermNode("expr", @@ -524,9 +542,11 @@ num: "0|[1-9][0-9]*"; #name test; s - : foo@x ';' #ast foo + : foo@x semi_colon #ast foo ; +semi_colon + : ';'; foo : 'foo'; `, @@ -648,12 +668,14 @@ div #name test; s - : id id id ';' - | error ';' + : id id id semi_colon + | error semi_colon ; ws #skip : "[\u{0009}\u{0020}]+"; +semi_colon + : ';'; id : "[A-Za-z_]+"; `, @@ -665,10 +687,12 @@ id #name test; s - : foo ';' - | error ';' #ast error + : foo semi_colon + | error semi_colon #ast error ; +semi_colon + : ';'; foo : 'foo'; `, @@ -684,10 +708,12 @@ foo #name test; s - : foo ';' - | error@e ';' #ast e + : foo semi_colon + | error@e semi_colon #ast e ; +semi_colon + : ';'; foo : 'foo'; `, @@ -707,12 +733,14 @@ seq | elem ; elem - : id id id ';' - | error ';' #recover + : id id id semi_colon + | error semi_colon #recover ; ws #skip : "[\u{0009}\u{0020}]+"; +semi_colon + : ';'; id : "[A-Za-z_]+"; `, |