|
@@ -116,6 +116,7 @@ type
|
|
procedure ExpectToken(tk: TToken);
|
|
procedure ExpectToken(tk: TToken);
|
|
function ExpectIdentifier: String;
|
|
function ExpectIdentifier: String;
|
|
|
|
|
|
|
|
+ function ParseType(Parent: TPasElement; Prefix : String): TPasType;
|
|
function ParseType(Parent: TPasElement): TPasType;
|
|
function ParseType(Parent: TPasElement): TPasType;
|
|
function ParseComplexType: TPasType;
|
|
function ParseComplexType: TPasType;
|
|
procedure ParseArrayType(Element: TPasArrayType);
|
|
procedure ParseArrayType(Element: TPasArrayType);
|
|
@@ -288,6 +289,12 @@ end;
|
|
|
|
|
|
function TPasParser.ParseType(Parent: TPasElement): TPasType;
|
|
function TPasParser.ParseType(Parent: TPasElement): TPasType;
|
|
|
|
|
|
|
|
+begin
|
|
|
|
+ Result:=ParseType(Parent,'');
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TPasParser.ParseType(Parent: TPasElement; Prefix : String): TPasType;
|
|
|
|
+
|
|
procedure ParseRange;
|
|
procedure ParseRange;
|
|
begin
|
|
begin
|
|
Result := TPasRangeType(CreateElement(TPasRangeType, '', Parent));
|
|
Result := TPasRangeType(CreateElement(TPasRangeType, '', Parent));
|
|
@@ -314,11 +321,13 @@ begin
|
|
begin
|
|
begin
|
|
TypeToken := CurToken;
|
|
TypeToken := CurToken;
|
|
Name := CurTokenString;
|
|
Name := CurTokenString;
|
|
|
|
+ If (Prefix<>'') then
|
|
|
|
+ Name:=Prefix+'.'+Name;
|
|
NextToken;
|
|
NextToken;
|
|
if CurToken = tkDot then
|
|
if CurToken = tkDot then
|
|
begin
|
|
begin
|
|
ExpectIdentifier;
|
|
ExpectIdentifier;
|
|
- Name := CurTokenString;
|
|
|
|
|
|
+ Name := Name+'.'+CurTokenString;
|
|
end else
|
|
end else
|
|
UngetToken;
|
|
UngetToken;
|
|
Ref := nil;
|
|
Ref := nil;
|
|
@@ -848,6 +857,8 @@ var
|
|
|
|
|
|
var
|
|
var
|
|
EnumValue: TPasEnumValue;
|
|
EnumValue: TPasEnumValue;
|
|
|
|
+ Prefix : String;
|
|
|
|
+
|
|
begin
|
|
begin
|
|
TypeName := CurTokenString;
|
|
TypeName := CurTokenString;
|
|
ExpectToken(tkEqual);
|
|
ExpectToken(tkEqual);
|
|
@@ -897,14 +908,15 @@ begin
|
|
end;
|
|
end;
|
|
tkIdentifier:
|
|
tkIdentifier:
|
|
begin
|
|
begin
|
|
|
|
+ Prefix:=CurTokenString;
|
|
NextToken;
|
|
NextToken;
|
|
if CurToken = tkDot then
|
|
if CurToken = tkDot then
|
|
- begin
|
|
|
|
- // !!!: Store the full identifier
|
|
|
|
|
|
+ begin
|
|
ExpectIdentifier;
|
|
ExpectIdentifier;
|
|
NextToken;
|
|
NextToken;
|
|
- end;
|
|
|
|
-
|
|
|
|
|
|
+ end
|
|
|
|
+ else
|
|
|
|
+ Prefix:='';
|
|
if CurToken = tkSemicolon then
|
|
if CurToken = tkSemicolon then
|
|
begin
|
|
begin
|
|
UngetToken;
|
|
UngetToken;
|
|
@@ -912,7 +924,7 @@ begin
|
|
Result := TPasAliasType(CreateElement(TPasAliasType, TypeName,
|
|
Result := TPasAliasType(CreateElement(TPasAliasType, TypeName,
|
|
Parent));
|
|
Parent));
|
|
try
|
|
try
|
|
- TPasAliasType(Result).DestType := ParseType(nil);
|
|
|
|
|
|
+ TPasAliasType(Result).DestType := ParseType(nil,Prefix);
|
|
ExpectToken(tkSemicolon);
|
|
ExpectToken(tkSemicolon);
|
|
except
|
|
except
|
|
Result.Free;
|
|
Result.Free;
|
|
@@ -1822,7 +1834,10 @@ end.
|
|
|
|
|
|
{
|
|
{
|
|
$Log$
|
|
$Log$
|
|
- Revision 1.8 2004-09-13 16:02:36 peter
|
|
|
|
|
|
+ Revision 1.9 2004-10-16 18:55:31 michael
|
|
|
|
+ + Support for cross-unit aliases
|
|
|
|
+
|
|
|
|
+ Revision 1.8 2004/09/13 16:02:36 peter
|
|
* fix nested for-loop with same index
|
|
* fix nested for-loop with same index
|
|
|
|
|
|
Revision 1.7 2004/07/23 23:40:35 michael
|
|
Revision 1.7 2004/07/23 23:40:35 michael
|