diff --git a/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/generator/normalization/GrammarFlatteningTest.xtend b/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/generator/normalization/GrammarFlatteningTest.xtend index b1be48188..1953a8ed9 100644 --- a/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/generator/normalization/GrammarFlatteningTest.xtend +++ b/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/generator/normalization/GrammarFlatteningTest.xtend @@ -314,4 +314,75 @@ class GrammarFlatteningTest extends AbstractXtextTests { .;'''.toString, serialized) } + @Test def void test_08() throws Exception { + var Grammar flattened = getModel( + ''' + grammar com.foo.bar with org.eclipse.xtext.common.Terminals + generate myPack 'http://myURI' + Rule: name=ID =>( ->child=Rule | ->'keyword')?; + ''', true) + var String serialized = getSerializer().serialize(flattened) + assertEquals(''' + grammar com.foo.bar hidden(RULE_WS, RULE_ML_COMMENT, RULE_SL_COMMENT) + + norm0_Rule: + name=RULE_ID => "keyword"?; + + terminal RULE_ID: + "^"? ("a".."z" | "A".."Z" | "_") ("a".."z" | "A".."Z" | "_" | "0".."9")*; + + terminal RULE_INT: + "0".."9"+; + + terminal RULE_STRING: + "\"" ("\\" . | !("\\" | "\""))* "\"" | "\'" ("\\" . | !("\\" | "\'"))* "\'"; + + terminal RULE_ML_COMMENT: + "/*"->"*/"; + + terminal RULE_SL_COMMENT: + "//" !("\n" | "\r")* ("\r"? "\n")?; + + terminal RULE_WS: + " " | "\t" | "\r" | "\n"+; + + terminal RULE_ANY_OTHER: + .;'''.toString, serialized) + } + + @Test def void test_09() throws Exception { + var Grammar flattened = getModel( + ''' + grammar com.foo.bar with org.eclipse.xtext.common.Terminals + generate myPack 'http://myURI' + Rule: name=ID ->( =>child=Rule | =>'keyword')?; + ''', true) + var String serialized = getSerializer().serialize(flattened) + assertEquals(''' + grammar com.foo.bar hidden(RULE_WS, RULE_ML_COMMENT, RULE_SL_COMMENT) + + norm0_Rule: + name=RULE_ID => "keyword"?; + + terminal RULE_ID: + "^"? ("a".."z" | "A".."Z" | "_") ("a".."z" | "A".."Z" | "_" | "0".."9")*; + + terminal RULE_INT: + "0".."9"+; + + terminal RULE_STRING: + "\"" ("\\" . | !("\\" | "\""))* "\"" | "\'" ("\\" . | !("\\" | "\'"))* "\'"; + + terminal RULE_ML_COMMENT: + "/*"->"*/"; + + terminal RULE_SL_COMMENT: + "//" !("\n" | "\r")* ("\r"? "\n")?; + + terminal RULE_WS: + " " | "\t" | "\r" | "\n"+; + + terminal RULE_ANY_OTHER: + .;'''.toString, serialized) + } }