私は非常に単純なC#文法のサブセットを練習として書いています。ANTLRのトークン間にスペースを入れない
しかし、私は白い空白が私にいくつかの問題を与えているというルールを持っています。
は、私は次のように区別したい:
int a;
int? b;
最初は「通常の」int型であり、第二は、NULL可能のint型です。
しかし、私の現在の文法では、これを解析できません。
type : typeBase x='?' -> { x == null } typeBase
-> ^('?' typeBase)
;
typeBase : 'int'
| 'float'
;
事はこれらのルールwhith、それが唯一の前に空白で動作することである、このような「?」:私はしたくないと思い
int ? a;
。
アイデア?
'type'の書き換えルールが間違っています。書き換えルールは2つあります。また、これはオプションではないでしょうか?今は常に ''? ''を含んでいなければなりません。 –
とにかく、書き換えルールがなければ、 'int?'と 'int?'の両方が正しく解析されます。 –