我正在为一套理论(联合,交集等)的功能制作一个非常基本的解释器(使用我自己的语言)。我正在用C ++编写代码,目前正在从.txt文件中读取和解析。但是,我正在努力使它能够以“逐个命令”的方式执行代码,而无需关闭命令窗口。我希望能够通过使用回车来一个接一个地读取和执行多个功能。
有没有办法可以更改我的解析器,以便它一直接受命令/函数而不是一次读取整个.txt文件?
答案 0 :(得分:1)
通常,当"解析"一些东西,想法是一次读取令牌,而不是真正关心线条和其他类似的东西。
如果您的语言采用这种方式构建,您可以将您的语言作为流阅读,当您看到对某个函数的调用(或任何您想要调用它的函数)时,请执行该函数[假设您不要编译成需要一次编译整个事物的机器代码,当然 - 如果是这样的话,那么你需要做一些工作......]
但是如果你想一次读一行,那么使用istream& getline(istream&, std::string&)
方法。它读取一行。然后,您解析该行并对解析结果执行任何有意义的操作。