Antlr3V 笔记(一)

解析器的 步骤基本是:
1)预测子句的类型
2)调用函数来匹配子结构
3)匹配词法单元
4)按照需要插入代码
5)执行自定义的操作 

match()函数的解释
    将输入流里面的词法单元和传入他的参数进行比较,然后将输入的指针向前移动。

demo1
分析语句“if x<0 then return x=0;”

grammar文件
------------------------------------------------------------------------
grammar ifstat;

stat : returnstat
| assign
| ifstat
;
returnstat
: 'return' assign ';';
assign : 'x' '=' expr;
ifstat : 'if' expr 'then' stat;
expr : 'x' '+' '0'
| 'x' '<' '0'
|   '0'
;
------------------------------------------------------------------------



demo2
分析[a,b,c]和[a,[b,c],d]

grammar文件
------------------------------------------------------------------------
list.g
grammar list;
list : '[' elements ']';
elements : element (',' element)*;
element : Name | list; //paraser
Name : ('a'..'z'|'A'..'Z')+; //lex
------------------------------------------------------------------------
重点在list的递归定义语法



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值