Changeset 49


Ignore:
Timestamp:
Aug 9, 2010, 2:24:24 PM (14 years ago)
Author:
george
Message:

Added support for setting cursor position to place of error code for error messages.

Location:
branches/DelphiToC
Files:
7 edited

Legend:

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

    r48 r49  
    1010
    1111type
    12   TOnErrorMessage = procedure (Text: string) of object;
     12  TOnErrorMessage = procedure (Text: string; Position: TPoint) of object;
    1313
    1414  TTokenType = (ttNone, ttIdentifier, ttConstantNumber, ttConstantString,
     
    8585begin
    8686  if Assigned(FOnErrorMessage) then
    87     FOnErrorMessage(Format(Text, Arguments));
     87    FOnErrorMessage(Format(Text, Arguments), CodePosition);
    8888end;
    8989
     
    172172procedure TBaseParser.Init;
    173173begin
     174  CodePosition := Point(1, 1);
    174175  CurrentChar := #0;
    175176  PreviousChar := #0;
     
    201202        Break;
    202203      end;
     204
    203205      if FNextTokenType = ttNone then begin
    204206        if IsWhiteSpace(CurrentChar) then FNextTokenType := ttWhiteSpace
     
    262264
    263265      if FNextTokenType <> ttNone then begin
     266        // Update cursor position
     267        Inc(CodePosition.X);
     268        if (CurrentChar = #13) then begin
     269          CodePosition.X := 1;
     270          Inc(CodePosition.Y);
     271        end;
     272
    264273        Inc(CodeStreamPosition);
    265274        PreviousChar := CurrentChar;
  • branches/DelphiToC/DelphiToC.lpi

    r48 r49  
    4444        <Filename Value="DelphiToC.lpr"/>
    4545        <IsPartOfProject Value="True"/>
    46         <EditorIndex Value="14"/>
    4746        <WindowIndex Value="0"/>
    4847        <TopLine Value="4"/>
    4948        <CursorPos X="1" Y="29"/>
    50         <UsageCount Value="110"/>
    51         <Loaded Value="True"/>
     49        <UsageCount Value="111"/>
    5250      </Unit0>
    5351      <Unit1>
     
    5856        <ResourceBaseClass Value="Form"/>
    5957        <UnitName Value="UMainForm"/>
    60         <EditorIndex Value="7"/>
    61         <WindowIndex Value="0"/>
    62         <TopLine Value="56"/>
    63         <CursorPos X="1" Y="79"/>
    64         <UsageCount Value="110"/>
     58        <EditorIndex Value="6"/>
     59        <WindowIndex Value="0"/>
     60        <TopLine Value="67"/>
     61        <CursorPos X="21" Y="83"/>
     62        <UsageCount Value="111"/>
    6563        <Loaded Value="True"/>
    6664        <LoadedDesigner Value="True"/>
     
    7371        <TopLine Value="1"/>
    7472        <CursorPos X="1" Y="1"/>
    75         <UsageCount Value="110"/>
     73        <UsageCount Value="111"/>
    7674      </Unit2>
    7775      <Unit3>
     
    8381        <TopLine Value="264"/>
    8482        <CursorPos X="5" Y="277"/>
    85         <UsageCount Value="110"/>
     83        <UsageCount Value="111"/>
    8684        <Loaded Value="True"/>
    8785      </Unit3>
     
    9088        <IsPartOfProject Value="True"/>
    9189        <UnitName Value="UPascalCompiler"/>
    92         <EditorIndex Value="13"/>
    93         <WindowIndex Value="0"/>
    94         <TopLine Value="76"/>
    95         <CursorPos X="53" Y="96"/>
    96         <UsageCount Value="110"/>
     90        <IsVisibleTab Value="True"/>
     91        <EditorIndex Value="10"/>
     92        <WindowIndex Value="0"/>
     93        <TopLine Value="41"/>
     94        <CursorPos X="22" Y="45"/>
     95        <UsageCount Value="111"/>
    9796        <Loaded Value="True"/>
    9897      </Unit4>
     
    101100        <IsPartOfProject Value="True"/>
    102101        <UnitName Value="UAssemblerSource"/>
    103         <EditorIndex Value="9"/>
     102        <EditorIndex Value="8"/>
    104103        <WindowIndex Value="0"/>
    105104        <TopLine Value="112"/>
    106105        <CursorPos X="48" Y="128"/>
    107         <UsageCount Value="110"/>
     106        <UsageCount Value="111"/>
    108107        <Loaded Value="True"/>
    109108      </Unit5>
     
    116115        <TopLine Value="1"/>
    117116        <CursorPos X="15" Y="13"/>
    118         <UsageCount Value="110"/>
     117        <UsageCount Value="111"/>
    119118        <Loaded Value="True"/>
    120119      </Unit6>
     
    123122        <IsPartOfProject Value="True"/>
    124123        <UnitName Value="UProducerC"/>
    125         <EditorIndex Value="10"/>
     124        <EditorIndex Value="9"/>
    126125        <WindowIndex Value="0"/>
    127126        <TopLine Value="89"/>
    128127        <CursorPos X="44" Y="96"/>
    129         <UsageCount Value="110"/>
     128        <UsageCount Value="111"/>
    130129        <Loaded Value="True"/>
    131130      </Unit7>
     
    134133        <IsPartOfProject Value="True"/>
    135134        <UnitName Value="UPascalParser"/>
    136         <IsVisibleTab Value="True"/>
    137135        <EditorIndex Value="0"/>
    138136        <WindowIndex Value="0"/>
    139         <TopLine Value="588"/>
    140         <CursorPos X="1" Y="596"/>
    141         <UsageCount Value="110"/>
     137        <TopLine Value="254"/>
     138        <CursorPos X="9" Y="273"/>
     139        <UsageCount Value="111"/>
    142140        <Loaded Value="True"/>
    143141      </Unit8>
     
    153151        <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\packages\fcl-base\src\contnrs.pp"/>
    154152        <UnitName Value="contnrs"/>
    155         <EditorIndex Value="6"/>
    156153        <WindowIndex Value="0"/>
    157154        <TopLine Value="78"/>
    158155        <CursorPos X="14" Y="91"/>
    159         <UsageCount Value="55"/>
    160         <Loaded Value="True"/>
     156        <UsageCount Value="56"/>
    161157      </Unit10>
    162158      <Unit11>
     
    174170        <TopLine Value="61"/>
    175171        <CursorPos X="7" Y="68"/>
    176         <UsageCount Value="38"/>
     172        <UsageCount Value="39"/>
    177173        <Loaded Value="True"/>
    178174      </Unit12>
     
    183179        <TopLine Value="139"/>
    184180        <CursorPos X="16" Y="146"/>
    185         <UsageCount Value="38"/>
     181        <UsageCount Value="39"/>
    186182        <Loaded Value="True"/>
    187183      </Unit13>
     
    202198      <Unit16>
    203199        <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\rtl\inc\objpash.inc"/>
    204         <EditorIndex Value="12"/>
    205200        <WindowIndex Value="0"/>
    206201        <TopLine Value="153"/>
    207202        <CursorPos X="8" Y="166"/>
    208203        <UsageCount Value="13"/>
    209         <Loaded Value="True"/>
    210204      </Unit16>
    211205      <Unit17>
     
    217211        <TopLine Value="247"/>
    218212        <CursorPos X="56" Y="267"/>
    219         <UsageCount Value="72"/>
     213        <UsageCount Value="73"/>
    220214        <Loaded Value="True"/>
    221215      </Unit17>
     
    230224      <Unit19>
    231225        <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\rtl\objpas\classes\classesh.inc"/>
    232         <EditorIndex Value="11"/>
    233226        <WindowIndex Value="0"/>
    234227        <TopLine Value="559"/>
    235228        <CursorPos X="57" Y="571"/>
    236229        <UsageCount Value="13"/>
    237         <Loaded Value="True"/>
    238230      </Unit19>
    239231      <Unit20>
     
    241233        <IsPartOfProject Value="True"/>
    242234        <UnitName Value="UProducerPascal"/>
    243         <EditorIndex Value="8"/>
    244         <WindowIndex Value="0"/>
    245         <TopLine Value="138"/>
    246         <CursorPos X="52" Y="151"/>
    247         <UsageCount Value="26"/>
     235        <EditorIndex Value="7"/>
     236        <WindowIndex Value="0"/>
     237        <TopLine Value="1"/>
     238        <CursorPos X="13" Y="82"/>
     239        <UsageCount Value="27"/>
    248240        <Loaded Value="True"/>
    249241      </Unit20>
     
    251243    <JumpHistory Count="30" HistoryIndex="29">
    252244      <Position1>
    253         <Filename Value="Produce\UProducerPascal.pas"/>
    254         <Caret Line="245" Column="17" TopLine="226"/>
     245        <Filename Value="Analyze\UPascalParser.pas"/>
     246        <Caret Line="87" Column="17" TopLine="84"/>
    255247      </Position1>
    256248      <Position2>
    257         <Filename Value="Produce\UProducerPascal.pas"/>
    258         <Caret Line="152" Column="1" TopLine="143"/>
     249        <Filename Value="Analyze\UPascalParser.pas"/>
     250        <Caret Line="23" Column="32" TopLine="10"/>
    259251      </Position2>
    260252      <Position3>
    261         <Filename Value="Produce\UProducerPascal.pas"/>
    262         <Caret Line="59" Column="1" TopLine="46"/>
     253        <Filename Value="Analyze\UPascalParser.pas"/>
     254        <Caret Line="12" Column="44" TopLine="1"/>
    263255      </Position3>
    264256      <Position4>
    265         <Filename Value="Produce\UProducerPascal.pas"/>
    266         <Caret Line="60" Column="1" TopLine="46"/>
     257        <Filename Value="UPascalCompiler.pas"/>
     258        <Caret Line="96" Column="53" TopLine="76"/>
    267259      </Position4>
    268260      <Position5>
    269         <Filename Value="Produce\UProducerPascal.pas"/>
    270         <Caret Line="61" Column="1" TopLine="46"/>
     261        <Filename Value="UPascalCompiler.pas"/>
     262        <Caret Line="52" Column="31" TopLine="39"/>
    271263      </Position5>
    272264      <Position6>
    273         <Filename Value="Produce\UProducerPascal.pas"/>
    274         <Caret Line="59" Column="1" TopLine="46"/>
     265        <Filename Value="UPascalCompiler.pas"/>
     266        <Caret Line="19" Column="58" TopLine="6"/>
    275267      </Position6>
    276268      <Position7>
    277         <Filename Value="Produce\UProducerPascal.pas"/>
    278         <Caret Line="62" Column="1" TopLine="46"/>
     269        <Filename Value="UPascalCompiler.pas"/>
     270        <Caret Line="63" Column="64" TopLine="63"/>
    279271      </Position7>
    280272      <Position8>
    281         <Filename Value="Produce\UProducerPascal.pas"/>
    282         <Caret Line="59" Column="1" TopLine="46"/>
     273        <Filename Value="UMainForm.pas"/>
     274        <Caret Line="79" Column="1" TopLine="56"/>
    283275      </Position8>
    284276      <Position9>
    285         <Filename Value="Produce\UProducerPascal.pas"/>
    286         <Caret Line="62" Column="1" TopLine="46"/>
     277        <Filename Value="UMainForm.pas"/>
     278        <Caret Line="102" Column="38" TopLine="89"/>
    287279      </Position9>
    288280      <Position10>
    289         <Filename Value="Produce\UProducerPascal.pas"/>
    290         <Caret Line="150" Column="1" TopLine="137"/>
     281        <Filename Value="UMainForm.pas"/>
     282        <Caret Line="34" Column="58" TopLine="21"/>
    291283      </Position10>
    292284      <Position11>
    293         <Filename Value="Produce\UProducerPascal.pas"/>
    294         <Caret Line="152" Column="8" TopLine="134"/>
     285        <Filename Value="UMainForm.pas"/>
     286        <Caret Line="105" Column="16" TopLine="100"/>
    295287      </Position11>
    296288      <Position12>
    297         <Filename Value="Produce\UProducerPascal.pas"/>
    298         <Caret Line="61" Column="18" TopLine="58"/>
     289        <Filename Value="UMainForm.pas"/>
     290        <Caret Line="11" Column="27" TopLine="1"/>
    299291      </Position12>
    300292      <Position13>
    301         <Filename Value="Produce\UProducerPascal.pas"/>
    302         <Caret Line="34" Column="23" TopLine="21"/>
     293        <Filename Value="UMainForm.pas"/>
     294        <Caret Line="103" Column="1" TopLine="94"/>
    303295      </Position13>
    304296      <Position14>
    305         <Filename Value="E:\Programy\Lazarus\fpc\2.4.0\source\rtl\objpas\classes\classesh.inc"/>
    306         <Caret Line="604" Column="27" TopLine="591"/>
     297        <Filename Value="UMainForm.pas"/>
     298        <Caret Line="102" Column="1" TopLine="93"/>
    307299      </Position14>
    308300      <Position15>
    309         <Filename Value="Produce\UProducerPascal.pas"/>
    310         <Caret Line="152" Column="6" TopLine="135"/>
     301        <Filename Value="UMainForm.pas"/>
     302        <Caret Line="103" Column="1" TopLine="94"/>
    311303      </Position15>
    312304      <Position16>
    313         <Filename Value="Produce\UProducerPascal.pas"/>
    314         <Caret Line="8" Column="49" TopLine="1"/>
     305        <Filename Value="UMainForm.pas"/>
     306        <Caret Line="59" Column="20" TopLine="46"/>
    315307      </Position16>
    316308      <Position17>
    317         <Filename Value="Produce\UProducerPascal.pas"/>
    318         <Caret Line="9" Column="51" TopLine="1"/>
     309        <Filename Value="UMainForm.pas"/>
     310        <Caret Line="102" Column="20" TopLine="89"/>
    319311      </Position17>
    320312      <Position18>
    321         <Filename Value="Produce\UProducerPascal.pas"/>
    322         <Caret Line="74" Column="18" TopLine="61"/>
     313        <Filename Value="UMainForm.pas"/>
     314        <Caret Line="103" Column="26" TopLine="90"/>
    323315      </Position18>
    324316      <Position19>
    325         <Filename Value="Produce\UProducerPascal.pas"/>
    326         <Caret Line="82" Column="11" TopLine="61"/>
     317        <Filename Value="UMainForm.pas"/>
     318        <Caret Line="104" Column="47" TopLine="97"/>
    327319      </Position19>
    328320      <Position20>
    329         <Filename Value="Produce\UProducerPascal.pas"/>
    330         <Caret Line="124" Column="20" TopLine="105"/>
     321        <Filename Value="UPascalCompiler.pas"/>
     322        <Caret Line="32" Column="1" TopLine="10"/>
    331323      </Position20>
    332324      <Position21>
    333         <Filename Value="Produce\UProducerPascal.pas"/>
    334         <Caret Line="126" Column="1" TopLine="105"/>
     325        <Filename Value="UMainForm.pas"/>
     326        <Caret Line="27" Column="1" TopLine="16"/>
    335327      </Position21>
    336328      <Position22>
    337         <Filename Value="Produce\UProducerPascal.pas"/>
    338         <Caret Line="138" Column="60" TopLine="125"/>
     329        <Filename Value="UMainForm.pas"/>
     330        <Caret Line="91" Column="1" TopLine="83"/>
    339331      </Position22>
    340332      <Position23>
    341         <Filename Value="Produce\UProducerPascal.pas"/>
    342         <Caret Line="152" Column="13" TopLine="139"/>
     333        <Filename Value="UMainForm.pas"/>
     334        <Caret Line="92" Column="18" TopLine="78"/>
    343335      </Position23>
    344336      <Position24>
    345         <Filename Value="Produce\UProducerPascal.pas"/>
    346         <Caret Line="7" Column="62" TopLine="1"/>
     337        <Filename Value="UMainForm.pas"/>
     338        <Caret Line="98" Column="48" TopLine="85"/>
    347339      </Position24>
    348340      <Position25>
    349         <Filename Value="Produce\UProducerPascal.pas"/>
    350         <Caret Line="74" Column="18" TopLine="61"/>
     341        <Filename Value="UMainForm.pas"/>
     342        <Caret Line="113" Column="1" TopLine="100"/>
    351343      </Position25>
    352344      <Position26>
    353         <Filename Value="Produce\UProducerPascal.pas"/>
    354         <Caret Line="82" Column="11" TopLine="61"/>
     345        <Filename Value="UMainForm.pas"/>
     346        <Caret Line="35" Column="32" TopLine="17"/>
    355347      </Position26>
    356348      <Position27>
    357         <Filename Value="Produce\UProducerPascal.pas"/>
    358         <Caret Line="124" Column="20" TopLine="111"/>
     349        <Filename Value="UMainForm.pas"/>
     350        <Caret Line="106" Column="17" TopLine="102"/>
    359351      </Position27>
    360352      <Position28>
    361         <Filename Value="Produce\UProducerPascal.pas"/>
    362         <Caret Line="138" Column="60" TopLine="125"/>
     353        <Filename Value="UMainForm.pas"/>
     354        <Caret Line="107" Column="52" TopLine="94"/>
    363355      </Position28>
    364356      <Position29>
    365         <Filename Value="Produce\UProducerPascal.pas"/>
    366         <Caret Line="152" Column="13" TopLine="139"/>
     357        <Filename Value="UMainForm.pas"/>
     358        <Caret Line="88" Column="1" TopLine="88"/>
    367359      </Position29>
    368360      <Position30>
    369         <Filename Value="Produce\UProducerPascal.pas"/>
    370         <Caret Line="171" Column="47" TopLine="154"/>
     361        <Filename Value="UMainForm.pas"/>
     362        <Caret Line="33" Column="1" TopLine="20"/>
    371363      </Position30>
    372364    </JumpHistory>
  • branches/DelphiToC/Example.pas

    r48 r49  
    1212
    1313const
    14   Verze: Byte = 11;
     14  Verze: Bytel = 11;
    1515var
    1616  a: Byte;
  • branches/DelphiToC/Produce/UProducerPascal.pas

    r48 r49  
    8080  GenerateUses(Module.UsedModules);
    8181  GenerateCommonBlock(Module, '');
    82   Emit(';', False);
     82  Emit('.', False);
    8383end;
    8484
     
    124124    Emit(Line + ';');
    125125    GenerateBeginEnd(Code);
     126    Emit(';', False);
    126127    Emit('');
    127128  end;
  • branches/DelphiToC/UMainForm.lfm

    r46 r49  
    11object MainForm: TMainForm
    2   Left = 169
    3   Height = 515
    4   Top = 110
    5   Width = 872
     2  Left = 273
     3  Height = 498
     4  Top = 105
     5  Width = 881
    66  Caption = 'Pascal Compiler AVR'
    7   ClientHeight = 515
    8   ClientWidth = 872
     7  ClientHeight = 498
     8  ClientWidth = 881
    99  Font.Height = -11
    1010  Font.Name = 'Tahoma'
     
    1616  LCLVersion = '0.9.29'
    1717  object Button1: TButton
    18     Left = 8
     18    Left = 800
    1919    Height = 22
    20     Top = 490
     20    Top = 401
    2121    Width = 75
    22     Anchors = [akLeft, akBottom]
     22    Anchors = [akRight, akBottom]
    2323    Caption = 'Kompilovat'
    2424    OnClick = Button1Click
     
    2727  object Memo2: TMemo
    2828    Left = 672
    29     Height = 380
     29    Height = 363
    3030    Top = 32
    31     Width = 194
     31    Width = 203
    3232    Anchors = [akTop, akLeft, akRight, akBottom]
    3333    Font.Height = -13
     
    3737    TabOrder = 1
    3838  end
    39   object Memo3: TMemo
    40     Left = 8
    41     Height = 66
    42     Top = 418
    43     Width = 858
    44     Anchors = [akLeft, akRight, akBottom]
    45     ScrollBars = ssBoth
    46     TabOrder = 2
    47   end
    4839  object TreeView1: TTreeView
    4940    Left = 368
    50     Height = 404
     41    Height = 387
    5142    Top = 8
    5243    Width = 296
     
    5445    DefaultItemHeight = 15
    5546    Indent = 19
    56     TabOrder = 3
     47    TabOrder = 2
    5748  end
    5849  inline SynEdit1: TSynEdit
    5950    Left = 8
    60     Height = 405
     51    Height = 388
    6152    Top = 8
    6253    Width = 352
     
    6859    ParentColor = False
    6960    ParentFont = False
    70     TabOrder = 4
     61    TabOrder = 3
    7162    Gutter.Width = 57
    7263    Gutter.MouseActions = <   
     
    754745    Height = 21
    755746    Top = 8
    756     Width = 196
     747    Width = 205
    757748    Anchors = [akTop, akLeft, akRight]
    758749    ItemHeight = 13
     
    765756    OnChange = ComboBox1Change
    766757    Style = csDropDownList
     758    TabOrder = 4
     759    Text = 'Pascal'
     760  end
     761  object ListBox1: TListBox
     762    Left = 8
     763    Height = 91
     764    Top = 402
     765    Width = 785
     766    Anchors = [akLeft, akRight, akBottom]
     767    ItemHeight = 0
     768    OnClick = ListBox1Click
    767769    TabOrder = 5
    768     Text = 'Pascal'
    769770  end
    770771  object SynPasSyn1: TSynPasSyn
  • branches/DelphiToC/UMainForm.pas

    r46 r49  
    99  Dialogs, StdCtrls, UPascalSource, UPascalCompiler, UAssemblerSource,
    1010  UProducerC, ComCtrls, SynEdit, SynHighlighterPas, USourceTree,
    11   UProducerPascal;
     11  UProducerPascal, Contnrs;
    1212
    1313const
     
    1515
    1616type
    17 
    1817  { TMainForm }
    1918
     
    2120    Button1: TButton;
    2221    ComboBox1: TComboBox;
     22    ListBox1: TListBox;
    2323    Memo2: TMemo;
    24     Memo3: TMemo;
    2524    SynEdit1: TSynEdit;
    2625    SynPasSyn1: TSynPasSyn;
     
    3231    procedure FormCreate(Sender: TObject);
    3332    procedure FormDestroy(Sender: TObject);
    34     procedure ErrorMessage(Text: string);
     33    procedure ListBox1Click(Sender: TObject);
     34    procedure LoadErrorMessages;
    3535  private
    3636  public
     
    5252  I: Integer;
    5353begin
    54   MainForm.Memo3.Clear;
     54  MainForm.ListBox1.Clear;
    5555  Compiler.SourceCode.Assign(SynEdit1.Lines);
    5656
     
    8181      Memo2.Lines.Add(TAssemblerLine(AssemblyCode[I]).AsString);
    8282  end;
     83  LoadErrorMessages;
    8384
    8485  SourceTree.TreeView := TreeView1;
     
    8788end;
    8889
    89 procedure TMainForm.ErrorMessage(Text: string);
     90procedure TMainForm.ListBox1Click(Sender: TObject);
    9091begin
    91   MainForm.Memo3.Lines.Add(Text);
     92  if ListBox1.ItemIndex <> - 1 then begin
     93    SynEdit1.CaretXY := TErrorMessage(Compiler.ErrorMessages[ListBox1.ItemIndex]).Position;
     94    SynEdit1.SetFocus;
     95  end;
     96end;
     97
     98procedure TMainForm.LoadErrorMessages;
     99var
     100  I: Integer;
     101begin
     102  ListBox1.Clear;
     103  for I := 0 to Compiler.ErrorMessages.Count - 1 do
     104  with TErrorMessage(Compiler.ErrorMessages[I]) do
     105    MainForm.ListBox1.Items.Add('(' + IntToStr(Position.X) +
     106      ',' + IntToStr(Position.Y) + ') ' + Text);
    92107end;
    93108
     
    100115begin
    101116  Compiler := TCompiler.Create;
    102   Compiler.OnErrorMessage := ErrorMessage;
    103117  SourceTree := TSourceTree.Create;
    104118end;
  • branches/DelphiToC/UPascalCompiler.pas

    r48 r49  
    88  SysUtils, Variants, Classes, Graphics, Controls, Forms,
    99  Dialogs, UPascalSource, UCodeProducer, UPascalParser,
    10   UProducerC;
     10  UProducerC, Contnrs;
    1111
    1212type
     13
     14  TErrorMessage = class
     15    Text: string;
     16    Position: TPoint;
     17  end;
    1318
    1419  { TCompiler }
     
    1722  private
    1823    FOnErrorMessage: TOnErrorMessage;
    19     procedure ErrorMessage(Text: string);
     24    procedure ErrorMessage(Text: string; Position: TPoint);
    2025    procedure InitSystem;
    2126  public
     
    2429    Parser: TPascalParser;
    2530    Producer: TCodeProducer;
     31    ErrorMessages: TObjectList;
    2632    constructor Create;
    2733    procedure Compile;
     
    3743begin
    3844  InitSystem;
     45  ErrorMessages.Clear;
    3946  Parser.Init;
    4047  Parser.ParseAll(ProgramCode);
     
    5158  Parser.SourceCodeText := SourceCode;
    5259  Parser.OnErrorMessage := ErrorMessage;
     60  ErrorMessages := TObjectList.Create;
    5361end;
    5462
     
    5967  Parser.Free;
    6068  Producer.Free;
     69  ErrorMessages.Free;
    6170end;
    6271
    63 procedure TCompiler.ErrorMessage(Text: string);
     72procedure TCompiler.ErrorMessage(Text: string; Position: TPoint);
     73var
     74  NewMessage: TErrorMessage;
    6475begin
    65   if Assigned(FOnErrorMessage) then FOnErrorMessage(Text);
     76  NewMessage := TErrorMessage.Create;
     77  NewMessage.Text := Text;
     78  NewMessage.Position := Position;
     79  ErrorMessages.Add(NewMessage);
     80  if Assigned(FOnErrorMessage) then FOnErrorMessage(Text, Position);
    6681end;
    6782
Note: See TracChangeset for help on using the changeset viewer.