按照https://theantlrguy.atlassian.net/wiki/display/ANTLR4/ANTLR+4+Documentation中的开始学习antlr4,成功运行Hello程序。
先记录一下,翻译的不准确理解的不到位的地方还请大家指正。
1.标示符
token names/rules用大写
rulenames用小写
和java的标示符规则类似,开头可以是_,数字等,其他的可以用字母等,如下规则。
fragmentNameChar : NameStartChar |'0'..'9' |'_' |'\u00B7' |'\u0300'..'\u036F' |'\u203F'..'\u2040' ;fragmentNameStartChar :'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' ;字面值
不区分字符和字符串,都是简单的识别单个字符。识别中不包含正则表达式,但可以用标准的转换符号。
动作
动作即代码块,在{}里面。
嵌入的代码可以放置在@header and @members命名的动作,词法和语法分析的规则里面,除了语法分析器的参数和属性部分,例如参数,局部变量。
动作时不被解释或者翻译进入生成的词法和语法分析器的。
关键字
import, fragment, lexer, parser, grammar, returns, locals, throws, catch, finally, mode, options, tokens
虽然rule,if之类的不是关键字,但还是尽量避免不要用之类的词作为命名。
1043

被折叠的 条评论
为什么被折叠?



