public void RequireAssignment(ref ExprNode left, ref ExprNode right, OperatorToken opToken) { if (CheckAssignment(ref left, ref right, opToken)) { return; } var token = ExprNode.GetClosestToken(right); throw new IncompatibleTypesException(left.Type, right.Type, token.Lexeme, token.Line, token.Column); }
public IToken PublishCurrentTokenString() { IToken tokenToReturn = null; switch (currentStringTokenType) { case TokenType.number: tokenToReturn = new NumberToken(tokenString); break; case TokenType.infixOperator: tokenToReturn = new OperatorToken(tokenString, TokenType.infixOperator); break; case TokenType.suffixOperator: tokenToReturn = new OperatorToken(tokenString, TokenType.suffixOperator); break; case TokenType.charString: tokenString = tokenString.ToUpper(); if (FunctionToken.Library.Contains(tokenString)) { tokenToReturn = new FunctionToken(tokenString); } else if (VariableToken.VariableLibrary.Contains(tokenString)) { tokenToReturn = new VariableToken(tokenString); } else if (UnitToken.Units.Contains(tokenString)) { tokenToReturn = new UnitToken(tokenString); } else if (KeywordToken.Keywords.Contains(tokenString)) { tokenToReturn = new KeywordToken(tokenString); } break; case TokenType.openBrace: tokenToReturn = new SyntaxToken(tokenString, TokenType.openBrace); break; case TokenType.closedBrace: tokenToReturn = new SyntaxToken(tokenString, TokenType.closedBrace); break; case TokenType.argSeperator: tokenToReturn = new SyntaxToken(tokenString, TokenType.argSeperator); break; } return(tokenToReturn); }
public IToken PublishCurrentTokenString() { IToken tokenToReturn = null ; switch (currentStringTokenType) { case TokenType.number: tokenToReturn = new NumberToken(tokenString); break; case TokenType.infixOperator: tokenToReturn = new OperatorToken(tokenString, TokenType.infixOperator); break; case TokenType.suffixOperator: tokenToReturn = new OperatorToken(tokenString, TokenType.suffixOperator); break; case TokenType.charString: tokenString = tokenString.ToUpper(); if (FunctionToken.Library.Contains(tokenString)) { tokenToReturn = new FunctionToken(tokenString); } else if (VariableToken.VariableLibrary.Contains(tokenString)) { tokenToReturn = new VariableToken(tokenString); } else if(UnitToken.Units.Contains(tokenString)){ tokenToReturn = new UnitToken(tokenString); } else if (KeywordToken.Keywords.Contains(tokenString)) { tokenToReturn = new KeywordToken(tokenString); } break; case TokenType.openBrace: tokenToReturn = new SyntaxToken(tokenString, TokenType.openBrace); break; case TokenType.closedBrace: tokenToReturn = new SyntaxToken(tokenString, TokenType.closedBrace); break; case TokenType.argSeperator: tokenToReturn = new SyntaxToken(tokenString, TokenType.argSeperator); break; } return tokenToReturn; }
public AssignNode(ExprNode left, OperatorToken op, ExprNode right) { Left = left; Right = right; Operation = op; }