Я работаю с Flex / Bison и VHDL 93. У меня проблема со следующим правилом:
choices ::= choice { | choice }
Если я преобразую его в BNF:
N1 ::= %empty | choice
N2 ::= %empty | N2 N1
choices ::= choice N2
choices ::= choice | choice N2 N1
choices ::= choice | choices N1
choices ::= choice | choices | choices choice
Но выбор: выбор бесполезен, так что, наконец,
choices ::= choice | choices choice
Итак, в чем проблема?Хорошо, представьте, что правило для преобразования:
choices ::= choice { choice }
И я применяю правила для преобразования в BNF:
N1 ::= choice
N2 ::= %empty | N2 N1
choices ::= choice N2
choices ::= choice | choice N2 N1
choices ::= choice | choices N1
choices ::= choice | choices choice
Что является тем же самым предыдущим результатом !!!Что происходит?В чем проблема?У меня были проблемы с этим правилом более года назад, я снова работаю в этом проекте, и мои проблемы с выбором все еще здесь: P
Вот что стандарт VHDL 93 сказал о вариантах:
Во втором случае «варианты» могут быть заменены списком «вариантов», разделенных вертикальными чертами.
Я не знаю, откуда взято «,».
Спасибо.