|
@@ -188,7 +188,7 @@ CONST
|
|
VAR
|
|
VAR
|
|
(* names *)
|
|
(* names *)
|
|
SelfParameterName-,ReturnParameterName-,SystemName-,systemName-,PointerReturnName-, ResultName-,
|
|
SelfParameterName-,ReturnParameterName-,SystemName-,systemName-,PointerReturnName-, ResultName-,
|
|
- A2Name-,OberonName-,ArrayBaseName-, ComplexNumbersName-, RecordBodyName-,ModuleBodyName-,
|
|
|
|
|
|
+ A2Name-,ArrayBaseName-, ComplexNumbersName-, RecordBodyName-,ModuleBodyName-,
|
|
NameWinAPI-,NameC-,NameMovable-,NameUntraced-,NameDelegate-,NameInterrupt-, NamePcOffset-, NameNoPAF-,NameEntry-, NameExit-, NameFixed-,NameFictive-, NameAligned-,NameStackAligned-,
|
|
NameWinAPI-,NameC-,NameMovable-,NameUntraced-,NameDelegate-,NameInterrupt-, NamePcOffset-, NameNoPAF-,NameEntry-, NameExit-, NameFixed-,NameFictive-, NameAligned-,NameStackAligned-,
|
|
NameExclusive-,NameActive-,NamePriority-,NameSafe-,NameRealtime-, NameDynamic-, NameFingerprint-, NameDataMemorySize-, NameCodeMemorySize-
|
|
NameExclusive-,NameActive-,NamePriority-,NameSafe-,NameRealtime-, NameDynamic-, NameFingerprint-, NameDataMemorySize-, NameCodeMemorySize-
|
|
, NameChannelWidth-, NameChannelDepth-, NameChannelModule-, NameVector-, NameFloatingPoint-, NameNoMul-,NameNonBlockingIO-, NameTRM-, NameTRMS-, NameEngine-, NameFinal-, NameAbstract-,
|
|
, NameChannelWidth-, NameChannelDepth-, NameChannelModule-, NameVector-, NameFloatingPoint-, NameNoMul-,NameNonBlockingIO-, NameTRM-, NameTRMS-, NameEngine-, NameFinal-, NameAbstract-,
|
|
@@ -1174,18 +1174,37 @@ TYPE
|
|
NewCustomBuiltin0(nameL, scope[Scanner.Lowercase], subType, procedureType)
|
|
NewCustomBuiltin0(nameL, scope[Scanner.Lowercase], subType, procedureType)
|
|
END NewCustomBuiltin;
|
|
END NewCustomBuiltin;
|
|
|
|
|
|
- PROCEDURE ModuleFileName*(moduleName,context: SyntaxTree.Identifier; VAR fileName: ARRAY OF CHAR);
|
|
|
|
- VAR prefix,name: Scanner.IdentifierString;
|
|
|
|
|
|
+ PROCEDURE GetModuleSectionName*(name, context: SyntaxTree.Identifier; VAR n: ARRAY OF CHAR);
|
|
|
|
+ VAR s: SyntaxTree.IdentifierString;
|
|
BEGIN
|
|
BEGIN
|
|
- Basic.GetString(moduleName,name);
|
|
|
|
- IF (context = SyntaxTree.invalidIdentifier) OR (context = A2Name) THEN
|
|
|
|
- COPY(name,fileName);
|
|
|
|
|
|
+ IF context # SyntaxTree.invalidIdentifier THEN
|
|
|
|
+ Basic.GetString(context,n);
|
|
|
|
+ IF n = "A2" THEN
|
|
|
|
+ Basic.GetString(name,n);
|
|
|
|
+ RETURN;
|
|
|
|
+ END;
|
|
|
|
+ Basic.GetString(name,s);
|
|
|
|
+ Strings.Append(n,"-");Strings.Append(n,s);
|
|
ELSE
|
|
ELSE
|
|
- ASSERT(context=OberonName);
|
|
|
|
- Basic.GetString(context,prefix);
|
|
|
|
- Basic.Concat(fileName,prefix,".",name);
|
|
|
|
|
|
+ Basic.GetString(name,n);
|
|
END;
|
|
END;
|
|
|
|
+ END GetModuleSectionName;
|
|
|
|
+
|
|
|
|
+ PROCEDURE ModuleFileName*(name, context: SyntaxTree.Identifier; VAR n: ARRAY OF CHAR);
|
|
|
|
+ BEGIN
|
|
|
|
+ GetModuleSectionName(name, context, n);
|
|
END ModuleFileName;
|
|
END ModuleFileName;
|
|
|
|
+
|
|
|
|
+ PROCEDURE ModuleSectionIdentifier*(name, context: SyntaxTree.Identifier): SyntaxTree.Identifier;
|
|
|
|
+ VAR s,n: SyntaxTree.IdentifierString;
|
|
|
|
+ BEGIN
|
|
|
|
+ IF context # SyntaxTree.invalidIdentifier THEN
|
|
|
|
+ GetModuleSectionName(name, context, n);
|
|
|
|
+ RETURN SyntaxTree.NewIdentifier(n);
|
|
|
|
+ ELSE
|
|
|
|
+ RETURN name
|
|
|
|
+ END;
|
|
|
|
+ END ModuleSectionIdentifier;
|
|
|
|
|
|
PROCEDURE ContextFromName*(CONST fileName: ARRAY OF CHAR; VAR module,context: SyntaxTree.Identifier);
|
|
PROCEDURE ContextFromName*(CONST fileName: ARRAY OF CHAR; VAR module,context: SyntaxTree.Identifier);
|
|
VAR moduleName, contextName: Scanner.IdentifierString; i,j: LONGINT;
|
|
VAR moduleName, contextName: Scanner.IdentifierString; i,j: LONGINT;
|
|
@@ -1214,26 +1233,14 @@ TYPE
|
|
PROCEDURE GetModuleName*(module: SyntaxTree.Module; VAR name: ARRAY OF CHAR);
|
|
PROCEDURE GetModuleName*(module: SyntaxTree.Module; VAR name: ARRAY OF CHAR);
|
|
VAR n: SyntaxTree.IdentifierString;
|
|
VAR n: SyntaxTree.IdentifierString;
|
|
BEGIN
|
|
BEGIN
|
|
- name := "";
|
|
|
|
- IF module.context # SyntaxTree.invalidIdentifier THEN
|
|
|
|
- Basic.GetString(module.context,n);
|
|
|
|
- IF n# "A2" THEN Strings.Append(name,n);Strings.Append(name,".") END;
|
|
|
|
- END;
|
|
|
|
- module.GetName(n);
|
|
|
|
- Strings.Append(name,n);
|
|
|
|
|
|
+ GetModuleSectionName(module.name, module.context, name);
|
|
END GetModuleName;
|
|
END GetModuleName;
|
|
|
|
|
|
PROCEDURE GetModuleSegmentedName*(module: SyntaxTree.Module; VAR name: Basic.SegmentedName);
|
|
PROCEDURE GetModuleSegmentedName*(module: SyntaxTree.Module; VAR name: Basic.SegmentedName);
|
|
|
|
+ VAR moduleName: SyntaxTree.IdentifierString;
|
|
BEGIN
|
|
BEGIN
|
|
- Basic.InitSegmentedName(name);
|
|
|
|
- IF (module.context # SyntaxTree.invalidIdentifier) & (module.context # A2Name) THEN
|
|
|
|
- name[0] := module.context;
|
|
|
|
- name[1] := module.name;
|
|
|
|
- name[2] := -1;
|
|
|
|
- ELSE
|
|
|
|
- name[0] :=module.name;
|
|
|
|
- name[1] := -1;
|
|
|
|
- END;
|
|
|
|
|
|
+ name[0] := ModuleSectionIdentifier(module.name, module.context);
|
|
|
|
+ name[1] := -1;
|
|
END GetModuleSegmentedName;
|
|
END GetModuleSegmentedName;
|
|
|
|
|
|
PROCEDURE FindSymbol*(CONST name: Basic.SegmentedName; scope: SyntaxTree.Scope): SyntaxTree.Symbol;
|
|
PROCEDURE FindSymbol*(CONST name: Basic.SegmentedName; scope: SyntaxTree.Scope): SyntaxTree.Symbol;
|
|
@@ -1341,10 +1348,7 @@ TYPE
|
|
IF scope = NIL THEN (* do nothing, locally declared temporary symbol *)
|
|
IF scope = NIL THEN (* do nothing, locally declared temporary symbol *)
|
|
ELSIF scope = inScope THEN (* do not traverse further *)
|
|
ELSIF scope = inScope THEN (* do not traverse further *)
|
|
ELSIF scope IS SyntaxTree.ModuleScope THEN
|
|
ELSIF scope IS SyntaxTree.ModuleScope THEN
|
|
- IF scope(SyntaxTree.ModuleScope).ownerModule.context # A2Name THEN
|
|
|
|
- Basic.SuffixSegmentedName(pooledName, scope(SyntaxTree.ModuleScope).ownerModule.context);
|
|
|
|
- END;
|
|
|
|
- Basic.SuffixSegmentedName(pooledName,scope.ownerModule.name);
|
|
|
|
|
|
+ Basic.SuffixSegmentedName(pooledName,ModuleSectionIdentifier(scope.ownerModule.name, scope.ownerModule.context));
|
|
ELSIF scope IS SyntaxTree.RecordScope THEN
|
|
ELSIF scope IS SyntaxTree.RecordScope THEN
|
|
Scope(scope.outerScope);
|
|
Scope(scope.outerScope);
|
|
td := scope(SyntaxTree.RecordScope).ownerRecord.typeDeclaration;
|
|
td := scope(SyntaxTree.RecordScope).ownerRecord.typeDeclaration;
|
|
@@ -1686,7 +1690,6 @@ TYPE
|
|
PointerReturnName := SyntaxTree.NewIdentifier("@PtrReturnType");
|
|
PointerReturnName := SyntaxTree.NewIdentifier("@PtrReturnType");
|
|
ResultName := SyntaxTree.NewIdentifier("RESULT");
|
|
ResultName := SyntaxTree.NewIdentifier("RESULT");
|
|
A2Name := SyntaxTree.NewIdentifier("A2");
|
|
A2Name := SyntaxTree.NewIdentifier("A2");
|
|
- OberonName := SyntaxTree.NewIdentifier("Oberon");
|
|
|
|
ArrayBaseName := SyntaxTree.NewIdentifier("FoxArrayBase");
|
|
ArrayBaseName := SyntaxTree.NewIdentifier("FoxArrayBase");
|
|
ComplexNumbersName := SyntaxTree.NewIdentifier("ComplexNumbers");
|
|
ComplexNumbersName := SyntaxTree.NewIdentifier("ComplexNumbers");
|
|
RecordBodyName := SyntaxTree.NewIdentifier("@Body");
|
|
RecordBodyName := SyntaxTree.NewIdentifier("@Body");
|