예제 #1
0
 internal override void Accept(ExprVisitor visitor)
 {
     visitor.Visit(this);
     _condition.Accept(visitor);
     _ifTrue.Accept(visitor);
     _ifFalse.Accept(visitor);
 }
예제 #2
0
 internal override void Accept(ExprVisitor visitor)
 {
     visitor.Visit(this);
     Target?.Accept(visitor);
     _upperBound?.Accept(visitor);
     _lowerBound?.Accept(visitor);
 }
예제 #3
0
 internal override void Accept(ExprVisitor visitor)
 {
     visitor.Visit(this);
     foreach (var arg in Arguments)
     {
         arg.Accept(visitor);
     }
 }
예제 #4
0
 internal override void Accept(ExprVisitor visitor)
 {
     visitor.Visit(this);
     foreach (var projection in _projections)
     {
         projection.Accept(visitor);
     }
 }
예제 #5
0
 internal override void Accept(ExprVisitor visitor)
 {
     visitor.Visit(this);
     foreach (var expr in _exprs)
     {
         expr.Accept(visitor);
     }
 }
예제 #6
0
 internal override void Accept(ExprVisitor visitor)
 {
     visitor.Visit(this);
     _leftHandSide.Accept(visitor);
     foreach (var arg in _arguments.Values)
     {
         arg.Accept(visitor);
     }
 }
예제 #7
0
        public override IStatementObject VisitCalculateStatement(SuperReadableParser.CalculateStatementContext context)
        {
            var expr = context.GetRuleContext <SuperReadableParser.ExprContext>(0);

            var visitor = new ExprVisitor();
            var exprObj = visitor.Visit(expr);

            return(new CalculateStatementObject(exprObj));
        }
예제 #8
0
파일: Runner.cs 프로젝트: samirkut/Macros
        public Expr Parse(string expression)
        {
            var input  = new AntlrInputStream(expression);
            var lexer  = new ExprLexer(input);
            var tokens = new CommonTokenStream(lexer);
            var parser = new ExprParser(tokens);

            var visitor = new ExprVisitor();

            return(visitor.Visit(parser.expr()));
        }
예제 #9
0
        public override IStatementObject VisitIfStatement(SuperReadableParser.IfStatementContext context)
        {
            var flag = context.GetRuleContext <SuperReadableParser.ExprContext>(0);

            var visitor = new ExprVisitor();
            var flagObj = visitor.Visit(flag);

            var ifStatementObj = new IfStatementObject(flagObj);

            var statements = context.GetRuleContexts <SuperReadableParser.StatementContext>();

            foreach (var statement in statements)
            {
                var statementObj = Visit(statement);
                ifStatementObj.Children.Add(statementObj);
            }

            return(ifStatementObj);
        }
예제 #10
0
        public override Tree <Binding> VisitVariable(gramParser.VariableContext context)
        {
            var name = context.IDENTIFIER().GetText();

            if (context.expr() != null)
            {
                var type = interpreter.Visit(context.expr());
                if (type.Type.Check(ValueType.TYPE))
                {
                    return(new Tree <Binding>(new Binding(name, type.Get <IType>())));
                }
                else if (type.Type.Check(ValueType.LIST))
                {
                    return(new Tree <Binding>(new Binding(name, new ListType(type.Get <IEnumerable <IValue> >(), context.expr().GetText()))));
                }
            }

            return(new Tree <Binding>(new Binding(name)));
        }
예제 #11
0
 protected internal virtual ExprAST VisitChildren(ExprVisitor visitor)
 {
     return visitor.Visit(this);
 }
예제 #12
0
 protected internal virtual ExprAST VisitChildren(ExprVisitor visitor)
 {
     return(visitor.Visit(this));
 }
예제 #13
0
 internal override void Accept(ExprVisitor visitor)
 {
     visitor.Visit(this);
     _innerExpression.Accept(visitor);
 }
