【发布时间】:2013-03-18 18:44:26
【问题描述】:
我正在尝试创建一个包含数字和字符串的语法,如下所示:
日期:2013 年 3 月 2 日
我创建了一组或多或少适应这种情况的规则:
Date:
'Date': DAY Month YEAR
;
terminal DAY:
('1'..'9') | (('1'..'3')('0'..'9'))
;
Month:
name = ('Jan'|'Feb'|'Mar'|'Apr)
;
terminal YEAR
('0'..'2)('0'..'9')('0'..'9')('0'..'9')
;
这套规则似乎有很多问题:
所写的日期规则似乎会生成错误:“无法在规则内更改类型两次”。我不知道这意味着什么,除了 Xtext 显然不允许在同一规则中使用数字和选择字符串。
如果我从 Date 中删除 Month 规则,Xtext 会编译,但语法似乎无法正常工作。 DAY 规则应该提供从 1 到 9 的单个数字和两位数之间的选择,但由于某种原因,它只接受两位数。所以虽然我可以输入如下一行:
日期:2013 年 12 月
被接受,但日期如下:
日期:2013 年 2 月
不是。
我是否发现规则中的错误会破坏终端规则中的数字?或者是否缺少某些导致忽略“|”的内容在我的号码里?另外:“不能在规则内更改类型两次”错误到底是什么意思,我该如何解决???
请高人指教。
【问题讨论】: