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并且才会执行循环
>()+表示一次以上
>()*循环
语法文件的写法
最新推荐文章于 2023-01-04 23:39:22 发布