123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973 |
- //This is only for testing the parser, it is not intended to be runable in a real
- //program but for checking the contructs to be parsed well.
- //All statements are written like testparser would print them out to diff the
- //result with this file again to show differences.
- //Based on /utils/fpdoc/testunit.pp
- {$mode objfpc}
- {$h+}
- unit testunit1;
- interface
- uses
- SysUtils,Classes;
- resourcestring
- SParserErrorAtToken = 'parser error at token';
-
- const
- AnIntegerConst=1;
- AStringConst='Hello, World!';
- AFLoatconst=1.23;
- ABooleanConst=True;
- ATypedConst: Integer=3;
- AnArrayConst: Array[1..3] of Integer=(1,2,3);
- ARecordConst: TMethod=(Code:nil;Data:nil);
- ASetConst=[true,false];
- ADeprecatedConst=1 deprecated;
- ADeprecatedConst2 = 2 deprecated 'use another const';
-
- Type
- TLineEndStr = string [3];
- TDeprecatedType = Integer deprecated;
- TDeprecatedRecord = Record
- x,Y : Integer;
- end deprecated;
- TDeprecatedFieldsRecord = Record
- x,Y : Integer deprecated;
- end;
- TDeprecatedFieldsRecord2 = Record
- x,Y : Integer deprecated
- end;
- TAnEnumType=(one,two,three);
- arangetypealias = type 0..$FF;
- TASetType=set of TAnEnumType;
- TIntegerSet = Set of 0..SizeOf(Integer)*8-1;
- TAnArrayType=Array[1..10] of Integer;
- TASubRangeType=one..two;
- TABooleanArrayType=Array[Boolean] of Integer;
- TDay = (monday,tuesday,wednesday,thursday,friday,saturday,sunday);
- TShortDay = (mon,tue,wed,thu,fri,sat,sun);
- TShortDays = set of TShortDay;
- TDays = set of TDay;
- TMyInteger = Integer;
- ADouble = type double;
- TARecordType=record
- X,Y: Integer;
- Z: String;
- end;
- TAVariantRecordType=record
- A: String;
- Case Integer of
- 1: (X,Y : Integer);
- 2: (phi,Omega : Real);
- end;
- TAVariantRecordType2=record
- A: String;
- Case Atype : Integer of
- 1 : (X,Y : Integer);
- 2 : (phi,Omega : Real);
- end;
-
- MyRec = Record
- X : Longint;
- Case byte of
- 2 : (Y : Longint;
- case byte of
- 3 : (Z : Longint);
- );
- end;
- TYPE
- PPoint = ^TPoint;
- TPoint = OBJECT
- X, Y: Sw_Integer;
- END;
- PRect = ^TRect;
- TRect = OBJECT
- A, B: TPoint; { Corner points }
- FUNCTION Empty: Boolean;
- FUNCTION Equals (R: TRect): Boolean;
- FUNCTION Contains (P: TPoint): Boolean;
- PROCEDURE Copy (R: TRect);
- PROCEDURE Union (R: TRect);
- PROCEDURE Intersect (R: TRect);
- PROCEDURE Move (ADX, ADY: Sw_Integer);
- PROCEDURE Grow (ADX, ADY: Sw_Integer);
- PROCEDURE Assign (XA, YA, XB, YB: Sw_Integer);
- END;
-
- TNotifyEvent = Procedure (Sender : TObject) of object;
- TNestedProcedure = Procedure (Sender : TObject) is nested;
- TNotifyEvent2 = Function (Sender : TObject) : Integer of object;
-
-
- // TADeprecatedType = Integer deprecated;
- TMyChildClass = Class;
- MyInterface = Interface;
-
- { TMyParentClass }
- TMyParentClass=Class(TComponent)
- Private
- FI: Integer;
- Function GetA(AIndex: Integer): String;
- Function GetIP(AIndex: integer): String;
- procedure SetA(AIndex: Integer; const AValue: String);
- procedure SetIP(AIndex: integer; const AValue: String);
- Procedure WriteI(AI: Integer);
- Function ReadI: Integer;
- Protected
- Procedure AProtectedMethod;
- Property AProtectedProp: Integer Read FI Write FI;
- Public
- Constructor Create(AOwner: TComponent); override;
- Destructor Destroy; override;
- Procedure AVirtualProc; virtual;
- Procedure AnAbstractProc; virtual; abstract;
- Procedure AMessageProc(var Msg);message 123;
- Procedure AStringMessageProc(var Msg);message '123';
- Procedure ADeprecatedProc; deprecated;
- Procedure APlatformProc; Platform;
- Property IntProp: Integer Read FI Write Fi;
- Property IntROProp: Integer Read FI;
- Property GetIntProp: Integer Read ReadI Write WriteI;
- Property AnArrayProp[AIndex: Integer]: String Read GetA Write SetA;
- Property AnIndexProp: String Index 1 Read GetIP Write SetIP;
- Property AnIndexProp2: String Index 2 Read GetIP Write SetIP;
- Published
- Procedure SomePublishedMethod;
- end;
-
- { TMyChildClass }
- TMyChildClass=Class(TMyParentClass)
- Public
- Procedure AVirtualProc; Override;
- Procedure AnAbstractProc; Override;
- Published
- Property AProtectedProp;
- end;
- TC = TMyChildClass;
- TPasFunctionType=Class(TObject)
- public
- destructor Destroy; override;
- Class Function TypeName: string;
- Function ElementTypeName: string;
- Function GetDeclaration(Full: boolean): string;
- Procedure Something; strict
- Private
- Procedure SomethingElse;
- public
- ResultEl: TObject;
- end;
- TPropModifiers = Class(TObject)
- Private
- FB : Integer;
- Function IsStored : Boolean;
- Function GetI(AI : Integer) : Integer;
- Procedure SetI(AI : Integer; AVal : Integer);
- Published
- Property A : Integer Read FB Write FB Stored False;
- Property B : Integer Read FB Write FB Stored True;
- Property C : Integer Read FB Write FB Stored IsStored;
- Property D : Integer Read FB Write FB Default 1;
- Property E : Integer Read FB Write FB Stored True Default 1;
- Public
- Property Ints[AI : Integer] : Integer Read GetI Write SetI; default;
- end;
-
- TPropModifiers2 = class(TPropModifiers)
- Public
- Property Ints[AI : Integer] : Integer Read GetI Write SetI; default; deprecated;
- end;
-
- TEdit = Class(TObject)
- Text : String;
- end;
-
- var
- ASimpleVar: Integer;
- ATypedVar: TMethod;
- ARecordVar: Record
- A,B: Integer;
- end;
- AnArrayVar: Array[1..10] of Integer;
- ATypedArray: Array[TanEnumType] of Integer;
- AInitVar: Integer=1;
-
- ADeprecatedVar: Integer deprecated;
- ACVarVar: Integer ; cvar;
- AnExternalVar1: Integer; external;
- AnExternalVar2: Integer; external name 'avar';
- AnExternalLibVar: Integer; external 'library' name 'avar';
- APublicVar : String; public;
- APublicVar2 : String; public name 'ANAME';
- APublicVar3 : String; export;
- APublicVar4 : String; export name 'nono';
- APublicVar5 : String; cvar; external;
- APublicVar6 : String; external name 'me';
- APublicVar7 : String deprecated; external name 'me';
-
- Procedure SimpleProc;
- Procedure OverloadedProc(A: Integer);
- Procedure OverloadedProc(B: String);
- Function SimpleFunc: Integer;
- Function OverloadedFunc(A: Integer): Integer;
- Function OverloadedFunc(B: String): Integer;
- Procedure ConstArgProc(const A: Integer);
- Procedure VarArgProc(var A: Integer);
- Procedure OutArgProc(out A: Integer);
- Procedure UntypedVarArgProc(var A);
- Procedure UntypedConstArgProc(const A);
- Procedure UntypedOutArgProc(out A);
- Procedure ArrayArgProc(A: TAnArrayType);
- Procedure OpenArrayArgProc(A: Array of string);
- Procedure ConstArrayArgProc(A: Array of const);
- Procedure externalproc; external;
- Procedure externalnameProc; external name 'aname';
- Procedure externallibnameProc; external 'alibrary' name 'aname';
- Function hi(q : QWord) : DWord; [INTERNPROC: fpc_in_hi_qword];
- {$define extdecl:=cdecl}
- Type
- FontEnumProc = function (var ELogFont:TEnumLogFont; var Metric:TNewTextMetric;
- FontType:longint; Data:LParam):longint; extdecl;
-
-
- Type
- generic TFPGListEnumerator<T> = class(TObject)
- protected
- FList: TFPList;
- FPosition: Integer;
- function GetCurrent: T;
- end;
- TFPGListEnumeratorSpec = specialize TFPGListEnumerator<TPasFunctionType>;
-
- Implementation
- Procedure SimpleProc;
- procedure SubProc;
- Var S : String;
- begin
- s:= s+'a';
- end;
- Var
- a,B,c,i : integer;
- begin
- a:= 1;
- c:= a+b;
- for i:= 1 to 10 do
- write(a);
- end;
- Procedure OverloadedProc(A: Integer);
- Var
- i : integer;
- begin
- if i=1 then ;
- end;
- Procedure OverloadedProc(B: String);
- begin
- end;
- Function SimpleFunc: Integer;
- begin
- end;
- Function OverloadedFunc(A: Integer): Integer;
- begin
- end;
- Function OverloadedFunc(B: String): Integer;
- begin
- end;
- Procedure ArrayArgProc(A: TAnArrayType);
- begin
- end;
- Procedure OpenArrayArgProc(A: Array of String);
- begin
- end;
- Procedure ConstArrayArgProc(A: Array of const);
- begin
- end;
- Procedure ConstArgProc(const A: Integer);
- begin
- end;
- Procedure VarArgProc(var A: Integer);
- begin
- end;
- Procedure OutArgProc(out A: Integer);
- begin
- end;
- Procedure UntypedVarArgProc(var A);
- begin
- end;
- Procedure UntypedConstArgProc(const A);
- begin
- end;
- Procedure UntypedOutArgProc(out A);
- begin
- end;
- { TMyChildClass }
- procedure TMyChildClass.AVirtualProc;
- begin
- inherited AVirtualProc;
- end;
- procedure TMyChildClass.AnAbstractProc;
-
- procedure SubCProc;
-
- Var sc : string;
-
- begin
- sc:= sc+'ac';
- end;
- begin
- // Cannot call ancestor
- end;
- { TMyParentClass }
- procedure TMyParentClass.WriteI(AI: Integer);
- begin
- end;
- Function TMyParentClass.GetA(AIndex: Integer): String;
- begin
- end;
- Function TMyParentClass.GetIP(AIndex: integer): String;
- begin
- end;
- procedure TMyParentClass.SetA(AIndex: Integer; const AValue: String);
- begin
- end;
- procedure TMyParentClass.SetIP(AIndex: integer; const AValue: String);
- begin
- end;
- Function TMyParentClass.ReadI: Integer;
- begin
- end;
- procedure TMyParentClass.AProtectedMethod;
- begin
- end;
- constructor TMyParentClass.Create(AOwner: TComponent);
- begin
- inherited Create(AOwner);
- end;
- destructor TMyParentClass.Destroy;
- begin
- inherited Destroy;
- end;
- procedure TMyParentClass.AVirtualProc;
- begin
- end;
- procedure TMyParentClass.AMessageProc(var Msg);
- begin
- end;
- procedure TMyParentClass.AStringMessageProc(var Msg);
- begin
- end;
- procedure TMyParentClass.ADeprecatedProc;
- begin
- end;
- procedure TMyParentClass.APlatformProc;
- begin
- end;
- procedure TMyParentClass.SomePublishedMethod;
- begin
- end;
- Class Function TPasFunctionType.TypeName: String;
- begin
- Result:= 'Function';
- end;
- Type
- TI = Class(TComponent)
- Public
- FP : Integer;
- Procedure SetP1(A : Integer); virtual;
- Procedure M1;virtual;
- Function F1 : Integer; virtual;
- procedure test; virtual;
- property P : Integer Read FP Write SetP1;
- end;
-
- Procedure TI.M1;
- begin
- end;
- Procedure TI.Test;
- begin
- end;
- Function TI.F1 : Integer;
- begin
- Result:=0;
- end;
- Procedure TI.SetP1(A : Integer);
- begin
- FP:=A;
- end;
-
- TYpe
- TI2 = Class(TI)
- procedure write(s : string);
- Procedure SetP1(A : Integer); override;
- Procedure M1;override;
- Procedure Test;override;
- Function F1 : integer; override;
- procedure donothing;
- property P : Integer Read F1 Write SetP1;
- end;
- Procedure TI2.M1;
- begin
- Inherited;
- end;
- Procedure TI2.Write(s : string);
- begin
- writeln(s);
- end;
- Function TI2.F1 :Integer;
- begin
- Result:=0;
- end;
- Procedure TI2.Test;
- begin
- if true then
- Inherited Test
- else
- DoNothing;
- Inherited test;
- if true then
- Inherited
- else
- DoNothing;
- end;
- Procedure TI2.DoNothing;
- function escapetext(s : string) : string;
- begin
- end;
- var
- Atext : string;
- begin
- Self.Write(EscapeText(AText));
- TComponent.Create(Self);
- end;
- Procedure TI2.SetP1(A : Integer);
- begin
- FP:=A;
- Inherited P:= 3;
- Inherited SetP1(3);
- Inherited P:= Ord(A);
- end;
- procedure usage;
- begin
- end;
- Procedure DoSomething;
- begin
- end;
- Procedure DoSomethingElse;
- begin
- end;
- procedure stat1;
- begin
- end;
- procedure stat2;
- begin
- end;
- procedure stat3;
- begin
- end;
- procedure stat4;
- begin
- end;
- procedure stat5;
- begin
- end;
- procedure stat6;
- begin
- end;
- procedure stat7;
- begin
- end;
- procedure stat8;
- begin
- end;
- procedure stat9;
- begin
- end;
- procedure doit;
- begin
- end;
- procedure statement;
- begin
- end;
- procedure work;
- begin
- end;
- procedure kissdwarf(i : integer);
-
- begin
- writeln('kiss dwarf',i);
- end;
- procedure Statements;
- const
- cint=1;
- cint1=-1;
- creal=3.1415;
- Addi=1+2;
- Subs=2-3;
- Muti=3*3;
- Divi=3/5;
- //Powe=2^3;
- Modu=5 mod 3;
- IDiv=5 div 3;
- fals= not TRUE;
- cand=true and false;
- cor=true or false;
- cxor=true xor false;
- lt=2<3;
- gt=3>2;
- let=2<=3;
- get=3>=2;
- LeftShift=2 shl 3;
- RightShift=2 shr 3;
- ConstString='01'+'ab';
- Type
- Passenger=Record
- Name: String[30];
- Flight: String[10];
- end;
- Type
- AR=record
- X,Y: LongInt;
- end;
- TScanner = record
- currow,curcolumn : integer;
- curfilename : string;
- end;
- //PAR = Record;
- var
- msg,curtokenname : string;
- TheCustomer: Passenger;
- L: ^LongInt;
- P: PPChar;
- S,T: Ar;
- M, X,Y : Double;
- Done : Boolean;
- Weather,Good: Boolean;
- c : char;
- j,dwarfs,i,Number,Block : integer;
- exp1,exp2,exp3,exp4,exp5,exp6,exp7,exp8,exp9 : boolean;
- o : Tobject;
- day,today : tday;
- A,B,D : Passenger;
- E : Exception;
- scanner : tscanner;
-
- begin
- O:=Nil;
- X:= X+Y;
- //EparserError on C++ style
- //X+=Y; { Same as X := X+Y, needs -Sc command line switch}
- //x-=y;
- //X/=2; { Same as X := X/2, needs -Sc command line switch}
- //x*=y;
- Done:= False;
- Weather:= Good;
- //MyPi := 4* Tan(1); warum * ?
- L^:= 3;
- P^^:= 'A';
- Usage;
- WriteLn('Pascal is an easy language !');
- Doit();
- //label jumpto;
- //Jumpto :
- // Statement;
- //Goto jumpto;
- Case i of
- 6: DoSomething;
- 1..5: DoSomethingElse;
- end;
- Case C of
- 'a': WriteLn('A pressed');
- 'b': WriteLn('B pressed');
- 'c': WriteLn('C pressed');
- else
- WriteLn('unknown letter pressed : ',C);
- end;
- Case C of
- 'a','e','i','o','u': WriteLn('vowel pressed');
- 'y': WriteLn('This one depends on the language');
- else
- WriteLn('Consonant pressed');
- end;
- Case Number of
- 1..10: WriteLn('Small number');
- 11..100: WriteLn('Normal, medium number');
- else
- WriteLn('HUGE number');
- end;
- case block of
- 1: begin
- writeln('1');
- end;
- 2: writeln('2');
- else
- writeln('3');
- writeln('4');
- end;
- If exp1 Then
- If exp2 then
- Stat1
- else
- stat2;
- If exp3 Then
- begin
- If exp4 then
- Stat5
- else
- stat6
- end;
- If exp7 Then
- begin
- If exp8 then
- Stat9
- end
- else
- stat2;
- if o is TObject then
- begin
- write('object');
- end
- else
- if o is TMyParentClass then
- begin
- write('real');
- end
- else
- write('0');
- if Today in [Monday..Friday] then
- WriteLn('Must work harder')
- else
- WriteLn('Take a day off.');
- for Day:= Monday to Friday do
- Work;
- for I:= 100 downto 1 do
- WriteLn('Counting down : ',i);
- for I:= 1 to 7*dwarfs do
- KissDwarf(i);
- for i:= 0 to 10 do
- begin
- j:= 2+1;
- write(i,j);
- end;
- repeat
- WriteLn('I =',i);
- I:= I+2;
- until I>100;
-
- repeat
- X:= X/2;
- until x<10e-3;
- I:= I+2;
- while i<=100 do
- begin
- WriteLn('I =',i);
- I:= I+2;
- end;
- X:= X/2;
- while i>=10e-3 do
- dec(i);
- while i>0 do
- while j>0 do
- begin
- dec(i);
- dec(j);
- end;
- while i>0 do
- if i>2 then
- dec(i)
- else
- dec(i,2);
- X:= 2+3;
- TheCustomer.Name:= 'Michael';
- TheCustomer.Flight:= 'PS901';
- With TheCustomer do
- begin
- Name:= 'Michael';
- Flight:= 'PS901';
- end;
- With A,B,D do
- Statement;
- With A do
- With B do
- With D do
- Statement;
- S.X:= 1;S.Y:= 1;
- T.X:= 2;T.Y:= 2;
- With S,T do
- WriteLn(X,' ',Y);
- {asm
- Movl $1,%ebx
- Movl $0,%eax
- addl %eax,%ebx
- end; ['EAX','EBX'];}
- try
- try
- M:= Y;
- except
- on excep: EParserError do
- begin
- writeln(excep.message,' : ',excep.classname);
- raise ;
- end;
- end;
- FreeAndNil(M);
- finally
- FreeAndNil(E)
- end;
-
- raise EParserError.Create(Format(SParserErrorAtToken, [Msg, CurTokenName]) {$ifdef addlocation}+' ('+inttostr(scanner.currow)+' '+inttostr(scanner.curcolumn)+')'{$endif});
-
- // try else
- end;
- function addone : integer;
- begin
- end;
- procedure myproc;
- begin
- end;
- procedure Expression;
- Var
- A,b,c,d,e,f,i,j : Integer;
- x : double;
- u : Boolean;
- fu : function : integer;
- ad : boolean;
- z : tdays;
- today,tomorrow : tday;
- bs : set of byte;
- cs : set of char;
- cc : char;
- W : TShortDays;
- buffer : array[1..10] of byte;
- P : Pointer;
- SErrMultipleSourceFiles,FileName,Dirname,S : string;
- o,co : tobject;
-
- begin
- x:= a+b *c /(-e+f)*(3 div 2) + 4 mod 5 - 2 shl 3 + 3 shr 1 ;
- b:= (a and not b) or c xor d;
- u:= (i<=2) or (a<>b) or (j>=3);
- u:= (i=1) or (a>b) or (b<a) or (i<>2);
- u:= i in [1..2];
- If Fu=@AddOne Then
- WriteLn('Functions are equal');
- If Fu()=Addone then
- WriteLn('Functions return same values ');
- z:= [today,tomorrow];
- z:= [Monday..Friday,Sunday];
- bs:= [2,3*2,6*2,9*2];
- cs:= ['A'..'Z','a'..'z','0'..'9'];
- i:= Byte('A');
- cc:= Char(48);
- ad:= boolean(1);
- i:= longint(@Buffer);
- i:= Integer('A');
- cc:= Char(225);
- i:= Word(@Buffer);
- B:= Byte(C);
- S:= TObject(P).ClassName;
- P:= @MyProc; //warum @ ? fix pparser 769 ?
- Dirname:= Dirname+'\';
- W:= [mon,tue]+[wed,thu,fri]; // equals [mon,tue,wed,thu,fri]
- W:= [mon,tue,wed]-[wed]; // equals [mon,tue]
- W:= [mon,tue,wed]*[wed,thu,fri]; // equals [wed] warum * ?
- (Co as TEdit).Text:= 'Some text';
- Co:= O as TComponent;
- if co is TComponent then ;
- If co is TC then ;
- raise Exception.Create(SErrMultipleSourceFiles);
- if Filename<>'' then
- raise Exception.Create(SErrMultipleSourceFiles);
- if Filename<>'' then
- raise Exception.Create(SErrMultipleSourceFiles)
- else
- Filename:= s;
- end;
- constructor TPasPackage.Create(const AName: String; AParent: TPasElement);
- begin
- if (Length(AName)>0)and(AName[1]<>'#') then
- Inherited Create('#'+AName,AParent)
- else
- Inherited Create(AName,AParent);
- Modules:= TList.Create;
- end;
- Function TPascalScanner.FetchToken: TToken;
- var
- IncludeStackItem: TIncludeStackItem;
- begin
- while true do
- begin
- Result:= DoFetchToken;
- if FCurToken=tkEOF then
- if FIncludeStack.Count>0 then
- begin
- CurSourceFile.Free;
- IncludeStackItem:= TIncludeStackItem(FIncludeStack[FIncludeStack.Count-1]);
- FIncludeStack.Delete(FIncludeStack.Count-1);
- FCurSourceFile:= IncludeStackItem.SourceFile;
- FCurFilename:= IncludeStackItem.Filename;
- FCurToken:= IncludeStackItem.Token;
- FCurTokenString:= IncludeStackItem.TokenString;
- FCurLine:= IncludeStackItem.Line;
- FCurRow:= IncludeStackItem.Row;
- TokenStr:= IncludeStackItem.TokenStr;
- IncludeStackItem.Free;
- Result:= FCurToken;
- end
- else
- break
- else
- if not PPIsSkipping then
- break;
- end;
- end;
- Procedure IFS;
- begin
- if true then
- repeat
- until false
- else
- Noting;
- end;
- Procedure IFS(x: integer); overload;
- begin
- if true then
- case x of
- 1: writeln;
- 2: write;
- else
- writeln('#');
- end
- else
- Noting;
- end;
- Procedure IFS1;
- begin
- if true then
- while true do
- Something
- else
- Noting;
- end;
- Procedure IFS3;
- begin
- if true then
- if true then
- write
- else
- writeln;
- end;
- Initialization
-
- hallo:= valid;
- end.
|