算术表达式的编程语言正则表达式

时间:2015-01-06 00:58:11

标签: regex

我想知道是否有人知道用于解析任何编程语言(如果可能的话c或c ++)的算术表达式(带有函数和所有)的正则表达式是什么?对于我们需要找到一个项目的项目从一个真正的编程语言,但我找不到。

1 个答案:

答案 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 ++的语法。