如果找到其他字符,则忽略结束字符(在代码中查找范围) 我正在尝试如何在C++中使用正则表达式来创建更高级的东西,比如创建自己的编码语言(只是为了好玩),我在读取代码的范围方面有点问题。
我现在用这个文本来测试我的正则表达式如果找到其他字符,则忽略结束字符(在代码中查找范围) 我正在尝试如何在C++中使用正则表达式来创建更高级的东西,比如创建自己的编码语言(只是为了好玩),我在读取代码的范围方面有点问题。,c++,regex,scope,C++,Regex,Scope,我现在用这个文本来测试我的正则表达式 private char test; public static int foo = 0; private int var = 0; private void run(char data, int add) { var += 50 + add; print (var + test, asdm, asf.getString()); if (var == 70) { print("yes"); } }
private char test;
public static int foo = 0;
private int var = 0;
private void run(char data, int add)
{
var += 50 + add;
print (var + test, asdm, asf.getString());
if (var == 70) {
print("yes");
}
}
我用来读取run的作用域的正则表达式和其中的if语句
\{([\S\s]*?)\}
这就是它匹配的atm
{
var += 50 + add;
print (var + test, asdm, asf.getString());
if (var == 70) {
print("yes");
}
问题是它在实际需要的}之前找到一个},我想知道是否有办法绕过这个问题,将每个单独的作用域作为它自己的一部分来捕获
我曾尝试过处理环回,但我一直得到错误“表达式包含不匹配的(and)”,即使它应该是有效的正则表达式。EdEx,我发现C++版本的ReGEX(默认的一个)不支持查找,这就是为什么它不能工作。正则表达式不能匹配平衡表达式,除非它有一些ReExp引擎的递归扩展。SCNR:如果你正在创建一个语言,你应该使用一个类似于<代码> BISO/<代码>的语法分析器生成器。正则表达式可以识别单个标记,但您应该使用语法来识别语言的大规模结构。我已经快速查看了bison,但它似乎需要一个预定义的语法文件来解析代码,并且每次都需要一个新的语法文件。。等我有时间再看一下。