编程一个简单的编译器
问题描述:
我正在编写一个简单语言的编译器。编程一个简单的编译器
我做了一个词法分析器/标记器,它接收一个文件并在stdout
中打印标记。
现在我想进行语法分析,但我不知道如何修改词法分析器以便将令牌作为输入。
- 链表是对大文件(源文件80MB左右约需RAM的1.3GB)
- 我可以修改我的词法分析器每次给下一个标记它被称为(理念取自效率极低龙书),但我不知道我会做什么,如果在这个过程中的某个地方我必须回去阅读以前的记号。
做这些事情的正确方法是什么?
答
实现在词法分析器一个nextToken()
方法的标准方式。解析器调用此方法(或语法分析器),直到整个输入被消耗完。
,但我不如果一个地方在这个过程中,我必须回去看以前的令牌
这不是通常情况下,我会做什么。但是,解析器可能需要做的是将已经看到的令牌(或取决于解析器的前瞻的许多令牌)“推回”。在这种情况下,词法分析器提供pushBack(Token)
,它确保下一次调用nextToken()
将返回提供的令牌,而不是出现在输入中的下一个令牌。
什么“简单的语言”有80 MB的源文件? :-) – 2011-03-27 12:55:43
那么这是一个很好的问题。这是一种简单的语言,但我想保持整洁,因为这个项目可能会在未来成长。 – faulpin 2011-03-27 13:06:30