Changeset 38


Ignore:
Timestamp:
Aug 5, 2010, 8:47:21 AM (14 years ago)
Author:
george
Message:

Modified parsing mechanism of some blocks.
Error messages rewrited as resource strings.

Location:
branches/DelphiToC
Files:
3 edited

Legend:

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

    r37 r38  
    1414  TOnErrorMessage = procedure (Text: string) of object;
    1515
    16   TParserCommand = class(TCommonBlock)
    17     function Parse(Parser: TPascalParser): TCommand;
    18   end;
    19 
    2016  TParserWhileDo = class(TWhileDo)
    2117    procedure Parse(Parser: TPascalParser);
     
    3834  TParserCommonBlock = class(TCommonBlock)
    3935    procedure Parse(Parser: TPascalParser; EndSymbol: Char = ';');
     36    function ParseCommand(Parser: TPascalParser): TCommand;
    4037  end;
    4138
     
    7673    ProgramCode: TProgram;
    7774    FOnErrorMessage: TOnErrorMessage;
    78     procedure ErrorMessage(Text: string);
     75    procedure ErrorMessage(const Text: string; const Arguments: array of const);
    7976  public
    8077    CodePosition: Integer;
     
    9592implementation
    9693
     94resourcestring
     95  SUnknownIdentifier = 'Unknown identificator "%s".';
     96  SExpectedButFound = 'Expected "%s" but "%s" found.';
     97  SRedefineIdentifier = 'Identificator "%s" redefinition.';
     98  STypeNotDefined = 'Type "%s" not defined.';
     99
    97100{ TPascalParser }
    98101
    99 procedure TPascalParser.ErrorMessage(Text: string);
    100 begin
    101   if Assigned(FOnErrorMessage) then FOnErrorMessage(Text);
     102procedure TPascalParser.ErrorMessage(const Text: string; const Arguments: array of const);
     103begin
     104  if Assigned(FOnErrorMessage) then
     105    FOnErrorMessage(Format(Text, Arguments));
    102106end;
    103107
     
    106110  Log('Expected: ' + Code + '  Readed: ' + NextCode);
    107111  if NextCode <> Code then begin
    108     ErrorMessage('Expected ' + Code + ' but ' + NextCode + ' found.');
     112    ErrorMessage(SExpectedButFound, [Code, NextCode]);
    109113  end;
    110114  ReadCode;
     
    252256    TParserExpression(Condition).Parse(Parser);
    253257    Expect('do');
    254     TParserCommand(Command).Parse(Parser);
     258    Command := TParserCommonBlock(CommonBlock).ParseCommand(Parser);
    255259  end;
    256260end;
     
    262266  Identifier: string;
    263267  NewVariable: TVariable;
     268  NewExpression: TExpression;
    264269  Method: TFunction;
    265270  Constant: TConstant;
     
    269274  II: Integer;
    270275begin
    271   (*Expressions := TExpressionList.Create;
     276  Expressions := TExpressionList.Create;
    272277  Expressions.Add(TExpression.Create);
    273278  with Parser do begin
     
    276281        Identifier := ReadCode;
    277282        if Identifier = '(' then begin
     283          // Subexpression
    278284          with TExpression(Expressions[Expressions.Count - 1]) do begin
    279             //SubItems[1] := TParserExpression(Self).Parse(Parser);
     285            SubItems[1] := TExpression.Create;
     286            TParserExpression(SubItems[1]).Parse(Parser);
    280287          end;
    281288          with TExpression(Expressions.Items[Expressions.Add(TExpression.Create)]) do begin
     
    285292        end else
    286293        if IsOperator(Identifier) then begin
     294          // Operator
    287295          TExpression(Expressions[Expressions.Count - 1]).OperatorName := Identifier;
    288296          TExpression(Expressions[Expressions.Count - 1]).NodeType := ntOperator;
    289297        end else
    290298        if IsIdentificator(Identifier) then begin
    291           NewVariable := Variables.Search(Identifier);
     299          // Reference to identificator
     300          NewVariable := CommonBlock.Variables.Search(Identifier);
    292301          if Assigned(NewVariable) then begin
     302            // Referenced variable
    293303            with TExpression(Expressions[Expressions.Count - 1]) do begin
    294304              SubItems[1] := TExpression.Create;
     
    300310            end;
    301311          end else begin
    302             Method := Methods.Search(Identifier);
     312            Method := CommonBlock.Methods.Search(Identifier);
    303313            if Assigned(Method) then begin
     314              // Referenced method
    304315              with TExpression(Expressions[Expressions.Count - 1]) do begin
    305316                SubItems[1] := TExpression.Create;
     
    307318                with TExpression(SubItems[1]) do begin
    308319                  Expect('(');
    309                   SubItems.Add(ParseCommonBlockExpression(CommonBlock));
     320                  NewExpression := TExpression.Create;
     321                  NewExpression.CommonBlock := CommonBlock;
     322                  TParserExpression(NewExpression).Parse(Parser);
     323                  SubItems.Add(NewExpression);
    310324                  while NextCode = ',' do begin
    311325                    Expect(',');
    312                     SubItems.Add(ParseCommonBlockExpression(CommonBlock));
     326                    NewExpression := TExpression.Create;
     327                    NewExpression.CommonBlock := CommonBlock;
     328                    TParserExpression(NewExpression).Parse(Parser);
     329                    SubItems.Add(NewExpression);
    313330                  end;
    314331                  Expect(')');
     
    321338              end;
    322339            end else begin
    323               Constant := Constants.Search(Identifier);
     340              Constant := CommonBlock.Constants.Search(Identifier);
    324341              if Assigned(Constant) then begin
     342                // Referenced constant
    325343                with TExpression(Expressions[Expressions.Count - 1]) do begin
    326344                  SubItems[1] := TExpression.Create;
     
    332350                end;
    333351              end else begin
    334                 ErrorMessage('Neznámý identifikátor: ' + Identifier);
     352                ErrorMessage(SUnknownIdentifier, [Identifier]);
    335353              end;
    336354            end;
     
    338356        end else
    339357        begin
     358          // Constant value
    340359          with TExpression(Expressions[Expressions.Count - 1]) do begin
    341360            SubItems[1] := TExpression.Create;
     
    372391    end;
    373392  end;
    374   Result := TExpression(Expressions[0]).SubItems[1];
     393  Result := TExpression(TExpression(Expressions[0]).SubItems[1]);
    375394  TExpression(Expressions[0]).SubItems[1] := nil;
    376395  TExpression(Expressions[1]).SubItems[0] := nil;
    377396  Expressions.Destroy;
    378   *)
    379 end;
    380 
    381 { TParserCommand }
    382 
    383 function TParserCommand.Parse(Parser: TPascalParser): TCommand;
     397end;
     398
     399function TParserCommonBlock.ParseCommand(Parser: TPascalParser): TCommand;
    384400var
    385401  Identifier: string;
     
    395411    if NextCode = 'begin' then begin
    396412      Result := TBeginEnd.Create;
     413      Result.CommonBlock := Self;
    397414      TParserBeginEnd(Result).Parse(Parser);
    398415    end else
    399416    if NextCode = 'if' then begin
    400       Result :=  TIfThenElse.Create;
     417      Result := TIfThenElse.Create;
     418      Result.CommonBlock := Self;
    401419      TParserIfThenElse(Result).Parse(Parser);
    402420    end else
    403421    if NextCode = 'while' then begin
    404422      Result := TWhileDo.Create;
     423      Result.CommonBlock := Self;
    405424      TParserWhileDo(Result).Parse(Parser);
    406425    end else
     
    408427      if Assigned(Variables.Search(NextCode)) then begin
    409428        Result := TAssignment.Create;
     429        Result.CommonBlock := Self;
    410430        IdentName := ReadCode;
    411431        TAssignment(Result).Target := Variables.Search(IdentName);
    412432        Expect(':=');
    413         TAssignment(Result).Source := TParserExpression(Result).Parse(Parser);
     433        TAssignment(Result).Source := TExpression.Create;
     434        TAssignment(Result).Source.CommonBlock := Self;
     435        TParserExpression(TAssignment(Result).Source).Parse(Parser);
    414436      end else
    415437      if Assigned(Methods.Search(NextCode)) then begin
    416438        Result := TMethodCall.Create;
     439        Result.CommonBlock := Self;
    417440  //      ParseMetVariable(TMethodCall(Result).Target);
    418441      end;
     
    657680    Expect('begin');
    658681    while NextCode <> 'end' do begin
    659       NewCommand := TParserCommand(Self).Parse(Parser);
     682      NewCommand := TParserCommonBlock(CommonBlock).ParseCommand(Parser);
    660683      if Assigned(NewCommand) then Commands.Add(NewCommand);
    661684      //ShowMessage(NextCode);
     
    696719                Identifiers.Add(ReadCode);
    697720              end;
    698             end else ErrorMessage('Pøedefinování existující promìnné.');
     721            end else ErrorMessage(SRedefineIdentifier, [VariableName]);
    699722            Expect(':');
    700723            TypeName := ReadCode;
    701724            NewValueType := Parent.Types.Search(TypeName);
    702             if not Assigned(NewValueType) then ErrorMessage('Typ ' + TypeName + ' nebyl definován.')
     725            if not Assigned(NewValueType) then ErrorMessage(STypeNotDefined, [TypeName])
    703726              else for I := 0 to Identifiers.Count - 1 do
    704727                with TParameter(Items[Add(TParameter.Create)]) do begin
     
    753776          Identifiers.Add(ReadCode);
    754777        end;
    755       end else ErrorMessage('Pøedefinování existující promìnné.');
     778      end else ErrorMessage(SRedefineIdentifier, [VariableName]);
    756779      Expect(':');
    757780      TypeName := ReadCode;
    758781      NewValueType := Parent.Types.Search(TypeName);
    759       if NewValueType = nil then ErrorMessage('Typ ' + TypeName + ' nebyl definován.')
     782      if NewValueType = nil then ErrorMessage(STypeNotDefined, [TypeName])
    760783        else for I := 0 to Identifiers.Count - 1 do
    761784          with TVariable(Items[Add(TVariable.Create)]) do begin
     
    804827          Identifiers.Add(ReadCode);
    805828        end;
    806       end else ErrorMessage('Pøedefinování existující konstanty.');
     829      end else ErrorMessage(SRedefineIdentifier, [ConstantName]);
    807830      Expect(':');
    808831      TypeName := ReadCode;
     
    812835      Expect(';');
    813836
    814       if NewValueType = nil then ErrorMessage('Typ ' + TypeName + ' nebyl definován.')
     837      if NewValueType = nil then ErrorMessage(STypeNotDefined, [TypeName])
    815838        else for I := 0 to Identifiers.Count - 1 do
    816839          with TConstant(Items[Add(TConstant.Create)]) do begin
  • branches/DelphiToC/DelphiToC.lpi

    r37 r38  
    3636      </Item1>
    3737    </RequiredPackages>
    38     <Units Count="10">
     38    <Units Count="15">
    3939      <Unit0>
    4040        <Filename Value="DelphiToC.lpr"/>
    4141        <IsPartOfProject Value="True"/>
    42         <EditorIndex Value="4"/>
    43         <WindowIndex Value="0"/>
    44         <TopLine Value="4"/>
     42        <EditorIndex Value="9"/>
     43        <WindowIndex Value="0"/>
     44        <TopLine Value="3"/>
    4545        <CursorPos X="39" Y="12"/>
    46         <UsageCount Value="20"/>
     46        <UsageCount Value="54"/>
    4747        <Loaded Value="True"/>
    4848      </Unit0>
     
    5454        <ResourceBaseClass Value="Form"/>
    5555        <UnitName Value="UMainForm"/>
    56         <EditorIndex Value="1"/>
     56        <EditorIndex Value="6"/>
    5757        <WindowIndex Value="0"/>
    5858        <TopLine Value="42"/>
    5959        <CursorPos X="17" Y="49"/>
    60         <UsageCount Value="20"/>
     60        <UsageCount Value="54"/>
    6161        <Loaded Value="True"/>
    6262        <LoadedDesigner Value="True"/>
     
    6969        <TopLine Value="1"/>
    7070        <CursorPos X="1" Y="1"/>
    71         <UsageCount Value="20"/>
     71        <UsageCount Value="54"/>
    7272      </Unit2>
    7373      <Unit3>
     
    7575        <IsPartOfProject Value="True"/>
    7676        <UnitName Value="UPascalSource"/>
    77         <WindowIndex Value="0"/>
    78         <TopLine Value="1"/>
    79         <CursorPos X="1" Y="1"/>
    80         <UsageCount Value="20"/>
     77        <EditorIndex Value="4"/>
     78        <WindowIndex Value="0"/>
     79        <TopLine Value="189"/>
     80        <CursorPos X="14" Y="205"/>
     81        <UsageCount Value="54"/>
     82        <Loaded Value="True"/>
    8183      </Unit3>
    8284      <Unit4>
     
    8486        <IsPartOfProject Value="True"/>
    8587        <UnitName Value="UPascalCompiler"/>
    86         <EditorIndex Value="3"/>
    87         <WindowIndex Value="0"/>
    88         <TopLine Value="32"/>
    89         <CursorPos X="34" Y="35"/>
    90         <UsageCount Value="20"/>
     88        <EditorIndex Value="8"/>
     89        <WindowIndex Value="0"/>
     90        <TopLine Value="1"/>
     91        <CursorPos X="14" Y="9"/>
     92        <UsageCount Value="54"/>
    9193        <Loaded Value="True"/>
    9294      </Unit4>
     
    98100        <TopLine Value="1"/>
    99101        <CursorPos X="1" Y="1"/>
    100         <UsageCount Value="20"/>
     102        <UsageCount Value="54"/>
    101103      </Unit5>
    102104      <Unit6>
     
    107109        <TopLine Value="1"/>
    108110        <CursorPos X="1" Y="1"/>
    109         <UsageCount Value="20"/>
     111        <UsageCount Value="54"/>
    110112      </Unit6>
    111113      <Unit7>
     
    113115        <IsPartOfProject Value="True"/>
    114116        <UnitName Value="UCSource"/>
    115         <EditorIndex Value="2"/>
     117        <EditorIndex Value="7"/>
    116118        <WindowIndex Value="0"/>
    117119        <TopLine Value="3"/>
    118120        <CursorPos X="3" Y="8"/>
    119         <UsageCount Value="20"/>
     121        <UsageCount Value="54"/>
    120122        <Loaded Value="True"/>
    121123      </Unit7>
     
    127129        <EditorIndex Value="0"/>
    128130        <WindowIndex Value="0"/>
    129         <TopLine Value="204"/>
    130         <CursorPos X="27" Y="221"/>
    131         <UsageCount Value="20"/>
     131        <TopLine Value="75"/>
     132        <CursorPos X="47" Y="96"/>
     133        <UsageCount Value="54"/>
    132134        <Loaded Value="True"/>
    133135      </Unit8>
     
    137139        <TopLine Value="1"/>
    138140        <CursorPos X="1" Y="1"/>
    139         <UsageCount Value="10"/>
     141        <UsageCount Value="7"/>
    140142        <DefaultSyntaxHighlighter Value="LFM"/>
    141143      </Unit9>
     144      <Unit10>
     145        <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\packages\fcl-base\src\contnrs.pp"/>
     146        <UnitName Value="contnrs"/>
     147        <EditorIndex Value="5"/>
     148        <WindowIndex Value="0"/>
     149        <TopLine Value="67"/>
     150        <CursorPos X="17" Y="80"/>
     151        <UsageCount Value="27"/>
     152        <Loaded Value="True"/>
     153      </Unit10>
     154      <Unit11>
     155        <Filename Value="E:\Programy\Lazarus\lcl\stdctrls.pp"/>
     156        <UnitName Value="StdCtrls"/>
     157        <WindowIndex Value="0"/>
     158        <TopLine Value="1555"/>
     159        <CursorPos X="1" Y="1"/>
     160        <UsageCount Value="10"/>
     161      </Unit11>
     162      <Unit12>
     163        <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\rtl\objpas\sysutils\sysutilh.inc"/>
     164        <EditorIndex Value="1"/>
     165        <WindowIndex Value="0"/>
     166        <TopLine Value="55"/>
     167        <CursorPos X="7" Y="68"/>
     168        <UsageCount Value="10"/>
     169        <Loaded Value="True"/>
     170      </Unit12>
     171      <Unit13>
     172        <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\rtl\objpas\sysutils\sysutils.inc"/>
     173        <EditorIndex Value="2"/>
     174        <WindowIndex Value="0"/>
     175        <TopLine Value="139"/>
     176        <CursorPos X="16" Y="146"/>
     177        <UsageCount Value="10"/>
     178        <Loaded Value="True"/>
     179      </Unit13>
     180      <Unit14>
     181        <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\rtl\objpas\sysutils\sysstr.inc"/>
     182        <EditorIndex Value="3"/>
     183        <WindowIndex Value="0"/>
     184        <TopLine Value="934"/>
     185        <CursorPos X="10" Y="947"/>
     186        <UsageCount Value="10"/>
     187        <Loaded Value="True"/>
     188      </Unit14>
    142189    </Units>
    143190    <JumpHistory Count="30" HistoryIndex="29">
    144191      <Position1>
    145192        <Filename Value="Analyze\UPascalParser.pas"/>
    146         <Caret Line="630" Column="1" TopLine="617"/>
     193        <Caret Line="274" Column="1" TopLine="255"/>
    147194      </Position1>
    148195      <Position2>
    149196        <Filename Value="Analyze\UPascalParser.pas"/>
    150         <Caret Line="631" Column="1" TopLine="617"/>
     197        <Caret Line="275" Column="1" TopLine="258"/>
    151198      </Position2>
    152199      <Position3>
    153200        <Filename Value="Analyze\UPascalParser.pas"/>
    154         <Caret Line="632" Column="1" TopLine="617"/>
     201        <Caret Line="284" Column="1" TopLine="271"/>
    155202      </Position3>
    156203      <Position4>
    157204        <Filename Value="Analyze\UPascalParser.pas"/>
    158         <Caret Line="633" Column="1" TopLine="617"/>
     205        <Caret Line="288" Column="1" TopLine="271"/>
    159206      </Position4>
    160207      <Position5>
    161208        <Filename Value="Analyze\UPascalParser.pas"/>
    162         <Caret Line="635" Column="1" TopLine="617"/>
     209        <Caret Line="344" Column="1" TopLine="331"/>
    163210      </Position5>
    164211      <Position6>
    165212        <Filename Value="Analyze\UPascalParser.pas"/>
    166         <Caret Line="637" Column="1" TopLine="617"/>
     213        <Caret Line="345" Column="1" TopLine="331"/>
    167214      </Position6>
    168215      <Position7>
    169216        <Filename Value="Analyze\UPascalParser.pas"/>
    170         <Caret Line="639" Column="1" TopLine="618"/>
     217        <Caret Line="270" Column="25" TopLine="251"/>
    171218      </Position7>
    172219      <Position8>
    173220        <Filename Value="Analyze\UPascalParser.pas"/>
    174         <Caret Line="640" Column="1" TopLine="619"/>
     221        <Caret Line="384" Column="10" TopLine="365"/>
    175222      </Position8>
    176223      <Position9>
    177224        <Filename Value="Analyze\UPascalParser.pas"/>
    178         <Caret Line="220" Column="1" TopLine="207"/>
     225        <Caret Line="269" Column="9" TopLine="255"/>
    179226      </Position9>
    180227      <Position10>
    181228        <Filename Value="Analyze\UPascalParser.pas"/>
    182         <Caret Line="640" Column="1" TopLine="627"/>
     229        <Caret Line="287" Column="29" TopLine="273"/>
    183230      </Position10>
    184231      <Position11>
    185232        <Filename Value="Analyze\UPascalParser.pas"/>
    186         <Caret Line="683" Column="38" TopLine="665"/>
     233        <Caret Line="95" Column="24" TopLine="86"/>
    187234      </Position11>
    188235      <Position12>
    189236        <Filename Value="Analyze\UPascalParser.pas"/>
    190         <Caret Line="687" Column="1" TopLine="666"/>
     237        <Caret Line="348" Column="24" TopLine="335"/>
    191238      </Position12>
    192239      <Position13>
    193240        <Filename Value="Analyze\UPascalParser.pas"/>
    194         <Caret Line="220" Column="33" TopLine="216"/>
     241        <Caret Line="102" Column="24" TopLine="99"/>
    195242      </Position13>
    196243      <Position14>
    197244        <Filename Value="Analyze\UPascalParser.pas"/>
    198         <Caret Line="549" Column="1" TopLine="536"/>
     245        <Caret Line="99" Column="38" TopLine="99"/>
    199246      </Position14>
    200247      <Position15>
    201248        <Filename Value="Analyze\UPascalParser.pas"/>
    202         <Caret Line="220" Column="1" TopLine="207"/>
     249        <Caret Line="75" Column="79" TopLine="74"/>
    203250      </Position15>
    204251      <Position16>
    205252        <Filename Value="Analyze\UPascalParser.pas"/>
    206         <Caret Line="549" Column="1" TopLine="536"/>
     253        <Caret Line="102" Column="24" TopLine="88"/>
    207254      </Position16>
    208255      <Position17>
    209         <Filename Value="Analyze\UPascalParser.pas"/>
    210         <Caret Line="550" Column="1" TopLine="536"/>
     256        <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\rtl\objpas\sysutils\sysutils.inc"/>
     257        <Caret Line="146" Column="16" TopLine="139"/>
    211258      </Position17>
    212259      <Position18>
    213260        <Filename Value="Analyze\UPascalParser.pas"/>
    214         <Caret Line="551" Column="1" TopLine="536"/>
     261        <Caret Line="99" Column="47" TopLine="89"/>
    215262      </Position18>
    216263      <Position19>
    217264        <Filename Value="Analyze\UPascalParser.pas"/>
    218         <Caret Line="552" Column="1" TopLine="536"/>
     265        <Caret Line="75" Column="37" TopLine="74"/>
    219266      </Position19>
    220267      <Position20>
    221268        <Filename Value="Analyze\UPascalParser.pas"/>
    222         <Caret Line="562" Column="1" TopLine="549"/>
     269        <Caret Line="96" Column="54" TopLine="75"/>
    223270      </Position20>
    224271      <Position21>
    225272        <Filename Value="Analyze\UPascalParser.pas"/>
    226         <Caret Line="563" Column="1" TopLine="549"/>
     273        <Caret Line="97" Column="52" TopLine="92"/>
    227274      </Position21>
    228275      <Position22>
    229276        <Filename Value="Analyze\UPascalParser.pas"/>
    230         <Caret Line="564" Column="1" TopLine="549"/>
     277        <Caret Line="720" Column="47" TopLine="707"/>
    231278      </Position22>
    232279      <Position23>
    233280        <Filename Value="Analyze\UPascalParser.pas"/>
    234         <Caret Line="565" Column="1" TopLine="549"/>
     281        <Caret Line="97" Column="3" TopLine="84"/>
    235282      </Position23>
    236283      <Position24>
    237284        <Filename Value="Analyze\UPascalParser.pas"/>
    238         <Caret Line="566" Column="1" TopLine="561"/>
     285        <Caret Line="720" Column="58" TopLine="707"/>
    239286      </Position24>
    240287      <Position25>
    241288        <Filename Value="Analyze\UPascalParser.pas"/>
    242         <Caret Line="567" Column="1" TopLine="561"/>
     289        <Caret Line="95" Column="52" TopLine="91"/>
    243290      </Position25>
    244291      <Position26>
    245292        <Filename Value="Analyze\UPascalParser.pas"/>
    246         <Caret Line="568" Column="1" TopLine="561"/>
     293        <Caret Line="778" Column="33" TopLine="765"/>
    247294      </Position26>
    248295      <Position27>
    249296        <Filename Value="Analyze\UPascalParser.pas"/>
    250         <Caret Line="572" Column="1" TopLine="561"/>
     297        <Caret Line="97" Column="3" TopLine="84"/>
    251298      </Position27>
    252299      <Position28>
    253300        <Filename Value="Analyze\UPascalParser.pas"/>
    254         <Caret Line="579" Column="1" TopLine="561"/>
     301        <Caret Line="721" Column="69" TopLine="708"/>
    255302      </Position28>
    256303      <Position29>
    257304        <Filename Value="Analyze\UPascalParser.pas"/>
    258         <Caret Line="219" Column="1" TopLine="206"/>
     305        <Caret Line="782" Column="62" TopLine="770"/>
    259306      </Position29>
    260307      <Position30>
    261308        <Filename Value="Analyze\UPascalParser.pas"/>
    262         <Caret Line="220" Column="36" TopLine="206"/>
     309        <Caret Line="829" Column="64" TopLine="816"/>
    263310      </Position30>
    264311    </JumpHistory>
     
    303350      <Item1>
    304351        <Source Value="Analyze\UPascalParser.pas"/>
    305         <Line Value="549"/>
     352        <Line Value="409"/>
    306353      </Item1>
    307354      <Item2>
    308355        <Source Value="Analyze\UPascalParser.pas"/>
    309         <Line Value="219"/>
     356        <Line Value="275"/>
    310357      </Item2>
    311358    </BreakPoints>
  • branches/DelphiToC/UPascalSource.pas

    r36 r38  
    66
    77uses
    8   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     8  SysUtils, Variants, Classes, Graphics, Controls, Forms,
    99  Dialogs, StdCtrls, Contnrs;
    1010
     
    4545
    4646  TCommand = class
    47     Parent: TObject;
    48 
     47    CommonBlock: TCommonBlock;
    4948  end;
    5049
     
    6261  TBeginEnd = class(TCommand)
    6362    Commands: TCommandList;
     63    CommonBlock: TCommonBlock;
    6464    procedure Clear;
    6565    constructor Create;
     
    201201
    202202  TExpression = class
     203    CommonBlock: TCommonBlock;
    203204    NodeType: TNodeType;
    204205    Variable: TVariable;
     
    377378  Methods.Parent := Self;
    378379  Code := TBeginEnd.Create;
     380  Code.CommonBlock := Self;
    379381end;
    380382
     
    580582constructor TCaseOfEnd.Create;
    581583begin
     584  inherited;
    582585  Branches := TObjectList.Create
    583586end;
Note: See TracChangeset for help on using the changeset viewer.