开始学习antlr4

按照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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值