将一种语言的语法(用ANTLR编写)转换为形式语言/数学符号

converting grammar (written in ANTLR) of a language into formal language/mathematical notations

在我当前的项目中,我的老板已经分配了一项工作,将领域特定语言的语法(用ANTLR编写)表达为正式语言/符号。 例如,以下是语法的一小段代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
     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语法本身都是形式规范。 我不知道-如何指定这种语法是正式的方式。 您能给我一些将上述语法写成正式规范/数学符号的指示吗?


是的,ANTLR语法是一个形式系统。 基于此,您可以面无表情地宣告胜利。

他可能想要的不是ANTLR语法。 而且,正确的是,ANTLR语法中用于构建树等的注释,就像各种前瞻一样,只会使问题感到困惑。 因此,在您的鞋子中,我将删除所有注释,并可能将语法重铸为IEEE EBNF(请参阅http://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form)。 您可以将他指向该网页,并声明您具有"纯上下文无关语法"。