次のように、数値と文字列を含む構文を作成しようとしています。
日付: 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')
;
この一連のルールには、いくつかの問題があるようです。
書かれているように、日付ルールはエラーを生成するようです:「ルール内でタイプを2回変更することはできません」。それが何を意味するのか私にはわかりませんが、Xtext では数値と選択文字列を同じルールで許可しないようです。
Date から Month ルールを削除すると、Xtext はコンパイルされますが、構文が正しく動作しないようです。DAY ルールは、1 から 9 までの 1 桁の数字と 2 桁の数字のどちらかを選択できるはずですが、何らかの理由で 2 桁の数字しか受け付けません。したがって、次のような行を入力できますが、
日付: 2013 年 12 月 12 日
は受け入れられますが、次のような日付です:
日付: 2013 年 2 月
ではありません。
ターミナル ルールの数字を壊すルールのバグを見つけましたか? または、「|」を無視する原因となる何かが欠けていますか? 私の数では?また、「ルール内でタイプを2回変更できません」というエラーは一体何を意味し、どうすれば修正できますか???
誰かアドバイスください。