123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311 |
- MODULE FoxGlobal;
- IMPORT SyntaxTree := FoxSyntaxTree, Basic := FoxBasic, Scanner := FoxScanner, Strings, Dates;
- CONST
- StringWinAPI* = \"WINAPI"\;
- StringC* = \"C"\;
- StringPlatformCC* = \"PlatformCC"\;
- StringMovable* = \"MOVABLE"\;
- StringUntraced* = \"UNTRACED"\;
- StringDelegate* = \"DELEGATE"\;
- StringInterrupt* = \"INTERRUPT"\;
- StringPcOffset* = \"PCOFFSET"\;
- StringEntry* = \"INITIAL"\;
- StringExit* = \"FINAL"\;
- StringNoPAF* = \"NOPAF"\;
- StringFixed* = \"FIXED"\;
- StringFictive* = \"FICTIVE"\;
- StringAligned* = \"ALIGNED"\;
- StringAlignStack* = \"ALIGNSTACK"\;
- StringFinal* = \"FINAL"\;
- StringAbstract* = \"ABSTRACT"\;
- StringRegister* = \"REGISTER"\;
- StringNoReturn* = \"NORETURN"\;
- StringUnsafe* = \"UNSAFE"\;
- StringPlain* = \"PLAIN"\;
- StringDisposable* = \"DISPOSABLE"\;
- StringUnchecked* = \"UNCHECKED"\;
- StringUncooperative* = \"UNCOOPERATIVE"\;
- StringExclusive* = \"EXCLUSIVE"\;
- StringActive* = \"ACTIVE"\;
- StringPriority* = \"PRIORITY"\;
- StringSafe* = \"SAFE"\;
- StringRealtime* = \"REALTIME"\;
- StringDynamic* = \"DYNAMIC"\;
- StringFingerprint* = \"Fingerprint"\;
- StringInstructionWidth* = \"InstructionWidth"\;
- StringDataMemorySize* = \"DataMemorySize"\;
- StringCodeMemorySize* = \"CodeMemorySize"\;
- StringChannelWidth* = \"ChannelWidth"\;
- StringChannelDepth* = \"ChannelDepth"\;
- StringChannelModule* = \"Channels"\;
- StringSystemModule* = \"SYSTEM"\;
- StringsystemModule* = \"system"\;
- StringBaseMem* = \"BaseMem"\;
- StringBaseDiv* = \"BaseDiv"\;
- StringVector* = \"Vector"\;
- StringFloatingPoint* = \"FloatingPoint"\;
- StringNoMul* = \"NoMul"\;
- StringNonBlockingIO* = \"HasNonBlockingIO"\;
- StringFrequencyDivider* = \"FrequencyDivider"\;
- StringEngine* = \"Engine"\;
- StringTRM* = \"TRM"\;
- StringTRMS* = \"TRMS"\;
- StringBackend* = \"Backend"\;
- StringRuntime* = \"Runtime"\;
- WithTrap* = 1;
- CaseTrap* = 2;
- ReturnTrap* = 3;
- TypeEqualTrap* = 5;
- TypeCheckTrap* = 6;
- IndexCheckTrap* = 7;
- AssertTrap* = 8;
- ArraySizeTrap* = 9;
- ArrayFormTrap* = 10;
- NoReturnTrap* = 16;
- Assert* = (Scanner.EndOfText + 1);
- Copy* = (Assert + 1);
- Dec* = (Copy + 1);
- Excl* = (Dec + 1);
- Halt* = (Excl + 1);
- Inc* = (Halt + 1);
- Incl* = (Inc + 1);
- New* = (Incl + 1);
- Dispose* = (New + 1);
- GetProcedure* = (Dispose + 1);
- Connect* = (GetProcedure + 1);
- Delegate* = (Connect + 1);
- Read* = (Delegate + 1);
- Write* = (Read + 1);
- Reshape* = (Write + 1);
- Wait* = (Reshape + 1);
- Abs* = (Wait + 1);
- Cap* = (Abs + 1);
- Chr* = (Cap + 1);
- Chr32* = (Chr + 1);
- Entier* = (Chr32 + 1);
- EntierH* = (Entier + 1);
- Incr* = (EntierH + 1);
- Len* = (Incr + 1);
- Long* = (Len + 1);
- Max* = (Long + 1);
- Min* = (Max + 1);
- Odd* = (Min + 1);
- Ord* = (Odd + 1);
- Ord32* = (Ord + 1);
- Short* = (Ord32 + 1);
- Size* = (Short + 1);
- Sum* = (Size + 1);
- Dim* = (Sum + 1);
- Cas* = (Dim + 1);
- First* = (Cas + 1);
- Last* = (First + 1);
- Step* = (Last + 1);
- Re* = (Step + 1);
- Im* = (Re + 1);
- Ash* = (Im + 1);
- Lsh* = (Ash + 1);
- Rot* = (Lsh + 1);
- All* = (Rot + 1);
- systemGet* = (All + 1);
- systemPut* = (systemGet + 1);
- systemMove* = (systemPut + 1);
- systemNew* = (systemMove + 1);
- systemRef* = (systemNew + 1);
- systemTypeCode* = (systemRef + 1);
- systemHalt* = (systemTypeCode + 1);
- systemPut8* = (systemHalt + 1);
- systemPut16* = (systemPut8 + 1);
- systemPut32* = (systemPut16 + 1);
- systemPut64* = (systemPut32 + 1);
- systemTrace* = (systemPut64 + 1);
- systemSetStackPointer* = (systemTrace + 1);
- systemSetFramePointer* = (systemSetStackPointer + 1);
- systemSetActivity* = (systemSetFramePointer + 1);
- systemAdr* = (systemSetActivity + 1);
- systemSize* = (systemAdr + 1);
- systemBit* = (systemSize + 1);
- systemGet64* = (systemBit + 1);
- systemGet32* = (systemGet64 + 1);
- systemGet16* = (systemGet32 + 1);
- systemGet8* = (systemGet16 + 1);
- systemVal* = (systemGet8 + 1);
- systemMsk* = (systemVal + 1);
- systemGetStackPointer* = (systemMsk + 1);
- systemGetFramePointer* = (systemGetStackPointer + 1);
- systemGetActivity* = (systemGetFramePointer + 1);
- Send* = (systemGetActivity + 1);
- Receive* = (Send + 1);
- systemSpecial* = (Receive + 1);
- Asr* = (systemSpecial + 1);
- Ror* = (Asr + 1);
- Flt* = (Ror + 1);
- Conversion* = (Flt + 1);
- DotTimesPlus* = (Conversion + 1);
- AtMulDec* = (DotTimesPlus + 1);
- AtMulInc* = (AtMulDec + 1);
- DecMul* = (AtMulInc + 1);
- IncMul* = (DecMul + 1);
- endFox* = (IncMul + 1);
- VectorCapability* = 0;
- FloatingPointCapability* = 1;
- EngineCapability* = 2;
- TRMSCapability* = 3;
- NoMulCapability* = 4;
- NonBlockingIOCapability* = 5;
- LynxChar* = \"@lynx_char"\;
- LynxSbyte* = \"@lynx_sbyte"\;
- LynxShort* = \"@lynx_short"\;
- LynxInt* = \"@lynx_int"\;
- LynxLong* = \"@lynx_long"\;
- LynxFloat* = \"@lynx_float"\;
- LynxDouble* = \"@lynx_double"\;
- LynxBool* = \"@lynx_bool"\;
- LynxObject* = \"@lynx_object"\;
- LynxString* = \"@lynx_string"\;
- LynxNewobj* = \"lynx@newobj"\;
- LynxNewarr* = \"lynx@newarr"\;
- LynxAsop* = \"lynx@asop"\;
- LynxUnop* = \"lynx@unop"\;
- LynxBinop* = \"lynx@binop"\;
- LynxSend* = \"lynx@send"\;
- LynxReceive* = \"lynx@receive"\;
- LynxRecvnb* = \"lynx@recvnb"\;
- LynxConnect* = \"lynx@connect"\;
- LynxDelegate* = \"lynx@delegate"\;
- LynxNewsel* = \"lynx@newsel"\;
- LynxAddsel* = \"lynx@addsel"\;
- LynxSelect* = \"lynx@select"\;
- LynxSelidx* = \"lynx@selidx"\;
- LynxOpAdd* = 1;
- LynxOpSub* = 2;
- LynxOpMul* = 3;
- LynxOpDiv* = 4;
- LynxOpRem* = 5;
- LynxOpAnd* = 6;
- LynxOpOr* = 7;
- LynxOpXor* = 8;
- LynxOpShl* = 9;
- LynxOpShr* = 10;
- LynxOpNot* = 11;
- SymLynxNewobj* = endFox;
- SymLynxNewarr* = (endFox + 1);
- SymLynxAsop* = (endFox + 2);
- SymLynxUnop* = (endFox + 3);
- SymLynxBinop* = (endFox + 4);
- SymLynxRecvnb* = (endFox + 5);
- SymLynxNewsel* = (endFox + 6);
- SymLynxAddsel* = (endFox + 7);
- SymLynxSelect* = (endFox + 8);
- SymLynxSelidx* = (endFox + 9);
- end = (endFox + 10);
- TYPE
- Position = SyntaxTree.Position;
- Alignment* = RECORD
- min, max: LONGINT;
- END;
- PassInRegisterProc = PROCEDURE {DELEGATE}(type: SyntaxTree.Type):BOOLEAN;
- System* = OBJECT
- VAR
- systemScope-, globalScope-: ARRAY 2 OF SyntaxTree.ModuleScope;
- systemModule-, globalModule-: ARRAY 2 OF SyntaxTree.Module;
- activeCellsCapabilities-: SyntaxTree.Symbol;
- codeUnit-: LONGINT;
- dataUnit-: LONGINT;
- variableAlignment-, parameterAlignment-: Alignment;
- offsetFirstParameter-: LONGINT;
- operatorDefined-: ARRAY end OF BOOLEAN;
- addressSize-: LONGINT;
- addressType-, sizeType-, shortintType-, integerType-, longintType-, hugeintType-, wordType-, longWordType-, wordSetType-, characterType-, characterType8-, characterType16-, characterType32-, setType-, booleanType-, anyType-, byteType-, realType-, longrealType-, complexType-, longcomplexType-, objectType-, nilType-, rangeType-, lenType-: SyntaxTree.Type;
- CanPassInRegister-: PassInRegisterProc;
- cellsAreObjects-: BOOLEAN;
- platformCallingConvention-: SyntaxTree.CallingConvention;
- PROCEDURE ^ & InitSystem*(codeUnit, dataUnit: LONGINT; addressSize, minVarAlign, maxVarAlign, minParAlign, maxParAlign, offsetFirstPar: LONGINT; cooperative: BOOLEAN);
- PROCEDURE ^ SetPlatformCallingConvention*(callingConvention: SyntaxTree.CallingConvention);
- PROCEDURE ^ SetCellsAreObjects*(c: BOOLEAN);
- PROCEDURE ^ SetRegisterPassCallback*(canPassInRegister: PassInRegisterProc);
- PROCEDURE ^ AddCapability*(name: SyntaxTree.Identifier);
- PROCEDURE ^ GenerateRecordOffsets*(x: SyntaxTree.RecordType): BOOLEAN;
- PROCEDURE ^ GenerateCellOffsets(x: SyntaxTree.CellType): BOOLEAN;
- PROCEDURE ^ GenerateVariableOffsets*(scope: SyntaxTree.Scope): BOOLEAN;
- PROCEDURE ^ GenerateParameterOffsets*(procedure: SyntaxTree.Procedure; nestedProcedure: BOOLEAN): BOOLEAN;
- PROCEDURE ^ SizeOf*(type: SyntaxTree.Type): LONGINT;
- PROCEDURE ^ SizeOfParameter*(par: SyntaxTree.Parameter): LONGINT;
- PROCEDURE ^ SizeOfVariable*(var: SyntaxTree.Variable): LONGINT;
- PROCEDURE ^ AlignmentOf*(CONST alignment: Alignment; type: SyntaxTree.Type): LONGINT;
- PROCEDURE ^ AlignedSizeOf*(type: SyntaxTree.Type): LONGINT;
- PROCEDURE ^ IsLynx*(): BOOLEAN;
- END System;
- VAR
- SelfParameterName-, ReturnParameterName-, SystemName-, systemName-, PointerReturnName-, ResultName-, A2Name-, ArrayBaseName-, ComplexNumbersName-, RecordBodyName-, ModuleBodyName-, NameWinAPI-, NameC-, NamePlatformCC-, NameMovable-, NameUntraced-, NameDelegate-, NameInterrupt-, NamePcOffset-, NameNoPAF-, NameEntry-, NameExit-, NameFixed-, NameFictive-, NameAligned-, NameStackAligned-, NameExclusive-, NameActive-, NamePriority-, NameSafe-, NameRealtime-, NameDynamic-, NameFingerprint-, NameDataMemorySize-, NameCodeMemorySize-, NameChannelWidth-, NameChannelDepth-, NameChannelModule-, NameVector-, NameFloatingPoint-, NameNoMul-, NameNonBlockingIO-, NameTRM-, NameTRMS-, NameEngine-, NameFinal-, NameAbstract-, NameBackend-, NameRuntime-, NameFrequencyDivider-, NameRegister-, NameNoReturn-, NamePlain-, NameUnsafe-, NameDisposable-, NameUnchecked-, NameUncooperative-: SyntaxTree.Identifier;
- identifiers: ARRAY 2 OF ARRAY end OF SyntaxTree.Identifier;
- Boolean8-, Boolean32-: SyntaxTree.BooleanType;
- Integer8-, Integer16-, Integer32-, Integer64-: SyntaxTree.IntegerType;
- Unsigned8-, Unsigned16-, Unsigned32-, Unsigned64-: SyntaxTree.IntegerType;
- Character8-, Character16-, Character32-: SyntaxTree.CharacterType;
- Set8-, Set16-, Set32-, Set64-: SyntaxTree.SetType;
- Float32-, Float64-: SyntaxTree.FloatType;
- Complex64-, Complex128-: SyntaxTree.ComplexType;
- Byte8: SyntaxTree.ByteType;
- Byte32: SyntaxTree.ByteType;
- PROCEDURE ^ BuildScopes(system: System);
- PROCEDURE ^ SetDefaultDeclarations*(system: System; minBits: LONGINT);
- PROCEDURE ^ OperatorDefined*(system: System; op: LONGINT; defined: BOOLEAN);
- PROCEDURE ^ SetDefaultOperators*(system: System);
- PROCEDURE ^ DefaultSystem*(): System;
- PROCEDURE ^ IsOberonProcedure*(type: SyntaxTree.Type): BOOLEAN;
- PROCEDURE ^ AlignedSizeOf*(system: System; CONST alignment: Alignment; type: SyntaxTree.Type): LONGINT;
- PROCEDURE ^ IsSystemModule*(module: SyntaxTree.Module): BOOLEAN;
- PROCEDURE ^ DeclareType0(type: SyntaxTree.Type; CONST name: ARRAY OF CHAR; in: SyntaxTree.Scope);
- PROCEDURE ^ DeclareType*(type: SyntaxTree.Type; CONST name: ARRAY OF CHAR; CONST scope: ARRAY OF SyntaxTree.ModuleScope);
- PROCEDURE ^ DeclareLynxType*(type: SyntaxTree.Type; CONST name: ARRAY OF CHAR; CONST scope: ARRAY OF SyntaxTree.ModuleScope);
- PROCEDURE ^ NewConstant0(CONST name: ARRAY OF CHAR; int: LONGINT; type: SyntaxTree.Type; in: SyntaxTree.Scope);
- PROCEDURE ^ NewConstant*(CONST name: ARRAY OF CHAR; int: LONGINT; type: SyntaxTree.Type; CONST scope: ARRAY OF SyntaxTree.ModuleScope);
- PROCEDURE ^ NewStringConstant0(CONST name: ARRAY OF CHAR; string: SyntaxTree.String; baseType: SyntaxTree.Type; in: SyntaxTree.Scope);
- PROCEDURE ^ NewStringConstant*(CONST name: ARRAY OF CHAR; string: SyntaxTree.String; type: SyntaxTree.Type; CONST scope: ARRAY OF SyntaxTree.ModuleScope);
- PROCEDURE ^ NewStringConstantCamelCase*(CONST name: ARRAY OF CHAR; string: SyntaxTree.String; type: SyntaxTree.Type; CONST scope: ARRAY OF SyntaxTree.ModuleScope);
- PROCEDURE ^ NewBuiltin0(id: LONGINT; CONST name: ARRAY OF CHAR; in: SyntaxTree.ModuleScope; realtime: BOOLEAN);
- PROCEDURE ^ NewBuiltin*(id: LONGINT; CONST name: ARRAY OF CHAR; CONST scope: ARRAY OF SyntaxTree.ModuleScope; realtime: BOOLEAN);
- PROCEDURE ^ NewBuiltinCamelCase*(id: LONGINT; CONST name: ARRAY OF CHAR; CONST scope: ARRAY OF SyntaxTree.ModuleScope; realtime: BOOLEAN);
- PROCEDURE ^ NewCustomBuiltin0(CONST name: ARRAY OF CHAR; scope: SyntaxTree.ModuleScope; subType: SHORTINT; procedureType: SyntaxTree.ProcedureType);
- PROCEDURE ^ NewCustomBuiltin*(CONST name: ARRAY OF CHAR; CONST scope: ARRAY OF SyntaxTree.ModuleScope; subType: SHORTINT; procedureType: SyntaxTree.ProcedureType);
- PROCEDURE ^ GetModuleSectionName*(name, context: SyntaxTree.Identifier; VAR n: ARRAY OF CHAR);
- PROCEDURE ^ ModuleFileName*(name, context: SyntaxTree.Identifier; VAR n: ARRAY OF CHAR);
- PROCEDURE ^ ModuleSectionIdentifier*(name, context: SyntaxTree.Identifier): SyntaxTree.Identifier;
- PROCEDURE ^ ContextFromName*(CONST fileName: ARRAY OF CHAR; VAR module, context: SyntaxTree.Identifier);
- PROCEDURE ^ GetModuleName*(module: SyntaxTree.Module; VAR name: ARRAY OF CHAR);
- PROCEDURE ^ GetModuleSegmentedName*(module: SyntaxTree.Module; VAR name: Basic.SegmentedName);
- PROCEDURE ^ FindSymbol*(CONST name: Basic.SegmentedName; scope: SyntaxTree.Scope): SyntaxTree.Symbol;
- PROCEDURE ^ GetSymbolNameInScope*(symbol: SyntaxTree.Symbol; inScope: SyntaxTree.Scope; VAR name: ARRAY OF CHAR);
- PROCEDURE ^ GetSymbolName*(symbol: SyntaxTree.Symbol; VAR name: ARRAY OF CHAR);
- PROCEDURE ^ GetSymbolSegmentedNameInScope*(symbol: SyntaxTree.Symbol; inScope: SyntaxTree.Scope; VAR pooledName: Basic.SegmentedName);
- PROCEDURE ^ GetSymbolSegmentedName*(symbol: SyntaxTree.Symbol; VAR pooledName: Basic.SegmentedName);
- PROCEDURE ^ Level*(t: SyntaxTree.Type): LONGINT;
- PROCEDURE ^ ConvertSigned*(this: HUGEINT; bits: LONGINT): HUGEINT;
- PROCEDURE ^ ConvertUnsigned*(this: HUGEINT; bits: LONGINT): HUGEINT;
- PROCEDURE ^ MaxInteger*(system: System; type: SyntaxTree.BasicType; signed: BOOLEAN): HUGEINT;
- PROCEDURE ^ MinInteger*(system: System; type: SyntaxTree.BasicType; signed: BOOLEAN): HUGEINT;
- PROCEDURE ^ MaxFloat*(system: System; type: SyntaxTree.FloatType): LONGREAL;
- PROCEDURE ^ MinFloat*(system: System; type: SyntaxTree.FloatType): LONGREAL;
- PROCEDURE ^ ConvertSet*(this: Basic.Set; bits: LONGINT): Basic.Set;
- PROCEDURE ^ IsUnsignedInteger*(this: HUGEINT; sizeInBits: LONGINT): BOOLEAN;
- PROCEDURE ^ IsSignedInteger*(this: HUGEINT; sizeInBits: LONGINT): BOOLEAN;
- PROCEDURE ^ GetSignedIntegerType*(system: System; this: HUGEINT): SyntaxTree.IntegerType;
- PROCEDURE ^ GetIntegerType*(system: System; this: HUGEINT): SyntaxTree.IntegerType;
- PROCEDURE ^ NewIntegerValue*(system: System; position: Position; hugeint: HUGEINT): SyntaxTree.Value;
- PROCEDURE ^ NewBooleanValue*(system: System; position: Position; b: BOOLEAN): SyntaxTree.Value;
- PROCEDURE ^ GetSetType*(system: System; this: Basic.Set): SyntaxTree.SetType;
- PROCEDURE ^ NewSetValue*(system: System; position: Position; s: Basic.Set): SyntaxTree.Value;
- PROCEDURE ^ NewCharacterValue*(system: System; position: Position; c: CHAR): SyntaxTree.Value;
- PROCEDURE ^ NewNilValue*(system: System; position: Position): SyntaxTree.Value;
- PROCEDURE ^ BasicTypeDistance*(system: System; from, to: SyntaxTree.BasicType): LONGINT;
- PROCEDURE ^ GetIdentifier*(symbol: LONGINT; case: LONGINT): SyntaxTree.Identifier;
- PROCEDURE ^ GetSymbol*(case: LONGINT; id: SyntaxTree.Identifier): LONGINT;
- PROCEDURE ^ InitIdentifiers;
- PROCEDURE ^ Init;
- BEGIN
- END FoxGlobal.
|