![]() |
1
4
所以你不能用
在其他语言中,这意味着翻译字符流,如
由于所有Brainfuck代币都只包含一个字符,所以对Brainfuck进行词法分析的帮助要小得多。因此,找出每个标记的结束位置和下一个标记的开始位置是不可行的,而找出标记的类型只意味着将字符与“[”、“+”等进行比较。因此,Brainfuck lexer所做的唯一有用的事情是丢弃空格和注释。
所以你的lexer要做的就是转动输入
如果您想使用解析器生成器,您需要在解析器的语法中定义令牌类型,并使lexer生成这些类型的值。然后解析器可以只解析令牌流。
如果你想手工解析,你可以调用lexer的
也就是说,我建议一直使用解析器生成器来创建AST。这样你就不必为循环创建令牌缓冲区,拥有AST实际上可以节省一些工作(你不再需要一个堆栈来跟踪哪一个)
|
![]() |
Pandemonium · 更改词法分析的状态。lexbuf公司 7 年前 |
![]() |
gornvix · 分析多个文件时出现错误的lex状态 10 年前 |
|
Xethen · 用C语言进行Lex编码 11 年前 |
![]() |
Shehzaad · 为什么它显示我的函数在返回char*时返回int? 11 年前 |
![]() |
Nikon the Third · 如何解析连续的文本流 12 年前 |
![]() |
TreeTree · lex和yacc的运行时“语法错误” 12 年前 |
![]() |
footy · 如何解决2+2和2++2冲突 12 年前 |