private bool buildVariableExpression(FunctionExpression function) { if (!lexer.Next() || lexer.LastResult.Token != StandardTokenType.Symbol) { return(function.Invalidate("Internal parsing error: Was expecting a variable name.")); } function.Enqueue(new VariableExpression(lexer.LastResult.Content)); if (!lexer.Next() || lexer.LastResult.Token != StandardTokenType.CloseCurlyBraces) { return(function.Invalidate("Internal parsing error: Was expecting a '}'.")); } return(true); }
private bool buildExpression(FunctionExpression function) { switch ((StandardTokenType)lexer.LastResult.Token) { case StandardTokenType.Quotes: function.Enqueue(new VauleExpression.StringVauleExpression(lexer.LastResult.Content)); return(true); case StandardTokenType.Float: float floatNumber; if (float.TryParse(lexer.LastResult.Content, out floatNumber)) { function.Enqueue(new VauleExpression.FloatVauleExpression(floatNumber)); return(true); } else { return(function.Invalidate("Internal parsing error: Was expecting a float.")); } case StandardTokenType.Int: int IntNumber; if (int.TryParse(lexer.LastResult.Content, out IntNumber)) { function.Enqueue(new VauleExpression.IntVauleExpression(IntNumber)); return(true); } else { return(function.Invalidate("Internal parsing error: Was expecting a int.")); } case StandardTokenType.True: function.Enqueue(new VauleExpression.BooleanVauleExpression(true)); return(true); case StandardTokenType.False: function.Enqueue(new VauleExpression.BooleanVauleExpression(false)); return(true); case StandardTokenType.Symbol: return(buildOperationalExpression(lexer.LastResult.Content, function)); case StandardTokenType.Dot: return(true); case StandardTokenType.OpenParentheses: function.Enqueue(new ParenthesesExpression(true)); return(true); case StandardTokenType.CloseParentheses: function.Enqueue(new ParenthesesExpression(false)); return(true); case StandardTokenType.OpenCurlyBraces: return(buildVariableExpression(function)); //walker.ProcessStack.Enqueue(new CurlyBracesExpression(true)); //return true; case StandardTokenType.CloseCurlyBraces: //walker.ProcessStack.Enqueue(new CurlyBracesExpression(false)); //return true; return(function.Invalidate("Internal parsing error: Was expecting a '{'.")); case StandardTokenType.Space: return(true); default: return(function.Invalidate("Internal parsing error: Unexpected token.")); } }