예제 #1
0
        private static IValueNode ParseScalarValue(ParserContext context)
        {
            if (context.Current.IsString())
            {
                return(ParseStringLiteral(context));
            }

            SyntaxToken start    = context.ExpectScalarValue();
            Location    location = context.CreateLocation(start);

            if (start.Kind == TokenKind.Float)
            {
                return(new FloatValueNode
                       (
                           location,
                           start.Value
                       ));
            }

            if (start.Kind == TokenKind.Integer)
            {
                return(new IntValueNode
                       (
                           location,
                           start.Value
                       ));
            }

            throw context.Unexpected(start);
        }