Changeset 59


Ignore:
Timestamp:
Oct 14, 2010, 8:41:34 AM (14 years ago)
Author:
george
Message:
  • Added: On parsing uses section load and parse unit files.
Location:
branches/Transpascal
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/Transpascal/Analyze/UParser.pas

    r58 r59  
    4545  end;
    4646
     47  TGetSourceEvent = function (Name: string; Source: TStringList): Boolean of object;
     48
    4749  { TPascalParser }
    4850
    4951  TPascalParser = class(TBaseParser)
     52  private
     53    FOnGetSource: TGetSourceEvent;
     54  public
     55    function ParseFile(Name: string): Boolean;
    5056    procedure ParseWhileDo(SourceCode: TWhileDo);
    5157    procedure ParseExpression(SourceCode: TExpression);
    52     procedure ParseUsedModuleList(SourceCode: TUsedModuleList);
    53     function ParseModule: TModule;
     58    procedure ParseUses(SourceCode: TUsedModuleList);
     59    function ParseModule(ProgramCode: TProgram): TModule;
    5460    procedure ParseUnit(SourceCode: TModuleUnit);
    5561    procedure ParseUnitInterface(SourceCode: TUnitInterface);
     
    6874    procedure ParseTypeList(SourceCode: TTypeList);
    6975    function ParseType(TypeList: TTypeList; ExpectName: Boolean = True; AssignSymbol: string = '='): TType;
    70   private
     76    property OnGetSource: TGetSourceEvent read FOnGetSource
     77      write FOnGetSource;
     78    constructor Create;
     79    destructor Destroy; override;
    7180  end;
    7281
     
    8493  SUndefinedType = 'Undefined type "%s".';
    8594  SUndefinedConstant = 'Undefined constant "%s".';
     95  SUnitNotFound = 'Unit "%s" not found.';
    8696
    8797{ TBaseParser }
     
    335345end;
    336346
    337 { TParserWhileDo }
     347{ TPascalParser }
     348
     349function TPascalParser.ParseFile(Name: string): Boolean;
     350var
     351  Parser: TPascalParser;
     352  NewModule: TModule;
     353begin
     354  try
     355    Parser := TPascalParser.Create;
     356    Parser.SourceCodeText := TStringList.Create;
     357    Parser.ProgramCode := ProgramCode;
     358    if Assigned(FOnGetSource) then begin
     359      if FOnGetSource(Name, Parser.SourceCodeText) then begin
     360        Parser.Init;
     361        NewModule := Parser.ParseModule(ProgramCode);
     362        ProgramCode.Modules.Add(NewModule);
     363        Result := True;
     364      end else Result := False;
     365    end else Result := False;
     366  finally
     367    Parser.SourceCodeText.Free;
     368    Parser.Free;
     369  end;
     370end;
    338371
    339372procedure TPascalParser.ParseWhileDo(SourceCode: TWhileDo);
     
    631664{ TParserModule }
    632665
    633 function TPascalParser.ParseModule: TModule;
    634 begin
     666function TPascalParser.ParseModule(ProgramCode: TProgram): TModule;
     667begin
     668  Self.ProgramCode := ProgramCode;
    635669  if FNextToken = 'unit' then begin
    636670    Result := TModuleUnit.Create;
     671    Result.ParentProgram := ProgramCode;
    637672    ParseUnit(TModuleUnit(Result));
    638673  end else begin //if FNextToken = 'program' then begin
    639674    Result := TModuleProgram.Create;
     675    Result.ParentProgram := ProgramCode;
    640676    ParseProgram(TModuleProgram(Result));
    641677  end;
     
    655691    // Uses section
    656692    if FNextToken = 'uses' then
    657       ParseUsedModuleList(UsedModules);
     693      ParseUses(UsedModules);
    658694
    659695    ParseCommonBlock(Body, '.');
     
    681717  // Uses section
    682718  if FNextToken = 'uses' then
    683     ParseUsedModuleList(SourceCode.UsedModules);
     719    ParseUses(SourceCode.UsedModules);
    684720
    685721  ParseCommonBlockInterface(SourceCode.Body);
     
    692728  // Uses section
    693729  if FNextToken = 'uses' then
    694     ParseUsedModuleList(SourceCode.UsedModules);
     730    ParseUses(SourceCode.UsedModules);
    695731
    696732  ParseCommonBlock(SourceCode.Body, '.');
     
    11031139end;
    11041140
     1141constructor TPascalParser.Create;
     1142begin
     1143end;
     1144
     1145destructor TPascalParser.Destroy;
     1146begin
     1147  inherited Destroy;
     1148end;
     1149
    11051150{ TParserUsedModuleList }
    11061151
    1107 procedure TPascalParser.ParseUsedModuleList(SourceCode: TUsedModuleList);
     1152procedure TPascalParser.ParseUses(SourceCode: TUsedModuleList);
    11081153var
    11091154  NewUsedModule: TUsedModule;
     
    11131158  begin
    11141159    Name := ReadCode;
    1115   end;
    1116   while FNextToken = ',' do
    1117   begin
     1160    Module := SourceCode.ParentModule.ParentProgram.Modules.Search(Name);
     1161    if not Assigned(Module) then begin
     1162      if not ParseFile(Name) then ErrorMessage(SUnitNotFound, [Name]);
     1163    end;
     1164  end;
     1165  while FNextToken = ',' do begin
    11181166    Expect(',');
    11191167    with TUsedModule(SourceCode.Items[SourceCode.Add(TUsedModule.Create)]) do
    11201168    begin
    11211169      Name := ReadCode;
     1170      Module := SourceCode.ParentModule.ParentProgram.Modules.Search(Name);
     1171      if not Assigned(Module) then begin
     1172        if not ParseFile(Name) then ErrorMessage(SUnitNotFound, [Name]);
     1173      end;
    11221174    end;
    11231175  end;
  • branches/Transpascal/Forms/UMainForm.lfm

    r55 r59  
    6565        Priority = 0
    6666      end>
     67    RightGutter.Width = 0
     68    RightGutter.MouseActions = <   
     69      item
     70        Shift = []
     71        ShiftMask = []
     72        Button = mbLeft
     73        ClickCount = ccAny
     74        ClickDir = cdDown
     75        Command = 13
     76        MoveCaret = False
     77        Option = 0
     78        Priority = 0
     79      end   
     80      item
     81        Shift = []
     82        ShiftMask = []
     83        Button = mbRight
     84        ClickCount = ccSingle
     85        ClickDir = cdUp
     86        Command = 12
     87        MoveCaret = False
     88        Option = 0
     89        Priority = 0
     90      end>
    6791    Highlighter = SynPasSyn1
    6892    Keystrokes = <   
     
    616640    inline SynGutterPartList1: TSynGutterPartList
    617641      object SynGutterMarks1: TSynGutterMarks
    618         Width = 23
     642        Width = 24
    619643      end
    620644      object SynGutterLineNumber1: TSynGutterLineNumber
     
    721745      end
    722746    end
     747    inline SynRightGutterPartList1: TSynRightGutterPartList
     748    end
    723749  end
    724750  object ComboBox1: TComboBox
     
    773799  end
    774800  object SynPasSyn1: TSynPasSyn
     801    Enabled = False
    775802    CompilerMode = pcmDelphi
    776803    NestedComments = False
  • branches/Transpascal/Forms/UMainForm.pas

    r55 r59  
    3737    procedure UpdateProjectTree;
    3838    procedure UpdateProjectGroup(Node: TTreeNode; Group: TProjectGroup);
     39    function GetSource(Name: string; Source: TStringList): Boolean;
    3940  public
    4041    Project: TProject;
     
    8081  // Compile all project files
    8182  Compiler.Init;
    82   for I := 0 to Project.Items.Count - 1 do begin
    83     if TProjectNode(Project.Items[I]) is TProjectFile then
    84     with TProjectFile(Project.Items[I]) do begin
    85       Compiler.Compile(Parent.GetDir + Name, Source, ProducedCode);
    86     end;
     83  Compiler.Parser.OnGetSource := GetSource;
     84  with TProjectFile(Project.Items[0]) do begin
     85    Compiler.Compile(Parent.GetDir + Name, Source, ProducedCode);
    8786  end;
    8887
     
    179178end;
    180179
     180function TMainForm.GetSource(Name: string; Source: TStringList): Boolean;
     181var
     182  FileName: string;
     183begin
     184  FileName := Project.GetDir(True) + Name + '.pas';
     185  if FileExists(FileName) then begin
     186    Source.LoadFromFile(FileName);
     187    Result := True;
     188  end else Result := False;
     189end;
     190
    181191procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
    182192begin
  • branches/Transpascal/Transpascal.lpi

    r58 r59  
    22<CONFIG>
    33  <ProjectOptions>
     4    <Version Value="9"/>
    45    <PathDelim Value="\"/>
    5     <Version Value="8"/>
    66    <General>
    77      <MainUnit Value="0"/>
    8       <TargetFileExt Value=".exe"/>
    98      <Title Value="Transpascal"/>
    109      <ResourceType Value="res"/>
     
    1918      <Language Value=""/>
    2019      <CharSet Value=""/>
    21       <StringTable Comments="" CompanyName="" FileDescription="" FileVersion="" InternalName="" LegalCopyright="" LegalTrademarks="" OriginalFilename="" ProductName="" ProductVersion=""/>
     20      <StringTable ProductVersion=""/>
    2221    </VersionInfo>
    2322    <PublishOptions>
     
    4948        <WindowIndex Value="0"/>
    5049        <TopLine Value="4"/>
    51         <CursorPos X="1" Y="29"/>
    52         <UsageCount Value="152"/>
     50        <CursorPos X="20" Y="26"/>
     51        <UsageCount Value="155"/>
    5352        <Loaded Value="True"/>
    5453      </Unit0>
     
    6059        <ResourceBaseClass Value="Form"/>
    6160        <UnitName Value="UMainForm"/>
     61        <IsVisibleTab Value="True"/>
    6262        <EditorIndex Value="6"/>
    6363        <WindowIndex Value="0"/>
    64         <TopLine Value="66"/>
    65         <CursorPos X="1" Y="85"/>
    66         <UsageCount Value="152"/>
     64        <TopLine Value="70"/>
     65        <CursorPos X="1" Y="87"/>
     66        <UsageCount Value="155"/>
    6767        <Loaded Value="True"/>
    6868        <LoadedDesigner Value="True"/>
     
    7575        <TopLine Value="1"/>
    7676        <CursorPos X="1" Y="1"/>
    77         <UsageCount Value="152"/>
     77        <UsageCount Value="155"/>
    7878      </Unit2>
    7979      <Unit3>
     
    8383        <EditorIndex Value="5"/>
    8484        <WindowIndex Value="0"/>
    85         <TopLine Value="761"/>
    86         <CursorPos X="13" Y="784"/>
    87         <UsageCount Value="152"/>
     85        <TopLine Value="732"/>
     86        <CursorPos X="35" Y="736"/>
     87        <UsageCount Value="155"/>
    8888        <Loaded Value="True"/>
    8989      </Unit3>
     
    9292        <IsPartOfProject Value="True"/>
    9393        <UnitName Value="UCompiler"/>
    94         <IsVisibleTab Value="True"/>
    9594        <EditorIndex Value="14"/>
    9695        <WindowIndex Value="0"/>
    97         <TopLine Value="34"/>
    98         <CursorPos X="68" Y="51"/>
    99         <UsageCount Value="152"/>
     96        <TopLine Value="38"/>
     97        <CursorPos X="1" Y="51"/>
     98        <UsageCount Value="155"/>
    10099        <Loaded Value="True"/>
    101100      </Unit4>
     
    108107        <TopLine Value="179"/>
    109108        <CursorPos X="3" Y="196"/>
    110         <UsageCount Value="152"/>
     109        <UsageCount Value="155"/>
    111110        <Loaded Value="True"/>
    112111      </Unit5>
     
    119118        <TopLine Value="1"/>
    120119        <CursorPos X="38" Y="12"/>
    121         <UsageCount Value="152"/>
     120        <UsageCount Value="155"/>
    122121        <Loaded Value="True"/>
    123122      </Unit6>
     
    128127        <EditorIndex Value="13"/>
    129128        <WindowIndex Value="0"/>
    130         <TopLine Value="104"/>
    131         <CursorPos X="52" Y="119"/>
    132         <UsageCount Value="152"/>
     129        <TopLine Value="294"/>
     130        <CursorPos X="1" Y="307"/>
     131        <UsageCount Value="155"/>
    133132        <Loaded Value="True"/>
    134133      </Unit7>
     
    139138        <EditorIndex Value="0"/>
    140139        <WindowIndex Value="0"/>
    141         <TopLine Value="42"/>
    142         <CursorPos X="26" Y="55"/>
    143         <UsageCount Value="152"/>
     140        <TopLine Value="665"/>
     141        <CursorPos X="1" Y="678"/>
     142        <UsageCount Value="155"/>
    144143        <Loaded Value="True"/>
    145144      </Unit8>
     
    159158        <TopLine Value="936"/>
    160159        <CursorPos X="23" Y="949"/>
    161         <UsageCount Value="12"/>
     160        <UsageCount Value="13"/>
    162161        <Loaded Value="True"/>
    163162      </Unit10>
     
    168167        <TopLine Value="61"/>
    169168        <CursorPos X="7" Y="68"/>
    170         <UsageCount Value="59"/>
     169        <UsageCount Value="60"/>
    171170        <Loaded Value="True"/>
    172171      </Unit11>
     
    177176        <TopLine Value="139"/>
    178177        <CursorPos X="16" Y="146"/>
    179         <UsageCount Value="59"/>
     178        <UsageCount Value="60"/>
    180179        <Loaded Value="True"/>
    181180      </Unit12>
     
    207206        <EditorIndex Value="2"/>
    208207        <WindowIndex Value="0"/>
    209         <TopLine Value="277"/>
    210         <CursorPos X="26" Y="291"/>
    211         <UsageCount Value="114"/>
     208        <TopLine Value="4"/>
     209        <CursorPos X="53" Y="33"/>
     210        <UsageCount Value="117"/>
    212211        <Loaded Value="True"/>
    213212      </Unit16>
     
    235234        <TopLine Value="141"/>
    236235        <CursorPos X="1" Y="154"/>
    237         <UsageCount Value="68"/>
     236        <UsageCount Value="71"/>
    238237        <Loaded Value="True"/>
    239238      </Unit19>
     
    244243        <EditorIndex Value="11"/>
    245244        <WindowIndex Value="0"/>
    246         <TopLine Value="129"/>
    247         <CursorPos X="1" Y="151"/>
    248         <UsageCount Value="24"/>
     245        <TopLine Value="116"/>
     246        <CursorPos X="41" Y="119"/>
     247        <UsageCount Value="27"/>
    249248        <Loaded Value="True"/>
    250249      </Unit20>
     
    255254        <TopLine Value="17"/>
    256255        <CursorPos X="11" Y="30"/>
    257         <UsageCount Value="12"/>
     256        <UsageCount Value="13"/>
    258257        <Loaded Value="True"/>
    259258      </Unit21>
    260259    </Units>
    261     <JumpHistory Count="30" HistoryIndex="22">
     260    <JumpHistory Count="30" HistoryIndex="29">
    262261      <Position1>
    263         <Filename Value="Forms\UMainForm.pas"/>
    264         <Caret Line="124" Column="1" TopLine="110"/>
     262        <Filename Value="Analyze\UParser.pas"/>
     263        <Caret Line="1170" Column="1" TopLine="1152"/>
    265264      </Position1>
    266265      <Position2>
    267266        <Filename Value="Analyze\UParser.pas"/>
    268         <Caret Line="61" Column="1" TopLine="48"/>
     267        <Caret Line="1171" Column="1" TopLine="1152"/>
    269268      </Position2>
    270269      <Position3>
    271270        <Filename Value="Analyze\UParser.pas"/>
    272         <Caret Line="838" Column="25" TopLine="816"/>
     271        <Caret Line="1172" Column="1" TopLine="1152"/>
    273272      </Position3>
    274273      <Position4>
    275274        <Filename Value="Analyze\UParser.pas"/>
    276         <Caret Line="59" Column="35" TopLine="45"/>
     275        <Caret Line="353" Column="1" TopLine="340"/>
    277276      </Position4>
    278277      <Position5>
    279278        <Filename Value="Analyze\UParser.pas"/>
    280         <Caret Line="741" Column="38" TopLine="728"/>
     279        <Caret Line="354" Column="1" TopLine="340"/>
    281280      </Position5>
    282281      <Position6>
    283282        <Filename Value="Analyze\UParser.pas"/>
    284         <Caret Line="732" Column="32" TopLine="719"/>
     283        <Caret Line="355" Column="1" TopLine="340"/>
    285284      </Position6>
    286285      <Position7>
    287286        <Filename Value="Analyze\UParser.pas"/>
    288         <Caret Line="703" Column="1" TopLine="700"/>
     287        <Caret Line="356" Column="1" TopLine="340"/>
    289288      </Position7>
    290289      <Position8>
    291290        <Filename Value="Analyze\UParser.pas"/>
    292         <Caret Line="742" Column="36" TopLine="724"/>
     291        <Caret Line="357" Column="1" TopLine="340"/>
    293292      </Position8>
    294293      <Position9>
    295         <Filename Value="Forms\UMainForm.pas"/>
    296         <Caret Line="147" Column="74" TopLine="141"/>
     294        <Filename Value="Analyze\UParser.pas"/>
     295        <Caret Line="358" Column="1" TopLine="340"/>
    297296      </Position9>
    298297      <Position10>
    299         <Filename Value="Forms\UMainForm.pas"/>
    300         <Caret Line="58" Column="3" TopLine="66"/>
     298        <Filename Value="Analyze\UParser.pas"/>
     299        <Caret Line="359" Column="1" TopLine="340"/>
    301300      </Position10>
    302301      <Position11>
    303         <Filename Value="Forms\UMainForm.pas"/>
    304         <Caret Line="81" Column="1" TopLine="66"/>
     302        <Filename Value="Analyze\UParser.pas"/>
     303        <Caret Line="364" Column="1" TopLine="343"/>
    305304      </Position11>
    306305      <Position12>
    307         <Filename Value="Forms\UMainForm.pas"/>
    308         <Caret Line="82" Column="1" TopLine="66"/>
     306        <Filename Value="Analyze\UParser.pas"/>
     307        <Caret Line="354" Column="1" TopLine="343"/>
    309308      </Position12>
    310309      <Position13>
    311         <Filename Value="Forms\UMainForm.pas"/>
    312         <Caret Line="83" Column="1" TopLine="66"/>
     310        <Filename Value="Analyze\UParser.pas"/>
     311        <Caret Line="367" Column="1" TopLine="346"/>
    313312      </Position13>
    314313      <Position14>
    315         <Filename Value="Forms\UMainForm.pas"/>
    316         <Caret Line="84" Column="1" TopLine="66"/>
     314        <Filename Value="Analyze\UParser.pas"/>
     315        <Caret Line="368" Column="1" TopLine="347"/>
    317316      </Position14>
    318317      <Position15>
    319         <Filename Value="Forms\UMainForm.pas"/>
    320         <Caret Line="85" Column="1" TopLine="66"/>
     318        <Filename Value="Analyze\UParser.pas"/>
     319        <Caret Line="354" Column="1" TopLine="347"/>
    321320      </Position15>
    322321      <Position16>
    323         <Filename Value="UProject.pas"/>
    324         <Caret Line="150" Column="1" TopLine="129"/>
     322        <Filename Value="Analyze\UParser.pas"/>
     323        <Caret Line="353" Column="1" TopLine="347"/>
    325324      </Position16>
    326325      <Position17>
    327         <Filename Value="UProject.pas"/>
    328         <Caret Line="151" Column="1" TopLine="129"/>
     326        <Filename Value="Analyze\UParser.pas"/>
     327        <Caret Line="370" Column="1" TopLine="349"/>
    329328      </Position17>
    330329      <Position18>
    331         <Filename Value="UCompiler.pas"/>
    332         <Caret Line="47" Column="1" TopLine="34"/>
     330        <Filename Value="Analyze\UParser.pas"/>
     331        <Caret Line="353" Column="1" TopLine="348"/>
    333332      </Position18>
    334333      <Position19>
    335         <Filename Value="UCompiler.pas"/>
    336         <Caret Line="48" Column="1" TopLine="34"/>
     334        <Filename Value="Analyze\UParser.pas"/>
     335        <Caret Line="370" Column="1" TopLine="349"/>
    337336      </Position19>
    338337      <Position20>
    339         <Filename Value="UCompiler.pas"/>
    340         <Caret Line="49" Column="1" TopLine="34"/>
     338        <Filename Value="Analyze\UParser.pas"/>
     339        <Caret Line="1165" Column="1" TopLine="1152"/>
    341340      </Position20>
    342341      <Position21>
    343         <Filename Value="UCompiler.pas"/>
    344         <Caret Line="50" Column="1" TopLine="34"/>
     342        <Filename Value="Analyze\UParser.pas"/>
     343        <Caret Line="1176" Column="1" TopLine="1155"/>
    345344      </Position21>
    346345      <Position22>
    347         <Filename Value="UCompiler.pas"/>
    348         <Caret Line="51" Column="1" TopLine="34"/>
     346        <Filename Value="Analyze\UParser.pas"/>
     347        <Caret Line="1155" Column="1" TopLine="1142"/>
    349348      </Position22>
    350349      <Position23>
    351         <Filename Value="UCompiler.pas"/>
    352         <Caret Line="52" Column="1" TopLine="34"/>
     350        <Filename Value="Analyze\UParser.pas"/>
     351        <Caret Line="1177" Column="1" TopLine="1155"/>
    353352      </Position23>
    354353      <Position24>
    355         <Filename Value="Produce\UProducerPascal.pas"/>
    356         <Caret Line="154" Column="1" TopLine="141"/>
     354        <Filename Value="Analyze\UParser.pas"/>
     355        <Caret Line="1155" Column="1" TopLine="1142"/>
    357356      </Position24>
    358357      <Position25>
    359         <Filename Value="Produce\UProducerPascal.pas"/>
    360         <Caret Line="155" Column="1" TopLine="141"/>
     358        <Filename Value="Analyze\UParser.pas"/>
     359        <Caret Line="1177" Column="1" TopLine="1155"/>
    361360      </Position25>
    362361      <Position26>
    363         <Filename Value="Produce\UProducerPascal.pas"/>
    364         <Caret Line="156" Column="1" TopLine="141"/>
     362        <Filename Value="Analyze\UParser.pas"/>
     363        <Caret Line="695" Column="1" TopLine="682"/>
    365364      </Position26>
    366365      <Position27>
    367         <Filename Value="Produce\UProducerPascal.pas"/>
    368         <Caret Line="85" Column="1" TopLine="72"/>
     366        <Filename Value="Analyze\UParser.pas"/>
     367        <Caret Line="684" Column="1" TopLine="679"/>
    369368      </Position27>
    370369      <Position28>
    371         <Filename Value="Produce\UProducerPascal.pas"/>
    372         <Caret Line="86" Column="1" TopLine="72"/>
     370        <Filename Value="Analyze\UParser.pas"/>
     371        <Caret Line="697" Column="1" TopLine="679"/>
    373372      </Position28>
    374373      <Position29>
    375         <Filename Value="Produce\UProducerPascal.pas"/>
    376         <Caret Line="95" Column="1" TopLine="74"/>
     374        <Filename Value="Analyze\UParser.pas"/>
     375        <Caret Line="684" Column="1" TopLine="679"/>
    377376      </Position29>
    378377      <Position30>
    379         <Filename Value="Produce\UProducerPascal.pas"/>
    380         <Caret Line="86" Column="7" TopLine="75"/>
     378        <Filename Value="Analyze\UParser.pas"/>
     379        <Caret Line="697" Column="1" TopLine="679"/>
    381380      </Position30>
    382381    </JumpHistory>
     
    386385    <PathDelim Value="\"/>
    387386    <SearchPaths>
    388       <IncludeFiles Value="Analyze\;Produce\"/>
    389       <OtherUnitFiles Value="Analyze\;Produce\;Visual\;Forms\"/>
     387      <IncludeFiles Value="Analyze;Produce"/>
     388      <OtherUnitFiles Value="Analyze;Produce;Visual;Forms"/>
    390389      <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
    391390    </SearchPaths>
     
    419418  </CompilerOptions>
    420419  <Debugging>
    421     <BreakPoints Count="1">
    422       <Item1>
    423         <Source Value="Forms\UMainForm.pas"/>
    424         <Line Value="81"/>
    425       </Item1>
    426     </BreakPoints>
    427420    <Exceptions Count="3">
    428421      <Item1>
  • branches/Transpascal/UCompiler.pas

    r58 r59  
    4949  Parser.SourceCodeText := Source;
    5050  Parser.Init;
    51   NewModule := Parser.ParseModule;
     51  NewModule := Parser.ParseModule(ProgramCode);
    5252  ProgramCode.Modules.Add(NewModule);
    5353  Producer.Produce(NewModule, ProducedCode);
  • branches/Transpascal/USourceCode.pas

    r55 r59  
    3333  TConstant = class;
    3434  TModule = class;
     35  TProgram = class;
    3536
    3637  TDevice = class
     
    268269
    269270  TUsedModuleList = class(TObjectList)
     271    ParentModule: TModule;
    270272  end;
    271273
    272274  TModule = class
    273275  public
     276    ParentProgram: TProgram;
    274277    Name: string;
    275278    constructor Create;
     
    731734  inherited;
    732735  UsedModules := TUsedModuleList.Create;
     736  UsedModules.ParentModule := Self;
    733737  Body := TCommonBlock.Create;
    734738end;
     
    746750begin
    747751  ImplementationSection := TUnitImplementation.Create;
     752  ImplementationSection.UsedModules.ParentModule := Self;
    748753  InterfaceSection := TUnitInterface.Create;
     754  InterfaceSection.UsedModules.ParentModule := Self;
    749755end;
    750756
Note: See TracChangeset for help on using the changeset viewer.