开始学习antlr4

来源:互联网 发布:品茗标书制作软件 编辑:程序博客网 时间:2024/05/01 08:44

按照https://theantlrguy.atlassian.net/wiki/display/ANTLR4/ANTLR+4+Documentation中的开始学习antlr4,成功运行Hello程序。

先记录一下,翻译的不准确理解的不到位的地方还请大家指正。

1.标示符

token names/rules用大写

rulenames用小写

和java的标示符规则类似,开头可以是_,数字等,其他的可以用字母等,如下规则。

fragment
NameChar
   : NameStartChar
   |'0'..'9'
   |'_'
   |'\u00B7'
   |'\u0300'..'\u036F'
   |'\u203F'..'\u2040'
   ;
fragment
NameStartChar
   :'A'..'Z'|'a'..'z'
   |'\u00C0'..'\u00D6'
   |'\u00D8'..'\u00F6'
   |'\u00F8'..'\u02FF'
   |'\u0370'..'\u037D'
   |'\u037F'..'\u1FFF'
   |'\u200C'..'\u200D'
   |'\u2070'..'\u218F'
   |'\u2C00'..'\u2FEF'
   |'\u3001'..'\uD7FF'
   |'\uF900'..'\uFDCF'
   |'\uFDF0'..'\uFFFD'
   ;
可以用antlr的工具的-encoding命令来改变编码格式(grammarfile用UTF-8格式)。

字面值

不区分字符和字符串,都是简单的识别单个字符。识别中不包含正则表达式,但可以用标准的转换符号。

动作

动作即代码块,在{}里面。

嵌入的代码可以放置在@header and @members命名的动作,词法和语法分析的规则里面,除了语法分析器的参数和属性部分,例如参数,局部变量。

动作时不被解释或者翻译进入生成的词法和语法分析器的。

关键字

importfragmentlexerparsergrammarreturnslocalsthrowscatchfinallymodeoptionstokens

虽然rule,if之类的不是关键字,但还是尽量避免不要用之类的词作为命名。




0 0
原创粉丝点击