简体   繁体   中英

Unknown type of macro in C++

I noticed something when looking the kind of language of a software (openFOAM) which is written in C++. It was something like,

field value;

For example,

temperature 25;

I wonder how this works. I mean how temperature is set to 25 without using equality sign. Any idea?

Because openFOAM has a parser that understands that format.

Such a parser is not hard to make, and C++ (with the help of a parser-generator tool like yacc, bison) is a popular choice for parsers because it can be very fast.

C++ is a Turing-complete language, therefore it can do anything that any other language can. Specifically, it can process data that doesn't look like C++ code.

Programming languages are typically context free. If the language is context free it can be parsed (I won't say it's trivial but it's a problem that has been solved so many times before and if you take a compilers class you'll have to do it for simple langauges).

The parser is simply looking for a declarations of the format field value; . It appears there is no type check happening so it is simply splitting on semi colon then on the space. Read about parsing context-free langauges, push down automata, and context free grammars if you're interested in learning about parsing source code.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM