コード例 #1
0
        public override IAstNode VisitExternalDeclaration([NotNull] ExternalDeclarationContext context)
        {
            var retVal = ( Prototype )context.Signature.Accept(this);

            RuntimeState.FunctionDeclarations.AddOrReplaceItem(retVal);
            return(retVal);
        }
コード例 #2
0
ファイル: AstBuilder.cs プロジェクト: stjordanis/Llvm.NET-1
        public override IAstNode VisitExternalDeclaration(ExternalDeclarationContext context)
        {
            var retVal = ( Prototype )context.Signature.Accept(this);
            var error  = retVal.CollectErrors( );

            if (error.Count == 0)
            {
                RuntimeState.FunctionDeclarations.AddOrReplaceItem(retVal);
            }

            return(retVal);
        }
コード例 #3
0
ファイル: CParserTest.cs プロジェクト: victor-wiki/CodeParser
        private void ParseTranslationUnit(TranslationUnitContext node)
        {
            TranslationUnitContext transUnit = node.translationUnit();

            ExternalDeclarationContext externalDeclaration = node.externalDeclaration();

            if (transUnit != null)
            {
                this.ParseTranslationUnit(transUnit);
            }

            if (externalDeclaration != null)
            {
                DeclarationContext[]        declarations = externalDeclaration.GetRuleContexts <DeclarationContext>();
                FunctionDefinitionContext[] functions    = externalDeclaration.GetRuleContexts <FunctionDefinitionContext>();

                foreach (DeclarationContext declaration in declarations)
                {
                    InitDeclaratorListContext initDeclaratorList = declaration.initDeclaratorList();

                    string name = initDeclaratorList.initDeclarator().declarator().directDeclarator().Identifier().GetText();

                    this.WriteKeyValue("Field", name);
                }

                foreach (FunctionDefinitionContext function in functions)
                {
                    DirectDeclaratorContext[] directDeclarators = function.declarator().GetRuleContexts <DirectDeclaratorContext>();

                    foreach (DirectDeclaratorContext directDeclarator in directDeclarators)
                    {
                        string name = directDeclarator.directDeclarator().Identifier().GetText();

                        this.WriteKeyValue("Function", name);
                    }
                }
            }
        }
コード例 #4
0
ファイル: CodeGenerator.cs プロジェクト: nbsn2/Llvm.NET
 public override Value VisitExternalDeclaration([NotNull] ExternalDeclarationContext context)
 {
     return(context.Signature.Accept(this));
 }