Eclipse 终端规则ID与ID的有效值不匹配
我试图定义一个规则,其中一个元素是公共终端规则ID的最佳候选元素。当我启动编辑器以使用示例代码进行测试时,ID规则与字符串“ABC”不匹配: 我得到了不匹配的输入'ABC'期望规则ID' 我的语法中是否有与ID规则冲突的内容导致此错误 这是我的语法文件:Eclipse 终端规则ID与ID的有效值不匹配,eclipse,xtext,Eclipse,Xtext,我试图定义一个规则,其中一个元素是公共终端规则ID的最佳候选元素。当我启动编辑器以使用示例代码进行测试时,ID规则与字符串“ABC”不匹配: 我得到了不匹配的输入'ABC'期望规则ID' 我的语法中是否有与ID规则冲突的内容导致此错误 这是我的语法文件: grammar com.testco.Test with org.eclipse.xtext.common.Terminals import "http://www.eclipse.org/emf/2002/Ecore" as ecore g
grammar com.testco.Test with org.eclipse.xtext.common.Terminals
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
generate defwiz "http://www.testco.com/Test"
Define_Holder:
'Definition' ':' holder_name=ID ':' holder_number=HOLDER_NUMBER (':' attribute=define_attr)? (':' pad=holder_pad)?
;
holder_pad:
HEX
;
Type:
TYPE_TERM ':' type_value=TYPE_VAL
;
//***************** TERMINALS *****************
terminal TYPE_TERM:
'Type_' INT+
;
terminal PROFILE:
(PROFILE_ID)(PROFILE_ID)'.'(PROFILE_ID)(PROFILE_ID)
;
terminal HOLDER_NUMBER returns ecore:: EString:
'Holder_' INT+;
terminal HEX returns ecore:: EString :
('0'..'9'|'A'..'F')
;
terminal PROFILE_ID : '^'?('a'..'z'|'A'..'Z') ('a'..'z'|'A'..'Z'|'0'..'9')*;
//***************** ENUMS *****************
enum define_attr:
BINARY='Binary' |
SCRAMBLE='Scramble' |
FORCESIZE='ForceSize' |
FIXEDSIZE='FixedSize'
;
是的,lexer很可能将
ABC
扫描为HEX
终端。例如,尝试对后者进行如下定义:
terminal HEX returns ecore:: EString :
'0x' ('0'..'9'|'A'..'F')
;
您的规则配置文件\u ID几乎在所有情况下都会隐藏ID规则(下划线除外)。我尝试建模的语言无法识别0x前缀,它希望给定的值符合它所赋予的函数的类型(变量have not type)。当然,这是一种非常时髦的语言。
terminal HEX returns ecore:: EString :
'0x' ('0'..'9'|'A'..'F')
;