public LiteralValueNode ParseLitealValue(Token token) { if (token.Type == TokenType.LiteralValue) { LiteralValueNode value = null; CobaltType cobaltType = token.GetData <CobaltType>(TokenDataKeys.COBALT_TYPE); switch (cobaltType) { case CobaltType.Boolean: value = new BooleanValueNode(token.SourceLine, token.GetData <bool>(TokenDataKeys.LITERAL_VALUE)); break; case CobaltType.Float: value = new FloatValueNode(token.SourceLine, token.GetData <float>(TokenDataKeys.LITERAL_VALUE)); break; case CobaltType.Integer: value = new IntegerValueNode(token.SourceLine, token.GetData <int>(TokenDataKeys.LITERAL_VALUE)); break; default: throw new CompilerException($"`{MethodBase.GetCurrentMethod().Name}` called with unknown Cobalt type `{cobaltType}`."); } return(value); } else { throw new CompilerException($"`{MethodBase.GetCurrentMethod().Name}` called with a bad token. Expected a token of type `{TokenType.LiteralValue}`, got token of type `{token.Type}` instead."); } }
public override dynamic Visit(IntegerValueNode node) { return(PrimitiveType.Integer); }
public abstract dynamic Visit(IntegerValueNode node);
public override dynamic Visit(IntegerValueNode node) { return(null); }