예제 #14
0
 public override R Accept <R>(ExprVisitor <R> visitor)
 {
     return(visitor.Visit(this));
 }
예제 #15
0
 internal override void Accept(ExprVisitor visitor)
 {
     visitor.Visit(this);
     Target.Accept(visitor);
     Condition.Accept(visitor);
 }
예제 #16
0
 internal override void Accept(ExprVisitor visitor)
 {
     visitor.Visit(this);
     SpreadObject.Accept(visitor);
 }
예제 #17
0
 internal override void Accept(ExprVisitor visitor)
 {
     visitor.Visit(this);
     _message.Accept(visitor);
 }
예제 #18
0
 internal override void Accept(ExprVisitor visitor)
 {
     visitor.Visit(this);
     LeftHandSide.Accept(visitor);
     RightHandSide.Accept(visitor);
 }
예제 #19
0
 internal override void Accept(ExprVisitor visitor)
 {
     visitor.Visit(this);
     _obj.Accept(visitor);
     _ifIsError.Accept(visitor);
 }
예제 #20
0
 internal override void Accept(ExprVisitor visitor)
 {
     visitor.Visit(this);
 }
예제 #21
0
 internal override void Accept(ExprVisitor visitor)
 {
     visitor.Visit(this);
     Target?.Accept(visitor);
     _index.Accept(visitor);
 }
예제 #22
0
        //public static void Accept(this ConnectiveExpr visitee, ExprVisitor visitor) => visitor.Visit(visitee);
        public static Result Accept <Result>(this Expr visitee, ExprVisitor <Result> visitor)
        {
            var result  = default(Result);
            var visited = TryVisitConcreteExpr <ConnectiveExpr, Result>(visitee, ref result, c => visitor.Visit(c)) ||
                          TryVisitConcreteExpr <PowerExpr, Result>(visitee, ref result, c => visitor.Visit(c)) ||
                          TryVisitConcreteExpr <MultiplicativeExpr, Result>(visitee, ref result, c => visitor.Visit(c)) ||
                          TryVisitConcreteExpr <DivisiveExpr, Result>(visitee, ref result, c => visitor.Visit(c)) ||
                          TryVisitConcreteExpr <ModuloExpr, Result>(visitee, ref result, c => visitor.Visit(c)) ||
                          TryVisitConcreteExpr <AdditiveExpr, Result>(visitee, ref result, c => visitor.Visit(c)) ||
                          TryVisitConcreteExpr <SubtractiveExpr, Result>(visitee, ref result, c => visitor.Visit(c)) ||
                          TryVisitConcreteExpr <FloatLiteral, Result>(visitee, ref result, c => visitor.Visit(c)) ||
                          TryVisitConcreteExpr <TrackSetLiteral, Result>(visitee, ref result, c => visitor.Visit(c)) ||
                          TryVisitConcreteExpr <AssocArrayLiteral, Result>(visitee, ref result, c => visitor.Visit(c)) ||
                          TryVisitConcreteExpr <IdentifierExpr, Result>(visitee, ref result, c => visitor.Visit(c)) ||
                          TryVisitConcreteExpr <LambdaExpr, Result>(visitee, ref result, c => visitor.Visit(c)) ||
                          TryVisitConcreteExpr <ModuleParamExpr, Result>(visitee, ref result, c => visitor.Visit(c))
            ;

            if (!visited)
            {
                throw new Exception($"unknown Command type: {visitee.GetType()}");
            }

            return(result);
        }
예제 #23
0
        public IValue Execute(string code)
        {
            var parser = getParser(code);

            return(interpreter.Visit(parser.prog()));
        }
예제 #24
0
 internal override void Accept(ExprVisitor visitor)
 {
     visitor.Visit(this);
     Value.Accept(visitor);
     _pipedInto.Accept(visitor);
 }
예제 #25
0
 internal override void Accept(ExprVisitor visitor)
 {
     visitor.Visit(this);
     First.Accept(visitor);
     Next.Accept(visitor);
 }