home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / extra18 / optipas / standard.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1991-12-04  |  5.6 KB  |  163 lines

  1. (* ------------------------------------------------- *)
  2. (*                  STANDARD.PAS                     *)
  3. (*      Standardschreibweise aller Pascalwörter      *)
  4. (*    (c) 1991 Wilfried Lottermoser & DMV-Verlag     *)
  5. (* ------------------------------------------------- *)
  6. {$A+,B-,G-,I-,O-,R-,S-,X+,D-,L-}
  7. UNIT Standard;
  8.  
  9. INTERFACE
  10.  
  11.   PROCEDURE StandSchrW(    UpWort : STRING;
  12.                        VAR Wort   : STRING);
  13.   FUNCTION Up(Wort : STRING) : STRING;
  14.     { wandelt 'Wort' in Großbuchstaben um }
  15.  
  16. IMPLEMENTATION
  17.  
  18. CONST
  19.   Prozedur : ARRAY [1..130] OF STRING [18] =
  20.     ('Append', 'Arc', 'Assign', 'AssignCrt', 'Bar',
  21.      'Bar3D', 'BlockRead', 'BlockWrite', 'ChDir',
  22.      'Circle', 'ClearDevice', 'ClearViewPort',
  23.      'Close', 'CloseGraph', 'ClrEol', 'ClrScr',
  24.      'Delay', 'Delete', 'DelLine', 'DetectGraph',
  25.      'Dispose', 'Ellipse', 'Erase', 'Exec', 'Exit',
  26.      'FillChar', 'FillEllipse', 'FillPoly',
  27.      'FindFirst', 'FindNext', 'FloodFill', 'Flush',
  28.      'FreeMem', 'FSplit', 'GetArcCoords',
  29.      'GetAspectRatio', 'GetCBreak', 'GetDate',
  30.      'GetDefaultPalette', 'GetDir', 'GetFAttr',
  31.      'GetFillSettings', 'GetFTime', 'GetImage',
  32.      'GetIntVec', 'GetLineSettings', 'GetMem',
  33.      'GetPalette', 'GetTextSettings', 'GetTime',
  34.      'GetVerify', 'GetViewSettings', 'GotoXY', 'Halt',
  35.      'HighVideo', 'InitGraph', 'Insert', 'InsLine',
  36.      'Intr', 'Keep', 'Line', 'LineRel', 'LineTo',
  37.      'LowVideo', 'Mark', 'MkDir', 'Move', 'MoveTo',
  38.      'New', 'NormVideo', 'NoSound', 'OvrClearBuf',
  39.      'OvrInit', 'OvrInitEMS', 'OvrSetBuf', 'OutText',
  40.      'OutTextXY', 'PackTime', 'PieSlice', 'PutImage',
  41.      'PutPixel', 'Randomize', 'Read', 'ReadLn',
  42.      'Rectangle', 'Release', 'Rename', 'Reset',
  43.      'RestoreCrtMode', 'Rewrite', 'RmDir', 'RunError',
  44.      'Sector', 'Seek', 'SetActivePage',
  45.      'SetAllPalette', 'SetAspectRatio', 'SetBkColor',
  46.      'SetCBreak', 'SetColor', 'SetDate', 'SetFAttr',
  47.      'SetFillPattern', 'SetFillStyle', 'SetFTime',
  48.      'SetGraphMode', 'SetIntVec', 'SetLineStyle',
  49.      'SetPalette', 'SetRGBPalette', 'SetTextBuf',
  50.      'SetTextJustify', 'SetTextStyle', 'SetTime',
  51.      'SetUserCharSize', 'SetVerify', 'SetViewPort',
  52.      'SetVisualPage', 'SetWriteMode', 'Str',
  53.      'SwapVectors', 'TextBackground', 'TextColor',
  54.      'TextMode', 'Truncate', 'UnpackTime',
  55.      'Val', 'Window', 'Write', 'WriteLn');
  56.  
  57. CONST
  58.   Funktion : ARRAY [1..75] OF STRING [14] =
  59.     ('Abs', 'Addr', 'ArcTan', 'Chr', 'Concat', 'Copy',
  60.      'Cos', 'CSeg', 'DiskFree', 'DiskSize',
  61.      'DosExitCode', 'DosVersion', 'DSeg', 'EnvCount',
  62.      'EnvStr', 'Eof', 'EoLn', 'Exp', 'FExpand',
  63.      'FilePos', 'FileSize', 'Frac', 'FSearch',
  64.      'GetBkColor', 'GetColor', 'GetEnv',
  65.      'GetGraphMode', 'GetMaxX', 'GetMaxY',
  66.      'GetPixel', 'GetX', 'GetY', 'GraphErrorMsg',
  67.      'GraphResult', 'Hi', 'ImageSize', 'Int',
  68.      'IOResult', 'KeyPressed', 'Length', 'Lo',
  69.      'MaxAvail', 'MemAvail', 'MsDos', 'Odd', 'Ofs',
  70.      'Ord', 'ParamCount', 'ParamStr', 'Pi', 'Pos',
  71.      'Pred', 'Ptr', 'Random', 'ReadKey', 'Round',
  72.      'SeekEof', 'SeekEoLn', 'Seg', 'SetAspectRatio',
  73.      'Sin', 'SizeOf', 'Sound', 'SPtr', 'Sqr', 'Sqrt',
  74.      'SSeg', 'Succ', 'Swap', 'TextHeight',
  75.      'TextWidth',
  76.      'Trunc', 'UpCase', 'WhereX', 'WhereY');
  77.  
  78. CONST
  79.   reserved : ARRAY [1..59] OF STRING [14] =
  80.     ('ABSOLUTE', 'AND', 'ARRAY', 'BEGIN', 'BOOLEAN',
  81.      'BYTE', 'CASE', 'CHAR', 'CONST', 'DIV', 'DO',
  82.      'DOUBLE', 'DOWNTO', 'ELSE', 'END', 'EXTERNAL',
  83.      'FALSE', 'FILE', 'FOR', 'FORWARD', 'FUNCTION',
  84.      'GOTO', 'IF', 'IMPLEMENTATION', 'IN', 'INLINE',
  85.      'INTEGER', 'INTERFACE', 'INTERRUPT', 'LABEL',
  86.      'LONGINT', 'MOD', 'NIL', 'NOT', 'OF', 'OR',
  87.      'PACKED', 'PROCEDURE', 'PROGRAM', 'REAL',
  88.      'RECORD', 'REPEAT', 'SET', 'SHL', 'SHR', 'STRING',
  89.      'TEXT', 'THEN', 'TO', 'TRUE', 'TYPE', 'UNIT',
  90.      'UNTIL', 'USES', 'VAR', 'WHILE', 'WITH', 'WORD',
  91.      'XOR');
  92.  
  93. TYPE
  94.   Zeiger   = ^tZeiger;
  95.   tZeiger  = RECORD
  96.                GrossStr : STRING;
  97.                StandStr : STRING;
  98.                Ptr      : zeiger;
  99.              END;
  100. VAR
  101.   PascalW  : ARRAY [2..18] OF Zeiger;
  102.   HilfW    : Zeiger;
  103.  
  104.  
  105.   FUNCTION Up(Wort : STRING) : STRING;
  106.     { wandelt 'Wort' in Großbuchstaben um }
  107.   VAR
  108.     i : BYTE;
  109.   BEGIN
  110.     FOR i := 1 TO Length(Wort) DO
  111.       Wort[i] := UpCase(Wort[i]);
  112.     Up := Wort;
  113.   END; { up }
  114.  
  115.   PROCEDURE Init;         { Initialisierung }
  116.   VAR
  117.     i, L : BYTE;
  118.  
  119.     PROCEDURE ZeigBeleg(PascalWort : STRING);
  120.       { einfach verkettete Listen bilden und
  121.         Woerter nach Wortlänge speichern }
  122.     BEGIN
  123.       L := Length(PascalWort);
  124.       New(HilfW);
  125.       HilfW^.GrossStr := Up(PascalWort);
  126.       HilfW^.StandStr := PascalWort;
  127.       HilfW^.Ptr := PascalW[L];
  128.       PascalW[L] := HilfW;
  129.     END;
  130.  
  131.   BEGIN
  132.     FOR i := 2 TO  18 DO PascalW[i] := NIL;
  133.     FOR i := 1 TO 130 DO ZeigBeleg(Prozedur[i]);
  134.     FOR i := 1 TO  75 DO ZeigBeleg(Funktion[i]);
  135.     FOR i := 1 TO  48 DO ZeigBeleg(Reserved[i]);
  136.   END;
  137.  
  138.   PROCEDURE StandSchrW(    UpWort : STRING;
  139.                        VAR Wort   : STRING);
  140.     { falls Wort in Liste,
  141.       dann ersetzen durch Standardschreibweise }
  142.   VAR
  143.     L : BYTE;
  144.   BEGIN
  145.     L := Length(UpWort);
  146.     IF (L > 1) AND ( L < 19) THEN BEGIN
  147.       HilfW := PascalW[L];
  148.       WHILE (UpWort <> HilfW^.GrossStr) AND
  149.             (HilfW <> NIL)
  150.       DO
  151.         HilfW := HilfW^.Ptr;
  152.       IF UpWort = HilfW^.GrossStr THEN
  153.         Wort := HilfW^.StandStr;
  154.     END;
  155.   END;
  156.  
  157. BEGIN
  158.   Init;
  159. END.
  160. (* ------------------------------------------------- *)
  161. (*              Ende von STANDARD.PAS                *)
  162.  
  163.