使用正则表达式/ c#检查yacc语法

本文关键字:检查 yacc 语法 正则表达式 | 更新日期: 2023-09-27 18:18:08

我正在开发一个解析器,我想使用正则表达式检查Yacc语法。但这似乎行不通

       // Yacc-like grammar specifications
//        Ligne ::= Expr ''n' {printf("%d 'n" , $1)}
//        Expr : Exp '+' Terme {$$ = $1 + $3; } | Terme ;
//        Terme : Terme '*' Facteur  {$$ = $1 * $3; } | Facteur ;  
//        Facteur : '(' Expr ')'  {$$ = $2; } | Chiffre ;  

String YaccProdS = @"($$)+ [=] [$]+[0-9][^']([$]+[0-9])*";
Check = Regex.Match(Text,YaccProdS);

使用正则表达式/ c#检查yacc语法

如果您只是想获得{}内部的内容,下面将为您提供,它还将$id和操作符分组。

String YaccProdS = @"('$+)'s+='s+('$+'d+)('s*([*+'/])'s*('$+[0-9]+))?"; 

一定要记得转义特殊字符,如$