File indexing completed on 2024-05-19 15:46:16
0001 /* 0002 SPDX-FileCopyrightText: 2007 Andreas Pakulat <apaku@gmx.de> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef QMAKEAST_H 0008 #define QMAKEAST_H 0009 0010 #include <QString> 0011 #include <QList> 0012 0013 #include "parser_export.h" 0014 0015 namespace KDevelop 0016 { 0017 class DUContext; 0018 } 0019 0020 namespace QMake 0021 { 0022 class ValueAST; 0023 0024 class KDEVQMAKEPARSER_EXPORT AST 0025 { 0026 public: 0027 0028 enum Type 0029 { 0030 Project = 0, 0031 ScopeBody = 1, 0032 Assignment = 2, 0033 FunctionCall = 3, 0034 SimpleScope = 4, 0035 Or = 5, 0036 Value = 6, 0037 Invalid = 7 0038 }; 0039 0040 AST( AST* parent, AST::Type type ); 0041 virtual ~AST(); 0042 AST::Type type; 0043 int startLine; 0044 int endLine; 0045 int startColumn; 0046 int endColumn; 0047 int start; 0048 int end; 0049 AST* parent; 0050 KDevelop::DUContext* context; 0051 }; 0052 0053 class KDEVQMAKEPARSER_EXPORT StatementAST : public AST 0054 { 0055 public: 0056 StatementAST( AST* parent, AST::Type type ); 0057 ~StatementAST() override; 0058 }; 0059 0060 class KDEVQMAKEPARSER_EXPORT ScopeBodyAST: public AST 0061 { 0062 public: 0063 explicit ScopeBodyAST( AST* parent, AST::Type type = AST::ScopeBody ); 0064 ~ScopeBodyAST() override; 0065 QList<StatementAST*> ifStatements; 0066 QList<StatementAST*> elseStatements; 0067 }; 0068 0069 class KDEVQMAKEPARSER_EXPORT ProjectAST : public AST 0070 { 0071 public: 0072 explicit ProjectAST(); 0073 ~ProjectAST() override; 0074 QString filename; 0075 QList<StatementAST*> statements; 0076 }; 0077 0078 class KDEVQMAKEPARSER_EXPORT AssignmentAST : public StatementAST 0079 { 0080 public: 0081 explicit AssignmentAST( AST* parent ); 0082 ~AssignmentAST() override; 0083 0084 ValueAST* identifier; 0085 ValueAST* op; 0086 QList<ValueAST*> values; 0087 }; 0088 0089 0090 class KDEVQMAKEPARSER_EXPORT ScopeAST : public StatementAST 0091 { 0092 public: 0093 explicit ScopeAST( AST* parent, AST::Type type); 0094 ~ScopeAST() override; 0095 ScopeBodyAST* body; 0096 }; 0097 0098 class KDEVQMAKEPARSER_EXPORT FunctionCallAST : public ScopeAST 0099 { 0100 public: 0101 explicit FunctionCallAST( AST* parent ); 0102 ~FunctionCallAST() override; 0103 ValueAST* identifier; 0104 QList<ValueAST*> args; 0105 }; 0106 0107 0108 class KDEVQMAKEPARSER_EXPORT SimpleScopeAST : public ScopeAST 0109 { 0110 public: 0111 explicit SimpleScopeAST( AST* parent ); 0112 ~SimpleScopeAST() override; 0113 ValueAST* identifier; 0114 }; 0115 0116 class KDEVQMAKEPARSER_EXPORT OrAST : public ScopeAST 0117 { 0118 public: 0119 explicit OrAST( AST* parent ); 0120 ~OrAST() override; 0121 QList<ScopeAST*> scopes; 0122 }; 0123 0124 class KDEVQMAKEPARSER_EXPORT ValueAST : public AST 0125 { 0126 public: 0127 explicit ValueAST( AST* parent ); 0128 QString value; 0129 }; 0130 0131 } 0132 0133 #endif