summaryrefslogtreecommitdiff
path: root/packages/fcl-res
diff options
context:
space:
mode:
authorsvenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2>2020-08-12 19:04:53 +0000
committersvenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2>2020-08-12 19:04:53 +0000
commitd17ab4f0947edade4bb9777f569657289da79839 (patch)
tree7c4fa70917eb3d612d4ba39013cc2c9022dcfa87 /packages/fcl-res
parent3aded373f64f59ebb8c97feb6ed4a5990a63e154 (diff)
downloadfpc-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.inc38
-rw-r--r--packages/fcl-res/src/rclex.l38
-rw-r--r--packages/fcl-res/src/rcparser.pas1282
-rw-r--r--packages/fcl-res/src/rcparser.y74
-rw-r--r--packages/fcl-res/src/resource.pp1
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;