[英]Unknown type of macro in C++
在查看用C ++编写的软件(openFOAM)的语言时,我注意到了一些东西。 就像
field value;
例如,
temperature 25;
我不知道这是如何工作的。 我的意思是在不使用等号的情况下如何将温度设置为25。 任何想法?
因为openFOAM具有可理解该格式的解析器。
这样的解析器并不难制作,C ++(借助yacc,bison等解析器生成器工具)是解析器的一种流行选择,因为它可以非常快。
C ++是图灵完备的语言,因此它可以执行任何其他语言可以执行的操作。 具体来说,它可以处理看起来不像C ++代码的数据。
编程语言通常是上下文无关的。 如果语言是上下文无关的,则可以对其进行解析(我不会说这很简单,但这是一个已经被解决了很多次的问题,如果您选择编译器类,则必须使用简单的语言来解决)。
解析器只是在寻找格式field value;
的声明field value;
。 似乎没有进行类型检查,因此它只是在半冒号上然后在空格上分开。 如果您对解析源代码感兴趣,请阅读有关解析上下文无关语言,下推自动机和上下文无关语法的信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.