конвертиране на граматика (написана на 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 на всеки език сама по себе си е формална спецификация. Нямам представа - как мога да уточня, че тази граматика е формален начин. Бихте ли ми дали указания за записване на горната граматика във формална спецификация/математически нотации?


person Pankesh    schedule 13.04.2013    source източник


Отговори (1)


Да, граматиката на ANTLR е формална система. Въз основа на това можете просто да обявите победа с право лице.

Той вероятно иска нещо различно от ANTLR синтаксис. И с право анотациите в граматиката на ANTLR за изграждане на дървета и т.н. просто объркват проблема, както и различните предварителни прегледи. Така че на ваше място бих премахнал всички анотации и вероятно бих преработил граматиката в IEEE EBNF (вижте http://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form). И можете да го насочите към тази уеб страница и да декларирате, че имате "чиста граматика без контекст".

person Ira Baxter    schedule 13.04.2013
comment
Много благодаря на Ира Бакстър за вашата насока. Бихте ли могли да ми предоставите указания относно -- как мога да конкретизирам горната граматика в математически понятия ? - person Pankesh; 13.04.2013
comment
Защо мислиш, че това не са математически понятия? - person Ira Baxter; 13.04.2013
comment
Вярвам, че гореспоменатата граматика е вградена с ключови думи (като „ресурси“, „действие“, „генериране“). Те не са достатъчно общи, за да могат да се използват за проектиране на други специфични за домейна езици. Моля, поправете ме, ако греша. - person Pankesh; 13.04.2013
comment
Разберете какъв въпрос задавате. Искахте по-математическа версия на ANTLR; Казах ти един начин да го получиш. Въпрос за това как ключовата дума „ресурс“ има нещо общо с проектирането на DSL е толкова далеч от първоначалния въпрос, че просто ще го игнорирам. - person Ira Baxter; 13.04.2013
comment
Съжалявам, Ира Бакстър, не съм съгласен с теб. Вече изразих интереса си към математическите понятия. - person Pankesh; 13.04.2013
comment
@PankeshPatel Какво всъщност означава това? - person Dave Newton; 17.04.2013
comment
Можете ли да посочите някои източници, сравняващи граматиката на ANTLR срещу BNF срещу EBNF? Мисля да използвам граматиката на ANTLR, за да укажа DSL за документ, свързан с официални езици. Трябва ли да го пренапиша в BNF или ANTLR също се приема добре от изследователите? - person Jus12; 30.09.2015
comment
Всичко, от което се нуждае една изследователска работа, е ясна спецификация на граматиката. Можете да използвате всякакъв формализъм (ANTLR е добре, класическият EBNF също), стига да кажете каква е вашата нотация. От практическа гледна точка хората са склонни да използват EBNF, тъй като версията на ANTLR съдържа много ненужни подробности за разбиране на технически документ; например, никой не се интересува как изглеждат лексемите при предположението, че те лесно се определят. Дори често използваният EBNF е съкратен; всичко, което искате в хартията, е това, което е необходимо, за да я разберете. ... - person Ira Baxter; 30.09.2015
comment
.... Предлагам ви да внедрите вашия DSL с помощта на ANTLR (или каквото и да е), и след това да напишете съкратено EBNF, за да посочите основните характеристики. Не забравяйте, че колкото повече място заема вашата граматика в статията, толкова по-малко място ще имате, за да обясните защо има това, което има, защо тези концепции са интересни и какви резултати имате. Това са идеите, които техническият читател наистина иска. - person Ira Baxter; 30.09.2015