2013-03-18 2 views
1

Как я могу интерпретировать это как грамматик ENBF?EBNF интерпретация грамматики

<assign>--> <id> = <expr> 

<id>--> A | B | C 

<expr> --> <expr> * <expr> 

<expr> --> <expr> + <expr> 

| <id> + <expr> 

|(<expr>) 

| <id> 

я могу сделать дерево разбора и вывод любого оператора с помощью этого грамматику, но у меня возникают проблемы с EBNF.

+1

Похоже, что он уже в BNF (который является подмножеством EBNF), поэтому изменений не требуется (хотя и неоднозначно). Здесь есть вопрос? Какая «проблема» у вас с EBNF? –

ответ

0
<assign>--> <id> = <expr> 

An assign является последовательность: id равно-знак expr.

<id>--> A | B | C 

id является одним из A, B или C

<expr> --> <expr> * <expr> 
<expr> --> <expr> + <expr> 
| <id> + <expr>  
|(<expr>)  
| <id> 

Выражение может быть:

  1. Произведение двух выражений (инфиксным обозначений)
  2. Добавление два выражения (инфиксная нотация)
  3. Добавление идентификатора и выражения (которое является частным случаем добавления двух выражений, где первое выражение равно <id>)
  4. Скобленое выражение.
  5. Идентификатор.
Смежные вопросы