Является ли это действительной грамматикой BNF?

Я только что написал немного BNF, и я новичок в этом, поэтому я хотел проверить с вами, ребята, действительна ли это грамматика, и может ли введенный ввод работать?

БНФ:

<expr> -> <id>  <id> + <id> +  | <id>  <id> + <id> - | <id>  <id> - <id> + | <id>  <id> - <id> -
<id> ->  A | B | C

Мой постфиксный ввод:

A B + C -

Будет ли это работать? Заранее спасибо.


bnf
person nward17    schedule 29.10.2014    source источник


Ответы (1)


Допустимым разделителем между символом и выражением является ::=, а не ->. Подробнее читайте в Википедии.

В любом случае, лучшая грамматика будет выглядеть так:

<expr> ::= <id> [ <id> [ <operator> ]? ]{2}
<operator> ::= '-' | '+'
<id> ::= [ '0' .. '9' | 'A' .. 'Z' | 'a' .. 'z' ]+
person Alain Tiemblo    schedule 29.10.2014
comment
Будет ли мой текущий код работать с использованием ::=? Я пытаюсь выяснить, правильная ли у меня идея. На данный момент я не пытаюсь сделать красивую грамматику. - person nward17; 29.10.2014
comment
Я не знаю. BNF — это стандарт, например, когда вы определяете протокол, но используется здесь для языковых грамматик. Какой парсер вы используете? - person Alain Tiemblo; 29.10.2014
comment
Я не использую парсер. Я на самом деле изучаю BNF в данный момент, и мой профессор просто заставляет нас писать грамматику, не проверяя ее. Конкретный вопрос, которым я занимаюсь, - это написать грамматику в BNF для постфиксных выражений сложения и вычитания, включающих только переменные A, B и C. - person nward17; 29.10.2014
comment
Затем нет кода, который будет работать с использованием ::= или нет, так как кода нет. После определения грамматики BNF вы напишете код (например, создадите простые парсеры LL). - person Alain Tiemblo; 29.10.2014
comment
Как я могу узнать, является ли мой BNF действительным ответом на вопрос о заданиях? - person nward17; 29.10.2014
comment
BNF — это определение грамматики, так что это не тестируемый код. Это только логика. Пожалуйста, прочитайте ссылку на Википедию, которую я дал в своем ответе. - person Alain Tiemblo; 29.10.2014
comment
В любом случае, чтобы ответить на ваш вопрос, да указанная вами грамматика будет соответствовать введенным вами данным, используя второе ИЛИ. - person Alain Tiemblo; 29.10.2014