Изменения

Перейти к: навигация, поиск

Атрибутные транслирующие грамматики

137 байт добавлено, 23:59, 4 июня 2015
Атрибуты в ANTLR
==Атрибуты в ANTLR==
Общедоступный генератора разборщиков ANTLR<ref>[http://www.antlr.org/ ANTLR {{---}} Parser generator]</ref> поддерживает синтаксически управляемое определение.  Рассмотрим для примера грамматику арифметических выраженийс оператором $+$, $*$, и выводом результата выражениая.
Вне продукций грамматики бывает нужно вставить в сгенерированный разборщик(для Java) package, import, а также некоторые поля и методы. Это делается с помощью '''@header''' и '''@members''':
Естественным образом можно добавлять действия в продукции, где это нужно:
'''stat:''' '''e''' NEWLINE {System.out.println($e.val);}
| ID '=' '''e''' NEWLINE {memory.put($ID.text, $e.val); System.out.println(ID.getText() + "=" + $e.val);}
| NEWLINE ;
'''e''' '''returns''' [int val]
: a=e op=('*'|'/') b=e {$val = eval($a.val, $op.type, $b.val);} | a=e op=('+'|'-') b=e {$val = eval($a.val, $op.type, $b.val);}
| INT {$val = $INT.int;}
| ID {
497
правок

Навигация