Example #1
0
        private void AddMethod(string methodName, string returnType, MethodType type, ModifiersEnum modifiers, ParserRuleContext context, FormalParametersContext parameterContext)
        {
            List <Variable> parameters = new List <Variable>();

            FormalParameterListContext parameterListContext = parameterContext.formalParameterList();

            if (parameterListContext != null)
            {
                foreach (var parameter in parameterListContext.formalParameter())
                {
                    parameters.Add(new Variable(parameter.variableDeclaratorId().GetText(), parameter.typeType().GetText(), parameter.variableDeclaratorId()));
                }
            }

            Method method = new Method(Class, Class.PopMethodId(), methodName, modifiers, returnType,
                                       parameters, context);


            StatementListener listener = new StatementListener(method);

            foreach (var methodRule in context.GetRuleContexts <ParserRuleContext>())
            {
                methodRule.EnterRule(listener);
            }

            method.Statements = listener.GetResult();

            Class.Methods.Add(method.Name, method);
        }
        public override void EnterWhileStatement([NotNull] WhileStatementContext context)
        {
            WhileStatement whileStatement = new WhileStatement(Parent, context);

            ExpressionListener expressionListener = new ExpressionListener(whileStatement);

            context.parExpression().expression().EnterRule(expressionListener);
            whileStatement.Condition = expressionListener.GetResult();

            StatementListener statementListener = new StatementListener(whileStatement);

            context.statement().EnterRule(statementListener);
            whileStatement.Statements = statementListener.Result;

            Result.Add(whileStatement);
        }
        public override void EnterIfStatement([NotNull] IfStatementContext context)
        {
            IfStatement statement = new IfStatement(Parent, context);

            ExpressionListener listener = new ExpressionListener(statement);

            context.parExpression().expression().EnterRule(listener);
            statement.IfCondition = listener.GetResult();

            StatementListener statementListener = new StatementListener(statement);

            context.ifSt.EnterRule(statementListener);
            statement.IfStatements = statementListener.GetResult();

            if (context.elseSt != null)
            {
                statementListener = new StatementListener(statement);
                context.elseSt.EnterRule(statementListener);
                statement.ElseStatements = statementListener.GetResult();
            }

            Result.Add(statement);
        }
        public override void EnterForStatement([NotNull] ForStatementContext context)
        {
            ForStatement statement = new ForStatement(Parent, context);

            StatementListener statementListener = new StatementListener(statement);

            context.forControl().forInit.EnterRule(statementListener);
            statement.Init = statementListener.GetResult().First();

            statementListener = new StatementListener(statement);
            context.statement().EnterRule(statementListener);
            statement.Statements = statementListener.GetResult();

            ExpressionListener expressionListener = new ExpressionListener(statement);

            context.forControl().forCond.EnterRule(expressionListener);
            statement.Condition = expressionListener.GetResult();

            statementListener = new StatementListener(statement);
            context.forControl().forUpdate.EnterRule(statementListener);
            statement.Update = statementListener.GetResult().First();

            Result.Add(statement);
        }