я пытаюсь определить некоторые 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
Не могли бы вы изложить свою текущую грамматику и задать конкретные вопросы? –
Я добавил еще более подробное описание – abs
Хорошо, теперь я понимаю вашу проблему.Вы на самом деле заинтересованы только в том, чтобы получить красивый внешний вид или изменить внутренние структуры так, как вы описали? –