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)。 您可以将他指向该网页,并声明您具有"纯上下文无关语法"。