Changes between Version 37 and Version 38 of AST
- Timestamp:
- 04/25/11 14:21:37 (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
AST
v37 v38 80 80 * methods 81 81 * referent: ASTNodeIF 82 * identifier: string 83 * LabelReferenceNodeIF 84 * methods 85 * referent: LabelNodeIF 86 * EnumElementReferenceNodeIF 87 * methods 88 * EnumElementNodeIF 89 * StatementReferenceNodeIF 90 * methods 91 * StatementNodeIF 82 * identifier: string ? 92 83 * IdentifierNodeIF: wraps a string. represents an identifier occurrence in code. Has 0 children, i.e., is a leaf node. 93 84 * methods … … 111 102 * no children 112 103 * ArrayTypeNodeIF: an array type 113 * methods114 * elementType: TypeNodeIF (child 0)104 * children 105 * elementType: TypeNodeIF 115 106 * extent: ? This is complicated. The extent might be an expression involving input variables. 116 107 * PointerTypeNodeIF 117 * methods118 * baseType: TypeNodeIF (child 0)108 * children 109 * baseType: TypeNodeIF 119 110 * CompositeTypeNodeIF: "struct" or "union" in C 120 * methods 121 * struct or union?: boolean 111 * children 122 112 * name: IdentifierNodeIF 123 * numFields: int124 * field(int i): PairNode<IdentifierNodeIF,TypeNodeIF>125 * fields: Iterator<PairNode<IdentifierNodeIF,TypeNodeIF>>113 * fields: SequenceNode<PairNode<IdentifierNodeIF,TypeNodeIF>> 114 * methods 115 * isUnion: boolean 126 116 * FunctionTypeNodeIF 127 * methods 128 * numInputs: int 129 * inputType(int i): TypeNodeIF 130 * inputTypes: Iterator<TypeNodeIF> 117 * children 118 * inputTypes: SequenceNode<TypeNodeIF> 119 * outputType: TypeNodeIF 131 120 * EnumerationTypeNodeIF 132 * methods 133 * name: IdentifierNodeIF 134 * numElements: int 135 * element(int i): PairNode<IdentifierNodeIF, LiteralNodeIF> 136 * elements: Iterator<PairNode<IdentifierNodeIF, LiteralNodeIF>> 121 * children 122 * SequenceNode<PairNode<IdentifierNodeIF, LiteralNodeIF>> 137 123 * VariableDeclarationNodeIF 138 124 * Every variable is defined at one unique location in the code. The variable can be declared in several places. Each declaration has an associated definition. There can be many decls associated to one def. This is a linking thing: a single variable that is to be used in several files will be defined in one file but be declared in all 139 * methods 140 * isDefinition: boolean : is this the defining declaration? 141 * definition: VariableDeclarationNodeIF : the defining declaration (may be null at first) 142 * scope: ScopeIF 125 * children 143 126 * name: IdentifierNodeIF 144 127 * type: TypeNodeIF 128 * initializer: ExpressionNodeIF : the initialization expression for this variable. May be null. Only a defining node an have such an expression. 129 * definition: VariableDeclarationNodeIF : the defining declaration (may be null at first) 130 * methods 131 * isDefinition: boolean : is this the defining declaration? 132 * scope: ScopeIF 145 133 * typeQualifier: CONST, VOLATILE 146 134 * storageClass: EXTERNAL, AUTO, STATIC, REGISTER 147 * initializer: ExpressionNodeIF : the initialization expression for this variable. May be null. Only a defining node an have such an expression.148 135 * FunctionDeclarationNodeIF 149 136 * analogous to situation with variables, with the function body playing the role of variable initializer. I.e., a function may have several declarations ("prototypes" in C), but only one definition (i.e., one with a body). … … 163 150 * type: TypeNodeIF (type being assigned a name) 164 151 * LabelNodeIF: a label preceding a statement 165 * methods 166 * statement: StatementReferenceNodeIF : the statement this label precedes (this may be null at first) 167 * identifier: IdentifierNodeIF: the name of this label 152 * children 153 * identifier: IdentifierNodeIF: the name of this label (child) 154 * methods 155 * statement: StatementNodeIF : the statement this label precedes (this may be null at first) 168 156 * StatementNodeIF 169 157 * methods
