From 28ed516e1e4532dbad4bb456e4dadc5aa5f39ea6 Mon Sep 17 00:00:00 2001 From: Vasiliy Tereshkov <52492460+vtereshkov@users.noreply.github.com> Date: Mon, 19 Aug 2019 04:13:15 +0300 Subject: [PATCH] FILE and STRING are now keywords --- README.md | 17 ++--- source/XDPWCommon.inc | 118 ++++++++++++++++++----------------- source/XDPWParser.inc | 141 +++++++++++++++++++++++------------------- system.inc | 2 +- xdpw.exe | Bin 130560 -> 130560 bytes 5 files changed, 150 insertions(+), 128 deletions(-) diff --git a/README.md b/README.md index ed6d92ec..cab6a14a 100644 --- a/README.md +++ b/README.md @@ -65,11 +65,12 @@ ProcFuncDeclarations = ("procedure" | "function") Ident [FormalParam] [":" TypeI Directive = ("forward" | ("external" StringLiteral "name" StringLiteral)) ";" . -ActualParam = "(" (Expression | Designator) | - {"," (Expression | Designator)} ")" . +ActualParams = "(" (Expression | Designator) | + {"," (Expression | Designator)} ")" . -FormalParam = "(" ["const" | "var"] IdentList [":" ["array" "of"] TypeIdent] - {";" ["const" | "var"] IdentList [":" ["array" "of"] TypeIdent]} ")" . +FormalParams = "(" FormalParamList {";" FormalParamList} ")" . + +FormalParamList = ["const" | "var"] IdentList [":" ["array" "of"] TypeIdent] . IdentList = Ident {"," Ident} . @@ -77,7 +78,9 @@ Type = "^" TypeIdent | "array" "[" Type {"," Type} "]" "of" Type | "record" IdentList ":" Type {";" IdentList ":" Type} [";"] "end" | ConstExpression ".." ConstExpression | - TypeIdent . + Ident . + +TypeIdent = "string" | "file" | Ident . Designator = Ident {"^" | ("[" Expression {"," Expression} "]") | ("." Ident)} . @@ -117,9 +120,7 @@ Factor = Ident [ActualParam] | "(" Expression ")" | "not" Factor | "nil" | - TypeIdent "(" Expression ")" . - -TypeIdent = Ident . + Ident "(" Expression ")" . Ident = (Letter | "_") {Letter | "_" | Digit}. diff --git a/source/XDPWCommon.inc b/source/XDPWCommon.inc index 9c98876b..830702d7 100644 --- a/source/XDPWCommon.inc +++ b/source/XDPWCommon.inc @@ -10,7 +10,7 @@ const VERSIONMINOR = 9; NUMDELIMITERS = 22; - NUMKEYWORDS = 31; + NUMKEYWORDS = 33; // Standard token codes @@ -37,37 +37,39 @@ const CBRACKETTOK = 21; DEREFERENCETOK = 22; - ANDTOK = 23; - ARRAYTOK = 24; - BEGINTOK = 25; - CASETOK = 26; - CONSTTOK = 27; - IDIVTOK = 28; - DOTOK = 29; - DOWNTOTOK = 30; - ELSETOK = 31; - ENDTOK = 32; - FORTOK = 33; - FUNCTIONTOK = 34; - IFTOK = 35; - MODTOK = 36; - NILTOK = 37; - NOTTOK = 38; - OFTOK = 39; - ORTOK = 40; - PROCEDURETOK = 41; - PROGRAMTOK = 42; - RECORDTOK = 43; - REPEATTOK = 44; - SHLTOK = 45; - SHRTOK = 46; - THENTOK = 47; - TOTOK = 48; - TYPETOK = 49; - UNTILTOK = 50; - VARTOK = 51; - WHILETOK = 52; - XORTOK = 53; + ANDTOK = NUMDELIMITERS + 1; + ARRAYTOK = NUMDELIMITERS + 2; + BEGINTOK = NUMDELIMITERS + 3; + CASETOK = NUMDELIMITERS + 4; + CONSTTOK = NUMDELIMITERS + 5; + IDIVTOK = NUMDELIMITERS + 6; + DOTOK = NUMDELIMITERS + 7; + DOWNTOTOK = NUMDELIMITERS + 8; + ELSETOK = NUMDELIMITERS + 9; + ENDTOK = NUMDELIMITERS + 10; + FILETOK = NUMDELIMITERS + 11; + FORTOK = NUMDELIMITERS + 12; + FUNCTIONTOK = NUMDELIMITERS + 13; + IFTOK = NUMDELIMITERS + 14; + MODTOK = NUMDELIMITERS + 15; + NILTOK = NUMDELIMITERS + 16; + NOTTOK = NUMDELIMITERS + 17; + OFTOK = NUMDELIMITERS + 18; + ORTOK = NUMDELIMITERS + 19; + PROCEDURETOK = NUMDELIMITERS + 20; + PROGRAMTOK = NUMDELIMITERS + 21; + RECORDTOK = NUMDELIMITERS + 22; + REPEATTOK = NUMDELIMITERS + 23; + SHLTOK = NUMDELIMITERS + 24; + SHRTOK = NUMDELIMITERS + 25; + STRINGTOK = NUMDELIMITERS + 26; + THENTOK = NUMDELIMITERS + 27; + TOTOK = NUMDELIMITERS + 28; + TYPETOK = NUMDELIMITERS + 29; + UNTILTOK = NUMDELIMITERS + 30; + VARTOK = NUMDELIMITERS + 31; + WHILETOK = NUMDELIMITERS + 32; + XORTOK = NUMDELIMITERS + 33; // Non-standard token codes @@ -95,7 +97,7 @@ const BOOLEANTYPE = 6; REALTYPE = 7; POINTERTYPE = 8; - TEXTTYPE = 9; + FILETYPE = 9; ARRAYTYPE = 10; RECORDTYPE = 11; SUBRANGETYPE = 12; @@ -111,7 +113,7 @@ const BOOLEANTYPEINDEX = 6; REALTYPEINDEX = 7; POINTERTYPEINDEX = 8; // Untyped pointer, compatible with any other - TEXTTYPEINDEX = 9; // Universal file type + FILETYPEINDEX = 9; // Universal file type STRINGTYPEINDEX = 10; // Predefined routine codes @@ -312,27 +314,29 @@ Keyword[7] := 'DO'; Keyword[8] := 'DOWNTO'; Keyword[9] := 'ELSE'; Keyword[10] := 'END'; -Keyword[11] := 'FOR'; -Keyword[12] := 'FUNCTION'; -Keyword[13] := 'IF'; -Keyword[14] := 'MOD'; -Keyword[15] := 'NIL'; -Keyword[16] := 'NOT'; -Keyword[17] := 'OF'; -Keyword[18] := 'OR'; -Keyword[19] := 'PROCEDURE'; -Keyword[20] := 'PROGRAM'; -Keyword[21] := 'RECORD'; -Keyword[22] := 'REPEAT'; -Keyword[23] := 'SHL'; -Keyword[24] := 'SHR'; -Keyword[25] := 'THEN'; -Keyword[26] := 'TO'; -Keyword[27] := 'TYPE'; -Keyword[28] := 'UNTIL'; -Keyword[29] := 'VAR'; -Keyword[30] := 'WHILE'; -Keyword[31] := 'XOR'; +Keyword[11] := 'FILE'; +Keyword[12] := 'FOR'; +Keyword[13] := 'FUNCTION'; +Keyword[14] := 'IF'; +Keyword[15] := 'MOD'; +Keyword[16] := 'NIL'; +Keyword[17] := 'NOT'; +Keyword[18] := 'OF'; +Keyword[19] := 'OR'; +Keyword[20] := 'PROCEDURE'; +Keyword[21] := 'PROGRAM'; +Keyword[22] := 'RECORD'; +Keyword[23] := 'REPEAT'; +Keyword[24] := 'SHL'; +Keyword[25] := 'SHR'; +Keyword[26] := 'STRING'; +Keyword[27] := 'THEN'; +Keyword[28] := 'TO'; +Keyword[29] := 'TYPE'; +Keyword[30] := 'UNTIL'; +Keyword[31] := 'VAR'; +Keyword[32] := 'WHILE'; +Keyword[33] := 'XOR'; end; @@ -603,7 +607,7 @@ end; function IsCastableType(const T: TType): Boolean; begin -Result := IsOrdinalType(T) or (T.TypeKind = TEXTTYPE) or (T.TypeKind = POINTERTYPE); +Result := IsOrdinalType(T) or (T.TypeKind = FILETYPE) or (T.TypeKind = POINTERTYPE); end; @@ -685,7 +689,7 @@ case Types[DataType].TypeKind of BOOLEANTYPE: Result := SizeOf(Boolean); REALTYPE: Result := SizeOf(Single); POINTERTYPE: Result := SizeOf(Pointer); - TEXTTYPE: Result := SizeOf(Integer); + FILETYPE: Result := SizeOf(Integer); SUBRANGETYPE: Result := SizeOf(Integer); ARRAYTYPE: if Types[DataType].IsOpenArray then Error('Illegal type', '', -1) diff --git a/source/XDPWParser.inc b/source/XDPWParser.inc index 4ca33b7d..ad925853 100644 --- a/source/XDPWParser.inc +++ b/source/XDPWParser.inc @@ -316,7 +316,7 @@ case proc of // 3rd argument - designator CompileDesignator(DesignatorType); - if Types[DesignatorType].TypeKind = TEXTTYPE then // Text file handle + if Types[DesignatorType].TypeKind = FILETYPE then // Text file handle begin if not IsFirstParam then Error('Incompatible types', '', -1); @@ -403,7 +403,7 @@ case proc of // 3rd argument - expression CompileExpression(ExpressionType); - if Types[ExpressionType].TypeKind = TEXTTYPE then // Text file handle + if Types[ExpressionType].TypeKind = FILETYPE then // Text file handle begin if not IsFirstParam then Error('Incompatible types', '', -1); @@ -1332,28 +1332,25 @@ end;// CompileStatement -procedure CompileType{(var DataType: Integer)}; - - - procedure CompileTypedPointerType(var DataType: Integer); - var - IdentIndex: LongInt; - NestedDataType: Integer; - begin - // Add new anonymous type - Inc(NumTypes); - if NumTypes > MAXTYPES then - Error('Maximum number of types exceeded', '', -1); - - Types[NumTypes].TypeKind := POINTERTYPE; - DataType := NumTypes; - - // Compile pointer base type - NextTok; +procedure CompileTypeIdent(var DataType: Integer; AllowForwardReference: Boolean); +var + IdentIndex: Integer; +begin +// STRING, FILE or type name allowed +case Tok.Kind of + STRINGTOK: + DataType := STRINGTYPEINDEX; + FILETOK: + DataType := FILETYPEINDEX +else AssertIdent; - IdentIndex := GetIdentUnsafe(Tok.Name); - if IdentIndex = 0 then // Check for a forward-referenced base type + if AllowForwardReference then + IdentIndex := GetIdentUnsafe(Tok.Name) + else + IdentIndex := GetIdent(Tok.Name); + + if IdentIndex = 0 then // Forward-referenced type begin // Add new forward-referenced type Inc(NumTypes); @@ -1363,19 +1360,43 @@ procedure CompileType{(var DataType: Integer)}; Types[NumTypes].TypeKind := FORWARDTYPE; Types[NumTypes].TypeIdentName := Tok.Name; Types[NumTypes].Block := BlockStack[BlockStackTop]; - NestedDataType := NumTypes; + DataType := NumTypes; end else begin if Ident[IdentIndex].Kind <> USERTYPE then Error('Type name expected', '', -1); - NestedDataType := Ident[IdentIndex].DataType; // Usual base type + DataType := Ident[IdentIndex].DataType; // Usual type end; +end; // case + +NextTok; +end; + + + + +procedure CompileType{(var DataType: Integer)}; + + + procedure CompileTypedPointerType(var DataType: Integer); + var + NestedDataType: Integer; + begin + // Add new anonymous type + Inc(NumTypes); + if NumTypes > MAXTYPES then + Error('Maximum number of types exceeded', '', -1); + + Types[NumTypes].TypeKind := POINTERTYPE; + DataType := NumTypes; + // Compile pointer base type + NextTok; + CompileTypeIdent(NestedDataType, TRUE); + Types[DataType].BaseType := NestedDataType; Types[DataType].Block := BlockStack[BlockStackTop]; - - NextTok; end; // CompileTypedPointerType @@ -1536,14 +1557,24 @@ var begin // CompileType -if Tok.Kind = DEREFERENCETOK then - CompileTypedPointerType(DataType) -else if Tok.Kind = ARRAYTOK then - CompileArrayType(DataType) -else if Tok.Kind = RECORDTOK then - CompileRecordType(DataType) +case Tok.Kind of + DEREFERENCETOK: + CompileTypedPointerType(DataType); + ARRAYTOK: + CompileArrayType(DataType); + RECORDTOK: + CompileRecordType(DataType); + STRINGTOK: + begin + DataType := STRINGTYPEINDEX; + NextTok; + end; + FILETOK: + begin + DataType := FILETYPEINDEX; + NextTok; + end else // Subrange or type name - begin TypeNameGiven := FALSE; IdentIndex := 0; if Tok.Kind = IDENTTOK then @@ -1559,7 +1590,7 @@ else end else // Subrange CompileSubrangeType(DataType); - end;// else +end; // case end;// CompileType @@ -1671,8 +1702,6 @@ var DeclareId('BOOLEAN', USERTYPE, 0, BOOLEANTYPEINDEX, VALPASSING, 0, 0.0, 0); DeclareId('REAL', USERTYPE, 0, REALTYPEINDEX, VALPASSING, 0, 0.0, 0); DeclareId('POINTER', USERTYPE, 0, POINTERTYPEINDEX, VALPASSING, 0, 0.0, 0); - DeclareId('TEXT', USERTYPE, 0, TEXTTYPEINDEX, VALPASSING, 0, 0.0, 0); - DeclareId('STRING', USERTYPE, 0, STRINGTYPEINDEX, VALPASSING, 0, 0.0, 0); // Procedures DeclareId('INC', PROC, 0, 0, VALPASSING, 0, 0.0, INCPROC); @@ -1721,7 +1750,7 @@ var Types[BOOLEANTYPEINDEX].TypeKind := BOOLEANTYPE; Types[REALTYPEINDEX].TypeKind := REALTYPE; Types[POINTERTYPEINDEX].TypeKind := POINTERTYPE; - Types[TEXTTYPEINDEX].TypeKind := TEXTTYPE; + Types[FILETYPEINDEX].TypeKind := FILETYPE; Types[STRINGTYPEINDEX].TypeKind := ARRAYTYPE; Types[POINTERTYPEINDEX].BaseType := ANYTYPEINDEX; @@ -1909,7 +1938,7 @@ var var IdentInListName: array [1..MAXPARAMS] of TString; NumIdentInList, IdentInListIndex: Integer; - ForwardIdentIndex, TypeIdentIndex: Integer; + ForwardIdentIndex: Integer; ParamType, ResultType: Integer; ListPassMethod: Byte; IsOpenArrayList: Boolean; @@ -1968,6 +1997,7 @@ var until FALSE; + // Formal parameter list type if Tok.Kind = COLONTOK then // Typed parameters begin NextTok; @@ -1980,19 +2010,11 @@ var IsOpenArrayList := TRUE; end else - IsOpenArrayList := FALSE; - - - // Only type names are allowed for formal parameters - AssertIdent; - TypeIdentIndex := GetIdent(Tok.Name); - if Ident[TypeIdentIndex].Kind = USERTYPE then - ParamType := Ident[TypeIdentIndex].DataType - else - Error('Type name expected', '', -1); - NextTok; - - + IsOpenArrayList := FALSE; + + // Type itself + CompileTypeIdent(ParamType, FALSE); + // Special case: open array parameters if IsOpenArrayList then begin @@ -2008,7 +2030,7 @@ var Types[NumTypes].IsOpenArray := TRUE; ParamType := NumTypes; - end; + end; end else // Untyped parameters (CONST or VAR only) ParamType := ANYTYPEINDEX; @@ -2041,20 +2063,15 @@ var EatTok(CPARTOK); end;// if Tok.Kind = OPARTOR + + // Function result type Ident[NumIdent].DataType := 0; - + if IsFunction then begin EatTok(COLONTOK); - - // Only type names are allowed for function results - AssertIdent; - TypeIdentIndex := GetIdent(Tok.Name); - if Ident[TypeIdentIndex].Kind = USERTYPE then - ResultType := Ident[TypeIdentIndex].DataType - else - Error('Type name expected', '', -1); - NextTok; + + CompileTypeIdent(ResultType, FALSE); if IsStructuredType(Types[ResultType]) then Error('Structured result is not allowed', '', -1); diff --git a/system.inc b/system.inc index 04e3009c..8010728e 100644 --- a/system.inc +++ b/system.inc @@ -32,7 +32,7 @@ type Word = SmallInt; LongInt = Integer; Single = Real; - file = Text; + Text = file; PChar = ^Char; TStream = record diff --git a/xdpw.exe b/xdpw.exe index 3c78043f2e0a862a923bbd577d942663ef2a991b..cd2d7e60a0208df2d6422516e5cb875cbf63b7ac 100644 GIT binary patch delta 35194 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 B+h70y delta 35201 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 Dl&#nh