Changeset 40 for branches/DelphiToC


Ignore:
Timestamp:
Aug 5, 2010, 11:32:36 AM (14 years ago)
Author:
george
Message:

Parser classes inheriting pascal source tree classes rewrited using class methods and source tree as parametr. This solve problem "class x not related to y.".

Location:
branches/DelphiToC
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/DelphiToC/Analyze/UPascalParser.pas

    r39 r40  
    1414  TOnErrorMessage = procedure (Text: string) of object;
    1515
    16   TParserWhileDo = class(TWhileDo)
    17     procedure Parse(Parser: TPascalParser);
    18   end;
    19 
    20   TParserExpression = class(TExpression)
    21     function Parse(Parser: TPascalParser): TExpression;
    22   end;
    23 
    24   TParserModule = class(TModule)
    25     procedure Parse(Parser: TPascalParser);
    26     procedure ParseUnit(Parser: TPascalParser);
    27     procedure ParseProgram(Parser: TPascalParser);
    28   end;
    29 
    30   TParserProgram = class(TProgram)
    31     procedure Parse(Parser: TPascalParser);
    32   end;
    33 
    34   TParserCommonBlock = class(TCommonBlock)
    35     procedure Parse(Parser: TPascalParser; EndSymbol: Char = ';');
    36     function ParseCommand(Parser: TPascalParser): TCommand;
    37   end;
    38 
    39   TParserBeginEnd = class(TBeginEnd)
    40     procedure Parse(Parser: TPascalParser);
    41   end;
    42 
    43   TParserFunctionList = class(TFunctionList)
    44     procedure Parse(Parser: TPascalParser);
    45   end;
    46 
    47   TParserIfThenElse = class(TIfThenElse)
    48     procedure Parse(Parser: TPascalParser);
    49   end;
    50 
    51   TParserVariableList = class(TVariableList)
    52     procedure Parse(Parser: TPascalParser);
    53   end;
    54 
    55   TParserVariable = class(TVariable)
    56     procedure Parse(Parser: TPascalParser);
    57   end;
    58 
    59   TParserConstantList = class(TConstantList)
    60     procedure Parse(Parser: TPascalParser);
    61   end;
    62 
    63   TParserTypeList = class(TTypeList)
    64     procedure Parse(Parser: TPascalParser);
    65   end;
    66 
    67   TParserType = class(TType)
    68     procedure Parse(Parser: TPascalParser);
     16  { TParserWhileDo }
     17
     18  TParserWhileDo = class
     19    class procedure Parse(Parser: TPascalParser; SourceCode: TWhileDo);
     20  end;
     21
     22  { TParserExpression }
     23
     24  TParserExpression = class
     25    class function Parse(Parser: TPascalParser; SourceCode: TExpression): TExpression;
     26  end;
     27
     28  { TParserModule }
     29
     30  TParserModule = class
     31    class procedure Parse(Parser: TPascalParser; SourceCode: TModule);
     32    class procedure ParseUnit(Parser: TPascalParser; SourceCode: TModule);
     33    class procedure ParseProgram(Parser: TPascalParser; SourceCode: TModule);
     34  end;
     35
     36  TParserProgram = class
     37    class procedure Parse(Parser: TPascalParser; SourceCode: TProgram);
     38  end;
     39
     40  { TParserCommonBlock }
     41
     42  TParserCommonBlock = class
     43    class procedure Parse(Parser: TPascalParser; SourceCode: TCommonBlock; EndSymbol: Char = ';');
     44    class function ParseCommand(Parser: TPascalParser; SourceCode: TCommonBlock): TCommand;
     45  end;
     46
     47  { TParserBeginEnd }
     48
     49  TParserBeginEnd = class
     50    class procedure Parse(Parser: TPascalParser; SourceCode: TBeginEnd);
     51  end;
     52
     53  TParserFunctionList = class
     54    class procedure Parse(Parser: TPascalParser; SourceCode: TFunctionList);
     55  end;
     56
     57  TParserIfThenElse = class
     58    class procedure Parse(Parser: TPascalParser; SourceCode: TIfThenElse);
     59  end;
     60
     61  TParserVariableList = class
     62    class procedure Parse(Parser: TPascalParser; SourceCode: TVariableList);
     63  end;
     64
     65  TParserVariable = class
     66    class procedure Parse(Parser: TPascalParser; SourceCode: TVariable);
     67  end;
     68
     69  TParserConstantList = class
     70    class procedure Parse(Parser: TPascalParser; SourceCode: TConstantList);
     71  end;
     72
     73  TParserTypeList = class
     74    class procedure Parse(Parser: TPascalParser; SourceCode: TTypeList);
     75  end;
     76
     77  TParserType = class
     78    class procedure Parse(Parser: TPascalParser; SourceCode: TType);
    6979  end;
    7080
     
    7686  public
    7787    CodePosition: Integer;
    78     SourceCode: TStringList;
     88    SourceCodeText: TStringList;
    7989    function IsAlphanumeric(Character: Char): Boolean;
    8090    function NextCode(Shift: Boolean = False): string;
     
    197207  J := CodePosition;
    198208  I := CodePosition;
    199   with SourceCode do
     209  with SourceCodeText do
    200210  while Result = '' do begin
    201211    while IsWhiteSpace(Text[I]) do Inc(I);
     
    250260{ TParserWhileDo }
    251261
    252 procedure TParserWhileDo.Parse(Parser: TPascalParser);
    253 begin
    254   with Parser do begin
     262class procedure TParserWhileDo.Parse(Parser: TPascalParser; SourceCode: TWhileDo);
     263begin
     264  with Parser, SourceCode do begin
    255265    Expect('while');
    256266    Condition.CommonBlock := CommonBlock;
    257     TParserExpression(Condition).Parse(Parser);
     267    TParserExpression.Parse(Parser, Condition);
    258268    Expect('do');
    259     Command := TParserCommonBlock(CommonBlock).ParseCommand(Parser);
     269    Command := TParserCommonBlock.ParseCommand(Parser, CommonBlock);
    260270  end;
    261271end;
     
    263273{ TExpression }
    264274
    265 function TParserExpression.Parse(Parser: TPascalParser): TExpression;
     275class function TParserExpression.Parse(Parser: TPascalParser;
     276  SourceCode: TExpression): TExpression;
    266277var
    267278  Identifier: string;
     
    277288  Expressions := TExpressionList.Create;
    278289  Expressions.Add(TExpression.Create);
    279   with Parser do begin
     290  with Parser, SourceCode do begin
    280291    while ((NextCode <> ';') and (NextCode <> ',') and (not IsKeyWord(NextCode))) and
    281292      not (((NextCode = ')') or (NextCode = ']'))) do begin
     
    285296          with TExpression(Expressions.Last) do begin
    286297            SubItems[1] := TExpression.Create;
    287             TParserExpression(SubItems[1]).Parse(Parser);
     298            TParserExpression.Parse(Parser, TExpression(SubItems[1]));
    288299          end;
    289300          with TExpression(Expressions.Items[Expressions.Add(TExpression.Create)]) do begin
    290             CommonBlock := Self.CommonBlock;
     301            CommonBlock := SourceCode.CommonBlock;
    291302            SubItems[0] := TExpression(Expressions[Expressions.Count - 2]).SubItems[1];
    292303          end;
     
    309320            end;
    310321            with TExpression(Expressions.Items[Expressions.Add(TExpression.Create)]) do begin
    311               CommonBlock := Self.CommonBlock;
     322              CommonBlock := SourceCode.CommonBlock;
    312323              SubItems[0] := TExpression(Expressions[Expressions.Count - 2]).SubItems[1];
    313324            end;
     
    323334                  NewExpression := TExpression.Create;
    324335                  NewExpression.CommonBlock := CommonBlock;
    325                   TParserExpression(NewExpression).Parse(Parser);
     336                  TParserExpression.Parse(Parser, NewExpression);
    326337                  SubItems.Add(NewExpression);
    327338                  while NextCode = ',' do begin
     
    329340                    NewExpression := TExpression.Create;
    330341                    NewExpression.CommonBlock := CommonBlock;
    331                     TParserExpression(NewExpression).Parse(Parser);
     342                    TParserExpression.Parse(Parser, NewExpression);
    332343                    SubItems.Add(NewExpression);
    333344                  end;
     
    338349              end;
    339350              with TExpression(Expressions.Items[Expressions.Add(TExpression.Create)]) do begin
    340                 CommonBlock := Self.CommonBlock;
     351                CommonBlock := SourceCode.CommonBlock;
    341352                SubItems[0] := TExpression(Expressions[Expressions.Count - 2]).SubItems[1];
    342353              end;
     
    351362                end;
    352363                with TExpression(Expressions.Items[Expressions.Add(TExpression.Create)]) do begin
    353                   CommonBlock := Self.CommonBlock;
     364                  CommonBlock := SourceCode.CommonBlock;
    354365                  SubItems[0] := TExpression(Expressions[Expressions.Count - 2]).SubItems[1];
    355366                end;
     
    364375          with TExpression(Expressions.Last) do begin
    365376            SubItems[1] := TExpression.Create;
    366             TExpression(SubItems[1]).CommonBlock := Self.CommonBlock;
     377            TExpression(SubItems[1]).CommonBlock := SourceCode.CommonBlock;
    367378            TExpression(SubItems[1]).NodeType := ntConstant;
    368379
     
    378389          //ShowMessage(IntToStr(Expressions.Count));
    379390          with TExpression(Expressions.Items[Expressions.Add(TExpression.Create)]) do begin
    380             CommonBlock := Self.CommonBlock;
     391            CommonBlock := SourceCode.CommonBlock;
    381392            SubItems[0] := TExpression(Expressions[Expressions.Count - 2]).SubItems[1];
    382393          end;
     
    397408      end;
    398409    end;
    399   end;
    400   Assign(TExpression(TExpression(Expressions.First).SubItems[1]));
    401   TExpression(Expressions.First).SubItems[1] := nil;
    402   //ShowMessage(IntToStr(Expressions.Count));
    403   TExpression(Expressions[1]).SubItems[0] := nil;
    404   Expressions.Destroy;
    405 end;
    406 
    407 function TParserCommonBlock.ParseCommand(Parser: TPascalParser): TCommand;
     410    Assign(TExpression(TExpression(Expressions.First).SubItems[1]));
     411    TExpression(Expressions.First).SubItems[1] := nil;
     412    //ShowMessage(IntToStr(Expressions.Count));
     413    TExpression(Expressions[1]).SubItems[0] := nil;
     414    Expressions.Destroy;
     415  end;
     416end;
     417
     418class function TParserCommonBlock.ParseCommand(Parser: TPascalParser; SourceCode: TCommonBlock): TCommand;
    408419var
    409420  Identifier: string;
     
    419430    if NextCode = 'begin' then begin
    420431      Result := TBeginEnd.Create;
    421       Result.CommonBlock := Self;
    422       TParserBeginEnd(Result).Parse(Parser);
     432      Result.CommonBlock := SourceCode;
     433      TParserBeginEnd.Parse(Parser, TBeginEnd(Result));
    423434    end else
    424435    if NextCode = 'if' then begin
    425436      Result := TIfThenElse.Create;
    426       Result.CommonBlock := Self;
    427       TParserIfThenElse(Result).Parse(Parser);
     437      Result.CommonBlock := SourceCode;
     438      TParserIfThenElse.Parse(Parser, TIfThenElse(Result));
    428439    end else
    429440    if NextCode = 'while' then begin
    430441      Result := TWhileDo.Create;
    431       Result.CommonBlock := Self;
    432       TParserWhileDo(Result).Parse(Parser);
     442      Result.CommonBlock := SourceCode;
     443      TParserWhileDo.Parse(Parser, TWhileDo(Result));
    433444    end else
    434445    if IsIdentificator(NextCode) then begin
    435       if Assigned(Variables.Search(NextCode)) then begin
     446      if Assigned(SourceCode.Variables.Search(NextCode)) then begin
    436447        Result := TAssignment.Create;
    437         Result.CommonBlock := Self;
     448        Result.CommonBlock := SourceCode;
    438449        IdentName := ReadCode;
    439         TAssignment(Result).Target := Variables.Search(IdentName);
     450        TAssignment(Result).Target := SourceCode.Variables.Search(IdentName);
    440451        Expect(':=');
    441452        TAssignment(Result).Source := TExpression.Create;
    442         TAssignment(Result).Source.CommonBlock := Self;
    443         TParserExpression(TAssignment(Result).Source).Parse(Parser);
     453        TAssignment(Result).Source.CommonBlock := SourceCode;
     454        TParserExpression.Parse(Parser, TAssignment(Result).Source);
    444455      end else
    445       if Assigned(Methods.Search(NextCode)) then begin
     456      if Assigned(SourceCode.Methods.Search(NextCode)) then begin
    446457        Result := TMethodCall.Create;
    447         Result.CommonBlock := Self;
     458        Result.CommonBlock := SourceCode;
    448459  //      ParseMetVariable(TMethodCall(Result).Target);
    449460      end;
     
    577588{ TParserModule }
    578589
    579 procedure TParserModule.Parse(Parser: TPascalParser);
     590class procedure TParserModule.Parse(Parser: TPascalParser; SourceCode: TModule);
    580591begin
    581592  with Parser do begin
    582593    if NextCode = 'program' then
    583       ParseProgram(Parser)
     594      ParseProgram(Parser, SourceCode)
    584595    else if NextCode = 'unit' then
    585       ParseUnit(Parser)
    586     else ParseProgram(Parser);
    587   end;
    588 end;
    589 
    590 procedure TParserModule.ParseProgram(Parser: TPascalParser);
     596      ParseUnit(Parser, SourceCode)
     597    else ParseProgram(Parser, SourceCode);
     598  end;
     599end;
     600
     601class procedure TParserModule.ParseProgram(Parser: TPascalParser; SourceCode: TModule);
    591602var
    592603  Identifier: string;
    593604begin
    594   with Parser do begin
     605  with Parser, SourceCode do begin
    595606    if NextCode = 'program' then begin
    596607      Expect('program');
     
    608619      end;
    609620    end;
    610     TParserCommonBlock(Self).Parse(Parser, '.');
    611   end;
    612 end;
    613 
    614 procedure TParserModule.ParseUnit(Parser: TPascalParser);
     621    TParserCommonBlock.Parse(Parser, SourceCode, '.');
     622  end;
     623end;
     624
     625class procedure TParserModule.ParseUnit(Parser: TPascalParser; SourceCode: TModule);
    615626begin
    616627  with Parser do begin
     
    628639{ TParserProgram }
    629640
    630 procedure TParserProgram.Parse(Parser: TPascalParser);
     641class procedure TParserProgram.Parse(Parser: TPascalParser; SourceCode: TProgram);
    631642var
    632643  I: Integer;
    633644begin
    634   with Parser do begin
     645  with Parser, SourceCode do begin
    635646    Log('==== Parse start ====');
    636647    Modules.Clear;
     
    652663      end;
    653664    end;
    654     TParserModule(TModule(Modules[0])).Parse(Parser);
     665    TParserModule.Parse(Parser, TModule(Modules[0]));
    655666  end;
    656667end;
     
    658669{ TParserCommonBlock }
    659670
    660 procedure TParserCommonBlock.Parse(Parser: TPascalParser; EndSymbol: Char = ';');
    661 begin
    662   with Parser do begin
     671class procedure TParserCommonBlock.Parse(Parser: TPascalParser; SourceCode: TCommonBlock; EndSymbol: Char = ';');
     672begin
     673  with Parser, SourceCode do begin
    663674    while NextCode <> EndSymbol do begin
    664675      if NextCode = 'var' then
    665         TParserVariableList(Variables).Parse(Parser)
     676        TParserVariableList.Parse(Parser, Variables)
    666677      else if NextCode = 'const' then
    667         TParserConstantList(Constants).Parse(Parser)
     678        TParserConstantList.Parse(Parser, Constants)
    668679      else if NextCode = 'type' then
    669         TParserTypeList(Types).Parse(Parser)
     680        TParserTypeList.Parse(Parser, Types)
    670681      else if NextCode = 'procedure' then
    671         TParserFunctionList(Methods).Parse(Parser)
     682        TParserFunctionList.Parse(Parser, Methods)
    672683      else begin
    673         TParserBeginEnd(Code).Parse(Parser);
     684        TParserBeginEnd.Parse(Parser, Code);
    674685        Break;
    675686      end;
     
    681692{ TParserBeginEnd }
    682693
    683 procedure TParserBeginEnd.Parse(Parser: TPascalParser);
     694class procedure TParserBeginEnd.Parse(Parser: TPascalParser; SourceCode: TBeginEnd);
    684695var
    685696  NewCommand: TCommand;
    686697begin
    687   with Parser do begin
     698  with Parser, SourceCode do begin
    688699    Expect('begin');
    689700    while NextCode <> 'end' do begin
    690       NewCommand := TParserCommonBlock(CommonBlock).ParseCommand(Parser);
     701      NewCommand := TParserCommonBlock.ParseCommand(Parser, CommonBlock);
    691702      if Assigned(NewCommand) then Commands.Add(NewCommand);
    692703      //ShowMessage(NextCode);
     
    699710{ TParserParseFunctionList }
    700711
    701 procedure TParserFunctionList.Parse(Parser: TPascalParser);
     712class procedure TParserFunctionList.Parse(Parser: TPascalParser; SourceCode: TFunctionList);
    702713var
    703714  Identifiers: TStringList;
     
    709720begin
    710721  Identifiers := TStringList.Create;
    711   with Parser do begin
     722  with Parser, SourceCode do begin
    712723    with TFunction(Items[Add(TFunction.Create)]) do begin
    713       Parent := Self.Parent;
     724      Parent := SourceCode.Parent;
    714725      Expect('procedure');
    715726      Name := ReadCode;
     
    743754    end;
    744755    Expect(';');
    745     TParserCommonBlock(TFunction(Items[Count - 1])).Parse(Parser);
     756    TParserCommonBlock.Parse(Parser, TFunction(Items[Count - 1]));
    746757  end;
    747758  Identifiers.Destroy;
     
    750761{ TParserIfThenElse }
    751762
    752 procedure TParserIfThenElse.Parse(Parser: TPascalParser);
     763class procedure TParserIfThenElse.Parse(Parser: TPascalParser; SourceCode: TIfThenElse);
    753764begin
    754765  with Parser do begin
     
    763774{ TParserVariableList }
    764775
    765 procedure TParserVariableList.Parse(Parser: TPascalParser);
     776class procedure TParserVariableList.Parse(Parser: TPascalParser; SourceCode: TVariableList);
    766777var
    767778  Identifiers: TStringList;
     
    773784begin
    774785  Identifiers := TStringList.Create;
    775   with Parser do begin
     786  with Parser, SourceCode do begin
    776787    Expect('var');
    777788    while IsIdentificator(NextCode) do begin
     
    802813{ TParserVariable }
    803814
    804 procedure TParserVariable.Parse(Parser: TPascalParser);
    805 begin
    806   with Parser do begin
     815class procedure TParserVariable.Parse(Parser: TPascalParser; SourceCode: TVariable);
     816begin
     817  with Parser, SourceCode do begin
    807818    Name := NextCode;
    808819    Expect(':=');
     
    813824{ TParserConstantList }
    814825
    815 procedure TParserConstantList.Parse(Parser: TPascalParser);
     826class procedure TParserConstantList.Parse(Parser: TPascalParser; SourceCode: TConstantList);
    816827var
    817828  Identifiers: TStringList;
     
    824835begin
    825836  Identifiers := TStringList.Create;
    826   with Parser do begin
     837  with Parser, SourceCode do begin
    827838    Expect('const');
    828839    while IsIdentificator(NextCode) do begin
     
    857868{ TParserTypeList }
    858869
    859 procedure TParserTypeList.Parse(Parser: TPascalParser);
    860 begin
    861   with Parser do begin
     870class procedure TParserTypeList.Parse(Parser: TPascalParser; SourceCode: TTypeList);
     871begin
     872  with Parser, SourceCode do begin
    862873    Expect('type');
    863874    while IsIdentificator(NextCode) do
    864875      with TType(Items[Add(TType.Create)]) do begin
    865         Parent := Self;
    866         TParserType(Items[Count - 1]).Parse(Parser);
     876        Parent := SourceCode;
     877        TParserType.Parse(Parser, TType(Items[Count - 1]));
    867878      end;
    868879  end;
     
    871882{ TParserType }
    872883
    873 procedure TParserType.Parse(Parser: TPascalParser);
    874 begin
    875   with Parser do begin
     884class procedure TParserType.Parse(Parser: TPascalParser; SourceCode: TType);
     885begin
     886  with Parser, SourceCode do begin
    876887    Name := NextCode;
    877888    Expect('=');
  • branches/DelphiToC/DelphiToC.lpi

    r39 r40  
    3636      </Item1>
    3737    </RequiredPackages>
    38     <Units Count="15">
     38    <Units Count="16">
    3939      <Unit0>
    4040        <Filename Value="DelphiToC.lpr"/>
    4141        <IsPartOfProject Value="True"/>
    42         <EditorIndex Value="9"/>
     42        <EditorIndex Value="10"/>
    4343        <WindowIndex Value="0"/>
    4444        <TopLine Value="3"/>
    4545        <CursorPos X="39" Y="12"/>
    46         <UsageCount Value="56"/>
     46        <UsageCount Value="57"/>
    4747        <Loaded Value="True"/>
    4848      </Unit0>
     
    5757        <WindowIndex Value="0"/>
    5858        <TopLine Value="10"/>
    59         <CursorPos X="46" Y="23"/>
    60         <UsageCount Value="56"/>
     59        <CursorPos X="42" Y="24"/>
     60        <UsageCount Value="57"/>
    6161        <Loaded Value="True"/>
    6262        <LoadedDesigner Value="True"/>
     
    6969        <TopLine Value="1"/>
    7070        <CursorPos X="1" Y="1"/>
    71         <UsageCount Value="56"/>
     71        <UsageCount Value="57"/>
    7272      </Unit2>
    7373      <Unit3>
     
    7777        <EditorIndex Value="4"/>
    7878        <WindowIndex Value="0"/>
    79         <TopLine Value="470"/>
    80         <CursorPos X="3" Y="483"/>
    81         <UsageCount Value="56"/>
     79        <TopLine Value="1"/>
     80        <CursorPos X="3" Y="12"/>
     81        <UsageCount Value="57"/>
    8282        <Loaded Value="True"/>
    8383      </Unit3>
     
    8686        <IsPartOfProject Value="True"/>
    8787        <UnitName Value="UPascalCompiler"/>
    88         <EditorIndex Value="8"/>
    89         <WindowIndex Value="0"/>
    90         <TopLine Value="10"/>
    91         <CursorPos X="73" Y="9"/>
    92         <UsageCount Value="56"/>
     88        <EditorIndex Value="9"/>
     89        <WindowIndex Value="0"/>
     90        <TopLine Value="1"/>
     91        <CursorPos X="55" Y="9"/>
     92        <UsageCount Value="57"/>
    9393        <Loaded Value="True"/>
    9494      </Unit4>
     
    9797        <IsPartOfProject Value="True"/>
    9898        <UnitName Value="UAssemblerSource"/>
    99         <WindowIndex Value="0"/>
    100         <TopLine Value="1"/>
    101         <CursorPos X="1" Y="1"/>
    102         <UsageCount Value="56"/>
     99        <EditorIndex Value="7"/>
     100        <WindowIndex Value="0"/>
     101        <TopLine Value="1"/>
     102        <CursorPos X="9" Y="12"/>
     103        <UsageCount Value="57"/>
     104        <Loaded Value="True"/>
    103105      </Unit5>
    104106      <Unit6>
     
    109111        <TopLine Value="1"/>
    110112        <CursorPos X="1" Y="1"/>
    111         <UsageCount Value="56"/>
     113        <UsageCount Value="57"/>
    112114      </Unit6>
    113115      <Unit7>
     
    115117        <IsPartOfProject Value="True"/>
    116118        <UnitName Value="UCSource"/>
    117         <EditorIndex Value="7"/>
     119        <EditorIndex Value="8"/>
    118120        <WindowIndex Value="0"/>
    119121        <TopLine Value="3"/>
    120122        <CursorPos X="3" Y="8"/>
    121         <UsageCount Value="56"/>
     123        <UsageCount Value="57"/>
    122124        <Loaded Value="True"/>
    123125      </Unit7>
     
    129131        <EditorIndex Value="0"/>
    130132        <WindowIndex Value="0"/>
    131         <TopLine Value="382"/>
    132         <CursorPos X="37" Y="396"/>
    133         <UsageCount Value="56"/>
     133        <TopLine Value="868"/>
     134        <CursorPos X="26" Y="886"/>
     135        <UsageCount Value="57"/>
    134136        <Loaded Value="True"/>
    135137      </Unit8>
     
    164166        <EditorIndex Value="1"/>
    165167        <WindowIndex Value="0"/>
    166         <TopLine Value="55"/>
     168        <TopLine Value="61"/>
    167169        <CursorPos X="7" Y="68"/>
    168170        <UsageCount Value="11"/>
     
    187189        <Loaded Value="True"/>
    188190      </Unit14>
     191      <Unit15>
     192        <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\rtl\inc\systemh.inc"/>
     193        <WindowIndex Value="0"/>
     194        <TopLine Value="834"/>
     195        <CursorPos X="11" Y="847"/>
     196        <UsageCount Value="10"/>
     197      </Unit15>
    189198    </Units>
    190     <JumpHistory Count="30" HistoryIndex="29">
     199    <JumpHistory Count="30" HistoryIndex="28">
    191200      <Position1>
    192201        <Filename Value="Analyze\UPascalParser.pas"/>
    193         <Caret Line="395" Column="1" TopLine="388"/>
     202        <Caret Line="826" Column="43" TopLine="813"/>
    194203      </Position1>
    195204      <Position2>
    196205        <Filename Value="Analyze\UPascalParser.pas"/>
    197         <Caret Line="389" Column="1" TopLine="384"/>
     206        <Caret Line="70" Column="21" TopLine="70"/>
    198207      </Position2>
    199208      <Position3>
    200209        <Filename Value="Analyze\UPascalParser.pas"/>
    201         <Caret Line="387" Column="1" TopLine="382"/>
     210        <Caret Line="826" Column="93" TopLine="826"/>
    202211      </Position3>
    203212      <Position4>
    204         <Filename Value="UPascalSource.pas"/>
    205         <Caret Line="478" Column="23" TopLine="470"/>
     213        <Filename Value="Analyze\UPascalParser.pas"/>
     214        <Caret Line="70" Column="48" TopLine="70"/>
    206215      </Position4>
    207216      <Position5>
    208217        <Filename Value="Analyze\UPascalParser.pas"/>
    209         <Caret Line="392" Column="39" TopLine="382"/>
     218        <Caret Line="826" Column="91" TopLine="826"/>
    210219      </Position5>
    211220      <Position6>
    212221        <Filename Value="Analyze\UPascalParser.pas"/>
    213         <Caret Line="393" Column="1" TopLine="382"/>
     222        <Caret Line="837" Column="26" TopLine="824"/>
    214223      </Position6>
    215224      <Position7>
    216225        <Filename Value="Analyze\UPascalParser.pas"/>
    217         <Caret Line="394" Column="1" TopLine="382"/>
     226        <Caret Line="872" Column="26" TopLine="862"/>
    218227      </Position7>
    219228      <Position8>
    220229        <Filename Value="Analyze\UPascalParser.pas"/>
    221         <Caret Line="395" Column="1" TopLine="382"/>
     230        <Caret Line="876" Column="29" TopLine="863"/>
    222231      </Position8>
    223232      <Position9>
    224233        <Filename Value="Analyze\UPascalParser.pas"/>
    225         <Caret Line="389" Column="1" TopLine="382"/>
     234        <Caret Line="877" Column="26" TopLine="864"/>
    226235      </Position9>
    227236      <Position10>
    228237        <Filename Value="Analyze\UPascalParser.pas"/>
    229         <Caret Line="387" Column="1" TopLine="382"/>
     238        <Caret Line="78" Column="11" TopLine="65"/>
    230239      </Position10>
    231240      <Position11>
    232241        <Filename Value="Analyze\UPascalParser.pas"/>
    233         <Caret Line="388" Column="1" TopLine="382"/>
     242        <Caret Line="884" Column="75" TopLine="868"/>
    234243      </Position11>
    235244      <Position12>
    236245        <Filename Value="Analyze\UPascalParser.pas"/>
    237         <Caret Line="389" Column="1" TopLine="382"/>
     246        <Caret Line="877" Column="46" TopLine="864"/>
    238247      </Position12>
    239248      <Position13>
    240249        <Filename Value="Analyze\UPascalParser.pas"/>
    241         <Caret Line="400" Column="1" TopLine="382"/>
     250        <Caret Line="884" Column="58" TopLine="868"/>
    242251      </Position13>
    243252      <Position14>
    244         <Filename Value="UPascalSource.pas"/>
    245         <Caret Line="485" Column="1" TopLine="470"/>
     253        <Filename Value="Analyze\UPascalParser.pas"/>
     254        <Caret Line="78" Column="48" TopLine="78"/>
    246255      </Position14>
    247256      <Position15>
    248257        <Filename Value="Analyze\UPascalParser.pas"/>
    249         <Caret Line="392" Column="1" TopLine="382"/>
     258        <Caret Line="884" Column="75" TopLine="868"/>
    250259      </Position15>
    251260      <Position16>
    252         <Filename Value="Analyze\UPascalParser.pas"/>
    253         <Caret Line="393" Column="1" TopLine="382"/>
     261        <Filename Value="UPascalCompiler.pas"/>
     262        <Caret Line="9" Column="73" TopLine="10"/>
    254263      </Position16>
    255264      <Position17>
    256         <Filename Value="Analyze\UPascalParser.pas"/>
    257         <Caret Line="394" Column="1" TopLine="382"/>
     265        <Filename Value="UPascalCompiler.pas"/>
     266        <Caret Line="35" Column="43" TopLine="22"/>
    258267      </Position17>
    259268      <Position18>
    260         <Filename Value="Analyze\UPascalParser.pas"/>
    261         <Caret Line="395" Column="1" TopLine="382"/>
     269        <Filename Value="UPascalCompiler.pas"/>
     270        <Caret Line="45" Column="17" TopLine="33"/>
    262271      </Position18>
    263272      <Position19>
    264273        <Filename Value="Analyze\UPascalParser.pas"/>
    265         <Caret Line="389" Column="1" TopLine="382"/>
     274        <Caret Line="872" Column="27" TopLine="861"/>
    266275      </Position19>
    267276      <Position20>
    268         <Filename Value="Analyze\UPascalParser.pas"/>
    269         <Caret Line="387" Column="1" TopLine="382"/>
     277        <Filename Value="UPascalCompiler.pas"/>
     278        <Caret Line="46" Column="24" TopLine="33"/>
    270279      </Position20>
    271280      <Position21>
    272         <Filename Value="Analyze\UPascalParser.pas"/>
    273         <Caret Line="388" Column="1" TopLine="382"/>
     281        <Filename Value="UMainForm.pas"/>
     282        <Caret Line="88" Column="41" TopLine="76"/>
    274283      </Position21>
    275284      <Position22>
    276         <Filename Value="Analyze\UPascalParser.pas"/>
    277         <Caret Line="389" Column="1" TopLine="382"/>
     285        <Filename Value="Produce\UAssemblerSource.pas"/>
     286        <Caret Line="1" Column="1" TopLine="1"/>
    278287      </Position22>
    279288      <Position23>
    280         <Filename Value="Analyze\UPascalParser.pas"/>
    281         <Caret Line="387" Column="1" TopLine="382"/>
     289        <Filename Value="Produce\UAssemblerSource.pas"/>
     290        <Caret Line="9" Column="12" TopLine="1"/>
    282291      </Position23>
    283292      <Position24>
    284         <Filename Value="Analyze\UPascalParser.pas"/>
    285         <Caret Line="388" Column="1" TopLine="382"/>
     293        <Filename Value="Produce\UAssemblerSource.pas"/>
     294        <Caret Line="8" Column="3" TopLine="1"/>
    286295      </Position24>
    287296      <Position25>
    288         <Filename Value="Analyze\UPascalParser.pas"/>
    289         <Caret Line="400" Column="1" TopLine="382"/>
     297        <Filename Value="Produce\UAssemblerSource.pas"/>
     298        <Caret Line="34" Column="31" TopLine="21"/>
    290299      </Position25>
    291300      <Position26>
    292         <Filename Value="UPascalSource.pas"/>
    293         <Caret Line="479" Column="18" TopLine="470"/>
     301        <Filename Value="Produce\UAssemblerSource.pas"/>
     302        <Caret Line="193" Column="1" TopLine="171"/>
    294303      </Position26>
    295304      <Position27>
    296         <Filename Value="UPascalSource.pas"/>
    297         <Caret Line="481" Column="1" TopLine="470"/>
     305        <Filename Value="Produce\UAssemblerSource.pas"/>
     306        <Caret Line="12" Column="17" TopLine="1"/>
    298307      </Position27>
    299308      <Position28>
    300         <Filename Value="UPascalSource.pas"/>
    301         <Caret Line="482" Column="1" TopLine="470"/>
     309        <Filename Value="Produce\UAssemblerSource.pas"/>
     310        <Caret Line="14" Column="9" TopLine="1"/>
    302311      </Position28>
    303312      <Position29>
    304         <Filename Value="UPascalSource.pas"/>
    305         <Caret Line="484" Column="1" TopLine="470"/>
     313        <Filename Value="Produce\UAssemblerSource.pas"/>
     314        <Caret Line="12" Column="9" TopLine="1"/>
    306315      </Position29>
    307316      <Position30>
    308317        <Filename Value="UPascalSource.pas"/>
    309         <Caret Line="483" Column="3" TopLine="470"/>
     318        <Caret Line="12" Column="3" TopLine="1"/>
    310319      </Position30>
    311320    </JumpHistory>
     
    326335        <StackChecks Value="True"/>
    327336      </Checks>
     337      <VerifyObjMethodCallValidity Value="True"/>
    328338    </CodeGeneration>
    329339    <Linking>
     
    347357  </CompilerOptions>
    348358  <Debugging>
    349     <BreakPoints Count="1">
    350       <Item1>
    351         <Source Value="Analyze\UPascalParser.pas"/>
    352         <Line Value="392"/>
    353       </Item1>
    354     </BreakPoints>
    355359    <Exceptions Count="3">
    356360      <Item1>
  • branches/DelphiToC/Produce/UAssemblerSource.pas

    r36 r40  
    66
    77uses
    8   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    9   Dialogs, StdCtrls, UPascalSource, UCodeProducer;
     8  SysUtils, Variants, Classes, Graphics, Controls, Forms,
     9  Dialogs, UPascalSource, UCodeProducer;
    1010
    1111type
     
    191191procedure TAssemblerProducer.Produce;
    192192begin
    193   inherited;
    194193  GenerateProgram(ProgramCode);
    195194end;
  • branches/DelphiToC/UMainForm.pas

    r37 r40  
    113113          if TObject(Code.Commands[I]) is TWhileDo then begin
    114114            NewNode2 := AddChild(NewNode, 'While-Do');
     115            NewNode3 := AddChild(NewNode2, 'Podmínka');
     116
     117            NewNode3 := AddChild(NewNode2, 'Povel');
    115118          end else
    116119          if TObject(Code.Commands[I]) is TAssignment then begin
  • branches/DelphiToC/UPascalCompiler.pas

    r39 r40  
    77uses
    88  SysUtils, Variants, Classes, Graphics, Controls, Forms,
    9   Dialogs, UPascalSource, UCodeProducer, UPascalParser, UAssemblerSource,
     9  Dialogs, UPascalSource, UCodeProducer, UPascalParser,
    1010  UCSource;
    1111
     
    3333begin
    3434  Parser.CodePosition := 1;
    35   TParserProgram(ProgramCode).Parse(Parser);
     35  TParserProgram.Parse(Parser, ProgramCode);
    3636  Producer.Produce;
    3737end;
     
    4444  Producer.ProgramCode := ProgramCode;
    4545  Parser := TPascalParser.Create;
    46   Parser.SourceCode := SourceCode;
     46  Parser.SourceCodeText := SourceCode;
    4747  Parser.OnErrorMessage := ErrorMessage;
    4848end;
Note: See TracChangeset for help on using the changeset viewer.