【发布时间】:2019-11-21 11:05:24
【问题描述】:
我正在使用 Xtext 创建一个 DSL,它将用于生成图像。但是因为我对 Xtext 完全不认识,所以遇到了一些问题,希望您能给我一些指导。
最终我希望用户使用以下编码结构:
bgcolor: ffffff
bgsize: 500x500
box1:
bgcolor: 000000
size: 300x300
position: 100x100
box2:
bgcolor: eeeeee
size: 300x300
position: 100x100
我在 Xtext 中想出的是以下内容(我没有对 MWE2 进行任何更改):
Image : (ImageElement+=ImageElementType)*;
ImageElementType: BgColor | BgSize | Box;
// SET BASIC TERMINAL RULES
terminal SIZE : INT 'x' INT;
terminal COLOR : COLOR_BASIC | COLOR_HEX;
terminal COLOR_BASIC : 'green' | 'red' | 'blue' | 'yellow' | 'black' | 'white' | 'orange' | 'purple' | 'pink';
terminal DIGIT : ('0'..'9'|'a'..'f'|'A'..'F');
terminal COLOR_HEX : DIGIT DIGIT DIGIT DIGIT DIGIT DIGIT;
BgColor: name='bgcolor:' value=COLOR;
BgSize: name='bgsize:' value=SIZE;
Box: name='box:';
我需要解决几个问题,但我想知道解决这些问题的最佳方法是什么。
- 如何为终端规则 SIZE 中使用的 INT 设置边界。
- 如何设置 bgcolor: 或 bgsize: 只能使用一次?
- 如何设置 box1、box2 等由相同的规则 Box: 构造?
- 如何设置 box1: 下指定的属性属于该框?
- 如何强制缩进?
我不是在寻求直接的解决方案(虽然会很棒;-))但只是一些如何解决这些问题的提示。所有这些都通过编辑 MWE2 工作流程解决了吗?我对 Xtext 的文档有一些困难。
提前感谢您的时间和 cmets!
亲切的问候
【问题讨论】:
标签: xtext