fcl-res: legacy resource flags

Reintegrate fpcres-rc branch by Martok

git-svn-id: trunk@46374 -
This commit is contained in:
svenbarth 2020-08-12 19:04:46 +00:00
parent d6dd918582
commit 3765d1945e
4 changed files with 495 additions and 184 deletions

View File

@ -7,10 +7,20 @@ var
strbuf: string;
const
KeywordDefs: array [0..0] of TIdentMapEntry = (
(Value: _LANGUAGE; Name: 'LANGUAGE')
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')
);
function KeywordToInt(k: string; out kw: integer): boolean;
var
i: integer;

View File

@ -4,10 +4,20 @@ var
strbuf: string;
const
KeywordDefs: array [0..0] of TIdentMapEntry = (
(Value: _LANGUAGE; Name: 'LANGUAGE')
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')
);
function KeywordToInt(k: string; out kw: integer): boolean;
var
i: integer;

View File

@ -155,8 +155,16 @@ const _QUOTEDSTR = 262;
const _BEGIN = 263;
const _END = 264;
const _LANGUAGE = 265;
const _VERSION = 266;
const _ID = 267;
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;
type YYSType = record case Integer of
1 : ( yyString : String );
@ -214,54 +222,89 @@ begin
yyval.yyTResourceDesc:= TResourceDesc.Create(yyv[yysp-0].yyString);
end;
12 : begin
language:= MakeLangID(yyv[yysp-2].yyrcnumtype.v, yyv[yysp-0].yyrcnumtype.v);
end;
13 : begin
yyval := yyv[yysp-0];
end;
14 : begin
yyval.yyrcnumtype.v:= StrToInt(yytext); yyval.yyrcnumtype.long:= False;
end;
15 : begin
yyval.yyrcnumtype.v:= StrToInt(Copy(yytext,1,length(yytext)-1)); yyval.yyrcnumtype.long:= True;
end;
16 : begin
yyval.yyrcnumtype.v:= StrToInt('$'+Copy(yytext,3,Maxint)); yyval.yyrcnumtype.long:= False;
end;
17 : begin
yyval.yyrcnumtype.v:= StrToInt('$'+Copy(yytext,3,length(yytext)-3)); yyval.yyrcnumtype.long:= True;
end;
18 : begin
yyval.yyString:= yytext;
end;
19 : begin
yyval.yyString:= yytext;
end;
20 : begin
yyval.yyString:= yytext;
end;
21 : begin
yyval.yyString:= yytext;
end;
22 : begin
yyval.yyTMemoryStream:= TMemoryStream.Create;
end;
23 : begin
yyval := yyv[yysp-1];
end;
13 : begin
aktresource.LangID:= MakeLangID(yyv[yysp-2].yyrcnumtype.v, yyv[yysp-0].yyrcnumtype.v);
end;
14 : begin
aktresource.Characteristics:= yyv[yysp-0].yyrcnumtype.v;
end;
15 : begin
aktresource.Version:= yyv[yysp-0].yyrcnumtype.v;
end;
16 : begin
aktresource.MemoryFlags:= aktresource.MemoryFlags or MF_MOVEABLE;
end;
17 : begin
aktresource.MemoryFlags:= aktresource.MemoryFlags and not MF_MOVEABLE;
end;
18 : begin
aktresource.MemoryFlags:= aktresource.MemoryFlags or MF_PURE;
end;
19 : begin
aktresource.MemoryFlags:= aktresource.MemoryFlags and not MF_PURE;
end;
20 : begin
aktresource.MemoryFlags:= aktresource.MemoryFlags or MF_PRELOAD;
end;
21 : begin
aktresource.MemoryFlags:= aktresource.MemoryFlags and not MF_PRELOAD;
end;
22 : begin
aktresource.MemoryFlags:= aktresource.MemoryFlags or MF_DISCARDABLE;
end;
23 : begin
end;
24 : begin
yyval.yyTMemoryStream:= yyv[yysp-1].yyTMemoryStream;
language:= MakeLangID(yyv[yysp-2].yyrcnumtype.v, yyv[yysp-0].yyrcnumtype.v);
end;
25 : begin
yyval := yyv[yysp-3];
yyval := yyv[yysp-0];
end;
26 : begin
yyval.yyrcnumtype.v:= StrToInt(yytext); yyval.yyrcnumtype.long:= False;
end;
27 : begin
yyval.yyrcnumtype.v:= StrToInt(Copy(yytext,1,length(yytext)-1)); yyval.yyrcnumtype.long:= True;
end;
28 : begin
yyval.yyrcnumtype.v:= StrToInt('$'+Copy(yytext,3,Maxint)); yyval.yyrcnumtype.long:= False;
end;
29 : begin
yyval.yyrcnumtype.v:= StrToInt('$'+Copy(yytext,3,length(yytext)-3)); yyval.yyrcnumtype.long:= True;
end;
30 : begin
yyval.yyString:= yytext;
end;
31 : begin
yyval.yyString:= yytext;
end;
32 : begin
yyval.yyString:= yytext;
end;
33 : begin
yyval.yyString:= yytext;
end;
34 : begin
yyval.yyTMemoryStream:= TMemoryStream.Create;
end;
35 : begin
yyval := yyv[yysp-1];
end;
36 : begin
yyval.yyTMemoryStream:= yyv[yysp-1].yyTMemoryStream;
end;
37 : begin
yyval := yyv[yysp-3];
end;
38 : begin
yyval.yyTMemoryStream:= yyv[yysp-1].yyTMemoryStream;
yyval.yyTMemoryStream.WriteBuffer(yyv[yysp-0].yyString[1], Length(yyv[yysp-0].yyString));
end;
27 : begin
39 : begin
yyval.yyTMemoryStream:= yyv[yysp-1].yyTMemoryStream;
if yyv[yysp-0].yyrcnumtype.long then
@ -284,10 +327,10 @@ type YYARec = record
const
yynacts = 39;
yyngotos = 27;
yynstates = 36;
yynrules = 27;
yynacts = 120;
yyngotos = 40;
yynstates = 54;
yynrules = 39;
yya : array [1..yynacts] of YYARec = (
{ 0: }
@ -299,7 +342,7 @@ yya : array [1..yynacts] of YYARec = (
( sym: 261; act: 12 ),
( sym: 262; act: 13 ),
( sym: 265; act: 14 ),
( sym: 267; act: 15 ),
( sym: 275; act: 15 ),
{ 2: }
{ 3: }
{ 4: }
@ -310,7 +353,7 @@ yya : array [1..yynacts] of YYARec = (
( sym: 260; act: 11 ),
( sym: 261; act: 12 ),
( sym: 262; act: 13 ),
( sym: 267; act: 15 ),
( sym: 275; act: 15 ),
{ 7: }
{ 8: }
{ 9: }
@ -326,45 +369,144 @@ yya : array [1..yynacts] of YYARec = (
{ 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 ),
{ 19: }
( sym: 263; act: 22 ),
( 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 ),
{ 20: }
( sym: 262; act: 24 ),
( 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: }
{ 24: }
{ 25: }
{ 26: }
( sym: 258; act: 9 ),
( sym: 259; act: 10 ),
( sym: 260; act: 11 ),
( sym: 261; act: 12 ),
( sym: 262; act: 31 ),
{ 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: }
( sym: 44; act: 32 ),
( sym: 264; act: 33 ),
{ 28: }
{ 29: }
{ 30: }
{ 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 ),
{ 36: }
{ 37: }
( sym: 44; act: 44 ),
{ 38: }
{ 39: }
{ 40: }
{ 41: }
{ 42: }
( sym: 258; act: 9 ),
( sym: 259; act: 10 ),
( sym: 260; act: 11 ),
( sym: 261; act: 12 ),
( sym: 262; act: 31 )
{ 35: }
( sym: 262; act: 48 ),
{ 43: }
( sym: 44; act: 49 ),
( sym: 264; act: 50 ),
{ 44: }
( sym: 258; act: 9 ),
( sym: 259; act: 10 ),
( sym: 260; act: 11 ),
( sym: 261; act: 12 ),
{ 45: }
{ 46: }
{ 47: }
{ 48: }
{ 49: }
{ 50: }
{ 51: }
{ 52: }
( sym: 258; act: 9 ),
( sym: 259; act: 10 ),
( sym: 260; act: 11 ),
( sym: 261; act: 12 ),
( sym: 262; act: 48 )
{ 53: }
);
yyg : array [1..yyngotos] of YYARec = (
@ -398,39 +540,70 @@ yyg : array [1..yyngotos] of YYARec = (
( sym: -2; act: 18 ),
{ 15: }
{ 16: }
( sym: -16; act: 19 ),
( sym: -15; act: 20 ),
( sym: -17; act: 19 ),
( sym: -16; act: 20 ),
{ 17: }
{ 18: }
{ 19: }
( sym: -15; act: 22 ),
{ 20: }
( sym: -5; act: 23 ),
( sym: -15; act: 33 ),
{ 21: }
( sym: -3; act: 17 ),
( sym: -2; act: 25 ),
( sym: -2; act: 34 ),
{ 22: }
( sym: -17; act: 26 ),
( sym: -8; act: 27 ),
( sym: -15; act: 35 ),
{ 23: }
( sym: -3; act: 17 ),
( sym: -2; act: 37 ),
{ 24: }
( sym: -3; act: 17 ),
( sym: -2; act: 38 ),
{ 25: }
( sym: -3; act: 17 ),
( sym: -2; act: 39 ),
{ 26: }
( sym: -9; act: 28 ),
( sym: -6; act: 29 ),
( sym: -3; act: 30 ),
{ 27: }
{ 28: }
{ 29: }
{ 30: }
{ 31: }
{ 32: }
( sym: -18; act: 34 ),
{ 33: }
( sym: -15; act: 35 ),
( sym: -5; act: 40 ),
{ 34: }
( sym: -9; act: 35 ),
( sym: -6; act: 29 ),
( sym: -3; act: 30 )
{ 35: }
( sym: -15; act: 35 ),
{ 36: }
( sym: -18; act: 42 ),
( sym: -8; act: 43 ),
{ 37: }
{ 38: }
{ 39: }
{ 40: }
{ 41: }
{ 42: }
( sym: -9; act: 45 ),
( sym: -6; act: 46 ),
( sym: -3; act: 47 ),
{ 43: }
{ 44: }
( sym: -3; act: 17 ),
( sym: -2; act: 51 ),
{ 45: }
{ 46: }
{ 47: }
{ 48: }
{ 49: }
( sym: -19; act: 52 ),
{ 50: }
{ 51: }
{ 52: }
( sym: -9; act: 53 ),
( sym: -6; act: 46 ),
( sym: -3; act: 47 )
{ 53: }
);
yyd : array [0..yynstates-1] of Integer = (
@ -443,33 +616,51 @@ yyd : array [0..yynstates-1] of Integer = (
{ 6: } 0,
{ 7: } -11,
{ 8: } -10,
{ 9: } -14,
{ 10: } -16,
{ 11: } -15,
{ 12: } -17,
{ 13: } -19,
{ 9: } -26,
{ 10: } -28,
{ 11: } -27,
{ 12: } -29,
{ 13: } -31,
{ 14: } 0,
{ 15: } -18,
{ 15: } -30,
{ 16: } 0,
{ 17: } -13,
{ 17: } -25,
{ 18: } 0,
{ 19: } 0,
{ 20: } 0,
{ 21: } 0,
{ 22: } -22,
{ 23: } -7,
{ 24: } -20,
{ 25: } -12,
{ 26: } 0,
{ 27: } 0,
{ 28: } -23,
{ 29: } -26,
{ 30: } -27,
{ 22: } 0,
{ 23: } 0,
{ 24: } 0,
{ 25: } 0,
{ 26: } -16,
{ 27: } -17,
{ 28: } -18,
{ 29: } -19,
{ 30: } -20,
{ 31: } -21,
{ 32: } -24,
{ 33: } -9,
{ 34: } 0,
{ 35: } -25
{ 32: } -22,
{ 33: } 0,
{ 34: } -24,
{ 35: } 0,
{ 36: } -34,
{ 37: } 0,
{ 38: } -14,
{ 39: } -15,
{ 40: } -7,
{ 41: } -32,
{ 42: } 0,
{ 43: } 0,
{ 44: } 0,
{ 45: } -35,
{ 46: } -38,
{ 47: } -39,
{ 48: } -33,
{ 49: } -36,
{ 50: } -9,
{ 51: } -13,
{ 52: } 0,
{ 53: } -37
);
yyal : array [0..yynstates-1] of Integer = (
@ -490,25 +681,43 @@ yyal : array [0..yynstates-1] of Integer = (
{ 14: } 15,
{ 15: } 19,
{ 16: } 19,
{ 17: } 21,
{ 18: } 21,
{ 19: } 22,
{ 20: } 23,
{ 21: } 24,
{ 22: } 28,
{ 23: } 28,
{ 24: } 28,
{ 25: } 28,
{ 26: } 28,
{ 27: } 33,
{ 28: } 35,
{ 29: } 35,
{ 30: } 35,
{ 31: } 35,
{ 32: } 35,
{ 33: } 35,
{ 34: } 35,
{ 35: } 40
{ 17: } 31,
{ 18: } 31,
{ 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
);
yyah : array [0..yynstates-1] of Integer = (
@ -528,26 +737,44 @@ yyah : array [0..yynstates-1] of Integer = (
{ 13: } 14,
{ 14: } 18,
{ 15: } 18,
{ 16: } 20,
{ 17: } 20,
{ 18: } 21,
{ 19: } 22,
{ 20: } 23,
{ 21: } 27,
{ 22: } 27,
{ 23: } 27,
{ 24: } 27,
{ 25: } 27,
{ 26: } 32,
{ 27: } 34,
{ 28: } 34,
{ 29: } 34,
{ 30: } 34,
{ 31: } 34,
{ 32: } 34,
{ 33: } 34,
{ 34: } 39,
{ 35: } 39
{ 16: } 30,
{ 17: } 30,
{ 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
);
yygl : array [0..yynstates-1] of Integer = (
@ -571,22 +798,40 @@ yygl : array [0..yynstates-1] of Integer = (
{ 17: } 16,
{ 18: } 16,
{ 19: } 16,
{ 20: } 16,
{ 21: } 17,
{ 22: } 19,
{ 20: } 17,
{ 21: } 18,
{ 22: } 20,
{ 23: } 21,
{ 24: } 21,
{ 25: } 21,
{ 26: } 21,
{ 27: } 24,
{ 28: } 24,
{ 29: } 24,
{ 30: } 24,
{ 31: } 24,
{ 32: } 24,
{ 33: } 25,
{ 34: } 25,
{ 35: } 28
{ 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,
{ 46: } 37,
{ 47: } 37,
{ 48: } 37,
{ 49: } 37,
{ 50: } 38,
{ 51: } 38,
{ 52: } 38,
{ 53: } 41
);
yygh : array [0..yynstates-1] of Integer = (
@ -609,23 +854,41 @@ yygh : array [0..yynstates-1] of Integer = (
{ 16: } 15,
{ 17: } 15,
{ 18: } 15,
{ 19: } 15,
{ 20: } 16,
{ 21: } 18,
{ 19: } 16,
{ 20: } 17,
{ 21: } 19,
{ 22: } 20,
{ 23: } 20,
{ 24: } 20,
{ 25: } 20,
{ 26: } 23,
{ 27: } 23,
{ 28: } 23,
{ 29: } 23,
{ 30: } 23,
{ 31: } 23,
{ 32: } 24,
{ 33: } 24,
{ 34: } 27,
{ 35: } 27
{ 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,
{ 45: } 36,
{ 46: } 36,
{ 47: } 36,
{ 48: } 36,
{ 49: } 37,
{ 50: } 37,
{ 51: } 37,
{ 52: } 40,
{ 53: } 40
);
yyr : array [1..yynrules] of YYRRec = (
@ -634,28 +897,40 @@ yyr : array [1..yynrules] of YYRRec = (
{ 3: } ( len: 1; sym: -11 ),
{ 4: } ( len: 1; sym: -11 ),
{ 5: } ( len: 1; sym: -12 ),
{ 6: } ( len: 0; sym: -15 ),
{ 7: } ( len: 4; sym: -14 ),
{ 8: } ( len: 0; sym: -16 ),
{ 9: } ( len: 6; sym: -14 ),
{ 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: 4; sym: -13 ),
{ 13: } ( len: 1; sym: -2 ),
{ 14: } ( len: 1; sym: -3 ),
{ 15: } ( len: 1; sym: -3 ),
{ 16: } ( len: 1; sym: -3 ),
{ 17: } ( len: 1; sym: -3 ),
{ 18: } ( len: 1; sym: -4 ),
{ 19: } ( len: 1; sym: -4 ),
{ 20: } ( len: 1; sym: -5 ),
{ 21: } ( len: 1; sym: -6 ),
{ 22: } ( len: 0; sym: -17 ),
{ 23: } ( len: 2; sym: -8 ),
{ 24: } ( len: 0; sym: -18 ),
{ 25: } ( len: 4; sym: -8 ),
{ 26: } ( len: 1; sym: -9 ),
{ 27: } ( len: 1; sym: -9 )
{ 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 )
);

View File

@ -147,7 +147,8 @@ var
%token _ILLEGAL
%token _NUMDECIMAL _NUMHEX _NUMDECIMALL _NUMHEXL _QUOTEDSTR
%token _BEGIN _END
%token _LANGUAGE _VERSION
%token _LANGUAGE _CHARACTERISTICS _VERSION _MOVEABLE _FIXED _PURE _IMPURE _PRELOAD _LOADONCALL _DISCARDABLE
%token _ID
%type <rcnumtype> numpos numeral
@ -172,8 +173,8 @@ resourcedef
;
res_user
: resid resid { create_resource($1, $2); } filename_string { assign_custom_stream($4); }
| resid resid { create_resource($1, $2); } _BEGIN raw_data _END { aktresource.SetCustomRawDataStream($5); }
: 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); }
;
@ -182,6 +183,21 @@ resid
| ident_string { $$:= TResourceDesc.Create($1); }
;
suboptions
: suboptions suboptions
| _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; }
| _FIXED { aktresource.MemoryFlags:= aktresource.MemoryFlags and not MF_MOVEABLE; }
| _PURE { aktresource.MemoryFlags:= aktresource.MemoryFlags or MF_PURE; }
| _IMPURE { aktresource.MemoryFlags:= aktresource.MemoryFlags and not MF_PURE; }
| _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
: _LANGUAGE numpos ',' numpos { language:= MakeLangID($2.v, $4.v); }