Преобразование грамматики (написанной в ANTLR) языка в формальный язык / математические обозначения
В моем текущем проекте мой начальник назначил задание выразить грамматику (написанную на ANTLR) языка, специфичного для предметной области, в формальный язык / нотации. Например, ниже приведен небольшой фрагмент кода грамматики.
vocabSpec : 'resources' ':' resources_def ; // Resource definition
resources_def :
'sensors' ':' (sensor_def)+ // Sensor definition
'actuators' ':' (actuator_def)+ // Actuator definition
;
sensor_def:
CAPITALIZED_ID
(sensorMeasurement_def ';')* ;
sensorMeasurement_def : 'generate' lc_id ':' CAPITALIZED_ID ;
// Actuator definition : Actuator name, actions and its parameters
actuator_def: CAPITALIZED_ID (action_def ';')* ;
action_def: 'action' CAPITALIZED_ID '(' (parameter_def)? ')' ;
parameter_def : lc_id ':' CAPITALIZED_ID (',' parameter_def )? ;
lc_id: ID ;
ID : 'a'..'z' ('a'..'z' | 'A'..'Z' )* ;
CAPITALIZED_ID: 'A'..'Z' ('a'..'z' | 'A'..'Z' )*;
Насколько мне известно, грамматика ANTLR любого языка сама по себе является формальной спецификацией. Понятия не имею - как я могу указать эту грамматику формальным способом. Не могли бы вы дать мне указатели для написания вышеуказанной грамматики в формальной спецификации / математических обозначениях?
1 ответ
Да, грамматика ANTLR - это формальная система. Исходя из этого, вы можете просто объявить победу с открытым лицом.
Он, вероятно, хочет что-то кроме синтаксиса ANTLR. И по правде говоря, аннотации в грамматике ANTLR для построения деревьев и т. Д. Просто запутывают проблему, как и различные взгляды. Таким образом, я бы удалил все аннотации и, вероятно, переделал грамматику в IEEE EBNF (см. http://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form). И вы можете указать ему на эту веб-страницу и объявить, что у вас есть "чистая контекстно-свободная грамматика".