public static CParser.ParameterTypeListContext RBAParameters(
     this CParser.FunctionDefinitionContext functionDefinition)
 {
     return(functionDefinition
            ?.declarator()
            ?.directDeclarator()
            ?.parameterTypeList());
 }
 public static CParser.TypeSpecifierContext RBATypeSpecifier(
     this CParser.FunctionDefinitionContext functionDefinition)
 {
     return(functionDefinition
            ?.declarationSpecifiers()
            ?.declarationSpecifier()?[0]
            ?.typeSpecifier());
 }
 public static ITerminalNode RBAIdentifier(
     this CParser.FunctionDefinitionContext functionDefinition)
 {
     return(functionDefinition
            ?.declarator()
            ?.directDeclarator()
            ?.directDeclarator()
            ?.Identifier());
 }
Ejemplo n.º 4
0
        private void AnalyzeFunctionDefinition(
            CParser.FunctionDefinitionContext functionDefinition)
        {
            var identifier = functionDefinition.RBAIdentifier();

            if (identifier?.ToString() == "main")
            {
                HasEntryPoint = true;
            }
        }
Ejemplo n.º 5
0
        protected void GenerateFunctionDefinition(
            CParser.FunctionDefinitionContext functionDefinition)
        {
            var typeSpecifier     = functionDefinition.RBATypeSpecifier();
            var identifier        = functionDefinition.RBAIdentifier();
            var parameters        = functionDefinition.RBAParameters();
            var compoundStatement = functionDefinition?.compoundStatement();

            DefineFunction(typeSpecifier, identifier, parameters);
            EmitFunction(typeSpecifier, identifier, parameters, compoundStatement);
        }
Ejemplo n.º 6
0
 public override void ExitFunctionDefinition(CParser.FunctionDefinitionContext context)
 {
     //declarationSpecifiers? declarator declarationList? compoundStatement
     CDeclaration.EndFunctionDefinition(GetSpecifierCount(context.declarationSpecifiers()));
 }
Ejemplo n.º 7
0
        //DECLARATIONS

        public override void EnterFunctionDefinition(CParser.FunctionDefinitionContext context)
        {
            CDeclaration.BeginFunctionDefinition();
        }