我尝试定义一些XTEXT为specifiying变量按照以下语法XTEXT逗号分隔的变量声明
variables
MyVar1 : Bool at 0x020 value=true;
MyVar2, MyVar3 : Int at 0x030 value 200;
end-variables
因此,每个定义是语法
VarName ["," VarName]* ":" Type ["at" HEX]? ["value" VALUE]? ";"
所有变量应以他们的参考和访问导致大纲应该是这样的:
variables
+-MyVar1 : Bool
+-MyVar2 : Int
+-MyVar3 : Int
编辑: 这里要求我的实际语法,这相当于上面的一些语句的语法定义。
Variable:
name=ID
;
Declaration_Var:
'variables'
vars+=Declaration_Var_Body+
'end-variables' ';'
;
Declaration_Var_Body:
varDecl+=Variable(',' varDecl +=Variable)*
':' type=[TR_Any]
('at' address=HEX)?
;
TR_Any:
...
;
terminal HEX:
...
;
有了这个,以下字符
variables
Test1, Test2, Test3 : DWORD at 0x20;
end_var;
导致的轮廓是这样的顺序:
<unnamed>
+-- 0x20
| +-- Test1
| +-- Test2
| +-- Test3
这几乎是与我期望的相反。我所期望的以及我想要在大纲中生成的内容与此类似(数据类型和地址不能在那里显示,但至少它们必须可以作为生成的变量声明类的属性访问)
Test1
+-- DWORD
+-- 0x20
Test2
+-- DWORD
+-- 0x20
Test3
+-- DWORD
+-- 0x20
请问您可以发表您当前的语法并提出具体问题吗? – 2013-03-15 15:24:46
我在那里添加了一些更详细的描述 – abs 2013-03-18 18:07:46
好吧,现在我明白你的问题了。你实际上只是对看起来很漂亮的轮廓感兴趣,或者是以你描述的方式修改内部结构吗? – 2013-03-19 10:44:03