示例#1
0
        }                   // End EnterExternalDeclaration

        public override void ExitExternalDeclaration([NotNull] CParser.ExternalDeclarationContext context)
        {
            Console.WriteLine();

            //
            // Display the prototype using what we parsed
            //

            foreach (string sc in function_def.specifiers)
            {
                Console.WriteLine(sc);
            }

            Console.WriteLine(function_def.func_name);
            Console.WriteLine("\t(");

            foreach (Api_Param p in function_def.parameters)
            {
                Console.Write($"\t");

                if (p.is_input)
                {
                    Console.Write("INPUT ");
                }

                if (p.is_output)
                {
                    Console.Write("OUTPUT ");
                }

                Console.Write($"{p.type_qualifier} {p.type} ");

                foreach (string s in p.storage_class)
                {
                    Console.Write($"{s} ");
                }

                Console.WriteLine($"{p.param_name}");
            }

            Console.WriteLine("\t);\n");

            //
            // Clear all context info
            //

#if false
            function_def.parameters.Clear();
            cur_parameter.clear();
            function_def.specifiers.Clear();
            function_def.ret_type_idx = 0;
            function_def.func_name    = string.Empty;
#endif
        }                   // End ExitExternalDeclaration
示例#2
0
        }                   // End ExitDirectDeclarator

        public override void EnterExternalDeclaration([NotNull] CParser.ExternalDeclarationContext context)
        {
            var text = context.GetText();

            Console.WriteLine($"Prototype: {text} ");
            in_params_list            = false;
            function_def.specifiers   = new List <string> ();
            function_def.ret_type_idx = 0;
            function_def.func_name    = string.Empty;
            function_def.parameters   = new List <Api_Param> ();
        }                   // End EnterExternalDeclaration
示例#3
0
        private void AnalyzeExternalDeclaration(
            CParser.ExternalDeclarationContext externalDeclaration)
        {
            var functionDefinition = externalDeclaration.functionDefinition();
            var declaration        = externalDeclaration.declaration();

            if (functionDefinition != null)
            {
                AnalyzeFunctionDefinition(functionDefinition);
            }
            else if (declaration != null)
            {
                AnalyzeDeclaration(declaration);
            }
        }
示例#4
0
        protected void GenerateExternalDeclaration(
            CParser.ExternalDeclarationContext externalDeclaration)
        {
            var functionDefinition = externalDeclaration.functionDefinition();
            var declaration        = externalDeclaration.declaration();

            if (functionDefinition != null)
            {
                GenerateFunctionDefinition(functionDefinition);
            }
            else if (declaration != null)
            {
                GenerateDeclaration(declaration);
            }
        }