c++中未知类型的宏

Unknown type of macro in C++

本文关键字:类型 未知 c++      更新时间:2023-10-16

我注意到一个用c++编写的软件(openFOAM)的语言。就像,

field value;
例如,

temperature 25;

我想知道这是如何工作的。我的意思是,如何在不使用等号的情况下将温度设置为25度。任何想法?

因为openFOAM有一个解析器可以理解这种格式。

这样的解析器并不难制作,c++(在像yacc、bison这样的解析器生成器工具的帮助下)是解析器的流行选择,因为它可以非常快。

c++是一种图灵完备的语言,因此它可以做任何其他语言可以做的事情。具体来说,它可以处理看起来不像c++代码的数据。

编程语言通常与上下文无关。如果语言是上下文无关的,它可以被解析(我不会说这是微不足道的,但这是一个已经解决了很多次的问题,如果你选择一个编译器类,你将不得不为简单的语言做这个)。

解析器只是查找格式为field value;的声明。似乎没有发生类型检查,所以它只是在分号上分割,然后在空格上分割。如果您对解析源代码感兴趣,请阅读有关解析上下文无关语言、下推自动机和上下文无关语法的内容。