Esempio n. 1
0
        public override object VisitFactor(NexusParser.FactorContext context)
        {
            if (context.number() != null)
            {
                return(VisitNumber(context.number()));
            }

            if (context.truth_value() != null)
            {
                return(VisitTruth_value(context.truth_value()));
            }

            if (context.BINARY() != null)
            {
                var number = NumberLiteral.ParseBinary(context.BINARY().GetText().Substring(2), context.Start.Line, context.Start.Column);
                number.FilePath = FileParser.CurrentPath;
                return(number);
            }

            if (context.HEX() != null)
            {
                var number = NumberLiteral.ParseHex(context.HEX().GetText().Substring(2), context.Start.Line, context.Start.Column);
                number.FilePath = FileParser.CurrentPath;
                return(number);
            }

            if (context.quoted_text() != null)
            {
                return(new Text
                {
                    Value = context.quoted_text().text == null ? string.Empty : context.quoted_text().text.Text,
                    Line = context.Start.Line,
                    Column = context.Start.Column,
                    FilePath = FileParser.CurrentPath
                });
            }

            if (context.IDENTIFIER() != null)
            {
                return(new VariableLiteral
                {
                    Name = context.IDENTIFIER().GetText(),
                    Line = context.Start.Line,
                    Column = context.Start.Column,
                    FilePath = FileParser.CurrentPath
                });
            }

            return(base.VisitFactor(context));
        }