如何在C ++中为一个简单的语言编写一个简单的解释器,它将.txt文件作为输入并运行它。
**仅适用于+
-
/
*
out
个函数**
输入(源代码):
int a,b,c;
a=2;
b=4;
c=a+b;
out c;
译员输出:
6
我怎么能这样做?任何帮助或源代码表示赞赏。
对不起,如果你没有得到我的问题,我的英语太糟糕了。只需忽略"口译员"一秒钟我想用C ++编写一个控制台程序,它将一个txt文件作为源代码,并识别基本数学和" out"命令。是否有可能在C ++中?
答案 0 :(得分:2)
口译员通常分三步进行:
<强>词汇强> 识别特定的简单shemes,如关键字,数字,符号等。标准方法是为每个词法分析器定义正则表达式。外面有明确定义的算法来转换状态机中的reg-exp,因此您可以识别输入中的任何工作。
这是由:
<强>语法强> 在这一部分中,您将词法分析器的序列作为输入并使用它们创建树。根据语言的复杂程度,有不同的类型:top-&gt; down或down-&gt; top。 (谈及LR,LL,LALR等)
file
|...
|- c=a+b
| |- a+b
|- a
|- +
|- b
|- =
|-c
<强>语义强> 通过您的树进行操作,例如在a + b中,您获得a,b并将它们相加,然后返回上述节点,并将值设置为c。
最后说明: 小心从开始设计强大的错误/警告机制:错误类型,完整描述,检测到错误的行和字符,错误/警告级别等。
此外,为每个节点提供解析的输入(字符串),解释的内容(LEX_NUMBER)和解释的值(4)可能会很有趣。