c++中未知类型的宏
Unknown type of macro in C++
我注意到一个用c++编写的软件(openFOAM)的语言。就像,
field value;
例如,temperature 25;
我想知道这是如何工作的。我的意思是,如何在不使用等号的情况下将温度设置为25度。任何想法?
因为openFOAM有一个解析器可以理解这种格式。
这样的解析器并不难制作,c++(在像yacc、bison这样的解析器生成器工具的帮助下)是解析器的流行选择,因为它可以非常快。
c++是一种图灵完备的语言,因此它可以做任何其他语言可以做的事情。具体来说,它可以处理看起来不像c++代码的数据。
编程语言通常与上下文无关。如果语言是上下文无关的,它可以被解析(我不会说这是微不足道的,但这是一个已经解决了很多次的问题,如果你选择一个编译器类,你将不得不为简单的语言做这个)。
解析器只是查找格式为field value;
的声明。似乎没有发生类型检查,所以它只是在分号上分割,然后在空格上分割。如果您对解析源代码感兴趣,请阅读有关解析上下文无关语言、下推自动机和上下文无关语法的内容。
相关文章:
- OpenCV C++:当垫子类型未知时无法访问垫子元素?
- 参数数据类型未知的可变参数函数
- 矢量迭代器类型未知
- 模板函数的返回类型未知,使用 decltype 时代码重复
- 使用不同类型 /未知类型的类模板初始化向量
- 当类型未知时调用模板方法
- 当类类型未知时,指向非静态成员函数的函数指针
- 如何在数据类型未知的C++中创建模板类
- 组件 X 的超类型未知,其某些属性未经验证
- 当数据类型未知时如何声明数组
- 如何在对象类型未知时实现交换函数
- 类成员是类型未知的派生对象
- 模板中的返回类型未知
- 在运行时之前调用类型未知的模板化函数
- 当类类型未知时调用成员函数
- 在编译时使用类型未知的对象初始化
- 处理运行时类型未知的模板
- 模板类的返回类型未知
- 当编译时数据格式和类型未知时,C++将数据读入内存
- 属性类型未知的模板类中的默认构造函数