我想知道是否有人知道用于解析任何编程语言(如果可能的话c或c ++)的算术表达式(带有函数和所有)的正则表达式是什么?对于我们需要找到一个项目的项目从一个真正的编程语言,但我找不到。
答案 0 :(得分:2)
这些不是正则表达式,因为正则表达式没有足够的力量来解析它。
编译器使用的是无上下文语法或C++.甚至是上下文敏感语法。
<强>为什么吗
编程表达式可以级联:例如,您可以在if
中的if
中编写if
...现在正则表达式无法处理层次结构。
编程语言使用语法:一组描述语言形状的规则。例如:
<expression> -> <if-expression>
<expression> -> "a = 0;"
<if-expression> -> if <condition> then <expression> fi
<condition> -> "a == b"
(简单示例语法)。
现在基于该语法,可以推导出:
if a == b then
if a == b then
a = 0;
fi
fi
编译器的第一步是构建一个抽象语法树:类似于:
if
├── a == b
└── if
├── a == b
└── a = 0;
通过向后解析规则来形成。
例如,This文档描述了C ++的语法。