test templates complete
This commit is contained in:
parent
fe0d1e43e2
commit
85388803c6
|
@ -117,9 +117,100 @@ public class Generator {
|
|||
list.add(buildParseTrees());
|
||||
list.add(buildSemPredEvalLexer());
|
||||
list.add(buildSemPredEvalParser());
|
||||
list.add(buildSets());
|
||||
return list;
|
||||
}
|
||||
|
||||
private TestFile buildSets() throws Exception {
|
||||
TestFile file = new TestFile("Sets");
|
||||
// this must return A not I to the parser; calling a nonfragment rule
|
||||
// from a nonfragment rule does not set the overall token.
|
||||
file.addParserTest(input, "SeqDoesNotBecomeSet", "T", "a",
|
||||
"34",
|
||||
"34\n",
|
||||
null);
|
||||
file.addParserTest(input, "ParserSet", "T", "a",
|
||||
"x",
|
||||
"x\n",
|
||||
null);
|
||||
file.addParserTest(input, "ParserNotSet", "T", "a",
|
||||
"zz",
|
||||
"z\n",
|
||||
null);
|
||||
file.addParserTest(input, "ParserNotToken", "T", "a",
|
||||
"zz",
|
||||
"zz\n",
|
||||
null);
|
||||
file.addParserTest(input, "ParserNotTokenWithLabel", "T", "a",
|
||||
"zz",
|
||||
"z\n",
|
||||
null);
|
||||
file.addParserTest(input, "RuleAsSet", "T", "a",
|
||||
"b",
|
||||
"b\n",
|
||||
null);
|
||||
file.addParserTest(input, "NotChar", "T", "a",
|
||||
"x",
|
||||
"x\n",
|
||||
null);
|
||||
file.addParserTest(input, "OptionalSingleElement", "T", "a",
|
||||
"bc",
|
||||
"bc\n",
|
||||
null);
|
||||
file.addParserTest(input, "OptionalLexerSingleElement", "T", "a",
|
||||
"bc",
|
||||
"bc\n",
|
||||
null);
|
||||
file.addParserTests(input, "StarLexerSingleElement", "T", "a",
|
||||
"bbbbc", "bbbbc\n",
|
||||
"c", "c\n");
|
||||
file.addParserTest(input, "PlusLexerSingleElement", "T", "a",
|
||||
"bbbbc",
|
||||
"bbbbc\n",
|
||||
null);
|
||||
file.addParserTest(input, "OptionalSet", "T", "a",
|
||||
"ac",
|
||||
"ac\n",
|
||||
null);
|
||||
file.addParserTest(input, "StarSet", "T", "a",
|
||||
"abaac",
|
||||
"abaac\n",
|
||||
null);
|
||||
file.addParserTest(input, "PlusSet", "T", "a",
|
||||
"abaac",
|
||||
"abaac\n",
|
||||
null);
|
||||
file.addParserTest(input, "LexerOptionalSet", "T", "a",
|
||||
"ac",
|
||||
"ac\n",
|
||||
null);
|
||||
file.addParserTest(input, "LexerStarSet", "T", "a",
|
||||
"abaac",
|
||||
"abaac\n",
|
||||
null);
|
||||
file.addParserTest(input, "LexerPlusSet", "T", "a",
|
||||
"abaac",
|
||||
"abaac\n",
|
||||
null);
|
||||
file.addParserTest(input, "NotCharSet", "T", "a",
|
||||
"x",
|
||||
"x\n",
|
||||
null);
|
||||
file.addParserTest(input, "NotCharSetWithLabel", "T", "a",
|
||||
"x",
|
||||
"x\n",
|
||||
null);
|
||||
file.addParserTest(input, "NotCharSetWithRuleRef3", "T", "a",
|
||||
"x",
|
||||
"x\n",
|
||||
null);
|
||||
file.addParserTest(input, "CharSetLiteral", "T", "a",
|
||||
"A a B b",
|
||||
"A\n" + "a\n" + "B\n" + "b\n",
|
||||
null);
|
||||
return file;
|
||||
}
|
||||
|
||||
private TestFile buildSemPredEvalParser() throws Exception {
|
||||
TestFile file = new TestFile("SemPredEvalParser");
|
||||
file.addParserTest(input, "SimpleValidate", "T", "s",
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
grammar <grammarName>;
|
||||
a : (A {<writeln("$A.text")>})+ ;
|
||||
a : [AaBb] ;
|
||||
WS : (' '|'\n')+ -> skip ;
|
|
@ -0,0 +1,3 @@
|
|||
grammar <grammarName>;
|
||||
a : A {<InputText():writeln()>} ;
|
||||
a : ('a'|'b')? 'c' ;
|
|
@ -0,0 +1,3 @@
|
|||
grammar <grammarName>;
|
||||
a : A {<InputText():writeln()>} ;
|
||||
a : ('a'|'b')+ 'c' ;
|
|
@ -0,0 +1,3 @@
|
|||
grammar <grammarName>;
|
||||
a : A {<InputText():writeln()>} ;
|
||||
a : ('a'|'b')* 'c' ;
|
|
@ -0,0 +1,3 @@
|
|||
grammar <grammarName>;
|
||||
a : A {<writeln("$A.text")>} ;
|
||||
a : ~'b' ;
|
|
@ -0,0 +1,3 @@
|
|||
grammar <grammarName>;
|
||||
a : A {<writeln("$A.text")>} ;
|
||||
a : ~('b'|'c') ;
|
|
@ -0,0 +1,3 @@
|
|||
grammar <grammarName>;
|
||||
a : A {<writeln("$A.text")>} ;
|
||||
a : h=~('b'|'c') ;
|
|
@ -0,0 +1,5 @@
|
|||
grammar <grammarName>;
|
||||
a : A {<writeln("$A.text")>} ;
|
||||
a : ('a'|B) ; // this doesn't collapse to set but works
|
||||
fragment
|
||||
B : ~('a'|'c') ;
|
|
@ -0,0 +1,3 @@
|
|||
grammar <grammarName>;
|
||||
a : A {<InputText():writeln()>} ;
|
||||
a : 'b'? 'c' ;
|
|
@ -0,0 +1,2 @@
|
|||
grammar <grammarName>;
|
||||
a : ('a'|'b')? 'c' {<InputText():writeln()>} ;
|
|
@ -0,0 +1,3 @@
|
|||
grammar <grammarName>;
|
||||
a : A? 'c' {<InputText():writeln()>} ;
|
||||
a : 'b' ;
|
|
@ -0,0 +1,2 @@
|
|||
grammar <grammarName>;
|
||||
a : t=~('x'|'y') 'z' {<writeln("$t.text")>} ;
|
|
@ -0,0 +1,2 @@
|
|||
grammar <grammarName>;
|
||||
a : ~'x' 'z' {<InputText():writeln()>} ;
|
|
@ -0,0 +1,2 @@
|
|||
grammar <grammarName>;
|
||||
a : t=~'x' 'z' {<writeln("$t.text")>} ;
|
|
@ -0,0 +1,2 @@
|
|||
grammar <grammarName>;
|
||||
a : t=('x'|'y') {<writeln("$t.text")>} ;
|
|
@ -0,0 +1,3 @@
|
|||
grammar <grammarName>;
|
||||
a : A {<InputText():writeln()>} ;
|
||||
a : 'b'+ 'c' ;
|
|
@ -0,0 +1,2 @@
|
|||
grammar <grammarName>;
|
||||
a : ('a'|'b')+ 'c' {<InputText():writeln()>} ;
|
|
@ -0,0 +1,2 @@
|
|||
grammar <grammarName>;
|
||||
a @after {<InputText():writeln()>} : 'a' | 'b' |'c' ;
|
|
@ -0,0 +1,5 @@
|
|||
grammar <grammarName>;
|
||||
a : C {<InputText():writeln()>} ;
|
||||
fragment A : '1' | '2';
|
||||
fragment B : '3' '4';
|
||||
C : A | B;
|
|
@ -0,0 +1,3 @@
|
|||
grammar <grammarName>;
|
||||
a : A {<InputText():writeln()>} ;
|
||||
a : 'b'* 'c' ;
|
|
@ -0,0 +1,2 @@
|
|||
grammar <grammarName>;
|
||||
a : ('a'|'b')* 'c' {<InputText():writeln()>} ;
|
Loading…
Reference in New Issue