Преобразование грамматики (написанной в 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). И вы можете указать ему на эту веб-страницу и объявить, что у вас есть "чистая контекстно-свободная грамматика".

Другие вопросы по тегам