最好的现代文本解析?AKA何时使用Lex和Yacc?

3 regex parsing yacc lex

我有输入文本块的命令和参数,每行一个,如

XYZ ARG1,ARG2,ARG3,...,ARGN
Run Code Online (Sandbox Code Playgroud)

我想验证参数XYZ是否适合该特定命令并执行正确的代码块(如果是).有大约100个命令,其中一些有可变数量的参数,不同的关系(即如果命令XYZ被调用,那么我也需要ABC调用命令).

还存在命令,例如:

COMMAND
XYZ ARG1
BEF ARG1 ARG2
ENDCOMMAND
Run Code Online (Sandbox Code Playgroud)

重要的是文本包含在COMMAND和中ENDCOMMAND.

通常对于这样的事情,我会使用Lex和Yacc而不是正则表达式,但还有更现代的东西吗?代码是用C#编写的.在MSDN中有什么可以做到这一点而不是旧学校C Lex和Yacc吗?

Aym*_*ieh 5

如果您正在寻找Lex/Yacc的替代品,请查看ANTLR.它支持各种语言的代码生成,包括C#.