语法文件的写法

0.语法文件的写法
将语法看成有规律的一句话,把这句话分成不同的部分组成
,将每个部分作为元素看待,将这些元素综合起来做一个switch结构,
记号管理器每次生产一个token对象, 只要是这个token对象符合语法
那么这个switch结构中肯定对应有这个token类型的条件分支,
找到分支后处理一下后继续进行递归找下一个元素,这样不断的递归下去
,终将会把这句话给递归完,并且验证到他是否符合语法的要求。
//别定义字母和数字还有如果定义也必须定义成私有类型的否则就会有冲突

>如何表示转义后的字符
  < #_ESCAPED_CHAR : "\\" ~[ ] > 
  因为转义字符的时候用的是斜杠所以以斜杠开头后面跟着任意的字符

>将多个正则表达式组装成一个正则
 < #_DATEY : ([ "0"-"9" ]){4}> //{4}表示只可以出现4个0到9个数字
 < #_DATEYM : ([ "0"-"9" ]){6}>
 < #_DATEYMD : ([ "0"-"9" ]){8}>
 
 < #_DATE :(< _DATEY >| < _DATEYM >| < _DATEYMD >) >
 // 这里将三个正则表达式综合起来组成了一种switch条件结构
 // 表示必须要满足其中一个
 // 正则和正则之间可以重复利用


>((< NOT >
    { 
      System.out.println("xxx");
    }
  )? //这个相当于if 应为代表最多之出现一次
   {System.out.println("process");}
  )*
  // 只有满足<NOT>之后才会输出xxx,和process并且才会执行循环

>()+表示一次以上
>()*循环















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值