public static GrammarRuleAlternative makeSequence(List <GrammarRuleAlternative> sequenceContent) { GrammarRuleAlternative result = new GrammarRuleAlternative(EnumType.SEQUENCE); result.sequenceContent = sequenceContent; return(result); }
public static GrammarRuleAlternative makeBrace(List <GrammarRuleAlternative> braceContent) { GrammarRuleAlternative result = new GrammarRuleAlternative(EnumType.BRACE); result.braceContent = braceContent; return(result); }
public static GrammarRuleAlternative makeTerminal(ProgramTreeElementType.EnumType terminalType) { GrammarRuleAlternative result = new GrammarRuleAlternative(EnumType.TERMINAL); result.terminalType = terminalType; return(result); }
public static GrammarRuleAlternative makeVariable(uint variable) { GrammarRuleAlternative result = new GrammarRuleAlternative(EnumType.VARIABLE); result.variable = variable; return(result); }
protected void fillRules() { rules = new List <GrammarRule>(); rules.Add(new GrammarRule( GrammarRuleAlternative.makeVariable((uint)EnumVariables.S), new List <GrammarRuleAlternative>() { GrammarRuleAlternative.makeBrace(new List <GrammarRuleAlternative>() { GrammarRuleAlternative.makeVariable((uint)EnumVariables.T), }), GrammarRuleAlternative.makeBrace(new List <GrammarRuleAlternative>() { GrammarRuleAlternative.makeVariable((uint)EnumVariables.OPA), GrammarRuleAlternative.makeVariable((uint)EnumVariables.A), }), GrammarRuleAlternative.makeBrace(new List <GrammarRuleAlternative>() { GrammarRuleAlternative.makeTerminal(ProgramTreeElementType.EnumType.REPEAT), GrammarRuleAlternative.makeVariable((uint)EnumVariables.S), GrammarRuleAlternative.makeVariable((uint)EnumVariables.S), }), } )); rules.Add(new GrammarRule( GrammarRuleAlternative.makeVariable((uint)EnumVariables.OPA), new List <GrammarRuleAlternative>() { GrammarRuleAlternative.makeTerminal(ProgramTreeElementType.EnumType.ADD), GrammarRuleAlternative.makeTerminal(ProgramTreeElementType.EnumType.SUB), GrammarRuleAlternative.makeTerminal(ProgramTreeElementType.EnumType.MUL), } )); rules.Add(new GrammarRule( GrammarRuleAlternative.makeVariable((uint)EnumVariables.A), new List <GrammarRuleAlternative>() { GrammarRuleAlternative.makeVariable((uint)EnumVariables.T), GrammarRuleAlternative.makeSequence(new List <GrammarRuleAlternative>() { GrammarRuleAlternative.makeVariable((uint)EnumVariables.T), GrammarRuleAlternative.makeVariable((uint)EnumVariables.A), }), } )); rules.Add(new GrammarRule( GrammarRuleAlternative.makeVariable((uint)EnumVariables.T), new List <GrammarRuleAlternative>() { GrammarRuleAlternative.makeTerminal(ProgramTreeElementType.EnumType.A), GrammarRuleAlternative.makeTerminal(ProgramTreeElementType.EnumType.B), } )); }
public GrammarRule(GrammarRuleAlternative leftSide, List <GrammarRuleAlternative> rightSideAlternatives) { this.leftSide = leftSide; this.rightSideAlternatives = rightSideAlternatives; }