⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ast.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************** Copyright (C) 2004-2006 Trolltech ASA. All rights reserved.** Copyright (C) 2001-2004 Roberto Raggi**** This file is part of the qt3to4 porting application of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include "ast.h"#include <QStringList>#include <stdio.h>int AST::N = 0;// ------------------------------------------------------------------------AST::AST(int startToken, int count)    : m_scope(0),      m_startToken(startToken),      m_endToken(startToken + count),      m_parent(0),      m_children(0){    ++N;}void AST::setParent(AST *parent){    if (m_parent)        m_parent->removeChild(this);    m_parent = parent;    if (m_parent)        m_parent->appendChild(this);}void AST::appendChild(AST *child){    m_children = snoc(m_children, child, _pool);}void AST::removeChild(AST *child){    fprintf(stderr, "AST::removeChild child: %p not implemented yet\n", child);}// ------------------------------------------------------------------------NameAST::NameAST()    : m_global(false), m_unqualifiedName(0), m_classOrNamespaceNameList(0){}void NameAST::setGlobal(bool b){    m_global = b;}void NameAST::setUnqualifiedName(ClassOrNamespaceNameAST *unqualifiedName){    m_unqualifiedName = unqualifiedName;    if (m_unqualifiedName) m_unqualifiedName->setParent(this);}void NameAST::addClassOrNamespaceName(ClassOrNamespaceNameAST *classOrNamespaceName){    if(!classOrNamespaceName)        return;    classOrNamespaceName->setParent(this);    m_classOrNamespaceNameList = snoc(m_classOrNamespaceNameList, classOrNamespaceName, _pool);}// ------------------------------------------------------------------------DeclarationAST::DeclarationAST(){}// ------------------------------------------------------------------------LinkageBodyAST::LinkageBodyAST()    : m_declarationList(0){}void LinkageBodyAST::addDeclaration(DeclarationAST *ast){    if(!ast)        return;    ast->setParent(this);    m_declarationList = snoc(m_declarationList, ast, _pool);}// ------------------------------------------------------------------------LinkageSpecificationAST::LinkageSpecificationAST()    : m_externType(0),      m_linkageBody(0),      m_declaration(0){}void LinkageSpecificationAST::setExternType(AST *externType){    m_externType = externType;    if (m_externType) m_externType->setParent(this);}void LinkageSpecificationAST::setLinkageBody(LinkageBodyAST *linkageBody){    m_linkageBody = linkageBody;    if (m_linkageBody) m_linkageBody->setParent(this);}void LinkageSpecificationAST::setDeclaration(DeclarationAST *decl){    m_declaration = decl;    if (m_declaration) m_declaration->setParent(this);}// ------------------------------------------------------------------------TranslationUnitAST::TranslationUnitAST()    : m_declarationList(0){    //kdDebug(9007) << "++ TranslationUnitAST::TranslationUnitAST()" << endl;}void TranslationUnitAST::addDeclaration(DeclarationAST *ast){    if(!ast)        return;    ast->setParent(this);    m_declarationList = snoc(m_declarationList, ast, _pool);}// ------------------------------------------------------------------------NamespaceAST::NamespaceAST()    : m_namespaceName(0),      m_linkageBody(0){}void NamespaceAST::setNamespaceName(AST *namespaceName){    m_namespaceName = namespaceName;    if (m_namespaceName) m_namespaceName->setParent(this);}void NamespaceAST::setLinkageBody(LinkageBodyAST *linkageBody){    m_linkageBody = linkageBody;    if (m_linkageBody) m_linkageBody->setParent(this);}// ------------------------------------------------------------------------NamespaceAliasAST::NamespaceAliasAST()    : m_namespaceName(0),      m_aliasName(0){}void NamespaceAliasAST::setNamespaceName(AST *namespaceName){    m_namespaceName = namespaceName;    if (m_namespaceName) m_namespaceName->setParent(this);}void NamespaceAliasAST::setAliasName(NameAST *name){    m_aliasName = name;    if (m_aliasName) m_aliasName->setParent(this);}// ------------------------------------------------------------------------UsingAST::UsingAST()    : m_typeName(0),      m_name(0){}void UsingAST::setTypeName(AST *typeName){    m_typeName = typeName;    if (m_typeName) m_typeName->setParent(this);}void UsingAST::setName(NameAST *name){    m_name = name;    if (m_name) m_name->setParent(this);}// ------------------------------------------------------------------------UsingDirectiveAST::UsingDirectiveAST()    : m_name(0){}void UsingDirectiveAST::setName(NameAST *name){    m_name = name;    if (m_name) m_name->setParent(this);}TypedefAST::TypedefAST()    : m_typeSpec(0),      m_initDeclaratorList(0){}void TypeSpecifierAST::setName(NameAST *name){    m_name = name;    if (m_name) m_name->setParent(this);}void TypedefAST::setTypeSpec(TypeSpecifierAST *typeSpec){    m_typeSpec = typeSpec;    if (m_typeSpec) m_typeSpec->setParent(this);}void TypedefAST::setInitDeclaratorList(InitDeclaratorListAST *initDeclaratorList){    m_initDeclaratorList = initDeclaratorList;    if (m_initDeclaratorList) m_initDeclaratorList->setParent(this);}// ------------------------------------------------------------------------TemplateArgumentListAST::TemplateArgumentListAST()    : m_argumentList(0){}void TemplateArgumentListAST::addArgument(AST *arg){    if(!arg)        return;    arg->setParent(this);    m_argumentList = snoc(m_argumentList, arg, _pool);}// ------------------------------------------------------------------------TemplateDeclarationAST::TemplateDeclarationAST()    : m_exported(0),      m_templateParameterList(0),      m_declaration(0){}void TemplateDeclarationAST::setExported(AST *exported){    m_exported = exported;    if (m_exported) m_exported->setParent(this);}void TemplateDeclarationAST::setTemplateParameterList(TemplateParameterListAST *templateParameterList){    m_templateParameterList = templateParameterList;    if (m_templateParameterList) m_templateParameterList->setParent(this);}void TemplateDeclarationAST::setDeclaration(DeclarationAST *declaration){    m_declaration = declaration;    if (m_declaration) m_declaration->setParent(this);}// ------------------------------------------------------------------------ClassOrNamespaceNameAST::ClassOrNamespaceNameAST()    : m_name(0), m_templateArgumentList(0){}void ClassOrNamespaceNameAST::setName(AST *name){    m_name = name;    if (m_name) m_name->setParent(this);}void ClassOrNamespaceNameAST::setTemplateArgumentList(TemplateArgumentListAST *templateArgumentList){    m_templateArgumentList = templateArgumentList;    if (m_templateArgumentList) m_templateArgumentList->setParent(this);}// ------------------------------------------------------------------------TypeSpecifierAST::TypeSpecifierAST()    : m_name(0), m_cvQualify(0), m_cv2Qualify(0){}void TypeSpecifierAST::setCvQualify(AST *cvQualify){    m_cvQualify = cvQualify;    if (m_cvQualify) m_cvQualify->setParent(this);}void TypeSpecifierAST::setCv2Qualify(AST *cv2Qualify){    m_cv2Qualify = cv2Qualify;    if (m_cv2Qualify) m_cv2Qualify->setParent(this);}// ------------------------------------------------------------------------ClassSpecifierAST::ClassSpecifierAST()    : m_winDeclSpec(0),      m_classKey(0),      m_baseClause(0),      m_declarationList(0){}void ClassSpecifierAST::setClassKey(AST *classKey){    m_classKey = classKey;    if (m_classKey) m_classKey->setParent(this);}void ClassSpecifierAST::addDeclaration(DeclarationAST *declaration){    if(!declaration)        return;    declaration->setParent(this);    m_declarationList = snoc(m_declarationList, declaration, _pool);}void ClassSpecifierAST::setBaseClause(BaseClauseAST *baseClause){    m_baseClause = baseClause;    if (m_baseClause) m_baseClause->setParent(this);}// ------------------------------------------------------------------------EnumSpecifierAST::EnumSpecifierAST()    : m_enumeratorList(0){}void EnumSpecifierAST::addEnumerator(EnumeratorAST *enumerator){    if(!enumerator)        return;    enumerator->setParent(this);    m_enumeratorList = snoc(m_enumeratorList, enumerator, _pool);}// ------------------------------------------------------------------------ElaboratedTypeSpecifierAST::ElaboratedTypeSpecifierAST()    : m_kind(0){}void ElaboratedTypeSpecifierAST::setKind(AST *kind){    m_kind = kind;    if (m_kind) m_kind->setParent(this);}// ------------------------------------------------------------------------EnumeratorAST::EnumeratorAST()    : m_id(0),      m_expression(0){}void EnumeratorAST::setId(AST *id){    m_id = id;    if (m_id) m_id->setParent(this);}void EnumeratorAST::setExpression(AbstractExpressionAST *expression){    m_expression = expression;    if (m_expression) m_expression->setParent(this);}// ------------------------------------------------------------------------BaseClauseAST::BaseClauseAST()    : m_baseSpecifierList(0){}void BaseClauseAST::addBaseSpecifier(BaseSpecifierAST *baseSpecifier){    if(!baseSpecifier)        return;    baseSpecifier->setParent(this);    m_baseSpecifierList = snoc(m_baseSpecifierList, baseSpecifier, _pool);}// ------------------------------------------------------------------------BaseSpecifierAST::BaseSpecifierAST()    : m_isVirtual(0), m_access(0), m_name(0){}void BaseSpecifierAST::setIsVirtual(AST *isVirtual){    m_isVirtual = isVirtual;    if (m_isVirtual) m_isVirtual->setParent(this);}void BaseSpecifierAST::setAccess(AST *access){    m_access = access;    if (m_access) m_access->setParent(this);}void BaseSpecifierAST::setName(NameAST *name){    m_name = name;    if (m_name) m_name->setParent(this);}// ------------------------------------------------------------------------SimpleDeclarationAST::SimpleDeclarationAST()    : m_functionSpecifier(0),      m_storageSpecifier(0),      m_typeSpec(0),      m_initDeclaratorList(0),      m_winDeclSpec(0){}void SimpleDeclarationAST::setFunctionSpecifier(AST *functionSpecifier){    m_functionSpecifier = functionSpecifier;    if (m_functionSpecifier) m_functionSpecifier->setParent(this);}void SimpleDeclarationAST::setStorageSpecifier(AST *storageSpecifier){    m_storageSpecifier = storageSpecifier;    if (m_storageSpecifier) m_storageSpecifier->setParent(this);}void SimpleDeclarationAST::setTypeSpec(TypeSpecifierAST *typeSpec){    m_typeSpec = typeSpec;    if (m_typeSpec) m_typeSpec->setParent(this);}void SimpleDeclarationAST::setInitDeclaratorList(InitDeclaratorListAST *initDeclaratorList){    m_initDeclaratorList = initDeclaratorList;    if (m_initDeclaratorList) m_initDeclaratorList->setParent(this);}void SimpleDeclarationAST::setWinDeclSpec(AST *winDeclSpec){    m_winDeclSpec = winDeclSpec;    if (m_winDeclSpec) m_winDeclSpec->setParent(this);}// ------------------------------------------------------------------------InitDeclaratorListAST::InitDeclaratorListAST()    : m_initDeclaratorList(0){}void InitDeclaratorListAST::addInitDeclarator(InitDeclaratorAST *decl){    if(!decl)        return;    decl->setParent(this);    m_initDeclaratorList = snoc(m_initDeclaratorList, decl, _pool);}// ------------------------------------------------------------------------DeclaratorAST::DeclaratorAST()    : m_ptrOpList(0),      m_subDeclarator(0),      m_declaratorId(0),      m_bitfieldInitialization(0),      m_arrayDimensionList(0),      m_parameterDeclarationClause(0),      m_constant(0),      m_exceptionSpecification(0){}void DeclaratorAST::setSubDeclarator(DeclaratorAST *subDeclarator){    m_subDeclarator = subDeclarator;    if (m_subDeclarator) m_subDeclarator->setParent(this);}void DeclaratorAST::setDeclaratorId(NameAST *declaratorId){    m_declaratorId = declaratorId;    if (m_declaratorId) m_declaratorId->setParent(this);}void DeclaratorAST::setBitfieldInitialization(AST *bitfieldInitialization){    m_bitfieldInitialization = bitfieldInitialization;    if (m_bitfieldInitialization) m_bitfieldInitialization->setParent(this);}void DeclaratorAST::addArrayDimension(AST *arrayDimension){    if(!arrayDimension)        return;    arrayDimension->setParent(this);    m_arrayDimensionList = snoc(m_arrayDimensionList, arrayDimension, _pool);}void DeclaratorAST::setParameterDeclarationClause(ParameterDeclarationClauseAST *parameterDeclarationClause){    m_parameterDeclarationClause = parameterDeclarationClause;    if (m_parameterDeclarationClause) m_parameterDeclarationClause->setParent(this);}void DeclaratorAST::setConstant(AST *constant){    m_constant = constant;    if (m_constant) m_constant->setParent(this);}void DeclaratorAST::setExceptionSpecification(AST *exceptionSpecification){    m_exceptionSpecification = exceptionSpecification;    if (m_exceptionSpecification) m_exceptionSpecification->setParent(this);}void DeclaratorAST::addPtrOp(AST *ptrOp){    if(!ptrOp)        return;    ptrOp->setParent(this);    m_ptrOpList = snoc(m_ptrOpList, ptrOp, _pool);}// --------------------------------------------------------------------------InitDeclaratorAST::InitDeclaratorAST()    : m_declarator(0),      m_initializer(0){}void InitDeclaratorAST::setDeclarator(DeclaratorAST *declarator){    m_declarator = declarator;    if (m_declarator) m_declarator->setParent(this);}void InitDeclaratorAST::setInitializer(AST *initializer){    m_initializer = initializer;    if (m_initializer) m_initializer->setParent(this);}// --------------------------------------------------------------------------FunctionDefinitionAST::FunctionDefinitionAST()    : m_functionSpecifier(0),      m_storageSpecifier(0),      m_typeSpec(0),      m_initDeclarator(0),      m_functionBody(0),      m_winDeclSpec(0){}void FunctionDefinitionAST::setFunctionSpecifier(AST *functionSpecifier){    m_functionSpecifier = functionSpecifier;    if (m_functionSpecifier) m_functionSpecifier->setParent(this);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -