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

将一种语言的语法(用ANTLR编写)转换为正式语言/数学符号,antlr,formal-languages,formal-methods,Antlr,Formal Languages,Formal Methods,在我当前的项目中,我的老板分配了一项工作,将领域特定语言的语法(用ANTLR编写)表达为正式语言/符号。例如,下面是一个小的语法代码片段 vocabSpec : 'resources' ':' resources_def ; // Resource definition resources_def : 'sensors' ':' (sensor_def)+ // Sensor definition 'actuators'

在我当前的项目中,我的老板分配了一项工作,将领域特定语言的语法(用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语法本身就是一种形式规范。我不知道--我怎样才能以正式的方式指定这种语法。你能给我一些把上述语法写成形式规范/数学符号的方法吗?

是的,ANTLR语法是一种形式系统。基于此,你可以直面宣布胜利


他可能想要的不是ANTLR语法。正确地说,ANTLR语法中用于构建树等的注释只是混淆了问题,各种lookaheads也是如此。因此,在您看来,我将删除所有注释,并可能将语法重新编入IEEE EBNF(请参阅)。你可以把他指向那个网页,然后声明你有一个“纯上下文无关语法”。

是的,ANTLR语法是一个正式的系统。基于此,你可以直面宣布胜利


他可能想要的不是ANTLR语法。正确地说,ANTLR语法中用于构建树等的注释只是混淆了问题,各种lookaheads也是如此。因此,在您看来,我将删除所有注释,并可能将语法重新编入IEEE EBNF(请参阅)。你可以把他指向那个网页,并声明你有一个“纯上下文无关语法”。

非常感谢Ira Baxter的指点。你能给我一些建议吗?我如何将上述语法指定为数学概念?为什么你认为这些不是数学概念?我相信上述语法中嵌入了关键字(如“资源”、“操作”、“生成”)。它们不够通用,不能用于设计其他领域特定的语言。如果我错了,请纠正我。弄清楚你在问什么问题。你想要“一个更数学化的ANTLR版本”;我告诉过你一个办法。关于“关键字‘资源’与设计DSL有什么关系”的问题与最初的问题相去甚远,我将忽略它。对不起,Ira Baxter,我不同意你的观点。我已经表达了我对“数学概念”的兴趣。非常感谢Ira Baxter的指点。你能给我一些建议吗?我如何将上述语法指定为数学概念?为什么你认为这些不是数学概念?我相信上述语法中嵌入了关键字(如“资源”、“操作”、“生成”)。它们不够通用,不能用于设计其他领域特定的语言。如果我错了,请纠正我。弄清楚你在问什么问题。你想要“一个更数学化的ANTLR版本”;我告诉过你一个办法。关于“关键字‘资源’与设计DSL有什么关系”的问题与最初的问题相去甚远,我将忽略它。对不起,Ira Baxter,我不同意你的观点。我已经表达了对“数学概念”的兴趣。