Changeset 13 for branches/Void/UModel.pas
- Timestamp:
- Nov 10, 2009, 7:14:14 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/Void/UModel.pas
r11 r13 9 9 10 10 type 11 TType = class 12 Name: string; 13 BaseType: TType; 14 end; 15 11 16 TVariable = class 12 17 Name: string; 13 VarType: string;18 VarType: TType; 14 19 end; 15 20 … … 36 41 end; 37 42 43 { TModule } 44 38 45 TModule = class 39 46 public 47 Types: TList; 40 48 Variables: TList; 41 49 Procedures: TList; … … 44 52 destructor Destroy; override; 45 53 procedure Clear; 54 function FindTypeByName(AName: string): TType; 46 55 function FindProcedureByName(AName: string): TProcedure; 47 56 function FindVariableByName(AName: string): TVariable; … … 136 145 constructor TModule.Create; 137 146 begin 147 Types := TList.Create; 138 148 Variables := TList.Create; 139 149 BeginEnd := TBeginEnd.Create; … … 145 155 I: Integer; 146 156 begin 157 for I := 0 to Types.Count - 1 do 158 TType(Types[I]).Destroy; 159 Types.Destroy; 147 160 for I := 0 to Variables.Count - 1 do 148 161 TVariable(Variables[I]).Destroy; … … 178 191 procedure TModule.Init; 179 192 begin 193 // System types 194 with TType(Types[Types.Add(TType.Create)]) do begin 195 Name := 'Integer'; 196 end; 197 with TType(Types[Types.Add(TType.Create)]) do begin 198 Name := 'String'; 199 end; 200 with TType(Types[Types.Add(TType.Create)]) do begin 201 Name := 'Char'; 202 end; 203 with TType(Types[Types.Add(TType.Create)]) do begin 204 Name := 'Byte'; 205 end; 206 with TType(Types[Types.Add(TType.Create)]) do begin 207 Name := 'Word'; 208 end; 209 210 // System procedures 180 211 with TProcedure(Procedures[Procedures.Add(TProcedure.Create)]) do begin 181 212 Name := 'WriteLn'; 182 213 end; 183 214 with TProcedure(Procedures[Procedures.Add(TProcedure.Create)]) do begin 184 215 Name := 'Exit'; 185 216 end; … … 200 231 end; 201 232 233 function TModule.FindTypeByName(AName: string): TType; 234 var 235 I: Integer; 236 begin 237 I := 0; 238 while (I < Types.Count) and (TType(Types[I]).Name <> AName) do 239 Inc(I); 240 if I < Types.Count then Result := Types[I] else Result := nil; 241 end; 242 202 243 end. 203 244
Note:
See TracChangeset
for help on using the changeset viewer.