示例#1
0
        public object VisitIfStatementAST([NotNull] IfStatementASTContext context)
        {
            Visit(context.condition());
            int jumpIfFalsePosition = LineCount;

            AddLine("JUMP_IF_FALSE");

            Visit(context.statement(0));

            if (context.ELSE() != null)
            {
                int jumpAbsolutePosition = LineCount;
                AddLine("JUMP_ABSOLUTE");

                SetLineOnRealIndexOf(jumpIfFalsePosition, $"JUMP_IF_FALSE {LineCount}");

                Visit(context.statement(1));

                SetLineOnRealIndexOf(jumpAbsolutePosition, $"JUMP_ABSOLUTE {LineCount}");
            }
            else
            {
                SetLineOnRealIndexOf(jumpIfFalsePosition, $"JUMP_IF_FALSE {LineCount}");
            }

            return(null);
        }
示例#2
0
        public object VisitIfStatementAST([NotNull] IfStatementASTContext context)
        {
            if (context.condition() != null)
            {
                Visit(context.condition());
            }

            var returnedTypes = new List <Pair <string, IToken> >();

            context.statement().ToList().ForEach(statement => {
                var list = Visit(statement) as List <Pair <string, IToken> >;
                if (list != null)
                {
                    returnedTypes.AddRange(list);
                }
            });

            return(returnedTypes);
        }