Методы синтаксического анализа на базе регулярных выражений

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

g->cap(1);

if (vars.indexOf(var)>-1)

ParseExpr (reg->cap(2));

else

result=6;

}else

{

result=9;

}

}

}

}

}

}

}

}

}

}

}

}

}

}

}(result!=0)return line_nmb;

}(QString label,nlabels)

if (labels.indexOf(label)==-1)result=5;

}MainWindow::ParseExpr(QString expr){=expr.trimmed();(expr=="")result=4;ok;.toInt(&ok, 10);(ok)return;(vars.indexOf(expr)!=-1)return;*reg;=new QRegExp("^int ([a-z]+)$");(reg->indexIn(expr)>-1){

vars.append(reg->cap(1));

return;

}=new QRegExp("^int ([a-z]+)=([0-9]+)$");(reg->indexIn(expr)>-1){

vars.append(reg->cap(1));

return;

}=new QRegExp("^([a-z]+[a-z0-9]+)\\[(.+)\\]$");(reg->indexIn(expr)>-1){

if (arrays.indexOf(reg->cap(1))!=-1){

ParseExpr(reg->cap(2));

return;

}

}operands=QStringList()"<<"<"<<"="<<"+"<<"-";(QString operand,operands)(expr.indexOf(operand)!=-1){

QStringList exprs=expr.split(operand);

foreach(QString exp,exprs)

ParseExpr(exp);

return;

}=new QRegExp("^'.'$");(reg->indexIn(expr)>-1)

return;=new QRegExp("^\"[a-z ]*\"$");(reg->indexIn(expr)>-1)

return;(expr=="'\\0'")return;=10;

}MainWindow::ShowCode(QString qwer){code=qwer.split("\n");incl=0;>clear();(QString line,code){

incl-=line.count("}");

line=line.trimmed();

for(int i=0;i<incl;i++)

line="\t"+line;

formated->append(line);

incl+=line.count("{");

}

}::~MainWindow()

{

}