mirror of
https://github.com/sigmasternchen/xtext-core
synced 2025-03-15 08:18:55 +00:00
introduced 'ANY_OTHER' lexer rule which acts as catch-all for any character which can not be matched by any other lexer rule. this makes error handling easier because the handling can be done based on tokens.
This commit is contained in:
parent
0a12567cdd
commit
09edb8e3e1
4 changed files with 3 additions and 5 deletions
|
@ -113,7 +113,7 @@ isAssigned(Object this) : false;
|
|||
// Built-in lexer Rules
|
||||
|
||||
cached allLexerRules(Grammar this) :
|
||||
lexerRules.union(builtinRules().select(e|lexerRules.forAll(e1|e1.name != e.name)));
|
||||
lexerRules.union(builtinRules().select(e|lexerRules.forAll(e1|e1.name != e.name))).union({lr('ANY_OTHER','.')}).toList().sortBy(e|e.name=='ANY_OTHER'?1:0);
|
||||
|
||||
|
||||
private create LexerRule lr(String name, String body) :
|
||||
|
|
|
@ -16,8 +16,6 @@ import xtextutil;
|
|||
extension org::eclipse::xtext::Extensions;
|
||||
extension org::eclipse::xtext::TypeResolution;
|
||||
|
||||
|
||||
|
||||
context Action ERROR "Created class " + typeName.name + " cannot be resolved" :
|
||||
resolveCreatedType() != null;
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ public class XtextGrammarTest extends AbstractGeneratorTest {
|
|||
assertEquals("set(name,[@6,19:21='Foo',<4>,1:19])", iter.next().toString());
|
||||
assertEquals("create(Assignment)", iter.next().toString());
|
||||
assertEquals("set(feature,[@10,25:28='name',<4>,1:25])", iter.next().toString());
|
||||
assertEquals("set(operator,[@11,29:29='=',<24>,1:29])", iter.next().toString());
|
||||
assertEquals("set(operator,[@11,29:29='=',<25>,1:29])", iter.next().toString());
|
||||
assertEquals("create(RuleCall)", iter.next().toString());
|
||||
assertEquals("set(name,[@12,30:31='ID',<4>,1:30])", iter.next().toString());
|
||||
assertEquals("set(terminal,RuleCall)", iter.next().toString());
|
||||
|
|
|
@ -21,7 +21,7 @@ public class ParseErrorHandlingTest extends AbstractGeneratorTest {
|
|||
errors.add(text);
|
||||
}
|
||||
});
|
||||
//TODO assertEquals("%",errors.get(0));
|
||||
assertEquals("%",errors.get(0));
|
||||
assertEquals(1, errors.size());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue