lex识别变量以及遇到的坑

首先我们去写一个lex的描述文件

%%
"LET" {printf("Keyword");}
[0-9A-Fa-f]+H { printf("Number"); }
[A-Za-z][A-Za-z0-9]* { printf("Identifier");}
"=" { printf("Operator"); }
. {}
%%

这里需要注意的是如果我们把LET放在第一行是没问题的,但是如果我们把LET那一行给放到后面的会就会报错,报了warning, rule cannot be matched的错误,原因就是因为在处理LET的时候就会实现匹配了前面的规则,后面的规则就无效了

然后我们创建一个.txt文件,在里面输入字符串LET Something01 = DeadBeefH,然后进行用生成的词法分析程序进行分析,得到了下面的结果

KeywordIdentifierOperatorNumber

因为LET正好和Keyword匹配,而Something01正好和Identifier匹配,然后Operator是和=号相匹配的,以及Number是和DeadBeefH匹配的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值