2
매우 기본적인 명령 줄 구문 분석기를 만들려고합니다. , 이것은 전체 명령에 대한 단일 인수를 허용Irony.NET에서 반복을 허용하는 방법
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;
}
}
: 나는 그런 기본적인 문법 클래스와이를 구현하기 위해 노력했습니다
command @arg1 value1 @arg2 value2
:
예를 들어,이 명령을 가질 수있다 그러나 나는 무한한 주장을지지하는 방법을 알 수 없다.
어떻게하면됩니까?
미리 감사드립니다. 그것은 Grammar.MakePlusRule(...)
방법을 사용하여 관하여
var program = new NonTerminal("program");
var command = new IdentifierTerminal("commandName");
var argumentList = new NonTerminal("argumentList");
var argument = new NonTerminal("argument");
var argumentName = new IdentifierTerminal("argumentName");
var argumentValue = new IdentifierTerminal("argumentValue");
Root = program;
program.Rule = command + argumentList;
argumentList.Rule = MakePlusRule(argumentList, null, argument);
argumentName.AddPrefix("@", IdOptions.NameIncludesPrefix);
argument.Rule = argumentName + argumentValue;
RegisterOperators(0, Associativity.Left, "@");
: