Xtext: 输入错误的规则或 'missing RULE_* at'
Xtext: enter wrong rule or 'missing RULE_* at'
我想从随机文本中解析所有名称。名称的格式如下:
Lastname F.
其中 F - 名字的第一个字母。所以,我创建了这个语法:
grammar org.xtext.example.mydsl.Article with org.eclipse.xtext.common.Terminals
generate article "http://www.xtext.org/example/mydsl/Article"
Model : {Model}((per += Person)|(words += NON_WS))*;
Person : lastName = NAME firstName = IN;
terminal NAME : ('A'..'Z')('a'..'z')+;
terminal IN : ('A'..'Z')'.';
terminal NON_WS : !(' '|'\t'|'\r'|'\n')+;
它适用于这个例子:
Lastname F. some text. Lastname F.
但它在这个上崩溃了:
Lastname F. some text. New sentence. Lastname F.
^^^^^^^^^ missing RULE_IN at 'sentence.'
如何在生成 'Person' 对象之前或输入 'Person' 规则之前检查所有标记?
lexing 是免费的。因此,一个人词法化了一个名字,总是词法化了一个名字
Model : {Model}((per += Person)|(words += (NON_WS|NAME)))*;
我想从随机文本中解析所有名称。名称的格式如下:
Lastname F.
其中 F - 名字的第一个字母。所以,我创建了这个语法:
grammar org.xtext.example.mydsl.Article with org.eclipse.xtext.common.Terminals
generate article "http://www.xtext.org/example/mydsl/Article"
Model : {Model}((per += Person)|(words += NON_WS))*;
Person : lastName = NAME firstName = IN;
terminal NAME : ('A'..'Z')('a'..'z')+;
terminal IN : ('A'..'Z')'.';
terminal NON_WS : !(' '|'\t'|'\r'|'\n')+;
它适用于这个例子:
Lastname F. some text. Lastname F.
但它在这个上崩溃了:
Lastname F. some text. New sentence. Lastname F.
^^^^^^^^^ missing RULE_IN at 'sentence.'
如何在生成 'Person' 对象之前或输入 'Person' 规则之前检查所有标记?
lexing 是免费的。因此,一个人词法化了一个名字,总是词法化了一个名字
Model : {Model}((per += Person)|(words += (NON_WS|NAME)))*;