Я пытаюсь написать правила в YA CC (.y
файл). Я хочу убедиться, что определенные токены встречаются вместе или не появляются вообще.
Я пытался написать это:
rule_pilot : NULL | rule_pilot rule
rule : A | B | C | D | E | F
Некоторые допустимые строки:
- A BCD
- A C E DB
- F CD A B
- AE
- FA
- EFA
Как показано в примере допустимых строк, я хочу получить все B
, C
и D
входят в строку или ни один из них не входит в строку . Но rule_pilot не может этого гарантировать. Он также будет принимать строки, такие как AB C, B et c.
Как мне написать rule_pilot
, чтобы он удовлетворял вышеупомянутым критериям?