public bool Process(IExpressionWalker walker) { if (walker.ValueStack.Count == 0) { walker.Fail("Internal parsing error: Expected value on the left."); return(false); } var left = walker.ValueStack.Pop(); if (!walker.Step() || walker.ValueStack.Count == 0) { if (walker.HasFailed) { return(false); } walker.Fail("Internal parsing error: Expected value on the right."); return(false); } var right = walker.ValueStack.Pop(); return(process(walker, left, right)); }
protected override bool process(IExpressionWalker walker, VauleExpression right) { var stringValue = right as VauleExpression.StringVauleExpression; if (stringValue == null) { return(walker.Fail("Internal parsing error: Expected value for run command to be a string.")); } return(true); }
protected override bool process(IExpressionWalker walker, VauleExpression left, VauleExpression right) { var leftNumber = left as VauleExpression.NumericVauleExpression; if (leftNumber == null) { walker.Fail("Internal parsing error: Expected value on the left to be a number."); return(false); } var rightNumber = right as VauleExpression.NumericVauleExpression; if (rightNumber == null) { walker.Fail("Internal parsing error: Expected value on the right to be a number."); return(false); } result = new VauleExpression.FloatVauleExpression(leftNumber.Value * rightNumber.Value); walker.ValueStack.Push(result); return(true); }