public new static Expression Parse(TokenParser p) { Expression v1 = Mul.Parse(p); if (v1 == null) { return(null); } Expression v2; Token t = p.PeekNext(); if (t == null) { return(v1); } switch (t.Type) { case TokenType.OperatorAdd: p.CommitPeek(); v2 = Parse(p); if (v2 == null) { return(null); } return(new A(v1, v2)); case TokenType.OperatorSub: p.CommitPeek(); v2 = Parse(p); if (v2 == null) { return(null); } return(new S(v1, v2)); } return(v1); }
public new static Expression Parse(TokenParser p) { Value v1 = Value.Parse(p); if (v1 == null) { return(null); } Expression v2; Token t = p.PeekNext(); if (t == null) { return(v1); } switch (t.Type) { case TokenType.OperatorMul: p.CommitPeek(); v2 = Parse(p); if (v2 == null) { return(null); } return(new M(v1, v2)); case TokenType.OperatorDiv: p.CommitPeek(); v2 = Parse(p); if (v2 == null) { return(null); } return(new D(v1, v2)); } return(v1); }