diff options
author | svenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2020-08-12 19:04:53 +0000 |
---|---|---|
committer | svenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2020-08-12 19:04:53 +0000 |
commit | d17ab4f0947edade4bb9777f569657289da79839 (patch) | |
tree | 7c4fa70917eb3d612d4ba39013cc2c9022dcfa87 /packages/fcl-res | |
parent | 3aded373f64f59ebb8c97feb6ed4a5990a63e154 (diff) | |
download | fpc-d17ab4f0947edade4bb9777f569657289da79839.tar.gz |
fcl-res: BITMAP, ICON, CURSOR, RCDATA resource types
Reintegrate fpcres-rc branch by Martok
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@46375 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fcl-res')
-rw-r--r-- | packages/fcl-res/src/rclex.inc | 38 | ||||
-rw-r--r-- | packages/fcl-res/src/rclex.l | 38 | ||||
-rw-r--r-- | packages/fcl-res/src/rcparser.pas | 1282 | ||||
-rw-r--r-- | packages/fcl-res/src/rcparser.y | 74 | ||||
-rw-r--r-- | packages/fcl-res/src/resource.pp | 1 |
5 files changed, 909 insertions, 524 deletions
diff --git a/packages/fcl-res/src/rclex.inc b/packages/fcl-res/src/rclex.inc index b3da770f61..36b32181bd 100644 --- a/packages/fcl-res/src/rclex.inc +++ b/packages/fcl-res/src/rclex.inc @@ -7,20 +7,34 @@ var strbuf: string; const - KeywordDefs: array [0..9] of TIdentMapEntry = ( - (Value: _LANGUAGE; Name: 'LANGUAGE'), - (Value: _CHARACTERISTICS; Name: 'CHARACTERISTICS'), - (Value: _VERSION; Name: 'VERSION'), - (Value: _MOVEABLE; Name: 'MOVEABLE'), - (Value: _FIXED; Name: 'FIXED'), - (Value: _PURE; Name: 'PURE'), - (Value: _IMPURE; Name: 'IMPURE'), - (Value: _PRELOAD; Name: 'PRELOAD'), - (Value: _LOADONCALL; Name: 'LOADONCALL'), - (Value: _DISCARDABLE; Name: 'DISCARDABLE') + KeywordDefs: array [0..22] of TIdentMapEntry = ( + // attribs + (Value: _LANGUAGE; Name: 'LANGUAGE'), + (Value: _CHARACTERISTICS; Name: 'CHARACTERISTICS'), + (Value: _VERSION; Name: 'VERSION'), + (Value: _MOVEABLE; Name: 'MOVEABLE'), + (Value: _FIXED; Name: 'FIXED'), + (Value: _PURE; Name: 'PURE'), + (Value: _IMPURE; Name: 'IMPURE'), + (Value: _PRELOAD; Name: 'PRELOAD'), + (Value: _LOADONCALL; Name: 'LOADONCALL'), + (Value: _DISCARDABLE; Name: 'DISCARDABLE'), + // resource names + (Value: _ANICURSOR; Name: 'ANICURSOR'), + (Value: _ANIICON; Name: 'ANIICON'), + (Value: _BITMAP; Name: 'BITMAP'), + (Value: _CURSOR; Name: 'CURSOR'), + (Value: _DLGINCLUDE; Name: 'DLGINCLUDE'), + (Value: _DLGINIT; Name: 'DLGINIT'), + (Value: _HTML; Name: 'HTML'), + (Value: _ICON; Name: 'ICON'), + (Value: _MANIFEST; Name: 'MANIFEST'), + (Value: _MESSAGETABLE; Name: 'MESSAGETABLE'), + (Value: _PLUGPLAY; Name: 'PLUGPLAY'), + (Value: _RCDATA; Name: 'RCDATA'), + (Value: _VXD; Name: 'VXD') ); - function KeywordToInt(k: string; out kw: integer): boolean; var i: integer; diff --git a/packages/fcl-res/src/rclex.l b/packages/fcl-res/src/rclex.l index 0c5a2211a6..50b9d52138 100644 --- a/packages/fcl-res/src/rclex.l +++ b/packages/fcl-res/src/rclex.l @@ -4,20 +4,34 @@ var strbuf: string; const - KeywordDefs: array [0..9] of TIdentMapEntry = ( - (Value: _LANGUAGE; Name: 'LANGUAGE'), - (Value: _CHARACTERISTICS; Name: 'CHARACTERISTICS'), - (Value: _VERSION; Name: 'VERSION'), - (Value: _MOVEABLE; Name: 'MOVEABLE'), - (Value: _FIXED; Name: 'FIXED'), - (Value: _PURE; Name: 'PURE'), - (Value: _IMPURE; Name: 'IMPURE'), - (Value: _PRELOAD; Name: 'PRELOAD'), - (Value: _LOADONCALL; Name: 'LOADONCALL'), - (Value: _DISCARDABLE; Name: 'DISCARDABLE') + KeywordDefs: array [0..22] of TIdentMapEntry = ( + // attribs + (Value: _LANGUAGE; Name: 'LANGUAGE'), + (Value: _CHARACTERISTICS; Name: 'CHARACTERISTICS'), + (Value: _VERSION; Name: 'VERSION'), + (Value: _MOVEABLE; Name: 'MOVEABLE'), + (Value: _FIXED; Name: 'FIXED'), + (Value: _PURE; Name: 'PURE'), + (Value: _IMPURE; Name: 'IMPURE'), + (Value: _PRELOAD; Name: 'PRELOAD'), + (Value: _LOADONCALL; Name: 'LOADONCALL'), + (Value: _DISCARDABLE; Name: 'DISCARDABLE'), + // resource names + (Value: _ANICURSOR; Name: 'ANICURSOR'), + (Value: _ANIICON; Name: 'ANIICON'), + (Value: _BITMAP; Name: 'BITMAP'), + (Value: _CURSOR; Name: 'CURSOR'), + (Value: _DLGINCLUDE; Name: 'DLGINCLUDE'), + (Value: _DLGINIT; Name: 'DLGINIT'), + (Value: _HTML; Name: 'HTML'), + (Value: _ICON; Name: 'ICON'), + (Value: _MANIFEST; Name: 'MANIFEST'), + (Value: _MESSAGETABLE; Name: 'MESSAGETABLE'), + (Value: _PLUGPLAY; Name: 'PLUGPLAY'), + (Value: _RCDATA; Name: 'RCDATA'), + (Value: _VXD; Name: 'VXD') ); - function KeywordToInt(k: string; out kw: integer): boolean; var i: integer; diff --git a/packages/fcl-res/src/rcparser.pas b/packages/fcl-res/src/rcparser.pas index 90401c3ae5..0ba5bf5a0d 100644 --- a/packages/fcl-res/src/rcparser.pas +++ b/packages/fcl-res/src/rcparser.pas @@ -14,7 +14,9 @@ unit rcparser; interface uses - SysUtils, Classes, StrUtils, lexlib, yacclib, resource; + SysUtils, Classes, StrUtils, lexlib, yacclib, resource, + acceleratorsresource, groupiconresource, stringtableresource, + bitmapresource, versionresource, groupcursorresource; function yyparse : Integer; @@ -124,7 +126,7 @@ procedure create_resource(aId, aType: TResourceDesc; aClass: TResourceClass); var r: TAbstractResource; begin - r:= aClass.Create(aId, aType); + r:= aClass.Create(aType, aId); r.LangID:= language; aktresources.Add(r); aktresource:= r; @@ -135,12 +137,18 @@ begin create_resource(aId, aType, TGenericResource); end; -procedure assign_custom_stream(fn: string); +procedure create_resource(aId: TResourceDesc; aType: Word); overload; var - fs: TFileStream; + cls: TResourceClass; begin - fs:= TFileStream.Create(fn, fmOpenRead or fmShareDenyWrite); - aktresource.SetCustomRawDataStream(fs); + case aType of + RT_BITMAP: cls:= TBitmapResource; + RT_ICON: cls:= TGroupIconResource; + RT_CURSOR: cls:= TGroupCursorResource; + else + raise EResourceDescTypeException.CreateFmt('Resource type not supported: %d', [aType]); + end; + create_resource(aId, nil, cls); end; @@ -154,23 +162,44 @@ const _NUMHEXL = 261; const _QUOTEDSTR = 262; const _BEGIN = 263; const _END = 264; -const _LANGUAGE = 265; -const _CHARACTERISTICS = 266; -const _VERSION = 267; -const _MOVEABLE = 268; -const _FIXED = 269; -const _PURE = 270; -const _IMPURE = 271; -const _PRELOAD = 272; -const _LOADONCALL = 273; -const _DISCARDABLE = 274; -const _ID = 275; +const _ID = 265; +const _LANGUAGE = 266; +const _CHARACTERISTICS = 267; +const _VERSION = 268; +const _MOVEABLE = 269; +const _FIXED = 270; +const _PURE = 271; +const _IMPURE = 272; +const _PRELOAD = 273; +const _LOADONCALL = 274; +const _DISCARDABLE = 275; +const _BITMAP = 276; +const _CURSOR = 277; +const _ICON = 278; +const _ANICURSOR = 279; +const _ANIICON = 280; +const _DLGINCLUDE = 281; +const _DLGINIT = 282; +const _HTML = 283; +const _MANIFEST = 284; +const _MESSAGETABLE = 285; +const _PLUGPLAY = 286; +const _RCDATA = 287; +const _VXD = 288; +const _ACCELERATORS = 289; +const _DIALOG = 290; +const _DIALOGEX = 291; +const _MENU = 292; +const _MENUEX = 293; +const _STRINGTABLE = 294; +const _VERSIONINFO = 295; type YYSType = record case Integer of 1 : ( yyString : String ); - 2 : ( yyTMemoryStream : TMemoryStream ); - 3 : ( yyTResourceDesc : TResourceDesc ); - 4 : ( yyrcnumtype : rcnumtype ); + 2 : ( yyTFileStream : TFileStream ); + 3 : ( yyTMemoryStream : TMemoryStream ); + 4 : ( yyTResourceDesc : TResourceDesc ); + 5 : ( yyrcnumtype : rcnumtype ); end(*YYSType*); var yylval : YYSType; @@ -204,107 +233,167 @@ begin yyval := yyv[yysp-0]; end; 6 : begin - create_resource(yyv[yysp-1].yyTResourceDesc, yyv[yysp-0].yyTResourceDesc); + yyval := yyv[yysp-0]; end; 7 : begin - assign_custom_stream(yyv[yysp-0].yyString); + yyval := yyv[yysp-0]; end; 8 : begin - create_resource(yyv[yysp-1].yyTResourceDesc, yyv[yysp-0].yyTResourceDesc); + yyval := yyv[yysp-0]; end; 9 : begin - aktresource.SetCustomRawDataStream(yyv[yysp-1].yyTMemoryStream); + create_resource(yyv[yysp-1].yyTResourceDesc, RT_BITMAP); end; 10 : begin - yyval.yyTResourceDesc:= TResourceDesc.Create(yyv[yysp-0].yyrcnumtype.v); + TBitmapResource(aktresource).SetCustomBitmapDataStream(yyv[yysp-0].yyTFileStream); end; 11 : begin - yyval.yyTResourceDesc:= TResourceDesc.Create(yyv[yysp-0].yyString); + create_resource(yyv[yysp-1].yyTResourceDesc, RT_CURSOR); end; 12 : begin - yyval := yyv[yysp-1]; + TGroupCursorResource(aktresource).SetCustomItemDataStream(yyv[yysp-0].yyTFileStream); end; 13 : begin - aktresource.LangID:= MakeLangID(yyv[yysp-2].yyrcnumtype.v, yyv[yysp-0].yyrcnumtype.v); + create_resource(yyv[yysp-1].yyTResourceDesc, RT_ICON); end; 14 : begin - aktresource.Characteristics:= yyv[yysp-0].yyrcnumtype.v; + TGroupIconResource(aktresource).SetCustomItemDataStream(yyv[yysp-0].yyTFileStream); end; 15 : begin - aktresource.Version:= yyv[yysp-0].yyrcnumtype.v; + create_resource(yyv[yysp-1].yyTResourceDesc, yyv[yysp-0].yyTResourceDesc); end; 16 : begin - aktresource.MemoryFlags:= aktresource.MemoryFlags or MF_MOVEABLE; + aktresource.SetCustomRawDataStream(yyv[yysp-0].yyTFileStream); end; 17 : begin - aktresource.MemoryFlags:= aktresource.MemoryFlags and not MF_MOVEABLE; + create_resource(yyv[yysp-1].yyTResourceDesc, yyv[yysp-0].yyTResourceDesc); end; 18 : begin - aktresource.MemoryFlags:= aktresource.MemoryFlags or MF_PURE; + aktresource.SetCustomRawDataStream(yyv[yysp-1].yyTMemoryStream); end; 19 : begin - aktresource.MemoryFlags:= aktresource.MemoryFlags and not MF_PURE; + yyval.yyTResourceDesc:= TResourceDesc.Create(RT_ANICURSOR); end; 20 : begin - aktresource.MemoryFlags:= aktresource.MemoryFlags or MF_PRELOAD; + yyval.yyTResourceDesc:= TResourceDesc.Create(RT_ANIICON); end; 21 : begin - aktresource.MemoryFlags:= aktresource.MemoryFlags and not MF_PRELOAD; + yyval.yyTResourceDesc:= TResourceDesc.Create(RT_DLGINCLUDE); end; 22 : begin - aktresource.MemoryFlags:= aktresource.MemoryFlags or MF_DISCARDABLE; + yyval.yyTResourceDesc:= TResourceDesc.Create(RT_DLGINIT); end; 23 : begin + yyval.yyTResourceDesc:= TResourceDesc.Create(23); end; 24 : begin - language:= MakeLangID(yyv[yysp-2].yyrcnumtype.v, yyv[yysp-0].yyrcnumtype.v); + yyval.yyTResourceDesc:= TResourceDesc.Create(RT_MANIFEST); end; 25 : begin - yyval := yyv[yysp-0]; + yyval.yyTResourceDesc:= TResourceDesc.Create(RT_MESSAGETABLE); end; 26 : begin - yyval.yyrcnumtype.v:= StrToInt(yytext); yyval.yyrcnumtype.long:= False; + yyval.yyTResourceDesc:= TResourceDesc.Create(RT_PLUGPLAY); end; 27 : begin - yyval.yyrcnumtype.v:= StrToInt(Copy(yytext,1,length(yytext)-1)); yyval.yyrcnumtype.long:= True; + yyval.yyTResourceDesc:= TResourceDesc.Create(RT_RCDATA); end; 28 : begin - yyval.yyrcnumtype.v:= StrToInt('$'+Copy(yytext,3,Maxint)); yyval.yyrcnumtype.long:= False; + yyval.yyTResourceDesc:= TResourceDesc.Create(RT_VXD); end; 29 : begin - yyval.yyrcnumtype.v:= StrToInt('$'+Copy(yytext,3,length(yytext)-3)); yyval.yyrcnumtype.long:= True; + yyval := yyv[yysp-0]; end; 30 : begin - yyval.yyString:= yytext; + yyval.yyTResourceDesc:= TResourceDesc.Create(yyv[yysp-0].yyrcnumtype.v); end; 31 : begin - yyval.yyString:= yytext; + yyval.yyTResourceDesc:= TResourceDesc.Create(yyv[yysp-0].yyString); end; 32 : begin - yyval.yyString:= yytext; end; 33 : begin - yyval.yyString:= yytext; + yyval := yyv[yysp-1]; end; 34 : begin - yyval.yyTMemoryStream:= TMemoryStream.Create; + aktresource.LangID:= MakeLangID(yyv[yysp-2].yyrcnumtype.v, yyv[yysp-0].yyrcnumtype.v); end; 35 : begin - yyval := yyv[yysp-1]; + aktresource.Characteristics:= yyv[yysp-0].yyrcnumtype.v; end; 36 : begin - yyval.yyTMemoryStream:= yyv[yysp-1].yyTMemoryStream; + aktresource.Version:= yyv[yysp-0].yyrcnumtype.v; end; 37 : begin - yyval := yyv[yysp-3]; + aktresource.MemoryFlags:= aktresource.MemoryFlags or MF_MOVEABLE; end; 38 : begin + aktresource.MemoryFlags:= aktresource.MemoryFlags and not MF_MOVEABLE; + end; + 39 : begin + aktresource.MemoryFlags:= aktresource.MemoryFlags or MF_PURE; + end; + 40 : begin + aktresource.MemoryFlags:= aktresource.MemoryFlags and not MF_PURE; + end; + 41 : begin + aktresource.MemoryFlags:= aktresource.MemoryFlags or MF_PRELOAD; + end; + 42 : begin + aktresource.MemoryFlags:= aktresource.MemoryFlags and not MF_PRELOAD; + end; + 43 : begin + aktresource.MemoryFlags:= aktresource.MemoryFlags or MF_DISCARDABLE; + end; + 44 : begin + language:= MakeLangID(yyv[yysp-2].yyrcnumtype.v, yyv[yysp-0].yyrcnumtype.v); + end; + 45 : begin + yyval := yyv[yysp-0]; + end; + 46 : begin + yyval.yyrcnumtype.v:= StrToInt(yytext); yyval.yyrcnumtype.long:= False; + end; + 47 : begin + yyval.yyrcnumtype.v:= StrToInt(Copy(yytext,1,length(yytext)-1)); yyval.yyrcnumtype.long:= True; + end; + 48 : begin + yyval.yyrcnumtype.v:= StrToInt('$'+Copy(yytext,3,Maxint)); yyval.yyrcnumtype.long:= False; + end; + 49 : begin + yyval.yyrcnumtype.v:= StrToInt('$'+Copy(yytext,3,length(yytext)-3)); yyval.yyrcnumtype.long:= True; + end; + 50 : begin + yyval.yyString:= yytext; + end; + 51 : begin + yyval.yyString:= yytext; + end; + 52 : begin + yyval.yyTFileStream:= TFileStream.Create(yytext, fmOpenRead or fmShareDenyWrite); + end; + 53 : begin + yyval.yyString:= yytext; + end; + 54 : begin + yyval.yyTMemoryStream:= TMemoryStream.Create; + end; + 55 : begin + yyval := yyv[yysp-1]; + end; + 56 : begin + yyval.yyTMemoryStream:= yyv[yysp-1].yyTMemoryStream; + end; + 57 : begin + yyval := yyv[yysp-3]; + end; + 58 : begin yyval.yyTMemoryStream:= yyv[yysp-1].yyTMemoryStream; yyval.yyTMemoryStream.WriteBuffer(yyv[yysp-0].yyString[1], Length(yyv[yysp-0].yyString)); end; - 39 : begin + 59 : begin yyval.yyTMemoryStream:= yyv[yysp-1].yyTMemoryStream; if yyv[yysp-0].yyrcnumtype.long then @@ -327,118 +416,81 @@ type YYARec = record const -yynacts = 120; -yyngotos = 40; -yynstates = 54; -yynrules = 39; +yynacts = 132; +yyngotos = 55; +yynstates = 80; +yynrules = 59; yya : array [1..yynacts] of YYARec = ( { 0: } { 1: } ( sym: 0; act: 0 ), - ( sym: 258; act: 9 ), - ( sym: 259; act: 10 ), - ( sym: 260; act: 11 ), - ( sym: 261; act: 12 ), - ( sym: 262; act: 13 ), - ( sym: 265; act: 14 ), - ( sym: 275; act: 15 ), + ( sym: 258; act: 12 ), + ( sym: 259; act: 13 ), + ( sym: 260; act: 14 ), + ( sym: 261; act: 15 ), + ( sym: 262; act: 16 ), + ( sym: 265; act: 17 ), + ( sym: 266; act: 18 ), { 2: } { 3: } { 4: } { 5: } { 6: } - ( sym: 258; act: 9 ), - ( sym: 259; act: 10 ), - ( sym: 260; act: 11 ), - ( sym: 261; act: 12 ), - ( sym: 262; act: 13 ), - ( sym: 275; act: 15 ), { 7: } { 8: } { 9: } + ( sym: 258; act: 12 ), + ( sym: 259; act: 13 ), + ( sym: 260; act: 14 ), + ( sym: 261; act: 15 ), + ( sym: 262; act: 16 ), + ( sym: 265; act: 17 ), + ( sym: 276; act: 21 ), + ( sym: 277; act: 22 ), + ( sym: 278; act: 23 ), + ( sym: 279; act: 24 ), + ( sym: 280; act: 25 ), + ( sym: 281; act: 26 ), + ( sym: 282; act: 27 ), + ( sym: 283; act: 28 ), + ( sym: 284; act: 29 ), + ( sym: 285; act: 30 ), + ( sym: 286; act: 31 ), + ( sym: 287; act: 32 ), + ( sym: 288; act: 33 ), { 10: } { 11: } { 12: } { 13: } { 14: } - ( sym: 258; act: 9 ), - ( sym: 259; act: 10 ), - ( sym: 260; act: 11 ), - ( sym: 261; act: 12 ), { 15: } { 16: } - ( sym: 262; act: -6 ), - ( sym: 265; act: -6 ), - ( sym: 266; act: -6 ), - ( sym: 267; act: -6 ), - ( sym: 268; act: -6 ), - ( sym: 269; act: -6 ), - ( sym: 270; act: -6 ), - ( sym: 271; act: -6 ), - ( sym: 272; act: -6 ), - ( sym: 273; act: -6 ), - ( sym: 274; act: -6 ), - ( sym: 263; act: -8 ), { 17: } { 18: } - ( sym: 44; act: 21 ), + ( sym: 258; act: 12 ), + ( sym: 259; act: 13 ), + ( sym: 260; act: 14 ), + ( sym: 261; act: 15 ), { 19: } - ( sym: 265; act: 23 ), - ( sym: 266; act: 24 ), - ( sym: 267; act: 25 ), - ( sym: 268; act: 26 ), - ( sym: 269; act: 27 ), - ( sym: 270; act: 28 ), - ( sym: 271; act: 29 ), - ( sym: 272; act: 30 ), - ( sym: 273; act: 31 ), - ( sym: 274; act: 32 ), - ( sym: 263; act: -23 ), + ( sym: 262; act: -15 ), + ( sym: 266; act: -15 ), + ( sym: 267; act: -15 ), + ( sym: 268; act: -15 ), + ( sym: 269; act: -15 ), + ( sym: 270; act: -15 ), + ( sym: 271; act: -15 ), + ( sym: 272; act: -15 ), + ( sym: 273; act: -15 ), + ( sym: 274; act: -15 ), + ( sym: 275; act: -15 ), + ( sym: 263; act: -17 ), { 20: } - ( sym: 265; act: 23 ), - ( sym: 266; act: 24 ), - ( sym: 267; act: 25 ), - ( sym: 268; act: 26 ), - ( sym: 269; act: 27 ), - ( sym: 270; act: 28 ), - ( sym: 271; act: 29 ), - ( sym: 272; act: 30 ), - ( sym: 273; act: 31 ), - ( sym: 274; act: 32 ), - ( sym: 262; act: -23 ), { 21: } - ( sym: 258; act: 9 ), - ( sym: 259; act: 10 ), - ( sym: 260; act: 11 ), - ( sym: 261; act: 12 ), { 22: } - ( sym: 263; act: 36 ), - ( sym: 265; act: 23 ), - ( sym: 266; act: 24 ), - ( sym: 267; act: 25 ), - ( sym: 268; act: 26 ), - ( sym: 269; act: 27 ), - ( sym: 270; act: 28 ), - ( sym: 271; act: 29 ), - ( sym: 272; act: 30 ), - ( sym: 273; act: 31 ), - ( sym: 274; act: 32 ), { 23: } - ( sym: 258; act: 9 ), - ( sym: 259; act: 10 ), - ( sym: 260; act: 11 ), - ( sym: 261; act: 12 ), { 24: } - ( sym: 258; act: 9 ), - ( sym: 259; act: 10 ), - ( sym: 260; act: 11 ), - ( sym: 261; act: 12 ), { 25: } - ( sym: 258; act: 9 ), - ( sym: 259; act: 10 ), - ( sym: 260; act: 11 ), - ( sym: 261; act: 12 ), { 26: } { 27: } { 28: } @@ -447,121 +499,192 @@ yya : array [1..yynacts] of YYARec = ( { 31: } { 32: } { 33: } - ( sym: 262; act: 41 ), - ( sym: 265; act: 23 ), - ( sym: 266; act: 24 ), - ( sym: 267; act: 25 ), - ( sym: 268; act: 26 ), - ( sym: 269; act: 27 ), - ( sym: 270; act: 28 ), - ( sym: 271; act: 29 ), - ( sym: 272; act: 30 ), - ( sym: 273; act: 31 ), - ( sym: 274; act: 32 ), { 34: } { 35: } - ( sym: 265; act: 23 ), - ( sym: 266; act: 24 ), - ( sym: 267; act: 25 ), - ( sym: 268; act: 26 ), - ( sym: 269; act: 27 ), - ( sym: 270; act: 28 ), - ( sym: 271; act: 29 ), - ( sym: 272; act: 30 ), - ( sym: 273; act: 31 ), - ( sym: 274; act: 32 ), - ( sym: 262; act: -12 ), - ( sym: 263; act: -12 ), + ( sym: 44; act: 41 ), { 36: } { 37: } - ( sym: 44; act: 44 ), { 38: } { 39: } { 40: } { 41: } + ( sym: 258; act: 12 ), + ( sym: 259; act: 13 ), + ( sym: 260; act: 14 ), + ( sym: 261; act: 15 ), { 42: } - ( sym: 258; act: 9 ), - ( sym: 259; act: 10 ), - ( sym: 260; act: 11 ), - ( sym: 261; act: 12 ), - ( sym: 262; act: 48 ), + ( sym: 263; act: 49 ), + ( sym: 266; act: 50 ), + ( sym: 267; act: 51 ), + ( sym: 268; act: 52 ), + ( sym: 269; act: 53 ), + ( sym: 270; act: 54 ), + ( sym: 271; act: 55 ), + ( sym: 272; act: 56 ), + ( sym: 273; act: 57 ), + ( sym: 274; act: 58 ), + ( sym: 275; act: 59 ), { 43: } - ( sym: 44; act: 49 ), - ( sym: 264; act: 50 ), + ( sym: 262; act: 61 ), + ( sym: 266; act: 50 ), + ( sym: 267; act: 51 ), + ( sym: 268; act: 52 ), + ( sym: 269; act: 53 ), + ( sym: 270; act: 54 ), + ( sym: 271; act: 55 ), + ( sym: 272; act: 56 ), + ( sym: 273; act: 57 ), + ( sym: 274; act: 58 ), + ( sym: 275; act: 59 ), { 44: } - ( sym: 258; act: 9 ), - ( sym: 259; act: 10 ), - ( sym: 260; act: 11 ), - ( sym: 261; act: 12 ), + ( sym: 262; act: 61 ), + ( sym: 266; act: 50 ), + ( sym: 267; act: 51 ), + ( sym: 268; act: 52 ), + ( sym: 269; act: 53 ), + ( sym: 270; act: 54 ), + ( sym: 271; act: 55 ), + ( sym: 272; act: 56 ), + ( sym: 273; act: 57 ), + ( sym: 274; act: 58 ), + ( sym: 275; act: 59 ), { 45: } + ( sym: 262; act: 61 ), + ( sym: 266; act: 50 ), + ( sym: 267; act: 51 ), + ( sym: 268; act: 52 ), + ( sym: 269; act: 53 ), + ( sym: 270; act: 54 ), + ( sym: 271; act: 55 ), + ( sym: 272; act: 56 ), + ( sym: 273; act: 57 ), + ( sym: 274; act: 58 ), + ( sym: 275; act: 59 ), { 46: } + ( sym: 262; act: 61 ), + ( sym: 266; act: 50 ), + ( sym: 267; act: 51 ), + ( sym: 268; act: 52 ), + ( sym: 269; act: 53 ), + ( sym: 270; act: 54 ), + ( sym: 271; act: 55 ), + ( sym: 272; act: 56 ), + ( sym: 273; act: 57 ), + ( sym: 274; act: 58 ), + ( sym: 275; act: 59 ), { 47: } { 48: } { 49: } { 50: } + ( sym: 258; act: 12 ), + ( sym: 259; act: 13 ), + ( sym: 260; act: 14 ), + ( sym: 261; act: 15 ), { 51: } + ( sym: 258; act: 12 ), + ( sym: 259; act: 13 ), + ( sym: 260; act: 14 ), + ( sym: 261; act: 15 ), { 52: } - ( sym: 258; act: 9 ), - ( sym: 259; act: 10 ), - ( sym: 260; act: 11 ), - ( sym: 261; act: 12 ), - ( sym: 262; act: 48 ) + ( sym: 258; act: 12 ), + ( sym: 259; act: 13 ), + ( sym: 260; act: 14 ), + ( sym: 261; act: 15 ), { 53: } +{ 54: } +{ 55: } +{ 56: } +{ 57: } +{ 58: } +{ 59: } +{ 60: } +{ 61: } +{ 62: } +{ 63: } +{ 64: } +{ 65: } + ( sym: 258; act: 12 ), + ( sym: 259; act: 13 ), + ( sym: 260; act: 14 ), + ( sym: 261; act: 15 ), + ( sym: 262; act: 73 ), +{ 66: } + ( sym: 44; act: 74 ), + ( sym: 264; act: 75 ), +{ 67: } + ( sym: 44; act: 76 ), +{ 68: } +{ 69: } +{ 70: } +{ 71: } +{ 72: } +{ 73: } +{ 74: } +{ 75: } +{ 76: } + ( sym: 258; act: 12 ), + ( sym: 259; act: 13 ), + ( sym: 260; act: 14 ), + ( sym: 261; act: 15 ), +{ 77: } + ( sym: 258; act: 12 ), + ( sym: 259; act: 13 ), + ( sym: 260; act: 14 ), + ( sym: 261; act: 15 ), + ( sym: 262; act: 73 ) +{ 78: } +{ 79: } ); yyg : array [1..yyngotos] of YYARec = ( { 0: } - ( sym: -10; act: 1 ), + ( sym: -11; act: 1 ), { 1: } - ( sym: -14; act: 2 ), - ( sym: -13; act: 3 ), - ( sym: -12; act: 4 ), - ( sym: -11; act: 5 ), - ( sym: -7; act: 6 ), - ( sym: -4; act: 7 ), - ( sym: -3; act: 8 ), + ( sym: -18; act: 2 ), + ( sym: -17; act: 3 ), + ( sym: -16; act: 4 ), + ( sym: -15; act: 5 ), + ( sym: -14; act: 6 ), + ( sym: -13; act: 7 ), + ( sym: -12; act: 8 ), + ( sym: -7; act: 9 ), + ( sym: -4; act: 10 ), + ( sym: -3; act: 11 ), { 2: } { 3: } { 4: } { 5: } { 6: } - ( sym: -7; act: 16 ), - ( sym: -4; act: 7 ), - ( sym: -3; act: 8 ), { 7: } { 8: } { 9: } + ( sym: -8; act: 19 ), + ( sym: -7; act: 20 ), + ( sym: -4; act: 10 ), + ( sym: -3; act: 11 ), { 10: } { 11: } { 12: } { 13: } { 14: } - ( sym: -3; act: 17 ), - ( sym: -2; act: 18 ), { 15: } { 16: } - ( sym: -17; act: 19 ), - ( sym: -16; act: 20 ), { 17: } { 18: } + ( sym: -3; act: 34 ), + ( sym: -2; act: 35 ), { 19: } - ( sym: -15; act: 22 ), + ( sym: -24; act: 36 ), + ( sym: -23; act: 37 ), { 20: } - ( sym: -15; act: 33 ), { 21: } - ( sym: -3; act: 17 ), - ( sym: -2; act: 34 ), + ( sym: -20; act: 38 ), { 22: } - ( sym: -15; act: 35 ), + ( sym: -21; act: 39 ), { 23: } - ( sym: -3; act: 17 ), - ( sym: -2; act: 37 ), + ( sym: -22; act: 40 ), { 24: } - ( sym: -3; act: 17 ), - ( sym: -2; act: 38 ), { 25: } - ( sym: -3; act: 17 ), - ( sym: -2; act: 39 ), { 26: } { 27: } { 28: } @@ -570,97 +693,168 @@ yyg : array [1..yyngotos] of YYARec = ( { 31: } { 32: } { 33: } - ( sym: -15; act: 35 ), - ( sym: -5; act: 40 ), { 34: } { 35: } - ( sym: -15; act: 35 ), { 36: } - ( sym: -18; act: 42 ), - ( sym: -8; act: 43 ), + ( sym: -19; act: 42 ), { 37: } + ( sym: -19; act: 43 ), { 38: } + ( sym: -19; act: 44 ), { 39: } + ( sym: -19; act: 45 ), { 40: } + ( sym: -19; act: 46 ), { 41: } + ( sym: -3; act: 34 ), + ( sym: -2; act: 47 ), { 42: } - ( sym: -9; act: 45 ), - ( sym: -6; act: 46 ), - ( sym: -3; act: 47 ), + ( sym: -25; act: 48 ), { 43: } + ( sym: -25; act: 48 ), + ( sym: -5; act: 60 ), { 44: } - ( sym: -3; act: 17 ), - ( sym: -2; act: 51 ), + ( sym: -25; act: 48 ), + ( sym: -5; act: 62 ), { 45: } + ( sym: -25; act: 48 ), + ( sym: -5; act: 63 ), { 46: } + ( sym: -25; act: 48 ), + ( sym: -5; act: 64 ), { 47: } { 48: } { 49: } - ( sym: -19; act: 52 ), + ( sym: -26; act: 65 ), + ( sym: -9; act: 66 ), { 50: } + ( sym: -3; act: 34 ), + ( sym: -2; act: 67 ), { 51: } + ( sym: -3; act: 34 ), + ( sym: -2; act: 68 ), { 52: } - ( sym: -9; act: 53 ), - ( sym: -6; act: 46 ), - ( sym: -3; act: 47 ) + ( sym: -3; act: 34 ), + ( sym: -2; act: 69 ), { 53: } +{ 54: } +{ 55: } +{ 56: } +{ 57: } +{ 58: } +{ 59: } +{ 60: } +{ 61: } +{ 62: } +{ 63: } +{ 64: } +{ 65: } + ( sym: -10; act: 70 ), + ( sym: -6; act: 71 ), + ( sym: -3; act: 72 ), +{ 66: } +{ 67: } +{ 68: } +{ 69: } +{ 70: } +{ 71: } +{ 72: } +{ 73: } +{ 74: } + ( sym: -27; act: 77 ), +{ 75: } +{ 76: } + ( sym: -3; act: 34 ), + ( sym: -2; act: 78 ), +{ 77: } + ( sym: -10; act: 79 ), + ( sym: -6; act: 71 ), + ( sym: -3; act: 72 ) +{ 78: } +{ 79: } ); yyd : array [0..yynstates-1] of Integer = ( { 0: } -1, { 1: } 0, -{ 2: } -5, -{ 3: } -4, -{ 4: } -3, -{ 5: } -2, -{ 6: } 0, -{ 7: } -11, -{ 8: } -10, -{ 9: } -26, -{ 10: } -28, -{ 11: } -27, -{ 12: } -29, -{ 13: } -31, -{ 14: } 0, -{ 15: } -30, -{ 16: } 0, -{ 17: } -25, +{ 2: } -8, +{ 3: } -7, +{ 4: } -6, +{ 5: } -5, +{ 6: } -4, +{ 7: } -3, +{ 8: } -2, +{ 9: } 0, +{ 10: } -31, +{ 11: } -30, +{ 12: } -46, +{ 13: } -48, +{ 14: } -47, +{ 15: } -49, +{ 16: } -51, +{ 17: } -50, { 18: } 0, { 19: } 0, -{ 20: } 0, -{ 21: } 0, -{ 22: } 0, -{ 23: } 0, -{ 24: } 0, -{ 25: } 0, -{ 26: } -16, -{ 27: } -17, -{ 28: } -18, -{ 29: } -19, -{ 30: } -20, -{ 31: } -21, -{ 32: } -22, -{ 33: } 0, -{ 34: } -24, +{ 20: } -29, +{ 21: } -9, +{ 22: } -11, +{ 23: } -13, +{ 24: } -19, +{ 25: } -20, +{ 26: } -21, +{ 27: } -22, +{ 28: } -23, +{ 29: } -24, +{ 30: } -25, +{ 31: } -26, +{ 32: } -27, +{ 33: } -28, +{ 34: } -45, { 35: } 0, -{ 36: } -34, -{ 37: } 0, -{ 38: } -14, -{ 39: } -15, -{ 40: } -7, -{ 41: } -32, +{ 36: } -32, +{ 37: } -32, +{ 38: } -32, +{ 39: } -32, +{ 40: } -32, +{ 41: } 0, { 42: } 0, { 43: } 0, { 44: } 0, -{ 45: } -35, -{ 46: } -38, -{ 47: } -39, +{ 45: } 0, +{ 46: } 0, +{ 47: } -44, { 48: } -33, -{ 49: } -36, -{ 50: } -9, -{ 51: } -13, +{ 49: } -54, +{ 50: } 0, +{ 51: } 0, { 52: } 0, -{ 53: } -37 +{ 53: } -37, +{ 54: } -38, +{ 55: } -39, +{ 56: } -40, +{ 57: } -41, +{ 58: } -42, +{ 59: } -43, +{ 60: } -16, +{ 61: } -52, +{ 62: } -10, +{ 63: } -12, +{ 64: } -14, +{ 65: } 0, +{ 66: } 0, +{ 67: } 0, +{ 68: } -35, +{ 69: } -36, +{ 70: } -55, +{ 71: } -58, +{ 72: } -59, +{ 73: } -53, +{ 74: } -56, +{ 75: } -18, +{ 76: } 0, +{ 77: } 0, +{ 78: } -34, +{ 79: } -57 ); yyal : array [0..yynstates-1] of Integer = ( @@ -671,53 +865,79 @@ yyal : array [0..yynstates-1] of Integer = ( { 4: } 9, { 5: } 9, { 6: } 9, -{ 7: } 15, -{ 8: } 15, -{ 9: } 15, -{ 10: } 15, -{ 11: } 15, -{ 12: } 15, -{ 13: } 15, -{ 14: } 15, -{ 15: } 19, -{ 16: } 19, -{ 17: } 31, -{ 18: } 31, +{ 7: } 9, +{ 8: } 9, +{ 9: } 9, +{ 10: } 28, +{ 11: } 28, +{ 12: } 28, +{ 13: } 28, +{ 14: } 28, +{ 15: } 28, +{ 16: } 28, +{ 17: } 28, +{ 18: } 28, { 19: } 32, -{ 20: } 43, -{ 21: } 54, -{ 22: } 58, -{ 23: } 69, -{ 24: } 73, -{ 25: } 77, -{ 26: } 81, -{ 27: } 81, -{ 28: } 81, -{ 29: } 81, -{ 30: } 81, -{ 31: } 81, -{ 32: } 81, -{ 33: } 81, -{ 34: } 92, -{ 35: } 92, -{ 36: } 104, -{ 37: } 104, -{ 38: } 105, -{ 39: } 105, -{ 40: } 105, -{ 41: } 105, -{ 42: } 105, -{ 43: } 110, -{ 44: } 112, -{ 45: } 116, -{ 46: } 116, -{ 47: } 116, -{ 48: } 116, -{ 49: } 116, -{ 50: } 116, -{ 51: } 116, -{ 52: } 116, -{ 53: } 121 +{ 20: } 44, +{ 21: } 44, +{ 22: } 44, +{ 23: } 44, +{ 24: } 44, +{ 25: } 44, +{ 26: } 44, +{ 27: } 44, +{ 28: } 44, +{ 29: } 44, +{ 30: } 44, +{ 31: } 44, +{ 32: } 44, +{ 33: } 44, +{ 34: } 44, +{ 35: } 44, +{ 36: } 45, +{ 37: } 45, +{ 38: } 45, +{ 39: } 45, +{ 40: } 45, +{ 41: } 45, +{ 42: } 49, +{ 43: } 60, +{ 44: } 71, +{ 45: } 82, +{ 46: } 93, +{ 47: } 104, +{ 48: } 104, +{ 49: } 104, +{ 50: } 104, +{ 51: } 108, +{ 52: } 112, +{ 53: } 116, +{ 54: } 116, +{ 55: } 116, +{ 56: } 116, +{ 57: } 116, +{ 58: } 116, +{ 59: } 116, +{ 60: } 116, +{ 61: } 116, +{ 62: } 116, +{ 63: } 116, +{ 64: } 116, +{ 65: } 116, +{ 66: } 121, +{ 67: } 123, +{ 68: } 124, +{ 69: } 124, +{ 70: } 124, +{ 71: } 124, +{ 72: } 124, +{ 73: } 124, +{ 74: } 124, +{ 75: } 124, +{ 76: } 124, +{ 77: } 128, +{ 78: } 133, +{ 79: } 133 ); yyah : array [0..yynstates-1] of Integer = ( @@ -727,210 +947,308 @@ yyah : array [0..yynstates-1] of Integer = ( { 3: } 8, { 4: } 8, { 5: } 8, -{ 6: } 14, -{ 7: } 14, -{ 8: } 14, -{ 9: } 14, -{ 10: } 14, -{ 11: } 14, -{ 12: } 14, -{ 13: } 14, -{ 14: } 18, -{ 15: } 18, -{ 16: } 30, -{ 17: } 30, +{ 6: } 8, +{ 7: } 8, +{ 8: } 8, +{ 9: } 27, +{ 10: } 27, +{ 11: } 27, +{ 12: } 27, +{ 13: } 27, +{ 14: } 27, +{ 15: } 27, +{ 16: } 27, +{ 17: } 27, { 18: } 31, -{ 19: } 42, -{ 20: } 53, -{ 21: } 57, -{ 22: } 68, -{ 23: } 72, -{ 24: } 76, -{ 25: } 80, -{ 26: } 80, -{ 27: } 80, -{ 28: } 80, -{ 29: } 80, -{ 30: } 80, -{ 31: } 80, -{ 32: } 80, -{ 33: } 91, -{ 34: } 91, -{ 35: } 103, -{ 36: } 103, -{ 37: } 104, -{ 38: } 104, -{ 39: } 104, -{ 40: } 104, -{ 41: } 104, -{ 42: } 109, -{ 43: } 111, -{ 44: } 115, -{ 45: } 115, -{ 46: } 115, -{ 47: } 115, -{ 48: } 115, -{ 49: } 115, -{ 50: } 115, -{ 51: } 115, -{ 52: } 120, -{ 53: } 120 +{ 19: } 43, +{ 20: } 43, +{ 21: } 43, +{ 22: } 43, +{ 23: } 43, +{ 24: } 43, +{ 25: } 43, +{ 26: } 43, +{ 27: } 43, +{ 28: } 43, +{ 29: } 43, +{ 30: } 43, +{ 31: } 43, +{ 32: } 43, +{ 33: } 43, +{ 34: } 43, +{ 35: } 44, +{ 36: } 44, +{ 37: } 44, +{ 38: } 44, +{ 39: } 44, +{ 40: } 44, +{ 41: } 48, +{ 42: } 59, +{ 43: } 70, +{ 44: } 81, +{ 45: } 92, +{ 46: } 103, +{ 47: } 103, +{ 48: } 103, +{ 49: } 103, +{ 50: } 107, +{ 51: } 111, +{ 52: } 115, +{ 53: } 115, +{ 54: } 115, +{ 55: } 115, +{ 56: } 115, +{ 57: } 115, +{ 58: } 115, +{ 59: } 115, +{ 60: } 115, +{ 61: } 115, +{ 62: } 115, +{ 63: } 115, +{ 64: } 115, +{ 65: } 120, +{ 66: } 122, +{ 67: } 123, +{ 68: } 123, +{ 69: } 123, +{ 70: } 123, +{ 71: } 123, +{ 72: } 123, +{ 73: } 123, +{ 74: } 123, +{ 75: } 123, +{ 76: } 127, +{ 77: } 132, +{ 78: } 132, +{ 79: } 132 ); yygl : array [0..yynstates-1] of Integer = ( { 0: } 1, { 1: } 2, -{ 2: } 9, -{ 3: } 9, -{ 4: } 9, -{ 5: } 9, -{ 6: } 9, +{ 2: } 12, +{ 3: } 12, +{ 4: } 12, +{ 5: } 12, +{ 6: } 12, { 7: } 12, { 8: } 12, { 9: } 12, -{ 10: } 12, -{ 11: } 12, -{ 12: } 12, -{ 13: } 12, -{ 14: } 12, -{ 15: } 14, -{ 16: } 14, +{ 10: } 16, +{ 11: } 16, +{ 12: } 16, +{ 13: } 16, +{ 14: } 16, +{ 15: } 16, +{ 16: } 16, { 17: } 16, { 18: } 16, -{ 19: } 16, -{ 20: } 17, -{ 21: } 18, -{ 22: } 20, -{ 23: } 21, +{ 19: } 18, +{ 20: } 20, +{ 21: } 20, +{ 22: } 21, +{ 23: } 22, { 24: } 23, -{ 25: } 25, -{ 26: } 27, -{ 27: } 27, -{ 28: } 27, -{ 29: } 27, -{ 30: } 27, -{ 31: } 27, -{ 32: } 27, -{ 33: } 27, -{ 34: } 29, -{ 35: } 29, -{ 36: } 30, -{ 37: } 32, -{ 38: } 32, -{ 39: } 32, -{ 40: } 32, -{ 41: } 32, -{ 42: } 32, -{ 43: } 35, -{ 44: } 35, -{ 45: } 37, +{ 25: } 23, +{ 26: } 23, +{ 27: } 23, +{ 28: } 23, +{ 29: } 23, +{ 30: } 23, +{ 31: } 23, +{ 32: } 23, +{ 33: } 23, +{ 34: } 23, +{ 35: } 23, +{ 36: } 23, +{ 37: } 24, +{ 38: } 25, +{ 39: } 26, +{ 40: } 27, +{ 41: } 28, +{ 42: } 30, +{ 43: } 31, +{ 44: } 33, +{ 45: } 35, { 46: } 37, -{ 47: } 37, -{ 48: } 37, -{ 49: } 37, -{ 50: } 38, -{ 51: } 38, -{ 52: } 38, -{ 53: } 41 +{ 47: } 39, +{ 48: } 39, +{ 49: } 39, +{ 50: } 41, +{ 51: } 43, +{ 52: } 45, +{ 53: } 47, +{ 54: } 47, +{ 55: } 47, +{ 56: } 47, +{ 57: } 47, +{ 58: } 47, +{ 59: } 47, +{ 60: } 47, +{ 61: } 47, +{ 62: } 47, +{ 63: } 47, +{ 64: } 47, +{ 65: } 47, +{ 66: } 50, +{ 67: } 50, +{ 68: } 50, +{ 69: } 50, +{ 70: } 50, +{ 71: } 50, +{ 72: } 50, +{ 73: } 50, +{ 74: } 50, +{ 75: } 51, +{ 76: } 51, +{ 77: } 53, +{ 78: } 56, +{ 79: } 56 ); yygh : array [0..yynstates-1] of Integer = ( { 0: } 1, -{ 1: } 8, -{ 2: } 8, -{ 3: } 8, -{ 4: } 8, -{ 5: } 8, +{ 1: } 11, +{ 2: } 11, +{ 3: } 11, +{ 4: } 11, +{ 5: } 11, { 6: } 11, { 7: } 11, { 8: } 11, -{ 9: } 11, -{ 10: } 11, -{ 11: } 11, -{ 12: } 11, -{ 13: } 11, -{ 14: } 13, -{ 15: } 13, +{ 9: } 15, +{ 10: } 15, +{ 11: } 15, +{ 12: } 15, +{ 13: } 15, +{ 14: } 15, +{ 15: } 15, { 16: } 15, { 17: } 15, -{ 18: } 15, -{ 19: } 16, -{ 20: } 17, -{ 21: } 19, -{ 22: } 20, +{ 18: } 17, +{ 19: } 19, +{ 20: } 19, +{ 21: } 20, +{ 22: } 21, { 23: } 22, -{ 24: } 24, -{ 25: } 26, -{ 26: } 26, -{ 27: } 26, -{ 28: } 26, -{ 29: } 26, -{ 30: } 26, -{ 31: } 26, -{ 32: } 26, -{ 33: } 28, -{ 34: } 28, -{ 35: } 29, -{ 36: } 31, -{ 37: } 31, -{ 38: } 31, -{ 39: } 31, -{ 40: } 31, -{ 41: } 31, -{ 42: } 34, -{ 43: } 34, -{ 44: } 36, +{ 24: } 22, +{ 25: } 22, +{ 26: } 22, +{ 27: } 22, +{ 28: } 22, +{ 29: } 22, +{ 30: } 22, +{ 31: } 22, +{ 32: } 22, +{ 33: } 22, +{ 34: } 22, +{ 35: } 22, +{ 36: } 23, +{ 37: } 24, +{ 38: } 25, +{ 39: } 26, +{ 40: } 27, +{ 41: } 29, +{ 42: } 30, +{ 43: } 32, +{ 44: } 34, { 45: } 36, -{ 46: } 36, -{ 47: } 36, -{ 48: } 36, -{ 49: } 37, -{ 50: } 37, -{ 51: } 37, -{ 52: } 40, -{ 53: } 40 +{ 46: } 38, +{ 47: } 38, +{ 48: } 38, +{ 49: } 40, +{ 50: } 42, +{ 51: } 44, +{ 52: } 46, +{ 53: } 46, +{ 54: } 46, +{ 55: } 46, +{ 56: } 46, +{ 57: } 46, +{ 58: } 46, +{ 59: } 46, +{ 60: } 46, +{ 61: } 46, +{ 62: } 46, +{ 63: } 46, +{ 64: } 46, +{ 65: } 49, +{ 66: } 49, +{ 67: } 49, +{ 68: } 49, +{ 69: } 49, +{ 70: } 49, +{ 71: } 49, +{ 72: } 49, +{ 73: } 49, +{ 74: } 50, +{ 75: } 50, +{ 76: } 52, +{ 77: } 55, +{ 78: } 55, +{ 79: } 55 ); yyr : array [1..yynrules] of YYRRec = ( -{ 1: } ( len: 0; sym: -10 ), -{ 2: } ( len: 2; sym: -10 ), -{ 3: } ( len: 1; sym: -11 ), -{ 4: } ( len: 1; sym: -11 ), -{ 5: } ( len: 1; sym: -12 ), -{ 6: } ( len: 0; sym: -16 ), -{ 7: } ( len: 5; sym: -14 ), -{ 8: } ( len: 0; sym: -17 ), -{ 9: } ( len: 7; sym: -14 ), -{ 10: } ( len: 1; sym: -7 ), -{ 11: } ( len: 1; sym: -7 ), -{ 12: } ( len: 2; sym: -15 ), -{ 13: } ( len: 4; sym: -15 ), -{ 14: } ( len: 2; sym: -15 ), -{ 15: } ( len: 2; sym: -15 ), -{ 16: } ( len: 1; sym: -15 ), -{ 17: } ( len: 1; sym: -15 ), -{ 18: } ( len: 1; sym: -15 ), -{ 19: } ( len: 1; sym: -15 ), -{ 20: } ( len: 1; sym: -15 ), -{ 21: } ( len: 1; sym: -15 ), -{ 22: } ( len: 1; sym: -15 ), -{ 23: } ( len: 0; sym: -15 ), -{ 24: } ( len: 4; sym: -13 ), -{ 25: } ( len: 1; sym: -2 ), -{ 26: } ( len: 1; sym: -3 ), -{ 27: } ( len: 1; sym: -3 ), -{ 28: } ( len: 1; sym: -3 ), -{ 29: } ( len: 1; sym: -3 ), -{ 30: } ( len: 1; sym: -4 ), -{ 31: } ( len: 1; sym: -4 ), -{ 32: } ( len: 1; sym: -5 ), -{ 33: } ( len: 1; sym: -6 ), -{ 34: } ( len: 0; sym: -18 ), -{ 35: } ( len: 2; sym: -8 ), -{ 36: } ( len: 0; sym: -19 ), -{ 37: } ( len: 4; sym: -8 ), -{ 38: } ( len: 1; sym: -9 ), -{ 39: } ( len: 1; sym: -9 ) +{ 1: } ( len: 0; sym: -11 ), +{ 2: } ( len: 2; sym: -11 ), +{ 3: } ( len: 1; sym: -12 ), +{ 4: } ( len: 1; sym: -12 ), +{ 5: } ( len: 1; sym: -13 ), +{ 6: } ( len: 1; sym: -13 ), +{ 7: } ( len: 1; sym: -13 ), +{ 8: } ( len: 1; sym: -13 ), +{ 9: } ( len: 0; sym: -20 ), +{ 10: } ( len: 5; sym: -15 ), +{ 11: } ( len: 0; sym: -21 ), +{ 12: } ( len: 5; sym: -16 ), +{ 13: } ( len: 0; sym: -22 ), +{ 14: } ( len: 5; sym: -17 ), +{ 15: } ( len: 0; sym: -23 ), +{ 16: } ( len: 5; sym: -18 ), +{ 17: } ( len: 0; sym: -24 ), +{ 18: } ( len: 7; sym: -18 ), +{ 19: } ( len: 1; sym: -8 ), +{ 20: } ( len: 1; sym: -8 ), +{ 21: } ( len: 1; sym: -8 ), +{ 22: } ( len: 1; sym: -8 ), +{ 23: } ( len: 1; sym: -8 ), +{ 24: } ( len: 1; sym: -8 ), +{ 25: } ( len: 1; sym: -8 ), +{ 26: } ( len: 1; sym: -8 ), +{ 27: } ( len: 1; sym: -8 ), +{ 28: } ( len: 1; sym: -8 ), +{ 29: } ( len: 1; sym: -8 ), +{ 30: } ( len: 1; sym: -7 ), +{ 31: } ( len: 1; sym: -7 ), +{ 32: } ( len: 0; sym: -19 ), +{ 33: } ( len: 2; sym: -19 ), +{ 34: } ( len: 4; sym: -25 ), +{ 35: } ( len: 2; sym: -25 ), +{ 36: } ( len: 2; sym: -25 ), +{ 37: } ( len: 1; sym: -25 ), +{ 38: } ( len: 1; sym: -25 ), +{ 39: } ( len: 1; sym: -25 ), +{ 40: } ( len: 1; sym: -25 ), +{ 41: } ( len: 1; sym: -25 ), +{ 42: } ( len: 1; sym: -25 ), +{ 43: } ( len: 1; sym: -25 ), +{ 44: } ( len: 4; sym: -14 ), +{ 45: } ( len: 1; sym: -2 ), +{ 46: } ( len: 1; sym: -3 ), +{ 47: } ( len: 1; sym: -3 ), +{ 48: } ( len: 1; sym: -3 ), +{ 49: } ( len: 1; sym: -3 ), +{ 50: } ( len: 1; sym: -4 ), +{ 51: } ( len: 1; sym: -4 ), +{ 52: } ( len: 1; sym: -5 ), +{ 53: } ( len: 1; sym: -6 ), +{ 54: } ( len: 0; sym: -26 ), +{ 55: } ( len: 2; sym: -9 ), +{ 56: } ( len: 0; sym: -27 ), +{ 57: } ( len: 4; sym: -9 ), +{ 58: } ( len: 1; sym: -10 ), +{ 59: } ( len: 1; sym: -10 ) ); diff --git a/packages/fcl-res/src/rcparser.y b/packages/fcl-res/src/rcparser.y index 36b4f5c2a0..0abf19334a 100644 --- a/packages/fcl-res/src/rcparser.y +++ b/packages/fcl-res/src/rcparser.y @@ -10,7 +10,9 @@ unit rcparser; interface uses - SysUtils, Classes, StrUtils, lexlib, yacclib, resource; + SysUtils, Classes, StrUtils, lexlib, yacclib, resource, + acceleratorsresource, groupiconresource, stringtableresource, + bitmapresource, versionresource, groupcursorresource; function yyparse : Integer; @@ -120,7 +122,7 @@ procedure create_resource(aId, aType: TResourceDesc; aClass: TResourceClass); var r: TAbstractResource; begin - r:= aClass.Create(aId, aType); + r:= aClass.Create(aType, aId); r.LangID:= language; aktresources.Add(r); aktresource:= r; @@ -131,12 +133,18 @@ begin create_resource(aId, aType, TGenericResource); end; -procedure assign_custom_stream(fn: string); +procedure create_resource(aId: TResourceDesc; aType: Word); overload; var - fs: TFileStream; + cls: TResourceClass; begin - fs:= TFileStream.Create(fn, fmOpenRead or fmShareDenyWrite); - aktresource.SetCustomRawDataStream(fs); + case aType of + RT_BITMAP: cls:= TBitmapResource; + RT_ICON: cls:= TGroupIconResource; + RT_CURSOR: cls:= TGroupCursorResource; + else + raise EResourceDescTypeException.CreateFmt('Resource type not supported: %d', [aType]); + end; + create_resource(aId, nil, cls); end; @@ -146,15 +154,17 @@ var %token _ILLEGAL %token _NUMDECIMAL _NUMHEX _NUMDECIMALL _NUMHEXL _QUOTEDSTR -%token _BEGIN _END +%token _BEGIN _END _ID %token _LANGUAGE _CHARACTERISTICS _VERSION _MOVEABLE _FIXED _PURE _IMPURE _PRELOAD _LOADONCALL _DISCARDABLE - -%token _ID +%token _BITMAP _CURSOR _ICON +%token _ANICURSOR _ANIICON _DLGINCLUDE _DLGINIT _HTML _MANIFEST _MESSAGETABLE _PLUGPLAY _RCDATA _VXD +%token _ACCELERATORS _DIALOG _DIALOGEX _MENU _MENUEX _STRINGTABLE _VERSIONINFO %type <rcnumtype> numpos numeral %type <String> ident_string filename_string long_string -%type <TResourceDesc> resid +%type <TResourceDesc> resid rcdataid %type <TMemoryStream> raw_data raw_item +%type <TFileStream> filename_string %% @@ -169,14 +179,39 @@ defnstatement ; resourcedef - : res_user + : res_bitmap + | res_cursor + | res_icon + | res_rcdata ; -res_user - : resid resid { create_resource($1, $2); } suboptions filename_string { assign_custom_stream($5); } - | resid resid { create_resource($1, $2); } suboptions _BEGIN raw_data _END { aktresource.SetCustomRawDataStream($6); } +res_bitmap + : resid _BITMAP { create_resource($1, RT_BITMAP); } suboptions filename_string { TBitmapResource(aktresource).SetCustomBitmapDataStream($5); } + +res_cursor + : resid _CURSOR { create_resource($1, RT_CURSOR); } suboptions filename_string { TGroupCursorResource(aktresource).SetCustomItemDataStream($5); } + +res_icon + : resid _ICON { create_resource($1, RT_ICON); } suboptions filename_string { TGroupIconResource(aktresource).SetCustomItemDataStream($5); } + +res_rcdata + : resid rcdataid { create_resource($1, $2); } suboptions filename_string { aktresource.SetCustomRawDataStream($5); } + | resid rcdataid { create_resource($1, $2); } suboptions _BEGIN raw_data _END { aktresource.SetCustomRawDataStream($6); } ; +rcdataid + : _ANICURSOR { $$:= TResourceDesc.Create(RT_ANICURSOR); } + | _ANIICON { $$:= TResourceDesc.Create(RT_ANIICON); } + | _DLGINCLUDE { $$:= TResourceDesc.Create(RT_DLGINCLUDE); } + | _DLGINIT { $$:= TResourceDesc.Create(RT_DLGINIT); } + | _HTML { $$:= TResourceDesc.Create(23); } + | _MANIFEST { $$:= TResourceDesc.Create(RT_MANIFEST); } + | _MESSAGETABLE { $$:= TResourceDesc.Create(RT_MESSAGETABLE); } + | _PLUGPLAY { $$:= TResourceDesc.Create(RT_PLUGPLAY); } + | _RCDATA { $$:= TResourceDesc.Create(RT_RCDATA); } + | _VXD { $$:= TResourceDesc.Create(RT_VXD); } + | resid + ; resid : numeral { $$:= TResourceDesc.Create($1.v); } @@ -184,8 +219,12 @@ resid ; suboptions - : suboptions suboptions - | _LANGUAGE numpos ',' numpos { aktresource.LangID:= MakeLangID($2.v, $4.v); } + : /* empty */ + | suboptions suboption + ; + +suboption + : _LANGUAGE numpos ',' numpos { aktresource.LangID:= MakeLangID($2.v, $4.v); } | _CHARACTERISTICS numpos { aktresource.Characteristics:= $2.v; } | _VERSION numpos { aktresource.Version:= $2.v; } | _MOVEABLE { aktresource.MemoryFlags:= aktresource.MemoryFlags or MF_MOVEABLE; } @@ -195,7 +234,6 @@ suboptions | _PRELOAD { aktresource.MemoryFlags:= aktresource.MemoryFlags or MF_PRELOAD; } | _LOADONCALL { aktresource.MemoryFlags:= aktresource.MemoryFlags and not MF_PRELOAD; } | _DISCARDABLE { aktresource.MemoryFlags:= aktresource.MemoryFlags or MF_DISCARDABLE; } - | /* empty */ ; languagedef @@ -218,7 +256,7 @@ ident_string ; filename_string - : _QUOTEDSTR { $$:= yytext; } + : _QUOTEDSTR { $$:= TFileStream.Create(yytext, fmOpenRead or fmShareDenyWrite); } ; long_string diff --git a/packages/fcl-res/src/resource.pp b/packages/fcl-res/src/resource.pp index 0638880ee8..224bf0e461 100644 --- a/packages/fcl-res/src/resource.pp +++ b/packages/fcl-res/src/resource.pp @@ -44,6 +44,7 @@ const RT_ANIICON = 22; //Animated icon. RT_HTML = 23; //HTML. RT_MANIFEST = 24; //Microsoft Windows XP: Side-by-Side Assembly XML Manifest. + RT_DLGINIT = 240; //Never present in compiled form CREATEPROCESS_MANIFEST_RESOURCE_ID = 1; ISOLATIONAWARE_MANIFEST_RESOURCE_ID = 2; |