Table-Driven Lexers-保留关键字呢?

问题描述 投票:1回答:1

[这个问题源于我在CS网站上提出的另一个问题。 Reference

我已经尝试搜索各大学的在线课程笔记,以便找到所面临问题的答案。

我必须为任务的自定义语言实现编译器。该语言包含一些符号,例如英语字母中的字母和数字。我设法找到了这些示例,它们非常简单。例如:Go to Page 25但是,该语言还包含

保留字

,例如iffor这是我遇到问题的地方。假设词法分析器正在尝试读取字符串“

if

expression)语句”。如果我使用类似Page 4的实现,它将错误地将if归类为标识符。
因此,我的想法是实施“超前”机制,以便在词法分析器对正在读取的内容进行分类并将其发送到DFA之前,它可以做出明智的正确决定。

例如:词法分析器遇到

i

。由于i可以属于保留字(if),因此词法分析器应检查next字符。如果它是f,则词法分析器应确保它实际上不是以if开头的普通字符串,例如ifxyz。[我喜欢这个主意,除了我没有从网上看课程笔记中找到类似的东西,这让我觉得也许我做错了。

[这个问题源于我在CS网站上提出的另一个问题。参考资料我尝试搜索各大学的在线课程笔记,以便找到答案...

compiler-construction grammar lexer lexical-analysis formal-languages
1个回答
0
投票
您的前瞻示例实际上就像是DFA。遗憾的是,除了将关键字硬编码到您使用的DFA中之外,没有简单的方法可以解决此问题。
© www.soinside.com 2019 - 2024. All rights reserved.