我正在编写一个简单语言的编译器。
我制作了一个lexer / tokenizer,它接收一个文件并在stdout
打印令牌。
现在我想进行语法分析,但我不知道如何修改我的词法分析器以将标记作为输入。
做这些事情的正确方法是什么?
答案 0 :(得分:2)
在词法分析器中实现nextToken()
方法是标准方法。解析器(或语法分析器)调用此方法,直到整个输入都被使用。
但我不知道如果在这个过程的某个地方,我必须回去读一个先前的标记
通常情况并非如此。但是,解析器可能需要做的是“推回”已经看过的令牌(或许多令牌,取决于解析器的前瞻)。在这种情况下,词法分析器提供pushBack(Token)
,确保下一次调用nextToken()
将返回提供的令牌,而不是输入中出现的下一个令牌。
答案 1 :(得分:0)