我正在尝试创建一个非常非常基本的命令行解析器。
例如,我可以有这个命令:
command @arg1 value1 @arg2 value2
我试图用这样的基本语法类来实现它:
public class CmdGrammar : Grammar
{
public CmdGrammar()
: base(caseSensitive: true)
{
var program = new NonTerminal("program");
var command = new IdentifierTerminal("commandName");
var argumentName = new IdentifierTerminal("argumentName");
var argumentValue = new IdentifierTerminal("argumentValue");
Root = program;
argumentName.AddPrefix("@", IdOptions.NameIncludesPrefix);
program.Rule = command + argumentName + argumentValue;
}
}
这允许整个命令使用单个参数,但我不知道如何支持无限参数。
我怎样才能做到这一点?
先感谢您!