% \iffalse
%
% NOTE: This file contains very long lines (upto approx 250 characters).
%       I haven't wrapped them since I won't do that by hand and haven't
%       written any program doing the work.
%
%       If you want to read this .dtx file, you might get in trouble with
%       such long lines!
%
%<*driver>
\documentclass{ltxdoc}

\EnableCrossrefs
\CodelineIndex

\begin{document}
    \DocInput{lstdrvrs.dtx}
\end{document}
%</driver>
% \fi
%
%
% \DoNotIndex{\[,\{,\},\],\1,\2,\3,\4,\5,\6,\7,\8,\9,\0}
% \DoNotIndex{\`,\,,\!,\#,\$,\&,\',\(,\),\+,\.,\:,\;,\<,\=,\>,\?,\_}
% \DoNotIndex{\askforoverwritefalse,\askforoverwritetrue,\batchfile}
% \DoNotIndex{\begin,\def,\else,\@empty,\end,\endpreamble,\expandafter}
% \DoNotIndex{\fi,\file,\from,\gdef,\generate,\ifnum,\ifx,\input}
% \DoNotIndex{\keepsilent,\lccode,\let,\lowercase,\preamble,\relax}
% \DoNotIndex{\undefined}
%
%
% \title{Language drivers for Listings.dtx 0.20\\ {\large by Carsten Heinz and individual authors:}}
% \author{\InputIfFileExists{lstdrvrs.tmp}{}{}}
% \date{}
%
% \maketitle
%
% \newwrite\authors \immediate\openout\authors lstdrvrs.tmp\relax
% \gdef\lstthanks#1#2#3{#1\global\let\lstthanks\lstthanksb\lstwrite{#1}}
% \gdef\lstthanksb#1#2#3{#1\lstwrite{\string\and\space#1}}
% \gdef\lstwrite#1{\begingroup\let~\space\def\"{\string\"}\immediate\write\authors{#1}\endgroup}
%
% \newcommand*\lsthelper[4]{#1}
%
%
% \section{Installation and configuration}
%
% \begingroup
%    \begin{macrocode}
%% (w)(c) 1996/1997/1998/1999 Carsten Heinz and/or any other author
%% listed elsewhere in this file.
%%
%% This file is distributed under the terms of the LaTeX Project Public
%% License from CTAN archives in directory  macros/latex/base/lppl.txt.
%% Either version 1.0 or, at your option, any later version.
%%
%% This file is completely free and comes without any warranty.
%%
%% Permission is granted to change this file. You are not allowed to
%% distribute any changed version of this file, neither under the same
%% name nor under a different one.
%%
%% Send comments and ideas on the package, error reports and additional
%% programming languages to <cheinz@gmx.de>.
%%
%    \end{macrocode}
% \endgroup
%
% \begingroup
%    \begin{macrocode}
%<*install>
\input docstrip
\preamble
\endpreamble

\ifToplevel{
\usedir{tex/latex/listings}
\keepsilent
\askonceonly
}


\generate{
    \file{lstlang1.sty}{\from{lstdrvrs.dtx}
        {ada,c++,objective-c,c,csh,euphoria,fortran,html,idl,java,%
         mathematica,mercury,ml,modula,pascal,perl,pov,python,sql,vhdl}}
    \file{lstlang2.sty}{\from{lstdrvrs.dtx}
        {algol,caml,cobol,comal,delphi,eiffel,elan,haskell,lisp,logo,%
         make,matlab,miranda,oberon,pli,prolog,shelxl,simula,tex}}
}


\ifToplevel{
\Msg{*}
\Msg{* You probably need to move all created `.sty' and `.cfg'}
\Msg{* files into a directory searched by TeX.}
\Msg{*}
\Msg{* Run `lstdrvrs.dtx' through LaTeX2e to get the documentation.}
\Msg{*}
}

\endbatchfile
%</install>
%    \end{macrocode}
% \endgroup
%
% \begingroup
%    \begin{macrocode}
%<*config>
%    \end{macrocode}
% \endgroup
% We mainly define default dialects.
%    \begin{macrocode}
\def\lstdriverfiles{lstlang0.sty,lstlang1.sty,lstlang2.sty}
\lstset{defaultdialect=[95]Ada,
        defaultdialect=[68]Algol,
        defaultdialect=[ANSI]C,
        defaultdialect=[light]Caml,
        defaultdialect=[1985]Cobol,
        defaultdialect=[ANSI]C++,
        defaultdialect=[95]Fortran,
        defaultdialect=[3.0]Mathematica,
        defaultdialect=[Standard]Pascal,
        defaultdialect=[67]Simula,
        defaultdialect=[plain]TeX}
%    \end{macrocode}
% \begingroup
%    \begin{macrocode}
%</config>
%    \end{macrocode}
% \endgroup
%
%
% \section{Language drivers}
%
%
% \subsection{Ada}
%
% Data come from
% \begin{itemize}
% \item
%		\textsc{Barnes, John Gilbert Presslie}:
%		\textbf{Programming in Ada plus language reference manual};
%		{\copyright} 1991 Addison-Wesley Publishing Company, Inc.;
%		ISBN 0-201-56539-0.
% \end{itemize}
% \lstthanks{Torsten~Neuer}{tneuer@inwise.de}{1998/11/23} added support for Ada 95.
% I changed the definition to reduce the required string memory.
% \begingroup
%    \begin{macrocode}
%<*ada>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Ada 95 definition (c) Torsten Neuer <tneuer@inwise.de>
%%
\lst@definelanguage[95]{Ada}[83]{Ada}%
  {morekeywords={abstract,aliased,protected,requeue,tagged,until}}%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[83]{Ada}%
  {keywords={abort,abs,accept,access,all,and,array,at,begin,body,case,%
      constant,declare,delay,delta,digits,do,else,elsif,end,entry,%
      exception,exit,for,function,generic,goto,if,in,is,limited,loop,%
      mod,new,not,null,of,or,others,out,package,pragma,private,%
      procedure,raise,range,record,rem,renames,return,reverse,select,%
      separate,subtype,task,terminate,then,type,use,when,while,with,%
      xor},%
   sensitive=f,%
   commentline=--,%
   stringizer=[m]{"'}% percent not defined as stringizer so far
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</ada>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Algol}
%
% Data come from
% \begin{itemize}
% \item
%		\textsc{Uwe Pape}:
%		\textbf{Programmieren in ALGOL 60};
%		{\copyright} 1973 Carl Hanser Verlag M\"unchen;
%		ISBN 3-446-11605-2
% \item
%		\textsc{Frank G.\ Pagan}:
%		\textbf{A practical guide to ALGOL 68};
%		{\copyright} 1976 by John Wiley $\&$ Sohn Ltd.;
%		ISBN 0-471-65746-8 (Cloth); ISBN 0-471-65747-6 (Pbk).
% \end{itemize}
% The definition of Algol 68 doesn't support comments enclosed by \rlap{/}c.
% \begingroup
%    \begin{macrocode}
%<*algol>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[68]{Algol}%
% ??? should 'i' be a keyword
  {keywords={abs,and,arg,begin,bin,bits,bool,by,bytes,case,channel,%
      char,co,comment,compl,conj,divab,do,down,elem,elif,else,empty,%
      end,entier,eq,esac,exit,false,fi,file,flex,for,format,from,ge,%
      goto,gt,heap,if,im,in,int,is,isnt,le,leng,level,loc,long,lt,lwb,%
      minusab,mod,modab,mode,ne,nil,not,od,odd,of,op,or,ouse,out,over,%
      overab,par,plusab,plusto,pr,pragmat,prio,proc,re,real,ref,repr,%
      round,sema,shl,short,shorten,shr,sign,skip,string,struct,then,%
      timesab,to,true,union,up,upb,void,while},%
   sensitive=f,% ???
   singlecomment={\#}{\#},%
   keywordcomment={co,comment}%
  }[keywords,comments,keywordcomments]%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[60]{Algol}%
  {keywords={array,begin,Boolean,code,comment,div,do,else,end,false,%
      for,goto,if,integer,label,own,power,procedure,real,step,string,%
      switch,then,true,until,value,while},%
   sensitive=f,% ???
   keywordcommentsemicolon={end}{else,end}{comment}%
  }[keywords,keywordcomments]%
%</algol>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{C, C++ and Objective-C}
%
% \begingroup
%    \begin{macrocode}
%<*c++>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[Visual]{C++}[ANSI]{C++}%
  {morekeywords={__asm,__based,__cdecl,__declspec,dllexport,%
      dllimport,__except,__fastcall,__finally,__inline,__int8,__int16,%
      __int32,__int64,naked,__stdcall,thread,__try,__leave},%
  }%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[ANSI]{C++}[ANSI]{C}%
  {morekeywords={asm,bad_cast,bad_typeid,bool,catch,class,const_cast,%
      delete,dynamic_cast,false,friend,inline,namespace,new,operator,%
      private,protected,public,reinterpret_cast,static_cast,template,%
      this,throw,true,try,type_info,typeid,using,virtual,xalloc,%
      __multiple_inheritance,__single_inheritance,%
      __virtual_inheritance},%
   commentline=//%
  }%
%    \end{macrocode}
%    \begin{macrocode}
%</c++>
%    \end{macrocode}
% \endgroup
%
% Objective-C is due to \lstthanks{Detlev~Dr\"oge}{droege@informatik.uni-koblenz.de}{1997/11/04}.
% I've only done some conversion.
% \begingroup
%    \begin{macrocode}
%<*objective-c>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Objective-C definition (c) 1997 Detlev Droege 
%%                                 <droege@informatik.uni-koblenz.de>
%%
\lst@definelanguage[Objective]{C}[ANSI]{C}
  {morekeywords={bycopy,id,in,inout,oneway,out,self,super,%
      @class,@defs,@encode,@end,@implementation,@interface,@private,%
      @protected,@protocol,@public,@selector},%
   commentline=//,%
   directives={define,elif,else,endif,error,if,ifdef,ifndef,line,%
      include,import,pragma,undef,warning}%
  }%
%    \end{macrocode}
%    \begin{macrocode}
%</objective-c>
%    \end{macrocode}
% \endgroup
%
% \begingroup
%    \begin{macrocode}
%<*c>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[ANSI]{C}%
  {keywords={auto,break,case,char,const,continue,default,do,double,%
      else,enum,extern,float,for,goto,if,int,long,register,return,%
      short,signed,sizeof,static,struct,switch,typedef,union,unsigned,%
      void,volatile,while},%
   sensitive,%
   singlecomment={/*}{*/},%
   stringizer=[b]",%
   directives={define,elif,else,endif,error,if,ifdef,ifndef,line,%
      include,pragma,undef,warning}%
  }[keywords,comments,strings,directives]%
%    \end{macrocode}
%    \begin{macrocode}
%</c>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Caml and Objective Caml}
%
% \lstthanks{Patrick~Cousot}{Patrick.Cousot@wanadoo.fr}{1999/01/09} mailed me the definition.
% I updated it to version 0.20.
% \begingroup
%    \begin{macrocode}
%<*caml>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% (Objective) Caml definition (c) 1999 Patrick Cousot
%%                                      <Patrick.Cousot@wanadoo.fr>
%%
%% Objective CAML and Caml light are freely available, together which a
%% reference manual, at URL ftp.inria.fr/lang/caml-light for the Unix,
%% Windows and Macintosh OS operating systems.
%%
\lst@definelanguage[Objective]{Caml}[light]{Caml}
  {deletekeywords={not,prefix,value,where},%
   morekeywords={assert,asr,class,closed,constraint,external,false,%
      functor,include,inherit,land,lazy,lor,lsl,lsr,lxor,method,mod,%
      module,new,open,parser,private,sig,struct,true,val,virtual,when},%
  }%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[light]{Caml}
  {keywords={and,as,begin,do,done,downto,else,end,exception,for,fun,%
      function,if,in,let,match,mutable,not,of,or,prefix,rec,then,to,%
      try,type,value,where,while,with},%
   sensitive,%
   nestedcomment={(*}{*)},%
   stringizer=[b]",%
   directives={open,close,include}%
  }[keywords,comments,strings,directives]%
%    \end{macrocode}
%    \begin{macrocode}
%</caml>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Cobol}
%
% Keywords are not marked if their names are broken by EOL, for example DEBUG- CONTENTS.
% Sometimes portions of a string are not printed as a string.
% This happens if the double quote is not doubled to insert a quote, e.g.\ |""bad" cobol"| won't be printed correctly.
% \begingroup
%    \begin{macrocode}
%<*cobol>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[ibm]{Cobol}[1985]{Cobol}%
  {morekeywords={ADDRESS,BEGINNING,COMP-3,COMP-4,COMPUTATIONAL,%
      COMPUTATIONAL-3,COMPUTATIONAL-4,DISPLAY-1,EGCS,EJECT,ENDING,%
      ENTRY,GOBACK,ID,MORE-LABELS,NULL,NULLS,PASSWORD,RECORDING,%
      RETURN-CODE,SERVICE,SKIP1,SKIP2,SKIP3,SORT-CONTROL,SORT-RETURN,%
      SUPPRESS,TITLE,WHEN-COMPILED},%
  }%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[1985]{Cobol}[1974]{Cobol}%
  {morekeywords={ALPHABET,ALPHABETIC-LOWER,ALPHABETIC-UPPER,%
      ALPHANUMERIC,ALPHANUMERIC-EDITED,ANY,CLASS,COMMON,CONTENT,%
      CONTINUE,DAY-OF-WEEK,END-ADD,END-CALL,END-COMPUTE,END-DELETE,%
      END-DIVIDE,END-EVALUATE,END-IF,END-MULTIPLY,END-PERFORM,END-READ,%
      END-RECEIVE,END-RETURN,END-REWRITE,END-SEARCH,END-START,%
      END-STRING,END-SUBTRACT,END-UNSTRING,END-WRITE,EVALUATE,EXTERNAL,%
      FALSE,GLOBAL,INITIALIZE,NUMERIC-EDITED,ORDER,OTHER,%
      PACKED-DECIMAL,PADDING,PURGE,REFERENCE,RELOAD,REPLACE,STANDARD-1,%
      STANDARD-2,TEST,THEN,TRUE},%
  }%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[1974]{Cobol}%
  {keywords={ACCEPT,ACCESS,ADD,ADVANCING,AFTER,ALL,ALPHABETIC,ALSO,%
      ALTER,ALTERNATE,AND,ARE,AREA,AREAS,ASCENDING,ASSIGN,AT,AUTHOR,%
      BEFORE,BINARY,BLANK,BLOCK,BOTTOM,BY,CALL,CANCEL,CD,CF,CH,%
      CHARACTER,CHARACTERS,CLOCK-UNITS,CLOSE,COBOL,CODE,CODE-SET,%
      COLLATING,COLUMN,COMMA,COMMUNICATION,COMP,COMPUTE,CONFIGURATION,%
      CONTAINS,CONTROL,CONTROLS,CONVERTING,COPY,CORR,CORRESPONDING,%
      COUNT,CURRENCY,DATA,DATE,DATE-COMPILED,DATE-WRITTEN,DAY,DE,%
      DEBUG-CONTENTS,DEGUB-ITEM,DEBUG-LINE,DEBUG-NAME,DEBUG-SUB1,%
      DEBUG-SUB2,DEBUG-SUB3,DEBUGGING,DECIMAL-POINT,DECLARATIVES,%
      DELETE,DELIMITED,DELIMITER,DEPENDING,DESCENDING,DESTINATION,%
      DETAIL,DISABLE,DISPLAY,DIVIDE,DIVISION,DOWN,DUPLICATES,DYNAMIC,%
      EGI,ELSE,EMI,ENABLE,END,END-OF-PAGE,ENTER,ENVIRONMENT,EOP,EQUAL,%
      ERROR,ESI,EVERY,EXCEPTION,EXIT,EXTEND,FD,FILE,FILE-CONTROL,%
      FILLER,FINAL,FIRST,FOOTING,FOR,FROM,GENERATE,GIVING,GO,GREATER,%
      GROUP,HEADING,HIGH-VALUE,HIGH-VALUES,I-O,I-O-CONTROL,%
      IDENTIFICATION,IF,IN,INDEX,INDEXED,INDICATE,INITIAL,INITIATE,%
      INPUT,INPUT-OUTPUT,INSPECT,INSTALLATION,INTO,INVALID,IS,JUST,%
      JUSTIFIED,KEY,LABEL,LAST,LEADING,LEFT,LENGTH,LESS,LIMIT,LIMITS,%
      LINAGE,LINAGE-COUNTER,LINE,LINE-COUNTER,LINES,LINKAGE,LOCK,%
      LOW-VALUE,LOW-VALUES,MEMORY,MERGE,MESSAGE,MODE,MODULES,MOVE,%
      MULTIPLE,MULTIPLY,NATIVE,NEGATIVE,NEXT,NO,NOT,NUMBER,NUMERIC,%
      OBJECT-COMPUTER,OCCURS,OF,OFF,OMITTED,ON,OPEN,OPTIONAL,OR,%
      ORGANIZATION,OUTPUT,OVERFLOW,PAGE,PAGE-COUNTER,PERFORM,PF,PH,PIC,%
      PICTURE,PLUS,POINTER,POSITION,PRINTING,POSITIVE,PRINTING,%
      PROCEDURE,PROCEDURES,PROCEED,PROGRAM,PROGRAM-ID,QUEUE,QUOTE,%
      QUOTES,RANDOM,RD,READ,RECEIVE,RECORD,RECORDING,RECORDS,REDEFINES,%
      REEL,REFERENCES,RELATIVE,RELEASE,REMAINDER,REMOVAL,RENAMES,%
      REPLACING,REPORT,REPORTING,REPORTS,RERUN,RESERVE,RESET,RETURN,%
      REVERSED,REWIND,REWRITE,RF,RH,RIGHT,ROUNDED,RUN,SAME,SD,SEARCH,%
      SECTION,SECURITY,SEGMENT,SEGMENT-LIMIT,SELECT,SEND,SENTENCE,%
      SEPARATE,SEQUENCE,SEQUENTIAL,SET,SIGN,SIZE,SORT,SORT-MERGE,%
      SOURCE,SOURCE-COMPUTER,SPACE,SPACES,SPECIAL-NAMES,STANDARD,START,%
      STATUS,STOP,STRING,SUB-QUEUE-1,SUB-QUEUE-2,SUB-QUEUE-3,SUBTRACT,%
      SUM,SYMBOLIC,SYNC,SYNCHRONIZED,TABLE,TALLYING,TAPE,TERMINAL,%
      TERMINATE,TEXT,THAN,THROUGH,THRU,TIME,TIMES,TO,TOP,TRAILING,TYPE,%
      UNIT,UNSTRING,UNTIL,UP,UPON,USAGE,USE,USING,VALUE,VALUES,VARYING,%
      WHEN,WITH,WORDS,WORKING-STORAGE,WRITE,ZERO,ZEROES,ZEROS},%
   sensitive=f,% ???
   fixedcommentline=[6]*,%
   stringizer=[d]"% ??? doubled
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</cobol>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Comal 80}
%
% The data is from
% \begin{itemize}
% \item
%		\textsc{Borge R. Christensen}:
%		\textbf{Strukturierte Programmierung mit COMAL 80} [aus dem
%		D\"anischen \"ubertragen und bearbeitet von Margarete Kragh];
%		2., verb.\ Auflage -- M\"unchen; Wien: Oldenburg, 1985;
%		ISBN 3-486-26902-X.
% \end{itemize}
% \begingroup
%    \begin{macrocode}
%<*comal>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Comal 80}%
  {keywords={AND,AUTO,CASE,DATA,DEL,DIM,DIV,DO,ELSE,ENDCASE,ENDIF,%
      ENDPROC,ENDWHILE,EOD,EXEC,FALSE,FOR,GOTO,IF,INPUT,INT,LIST,LOAD,%
      MOD,NEW,NEXT,NOT,OF,OR,PRINT,PROC,RANDOM,RENUM,REPEAT,RND,RUN,%
      SAVE,SELECT,STOP,TAB,THEN,TRUE,UNTIL,WHILE,ZONE},%
   sensitive=f,% ???
   commentline=//,%
   stringizer=[d]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</comal>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{C-Shell}
%
% This language is due to \lstthanks{Kai~Below}{below@tu-harburg.de}{1998/09/21}, but he pointed out that some keywords are probably missing.
% \begingroup
%    \begin{macrocode}
%<*csh>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% csh definition (c) 1998 Kai Below <below@tu-harburg.de>
%%
\lst@definelanguage{csh}
  {keywords={alias,awk,cat,echo,else,end,endif,endsw,exec,exit,%
      foreach,glob,goto,history,if,logout,nice,nohup,onintr,repeat,sed,%
      set,setenv,shift,source,switch,then,time,while,umask,unalias,%
      unset,wait,while,@,env,argv,child,home,ignoreeof,noclobber,%
      noglob,nomatch,path,prompt,shell,status,verbose,print,printf,%
      sqrt,BEGIN,END},%
   commentline=\#,%
   stringizer=[d]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</csh>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Delphi}
%
% I took the data from Delphi 1.0 (?) online help.
% \begingroup
%    \begin{macrocode}
%<*delphi>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Delphi}%
  {keywords={and,as,asm,array,begin,case,class,const,constructor,%
      destructor,div,do,downto,else,end,except,exports,file,finally,%
      for,function,goto,if,implementation,in,inherited,inline,%
      initialization,interface,is,label,library,mod,nil,not,object,of,%
      or,packed,procedure,program,property,raise,record,repeat,set,%
      shl,shr,string,then,to,try,type,unit,until,uses,var,while,with,%
      xor,%
      absolute,abstract,assembler,at,cdecl,default,dynamic,export,%
      external,far,forward,index,name,near,nodefault,on,override,%
      private,protected,public,published,read,resident,storedDir,%
      virtual,write},%
   ndkeywords={Abs,AddExitProc,Addr,AllocMem,AnsiCompareStr,%
      AnsiCompareText,AnsiLowerCase,AnsiUpperCase,Append,AppendStr,%
      ArcTan,AssignCrt,Assigned,AssignFile,BlockRead,BlockWrite,Break,%
      ChangeFileExt,ChDir,Chr,CloseFile,ClrEol,ClrScr,Concat,Continue,%
      Copy,Cos,CSeg,CursorTo,Date,DateTimeToFileDate,DateTimeToStr,%
      DateTimeToString,DateToStr,DayOfWeek,Dec,DecodeDate,DecodeTime,%
      Delete,DeleteFile,DiskFree,DiskSize,Dispose,DisposeStr,%
      DoneWinCrt,DSeg,EncodeDate,EncodeTime,Eof,Eoln,Erase,Exclude,%
      Exit,Exp,ExpandFileName,ExtractFileExt,ExtractFileName,%
      ExtractFilePath,FileAge,FileClose,FileDateToDateTime,FileExists,%
      FileGetAttr,FileGetDate,FileOpen,FilePos,FileRead,FileSearch,%
      FileSeek,FileSetAttr,FileSetDate,FileSize,FillChar,FindClose,%
      FindFirst,FindNext,FloatToDecimal,FloatToStrF,FloatToStr,%
      FloatToText,FloatToTextFmt,Flush,FmtLoadStr,FmtStr,Format,%
      FormatBuf,FormatDateTime,FormatFloat,Frac,Free,FreeMem,GetDir,%
      GetMem,GotoXY,Halt,Hi,High,Inc,Include,InitWinCrt,Insert,Int,%
      IntToHex,IntToStr,IOResult,IsValidIdent,KeyPressed,Length,Ln,Lo,%
      LoadStr,Low,LowerCase,MaxAvail,MemAvail,MkDir,Move,New,NewStr,%
      Now,Odd,Ofs,Ord,ParamCount,ParamStr,Pi,Pos,Pred,Ptr,Random,%
      Randomize,Read,ReadBuf,ReadKey,Readln,ReAllocMem,Rename,%
      RenameFile,Reset,Rewrite,RmDir,Round,RunError,ScrollTo,Seek,%
      SeekEof,SeekEoln,Seg,SetTextBuf,Sin,SizeOf,SPtr,Sqr,Sqrt,SSeg,%
      Str,StrCat,StrComp,StrCopy,StrDispose,StrECopy,StrEnd,StrFmt,%
      StrLCat,StrIComp,StrLComp,StrLCopy,StrLen,StrLFmt,StrLIComp,%
      StrLower,StrMove,StrNew,StrPas,StrPCopy,StrPos,StrScan,StrRScan,%
      StrToDate,StrToDateTime,StrToFloat,StrToInt,StrToIntDef,%
      StrToTime,StrUpper,Succ,Swap,TextToFloat,Time,TimeToStr,%
      TrackCursor,Trunc,Truncate,TypeOf,UpCase,UpperCase,Val,WhereX,%
      WhereY,Write,WriteBuf,WriteChar,Writeln},%
   sensitive=f,%
   doublecomment={(*}{*)}{\{}{\}},%
   stringizer=[d]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</delphi>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Eiffel}
%
% Data is from
% \begin{itemize}
% \item
%       \textsc{Bertrand Meyer}: \textbf{Eiffel: the language};
%       Prentice Hall International (UK) Ldt, 1992;
%       ISBN 0-13-247925-7.
% \end{itemize}
% \begingroup
%    \begin{macrocode}
%<*eiffel>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Eiffel}%
  {keywords={alias,all,and,as,BIT,BOOLEAN,CHARACTER,check,class,%
      creation,Current,debug,deferred,do,DOUBLE,else,elseif,end,%
      ensure,expanded,export,external,false,feature,from,frozen,if,%
      implies,indexing,infix,inherit,inspect,INTEGER,invariant,is,%
      like,local,loop,NONE,not,obsolete,old,once,or,POINTER,prefix,%
      REAL,redefine,rename,require,rescue,Result,retry,select,%
      separate,STRING,strip,then,true,undefine,unique,until,variant,%
      when,xor},%
   sensitive,%
   commentline=--,%
   stringizer=[d]",%
   stringtest=false%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</eiffel>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Elan}
%
% The data come from
% \begin{itemize}
% \item
%		\textsc{Leo~H.~Klingen, Jochen Liedtke}:
%		\textbf{Programmieren mit ELAN};
%		B.G.\ Teubner, Stuttgart 1983; ISBN 3-519-02507-8.
% \end{itemize}
% \begingroup
%    \begin{macrocode}
%<*elan>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Elan}%
  {keywords={ABS,AND,BOOL,CAND,CASE,CAT,COLUMNS,CONCR,CONJ,CONST,COR,%
      DECR,DEFINES,DET,DIV,DOWNTO,ELIF,ELSE,END,ENDIF,ENDOP,ENDPACKET,%
      ENDPROC,ENDREP,ENDSELECT,FALSE,FI,FILE,FOR,FROM,IF,INCR,INT,INV,%
      LEAVE,LENGTH,LET,MOD,NOT,OF,OP,OR,OTHERWISE,PACKET,PROC,REAL,REP,%
      REPEAT,ROW,ROWS,SELECT,SIGN,STRUCT,SUB,TEXT,THEN,TRANSP,TRUE,%
      TYPE,UNTIL,UPTO,VAR,WHILE,WITH,XOR,%
      maxint,sign,abs,min,max,random,initializerandom,subtext,code,%
      replace,text,laenge,pos,compress,change,maxreal,smallreal,floor,%
      pi,e,ln,log2,log10,sqrt,exp,tan,tand,sin,sind,cos,cosd,arctan,%
      arctand,int,real,lastconversionok,put,putline,line,page,get,%
      getline,input,output,sequentialfile,maxlinelaenge,reset,eof,%
      close,complexzero,complexone,complexi,complex,realpart,imagpart,%
      dphi,phi,vector,norm,replace,matrix,idn,row,column,sub,%
      replacerow,replacecolumn,replaceelement,transp,errorsstop,stop},%
   sensitive,%
   stringizer=[d]"%
  }[keywords,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</elan>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Euphoria}
%
% \lstthanks{Detlef~Reimers}{dreimers@aol.com}{1998/08/30} sent me the language definition.
% I've done the conversion to version 0.19.
% \begingroup
%    \begin{macrocode}
%<*euphoria>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Euphoria definition (c) 1998 Detlef Reimers <dreimers@aol.com>
%%
\lst@definelanguage{Euphoria}%
% for Euphoria 2.0, Rapid Deployment Software, Kanada
  {keywords={abort,and,and_bits,append,arctan,atom,by,call,call_proc,%
      call_func,c_proc,c_func,clear_screen,close,command_line,compare,%
      constant,cos,do,date,else,elsif,end,exit,find,floor,for,function,%
      getc,getenv,get_key,gets,global,get_pixel,if,include,integer,%
      length,log,match,machine_func,machine_proc,mem_copy,mem_set,not,%
      not_bits,or,object,open,or_bits,procedure,puts,position,prepend,%
      print,printf,power,peek,poke,pixel,poke4,peek4s,peek4u,return,%
      rand,repeat,remainder,routine_id,sequence,sqrt,sin,system,%
      sprintf,then,type,to,time,trace,tan,while,with,without,xor,%
      xor_bits},%
   sensitive,%
   commentline=--,%
   stringizer=[d]'"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</euphoria>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Fortran}
%
% Took things from
% \begin{itemize}
% \item
%		\textsc{Karl Hans M\"uller}:
%		\textbf{Fortran 77: Programmierungsanleitung};
%		3., v\"ollig neu bearb.\ Aufl.\ -- Mannheim; Wien; Z\"urich:
%		Bibliographisches Institut, 1984;
%		ISBN 3-411-05804-8
% \item
%       \textsc{Thomas Michel}: \textbf{Fortran 90: Lehr-- und Handbuch};
%       Mannheim; Leipzig; Wien; Z\"urich: BI-Wiss.-Verlag, 1994;
%       ISBN 3-411-16861-7.
% \end{itemize}
% \begingroup
%    \begin{macrocode}
%<*fortran>
%    \end{macrocode}
% \lsthelper{Denis Girou}{Denis.Girou@idris.fr}{1998/07/26}{Fortran 95=90} proposed to have Fortran 95 and Fortran 90 to be equivalent.
%    \begin{macrocode}
\lst@definelanguage[90]{Fortran}[95]{Fortran}{}
%    \end{macrocode}
% There is no |fixedcommentline| in Fortran 90 since otherwise CONTAINS could start a comment.
% This problem was reported by \lsthelper{Magne Rudshaug}{magne@ife.no}{1998/01/09}{no  fixedcommentline= in Fortran 90}.
% Moreover the keyword INCLUDE is due to him.
%    \begin{macrocode}
\lst@definelanguage[95]{Fortran}[77]{Fortran}%
  {deletekeywords=SAVE,
   morekeywords={ACTION,ADVANCE,ALLOCATE,ALLOCATABLE,ASSIGNMENT,CASE,%
      CONTAINS,CYCLE,DEALLOCATE,DEFAULT,DELIM,EXIT,INCLUDE,IN,NONE,IN,%
      OUT,INTENT,INTERFACE,IOLENGTH,KIND,LEN,MODULE,NAME,NAMELIST,NMT,%
      NULLIFY,ONLY,OPERATOR,OPTIONAL,OUT,PAD,POINTER,POSITION,PRIVATE,%
      PUBLIC,READWRITE,RECURSIVE,RESULT,SELECT,SEQUENCE,SIZE,STAT,%
      TARGET,USE,WHERE,WHILE,BLOCKDATA,DOUBLEPRECISION,ELSEIF,%
      ENDBLOCKDATA,ENDDO,ENDFILE,ENDFUNCTION,ENDIF,ENDINTERFACE,%
      ENDMODULE,ENDPROGRAM,ENDSELECT,ENDSUBROUTINE,ENDTYPE,ENDWHERE,%
      GOTO,INOUT,SELECTCASE},%
   commentline=!,%
   fixedcommentline={},% no fixed comment line: 1998 Magne Rudshaug
  }%
%    \end{macrocode}
% As proposed by \lsthelper{J\"orn Wilms}{wilms@rocinante.colorado.edu}{1997/07/07}{Fortran with \lstsensitivefalse} keywords are \emph{not} case sensitive.
%    \begin{macrocode}
\lst@definelanguage[77]{Fortran}%
  {keywords={ACCESS,ASSIGN,BACKSPACE,BLANK,BLOCK,CALL,CHARACTER,CLOSE,%
      COMMON,COMPLEX,CONTINUE,DATA,DIMENSION,DIRECT,DO,DOUBLE,ELSE,END,%
      ENTRY,EOF,EQUIVALENCE,ERR,EXIST,EXTERNAL,FILE,FMT,FORM,FORMAT,%
      FORMATTED,FUNCTION,GO,TO,IF,IMPLICIT,INQUIRE,INTEGER,INTRINSIC,%
      IOSTAT,LOGICAL,NAMED,NEXTREC,NUMBER,OPEN,OPENED,PARAMETER,PAUSE,%
      PRECISION,PRINT,PROGRAM,READ,REAL,REC,RECL,RETURN,REWIND,%
      SEQUENTIAL,STATUS,STOP,SUBROUTINE,THEN,TYPE,UNFORMATTED,UNIT,%
      WRITE,SAVE},%
   sensitive=f,%% not Fortran standard %%
   fixedcommentline=*Cc,%
   stringizer=[d]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</fortran>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Haskell}
%
% Thanks to \lstthanks{Peter~Bartke}{bartke@inf.fu-berlin.de}{1999/01/30} for providing the definition.
% \begingroup
%    \begin{macrocode}
%<*haskell>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Haskell definition (c) 1998 Peter Bartke <bartke@inf.fu-berlin.de>
%%                        stolen from Martin Norb"ack's haskell.vim mode
%%
%% Haskell 1.4: some standard functional language: pure, lazy,
%%              polymorphic type system, modules, type classes,
%%              garbage collection, functions as first class citizens
%%
\lstdefinelanguage{Haskell}%
  {otherkeywords={=>},%
   keywords={abstype,if,then,else,case,class,data,default,deriving,%
      hiding,if,in,infix,infixl,infixr,import,instance,let,module,%
      newtype,of,qualified,type,where,do,Bool,Char,Double,Either,%
      FilePath,Float,Int,Integer,IO,IOError,Maybe,Ordering,ReadS,ShowS,%
      String,Void,Bounded,Enum,Eq,Eval,Floating,Fractional,Functor,%
      Integral,Monad,MonadPlus,MonadZero,Num,Ord,Read,Real,RealFloat,%
      RealFrac,Show,Prelude,EQ,False,GT,Just,Left,LT,Nothing,Right,%
      True,abs,accumulate,acos,acosh,all,and,any,appendFile,applyM,%
      asTypeOf,asin,asinh,atan,atan2,atanh,break,catch,ceiling,compare,%
      concat,concatMap,const,cos,cosh,curry,cycle,decodeFloat,div,%
      divMod,drop,dropWhile,either,elem,encodeFloat,enumFrom,%
      enumFromThen,enumFromThenTo,enumFromTo,error,even,exp,exponent,%
      fail,filter,flip,floatDigits,floatRadix,floatRange,floor,foldl,%
      foldl1,foldr,foldr1,fromEnum,fromInteger,fromIntegral,%
      fromRational,fromRealFrac,fst,gcd,getChar,getContents,getLine,%
      guard,head,id,init,interact,isDenormalized,isIEEE,isInfinite,%
      isNaN,isNegativeZero,iterate,last,lcm,length,lex,lines,log,%
      logBase,lookup,map,mapM,mapM_,max,maxBound,maximum,maybe,min,%
      minBound,minimum,mod,negate,not,notElem,null,odd,or,otherwise,%
      pi,pred,print,product,properFraction,putChar,putStr,putStrLn,%
      quot,quotRem,read,readFile,readIO,readList,readLn,readParen,%
      reads,readsPrec,recip,rem,repeat,replicate,return,reverse,round,%
      scaleFloat,scanl,scanl1,scanr,scanr1,seq,sequence,show,showChar,%
      showList,showParen,showString,shows,showsPrec,significand,signum,%
      sin,sinh,snd,span,splitAt,sqrt,strict,subtract,succ,sum,tail,%
      take,takeWhile,tan,tanh,toEnum,toInteger,toRational,truncate,%
      uncurry,undefined,unlines,until,unwords,unzip,unzip3,userError,%
      words,writeFile,zero,zip,zip3,zipWith,zipWith3},%
   sensitive,%
   commentline=--,%
   nestedcomment={\{-}{-\}},%
   stringizer=[b]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</haskell>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{HTML}
%
% I'm quite the opposite of a HTML wizard.
% In particular this is true for the defined keywords.
% \begingroup
%    \begin{macrocode}
%<*html>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{HTML}%
  {keywords={A,ADDRESS,APPLET,B,BASE,BASEFONT,BIG,BLOCKQUOTE,BODY,BR,%
      CENTER,CITE,CODE,DFN,DIR,DIV,DOCTYPE,EM,FONT,FORM,HEAD,HR,%
      H1,H2,H3,H4,H5,H6,HTML,I,IMG,INPUT,ISINDEX,KBD,LI,LINK,LISTING,%
      MAP,META,MENU,P,PLAINTEXT,PRE,OL,SAMP,SCRIPT,SELECT,SMALL,STRIKE,%
      STRING,SUB,SUP,STYLE,TABLE,TEXTAREA,TITLE,TT,U,UL,VAR,XMP,%
      action,align,alink,alt,background,bgcolor,border,cellpadding,%
      cellspacing,checked,code,codebase,color,cols,colspan,entype,%
      height,href,hspace,ismap,link,maxlength,method,multiple,name,%
      noshade,nowrap,rel,rev,rows,rowspan,selected,shape,size,src,text,%
      title,type,usemap,valign,value,vlink,vspace,width},%
   keywordsinside=<>,
   sensitive=f,%
   stringizer=[d]",% ??? doubled
%    \end{macrocode}
% Now we take care of comments.
% We don't enter comment mode if we aren't inside |<>|.
%    \begin{macrocode}
   SelectCharTable=%
      \lst@CArg{SC}--\relax\lst@CommentB\lst@SCmode{}{}%
          {\ifnum\lst@mode=\lst@insidemode\else
               \expandafter\@gobblethree
           \fi}\@empty
      \lst@CArg{SC}--\relax\lst@CommentE\lst@SCmode{}{}{}%
  }[keywords,comments,strings,html]%
%    \end{macrocode}
% \lsthelper{Peter~Biechele}{peter.biechele@physik.uni-freiburg.de}{1999/07/01}{! Missing $\}$ inserted} reported a problem which was due to missing |\@empty| in value of |SelectCharTable|.
%    \begin{macrocode}
%</html>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{IDL}
%
% The definition is due to \lstthanks{J\"urgen~Heim}{heim@astro.uni-tuebingen.de}{1998/07/27}.
% I've done the conversion to version 0.19.
% \begingroup
%    \begin{macrocode}
%<*idl>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% IDL definition (c) 1998 Juergen Heim <heim@astro.uni-tuebingen.de>
%%
\lst@definelanguage{IDL}%
  {keywords={and,begin,case,common,do,else,end,endcase,endelse,%
      endfor,endif,endrep,endwhile,eq,for,function,ge,goto,gt,if,le,lt,%
      mod,ne,not,of,on_ioerror,or,pro,repeat,return,then,until,while,%
      xor,on_error,openw,openr,openu,print,printf,printu,plot,read,%
      readf,readu,writeu,stop},%
   sensitive=f,%
   commentline=;,%
   stringizer=[d]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</idl>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Java}
%
% Got data from \texttt{http://java.sun.com}.
% \begingroup
%    \begin{macrocode}
%<*java>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Java}%
  {keywords={abstract,boolean,break,byte,case,catch,char,class,const,%
      continue,default,do,double,else,extends,final,finally,float,for,%
      goto,if,implements,import,instanceof,int,interface,long,native,%
      new,null,package,private,protected,public,return,short,static,%
      super,switch,synchronized,this,throw,throws,transient,try,void,%
      volatile,while,true,false},%
   sensitive,%
   commentline=//,%
   singlecomment={/*}{*/},%
   stringizer=[b]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</java>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Lisp}
%
% Most data are from
% \begin{itemize}
% \item
%		\textsc{Guy Steele}:
%		\textbf{Common Lisp};
%		Copyright 1990 by Digital Equipment Corporation;
%		ISBN 1-55558-042-4.
% \end{itemize}
% Thanks to \lsthelper{Aslak Raanes}{araanes@ifi.ntnu.no}{1997/11/24}{single comment in Lisp} for the single comment.
% The keywords are the `one-word' functions and macros of Common Lisp, i.e.\ words not containing a minus.
% But I left out the \texttt{caaaar}, \ldots{} functions.
% If anyone types them in, I'd like to get them.
% \begingroup
%    \begin{macrocode}
%<*lisp>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Lisp}%
  {keywords={abort,abs,acons,acos,acosh,adjoin,alphanumericp,alter,%
      append,apply,apropos,aref,arrayp,ash,asin,asinh,assoc,atan,atanh,%
      atom,bit,boole,boundp,break,butlast,byte,catenate,ceiling,cerror,%
      char,character,characterp,choose,chunk,cis,close,clrhash,coerce,%
      collect,commonp,compile,complement,complex,complexp,concatenate,%
      conjugate,cons,consp,constantp,continue,cos,cosh,cotruncate,%
      count,delete,denominator,describe,directory,disassemble,%
      documentation,dpb,dribble,ed,eighth,elt,enclose,endp,eq,eql,%
      equal,equalp,error,eval,evalhook,evenp,every,exp,expand,export,%
      expt,fboundp,fceiling,fdefinition,ffloor,fifth,fill,find,first,%
      float,floatp,floor,fmakunbound,format,fourth,fround,ftruncate,%
      funcall,functionp,gatherer,gcd,generator,gensym,gentemp,get,getf,%
      gethash,identity,imagpart,import,inspect,integerp,intern,%
      intersection,tively,isqrt,keywordp,last,latch,lcm,ldb,ldiff,%
      length,list,listen,listp,load,log,logand,logbitp,logcount,logeqv,%
      logior,lognand,lognor,lognot,logtest,logxor,macroexpand,%
      makunbound,map,mapc,mapcan,mapcar,mapcon,maphash,mapl,maplist,%
      mask,max,member,merge,min,mingle,minusp,mismatch,mod,namestring,%
      nbutlast,nconc,nintersection,ninth,not,notany,notevery,nreconc,%
      nreverse,nsublis,nsubst,nth,nthcdr,null,numberp,numerator,nunion,%
      oddp,open,packagep,pairlis,pathname,pathnamep,phase,plusp,%
      position,positions,pprint,previous,princ,print,proclaim,provide,%
      random,rassoc,rational,rationalize,rationalp,read,readtablep,%
      realp,realpart,reduce,rem,remhash,remove,remprop,replace,require,%
      rest,revappend,reverse,room,round,rplaca,rplacd,sbit,scan,schar,%
      search,second,series,set,seventh,shadow,signal,signum,sin,sinh,%
      sixth,sleep,some,sort,split,sqrt,streamp,string,stringp,sublis,%
      subseq,subseries,subsetp,subst,substitute,subtypep,svref,sxhash,%
      symbolp,tailp,tan,tanh,tenth,terpri,third,truename,truncate,%
      typep,unexport,unintern,union,until,values,vector,vectorp,warn,%
      write,zerop,and,assert,case,ccase,cond,ctypecase,decf,declaim,%
      defclass,defconstant,defgeneric,defmacro,defmethod,defpackage,%
      defparameter,defsetf,defstruct,deftype,defun,defvar,do,dolist,%
      dotimes,ecase,encapsulated,etypecase,flet,formatter,gathering,%
      incf,iterate,labels,let,locally,loop,macrolet,mapping,or,pop,%
      producing,prog,psetf,psetq,push,pushnew,remf,return,rotatef,%
      setf,shiftf,step,time,trace,typecase,unless,untrace,when},%
   sensitive,% ???
   alsodigit=-,%
   commentline=;,%
   singlecomment={\#|}{|\#},% 1997 Aslak Raanes
   stringizer=[b]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lisp>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Logo}
%
% I don't know where the keywords are from and what kind of Logo it is.
% Help me!
% \begingroup
%    \begin{macrocode}
%<*logo>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Logo}%
% ??? {end,unix} also keywords
  {keywords={and,atan,arctan,both,break,bf,bl,butfirst,butlast,%
      cbreak, close,co,continue,cos,count,clearscreen,cs,debquit,%
      describe,diff,difference,ed,edit,either,emptyp,equalp,er,erase,%
      errpause,errquit,fifp,filefprint,fifty,fileftype,fip,fileprint,%
      fird,fileread,fity,filetype,fiwd,fileword,f,first,or,fp,fprint,%
      fput,fty,ftype,full,fullscreen,go,bye,goodbye,gprop,greaterp,%
      help,if,iff,iffalse,ift,iftrue,nth,item,keyp,llast,lessp,list,%
      local,lput,make,max,maximum,memberp,memtrace,min,minimum,namep,%
      not,numberp,oflush,openr,openread,openw,openwrite,op,output,%
      pause,plist,pots,pow,pprop,pps,pr,print,product,quotient,random,%
      rc,readchar,rl,readlist,remprop,repcount,repeat,request,rnd,run,%
      se,sentence,sentencep,setc,setcolor,setipause,setqpause,po,show,%
      sin,split,splitscreen,sqrt,stop,sum,test,text,textscreen,thing,%
      to,tone,top,toplevel,type,untrace,wait,word,wordp,yaccdebug,is,%
      mod,remainder,trace,zerop,back,bk,bto,btouch,fd,forward,fto,%
      ftouch,getpen,heading,hit,hitoot,ht,hideturtle,loff,lampoff,lon,%
      lampon,lt,left,lot,lotoot,lto,ltouch,penc,pencolor,pd,pendown,pe,%
      penerase,penmode,pu,penup,px,penreverse,rt,right,rto,rtouch,%
      scrunch,seth,setheading,setscrun,setscrunch,setxy,shownp,st,%
      showturtle,towardsxy,clean,wipeclean,xcor,ycor,tur,turtle,%
      display,dpy},%
   sensitive=f% ???
  }[keywords]%
%    \end{macrocode}
%    \begin{macrocode}
%</logo>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Make}
%
% \lstthanks{Rolf Niepraschk}{niepraschk@ptb.de}{1999/06/13} sent me the definitions.
% \begingroup
%    \begin{macrocode}
%<*make>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Make definitions (c) 1999 Rolf Niepraschk <niepraschk@ptb.de>
%%
\lst@definelanguage[gnu]{make}% 
  {keywords={SHELL,MAKE,MAKEFLAGS,$@,$\%,$<,$?,$^,$+,$*,%
      export,unexport,include,override,define,ifdef,ifneq,ifeq,else,%
      endif,vpath,subst,patsubst,strip,findstring,filter,filter-out,%
      sort,dir,notdir,suffix,basename,addsuffix,addprefix,join,word,%
      words,firstword,wildcard,shell,origin,foreach,%
      @D,@F,*D,*F,\%D,\%F,<D,<F,^D,^F,+D,+F,?D,?F,%
      .PHONY,.SUFFIXES,.DEFAULT,.PRECIOUS,.INTERMEDIATE,.SECONDARY,%
      .IGNORE,.SILENT,.EXPORT_ALL_VARIABLES,MAKEFILES,VPATH,MAKESHELL,%
      MAKELEVEL,MAKECMDGOALS,SUFFIXES},%
   sensitive=true,
   commentline={\#},%
   stringizer={"}%
  }%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{make}
  {keywords={SHELL,MAKE,MAKEFLAGS,$@,$\%,$<,$?,$^,$+,$*},%
   sensitive=true,%
   commentline={\#},%
   stringizer={"}%
  }%
%    \end{macrocode}
%    \begin{macrocode}
%</make>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Matlab}
%
% I took the keywords from \texttt{http://www.utexas.edu/math/Matlab/Manual} , but I removed the keywords |i|, |j| and |tmp| --- the change was proposed by \lsthelper{Kai Below}{below@tu-harburg.de}{1998/09/21}{Matlab: keywords i,j,tmp removed}.
% \begingroup
%    \begin{macrocode}
%<*matlab>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{matlab}%
  {keywords={gt,lt,gt,lt,amp,abs,acos,acosh,acot,acoth,acsc,acsch,%
      all,angle,ans,any,asec,asech,asin,asinh,atan,atan2,atanh,auread,%
      auwrite,axes,axis,balance,bar,bessel,besselk,bessely,beta,%
      betainc,betaln,blanks,bone,break,brighten,capture,cart2pol,%
      cart2sph,caxis,cd,cdf2rdf,cedit,ceil,chol,cla,clabel,clc,clear,%
      clf,clock,close,colmmd,Colon,colorbar,colormap,ColorSpec,colperm,%
      comet,comet3,compan,compass,computer,cond,condest,conj,contour,%
      contour3,contourc,contrast,conv,conv2,cool,copper,corrcoef,cos,%
      cosh,cot,coth,cov,cplxpair,cputime,cross,csc,csch,csvread,%
      csvwrite,cumprod,cumsum,cylinder,date,dbclear,dbcont,dbdown,%
      dbquit,dbstack,dbstatus,dbstep,dbstop,dbtype,dbup,ddeadv,ddeexec,%
      ddeinit,ddepoke,ddereq,ddeterm,ddeunadv,deblank,dec2hex,deconv,%
      del2,delete,demo,det,diag,diary,diff,diffuse,dir,disp,dlmread,%
      dlmwrite,dmperm,dot,drawnow,echo,eig,ellipj,ellipke,else,elseif,%
      end,engClose,engEvalString,engGetFull,engGetMatrix,engOpen,%
      engOutputBuffer,engPutFull,engPutMatrix,engSetEvalCallback,%
      engSetEvalTimeout,engWinInit,eps,erf,erfc,erfcx,erfinv,error,%
      errorbar,etime,etree,eval,exist,exp,expint,expm,expo,eye,fclose,%
      feather,feof,ferror,feval,fft,fft2,fftshift,fgetl,fgets,figure,%
      fill,fill3,filter,filter2,find,findstr,finite,fix,flag,fliplr,%
      flipud,floor,flops,fmin,fmins,fopen,for,format,fplot,fprintf,%
      fread,frewind,fscanf,fseek,ftell,full,function,funm,fwrite,fzero,%
      gallery,gamma,gammainc,gammaln,gca,gcd,gcf,gco,get,getenv,%
      getframe,ginput,global,gplot,gradient,gray,graymon,grid,griddata,%
      gtext,hadamard,hankel,help,hess,hex2dec,hex2num,hidden,hilb,hist,%
      hold,home,hostid,hot,hsv,hsv2rgb,if,ifft,ifft2,imag,image,%
      imagesc,Inf,info,input,int2str,interp1,interp2,interpft,inv,%
      invhilb,isempty,isglobal,ishold,isieee,isinf,isletter,isnan,%
      isreal,isspace,issparse,isstr,jet,keyboard,kron,lasterr,lcm,%
      legend,legendre,length,lin2mu,line,linspace,load,log,log10,log2,%
      loglog,logm,logspace,lookfor,lower,ls,lscov,lu,magic,matClose,%
      matDeleteMatrix,matGetDir,matGetFp,matGetFull,matGetMatrix,%
      matGetNextMatrix,matGetString,matlabrc,matlabroot,matOpen,%
      matPutFull,matPutMatrix,matPutString,max,mean,median,menu,mesh,%
      meshc,meshgrid,meshz,mexAtExit,mexCallMATLAB,mexdebug,%
      mexErrMsgTxt,mexEvalString,mexFunction,mexGetFull,mexGetMatrix,%
      mexGetMatrixPtr,mexPrintf,mexPutFull,mexPutMatrix,mexSetTrapFlag,%
      min,more,movie,moviein,mu2lin,mxCalloc,mxCopyCharacterToPtr,%
      mxCopyComplex16ToPtr,mxCopyInteger4ToPtr,mxCopyPtrToCharacter,%
      mxCopyPtrToComplex16,mxCopyPtrToInteger4,mxCopyPtrToReal8,%
      mxCopyReal8ToPtr,mxCreateFull,mxCreateSparse,mxCreateString,%
      mxFree,mxFreeMatrix,mxGetIr,mxGetJc,mxGetM,mxGetN,mxGetName,%
      mxGetNzmax,mxGetPi,mxGetPr,mxGetScalar,mxGetString,mxIsComplex,%
      mxIsFull,mxIsNumeric,mxIsSparse,mxIsString,mxIsTypeDouble,%
      mxSetIr,mxSetJc,mxSetM,mxSetN,mxSetName,mxSetNzmax,mxSetPi,%
      mxSetPr,NaN,nargchk,nargin,nargout,newplot,nextpow2,nnls,nnz,%
      nonzeros,norm,normest,null,num2str,nzmax,ode23,ode45,orient,orth,%
      pack,pascal,patch,path,pause,pcolor,pi,pink,pinv,plot,plot3,%
      pol2cart,polar,poly,polyder,polyeig,polyfit,polyval,polyvalm,%
      pow2,print,printopt,prism,prod,pwd,qr,qrdelete,qrinsert,quad,%
      quad8,quit,quiver,qz,rand,randn,randperm,rank,rat,rats,rbbox,%
      rcond,real,realmax,realmin,refresh,rem,reset,reshape,residue,%
      return,rgb2hsv,rgbplot,rootobject,roots,rose,rosser,rot90,rotate,%
      round,rref,rrefmovie,rsf2csf,save,saxis,schur,sec,sech,semilogx,%
      semilogy,set,setstr,shading,sign,sin,sinh,size,slice,sort,sound,%
      spalloc,sparse,spaugment,spconvert,spdiags,specular,speye,spfun,%
      sph2cart,sphere,spinmap,spline,spones,spparms,sprandn,sprandsym,%
      sprank,sprintf,spy,sqrt,sqrtm,sscanf,stairs,startup,std,stem,%
      str2mat,str2num,strcmp,strings,strrep,strtok,subplot,subscribe,%
      subspace,sum,surf,surface,surfc,surfl,surfnorm,svd,symbfact,%
      symmmd,symrcm,tan,tanh,tempdir,tempname,terminal,text,tic,title,%
      toc,toeplitz,trace,trapz,tril,triu,type,uicontrol,uigetfile,%
      uimenu,uiputfile,unix,unwrap,upper,vander,ver,version,view,%
      viewmtx,waitforbuttonpress,waterfall,wavread,wavwrite,what,%
      whatsnew,which,while,white,whitebg,who,whos,wilkinson,wk1read,%
      wk1write,xlabel,xor,ylabel,zeros,zlabel,zoom},%
   sensitive,%
   commentline=\%,%
   stringizer=[m]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</matlab>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Mathematica}
%
% \lstthanks{Michael Wiese}{wiese@itwm.uni-kl.de}{1999/02/25} typed in all the keywords!
% \begingroup
%    \begin{macrocode}
%<*mathematica>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Mathematica definitions (c) 1999 Michael Wiese <wiese@itwm.uni-kl.de>
%%
\lst@definelanguage[3.0]{Mathematica}[1.0]{Mathematica}%
  {morekeywords={Abort,AbortProtect,AbsoluteDashing,AbsolutePointSize,%
      AbsoluteThickness,AbsoluteTime,AccountingFormAiry,AiPrime,AiryBi,%
      AiryBiPrime,Alternatives,AnchoredSearch,AxesEdge,AxesOrigin,%
      AxesStyle,Background,BetaRegularized,BoxStyle,C,CheckAbort,%
      Circle,ClebschGordan,CMYKColor,ColorFunction,ColorOutput,Compile,%
      Compiled,CompiledFunction,ComplexExpand,ComposeList,Composition,%
      ConstrainedMax,ConstrainedMin,Contexts,ContextToFilename,%
      ContourLines,Contours,ContourShading,ContourSmoothing,%
      ContourStyle,CopyDirectory,CopyFile,CosIntegral,CreateDirectory,%
      Cuboid,Date,DeclarePackage,DefaultColor,DefaultFont,Delete,%
      DeleteCases,DeleteDirectory,DeleteFile,Dialog,DialogIndent,%
      DialogProlog,DialogSymbols,DigitQ,Directory,DirectoryStack,Disk,%
      Dispatch,DownValues,DSolve,Encode,Epilog,Erfc,Evaluate,%
      ExponentFunction,FaceGrids,FileByteCount,FileDate,FileNames,%
      FileType,Find,FindList,FixedPointList,FlattenAt,Fold,FoldList,%
      Frame,FrameLabel,FrameStyle,FrameTicks,FromCharacterCode,%
      FromDate,FullGraphics,FullOptions,GammaRegularized,%
      GaussianIntegers,GraphicsArray,GraphicsSpacing,GridLines,%
      GroebnerBasis,Heads,HeldPart,HomeDirectory,Hue,IgnoreCases,%
      InputStream,Install,InString,IntegerDigits,InterpolatingFunction,%
      InterpolatingPolynomial,Interpolation,Interrupt,InverseFunction,%
      InverseFunctions,JacobiZeta,LetterQ,LinearProgramming,ListPlay,%
      LogGamma,LowerCaseQ,MachineNumberQ,MantissaExponent,MapIndexed,%
      MapThread,MatchLocalNames,MatrixExp,MatrixPower,MeshRange,%
      MeshStyle,MessageList,Module,NDSolve,NSolve,NullRecords,%
      NullWords,NumberFormat,NumberPadding,NumberSigns,OutputStream,%
      PaddedForm,ParentDirectory,Pause,Play,PlayRange,PlotRegion,%
      PolygonIntersections,PolynomialGCD,PolynomialLCM,PolynomialMod,%
      PostScript,PowerExpand,PrecisionGoal,PrimePi,Prolog,%
      QRDecomposition,Raster,RasterArray,RealDigits,Record,RecordLists,%
      RecordSeparators,ReleaseHold,RenameDirectory,RenameFile,%
      ReplaceHeldPart,ReplacePart,ResetDirectory,Residue,%
      RiemannSiegelTheta,RiemannSiegelZ,RotateLabel,SameTest,%
      SampleDepth,SampledSoundFunction,SampledSoundList,SampleRate,%
      SchurDecomposition,SessionTime,SetAccuracy,SetDirectory,%
      SetFileDate,SetPrecision,SetStreamPosition,Shallow,SignPadding,%
      SinIntegral,SixJSymbol,Skip,Sound,SpellingCorrection,%
      SphericalRegion,Stack,StackBegin,StackComplete,StackInhibit,%
      StreamPosition,Streams,StringByteCount,StringConversion,%
      StringDrop,StringInsert,StringPosition,StringReplace,%
      StringReverse,StringTake,StringToStream,SurfaceColor,%
      SyntaxLength,SyntaxQ,TableAlignments,TableDepth,%
      TableDirections,TableHeadings,TableSpacing,ThreeJSymbol,TimeUsed,%
      TimeZone,ToCharacterCode,ToDate,ToHeldExpression,TokenWords,%
      ToLowerCase,ToUpperCase,Trace,TraceAbove,TraceBackward,%
      TraceDepth,TraceDialog,TraceForward,TraceOff,TraceOn,%
      TraceOriginal,TracePrint,TraceScan,Trig,Unevaluated,Uninstall,%
      UnsameQ,UpperCaseQ,UpValues,ViewCenter,ViewVertical,With,Word,%
      WordSearch,WordSeparators},%
    morendkeywords={Stub,Temporary,$Aborted,$BatchInput,$BatchOutput,%
      $CreationDate,$DefaultFont,$DumpDates,$DumpSupported,$Failed,%
      $Input,$Inspector,$IterationLimit,$Language,$Letters,$Linked,%
      $LinkSupported,$MachineEpsilon,$MachineID,$MachineName,%
      $MachinePrecision,$MachineType,$MaxMachineNumber,$MessageList,%
      $MessagePrePrint,$MinMachineNumber,$ModuleNumber,$NewMessage,%
      $NewSymbol,$Notebooks,$OperatingSystem,$Packages,$PipeSupported,%
      $PreRead,$ReleaseNumber,$SessionID,$SoundDisplayFunction,%
      $StringConversion,$StringOrder,$SyntaxHandler,$TimeUnit,%
      $VersionNumber}%
  }%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[1.0]{Mathematica}%
  {keywords={Abs,Accuracy,AccurayGoal,AddTo,AiryAi,AlgebraicRules,%
      AmbientLight,And,Apart,Append,AppendTo,Apply,ArcCos,ArcCosh,%
      ArcCot,ArcCoth,ArcCsc,ArcCsch,ArcSec,ArcSech,ArcSin,ArcSinh,%
      ArcTan,ArcTanh,Arg,ArithmeticGeometricMean,Array,AspectRatio,%
      AtomQ,Attributes,Axes,AxesLabel,BaseForm,Begin,BeginPackage,%
      BernoulliB,BesselI,BesselJ,BesselK,BesselY,Beta,Binomial,Blank,%
      BlankNullSequence,BlankSequence,Block,Boxed,BoxRatios,Break,Byte,%
      ByteCount,Cancel,Cases,Catch,Ceiling,CForm,Character,Characters,%
      ChebyshevT,ChebyshevU,Check,Chop,Clear,ClearAll,ClearAttributes,%
      ClipFill,Close,Coefficient,CoefficientList,Collect,ColumnForm,%
      Complement,Complex,CompoundExpression,Condition,Conjugate,%
      Constants,Context,Continuation,Continue,ContourGraphics,%
      ContourPlot,Cos,Cosh,Cot,Coth,Count,Csc,Csch,Cubics,Cyclotomic,%
      D,Dashing,Decompose,Decrement,Default,Definition,Denominator,%
      DensityGraphics,DensityPlot,Depth,Derivative,Det,DiagonalMatrix,%
      DigitBlock,Dimensions,DirectedInfinity,Display,DisplayFunction,%
      Distribute,Divide,DivideBy,Divisors,DivisorSigma,Do,Dot,Drop,Dt,%
      Dump,EdgeForm,Eigensystem,Eigenvalues,Eigenvectors,Eliminate,%
      EllipticE,EllipticExp,EllipticF,EllipticK,EllipticLog,EllipticPi,%
      EllipticTheta,End,EndPackage,EngineeringForm,Environment,Equal,%
      Erf,EulerE,EulerPhi,EvenQ,Exit,Exp,Expand,ExpandAll,%
      ExpandDenominator,ExpandNumerator,ExpIntegralE,ExpIntegralEi,%
      Exponent,Expression,ExtendedGCD,FaceForm,Factor,FactorComplete,%
      Factorial,Factorial2,FactorInteger,FactorList,FactorSquareFree,%
      FactorSquareFreeList,FactorTerms,FactorTermsList,FindMinimum,%
      FindRoot,First,Fit,FixedPoint,Flatten,Floor,FontForm,For,Format,%
      FormatType,FortranForm,Fourier,FreeQ,FullDefinition,FullForm,%
      Function,Gamma,GCD,GegenbauerC,General,Get,Goto,Graphics,%
      Graphics3D,GrayLevel,Greater,GreaterEqual,Head,HermiteH,%
      HiddenSurface,Hold,HoldForm,Hypergeometric0F1, Hypergeometric1F1,%
      Hypergeometric2F1,HypergeometricU,Identity,IdentityMatrix,If,Im,%
      Implies,In,Increment,Indent,Infix,Information,Inner,Input,%
      InputForm,InputString,Insert,Integer,IntegerQ,Integrate,%
      Intersection,Inverse,InverseFourier,InverseJacobiSN,%
      InverseSeries,JacobiAmplitude,JacobiP,JacobiSN,JacobiSymbol,Join,%
      Label,LaguerreL,Last,LatticeReduce,LCM,LeafCount,LegendreP,%
      LegendreQ,LegendreType,Length,LerchPhi,Less,LessEqual,Level,%
      Lighting,LightSources,Limit,Line,LinearSolve,LineBreak,List,%
      ListContourPlot,ListDensityPlot,ListPlot,ListPlot3D,Literal,Log,%
      LogicalExpand,LogIntegral,MainSolve,Map,MapAll,MapAt,MatchQ,%
      MatrixForm,MatrixQ,Max,MaxBend,MaxMemoryUsed,MemberQ,%
      MemoryConstrained,MemoryInUse,Mesh,Message,MessageName,Messages,%
      Min,Minors,Minus,Mod,Modulus,MoebiusMu,Multinomial,N,NameQ,Names,%
      NBernoulliB,Needs,Negative,Nest,NestList,NIntegrate,%
      NonCommutativeMultiply,NonConstants,NonNegative,Normal,Not,%
      NProduct,NSum,NullSpace,Number,NumberForm,NumberPoint,NumberQ,%
      NumberSeparator,Numerator,O,OddQ,Off,On,OpenAppend,OpenRead,%
      OpenTemporary,OpenWrite,Operate,Optional,Options,Or,Order,%
      OrderedQ,Out,Outer,OutputForm,PageHeight,PageWidth,%
      ParametricPlot,ParametricPlot3D,Part,Partition,PartitionsP,%
      PartitionsQ,Pattern,Permutations,Plot,Plot3D,PlotDivision,%
      PlotJoined,PlotLabel,PlotPoints,PlotRange,PlotStyle,Pochhammer,%
      Plus,Point,PointSize,PolyGamma,Polygon,PolyLog,PolynomialQ,%
      PolynomialQuotient,PolynomialRemainder,Position,Positive,Postfix,%
      Power,PowerMod,PrecedenceForm,Precision,PreDecrement,Prefix,%
      PreIncrement,Prepend,PrependTo,Prime,PrimeQ,Print,PrintForm,%
      Product,Protect,PseudoInverse,Put,PutAppend,Quartics,Quit,%
      Quotient,Random,Range,Rational,Rationalize,Raw,Re,Read,ReadList,%
      Real,Rectangle,Reduce,Remove,RenderAll,Repeated,RepeatedNull,%
      Replace,ReplaceAll,ReplaceRepeated,Rest,Resultant,Return,Reverse,%
      RGBColor,Roots,RotateLeft,RotateRight,Round,RowReduce,Rule,%
      RuleDelayed,Run,RunThrough,SameQ,Save,Scaled,Scan,ScientificForm,%
      Sec,Sech,SeedRandom,Select,Sequence,SequenceForm,Series,%
      SeriesData,Set,SetAttributes,SetDelayed,SetOptions,Shading,Share,%
      Short,Show,Sign,Signature,Simplify,Sin,SingularValues,Sinh,%
      Skeleton,Slot,SlotSequence,Solve,SolveAlways,Sort,%
      SphericalHarmonicY,Splice,Sqrt,StirlingS1,StirlingS2,String,%
      StringBreak,StringForm,StringJoin,StringLength,StringMatchQ,%
      StringSkeleton,Subscript,Subscripted,Subtract,SubtractForm,Sum,%
      Superscript,SurfaceGraphics,Switch,Symbol,Table,TableForm,TagSet,%
      TagSetDelayed,TagUnset,Take,Tan,Tanh,ToString,TensorRank,TeXForm,%
      Text,TextForm,Thickness,Thread,Through,Throw,Ticks,%
      TimeConstrained,Times,TimesBy,Timing,ToExpression,Together,%
      ToRules,ToString,TotalHeight,TotalWidth,Transpose,TreeForm,TrueQ,%
      Unequal,Union,Unique,Unprotect,Unset,Update,UpSet,UpSetDelayed,%
      ValueQ,Variables,VectorQ,ViewPoint,WeierstrassP,%
      WeierstrassPPrime,Which,While,WorkingPrecision,Write,WriteString,%
      Xor,ZeroTest,Zeta},%
   ndkeywords={All,Automatic,Catalan,ComplexInfinity,Constant,Degree,E,%
      EndOfFile,EulerGamma,False,Flat,GoldenRatio,HoldAll,HoldFirst,%
      HoldRest,I,Indeterminate,Infinity,Listable,Locked,Modular,None,%
      Null,OneIdentity,Orderless,Pi,Protected,ReadProtected,True,%
      $CommandLine,$Context,$ContextPath,$Display,$DisplayFunction,%
      $Echo,$Epilog,$IgnoreEOF,$Line,$Messages,$Output,$Path,$Post,%
      $Pre,$PrePrint,$RecursionLimit,$System,$Urgent,$Version},%
   sensitive,%
   singlecomment={(*}{*)},%
   stringizer=[d]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</mathematica>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Mercury}
%
% \lstthanks{Dominique~de~Waleffe}{ddw@miscrit.be}{1997/11/24} mailed me these data.
% \begingroup
%    \begin{macrocode}
%<*mercury>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Mercury definition (c) 1997 Dominique de Waleffe <ddw@miscrit.be>
%%
\lst@definelanguage{Mercury}%
  {otherkeywords={::,->,-->,--->,:-},%
   keywords={pred,type,module,end_module,import_module,mode,%
      pragma,func,lambda,det,semidet,erroneous,multi,true,fail,is,in,%
      out,di,uo,ui,interface,implementation},%
   sensitive=f,%
   commentline=\%,%
   singlecomment={/*}{*/},%
   stringizer=[bd]"'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</mercury>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Miranda}
%
% Thanks to \lsthelper{Peter~Bartke}{bartke@inf.fu-berlin.de}{1999/01/30}{} for providing the definition.
% \begingroup
%    \begin{macrocode}
%<*miranda>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Miranda definition (c) 1998 Peter Bartke <bartke@inf.fu-berlin.de>
%% 
%% Miranda: pure lazy functional language with polymorphic type system,
%%          garbage collection and functions as first class citizens
%%
\lst@definelanguage{Miranda}%
  {keywords={abstype,div,if,mod,otherwise,readvals,show,type,where,%
     with,bool,char,num,sys_message,False,True,Appendfile,Closefile,%
     Exit,Stderr,Stdout,System,Tofile,\%include,\%export,\%free,%
     \%insert,abs,and,arctan,cjustify,code,concat,const,converse,cos,%
     decode,digit,drop,dropwhile,entier,error,exp,filemode,filter,%
     foldl,foldl1,foldr,foldr1,force,fst,getenv,hd,hugenum,id,index,%
     init,integer,iterate,last,lay,layn,letter,limit,lines,ljustify,%
     log,log10,map,map2,max,max2,member,merge,min,min2,mkset,neg,%
     numval,or,pi,postfix,product,read,rep,repeat,reverse,rjustify,%
     scan,seq,showfloat,shownum,showscaled,sin,snd,sort,spaces,sqrt,%
     subtract,sum,system,take,takewhile,tinynum,tl,transpose,undef,%
     until,zip2,zip3,zip4,zip5,zip6,zip},%
   sensitive,%
   commentline=||,%
   stringizer=[b]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</miranda>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{ML}
%
% Thanks to \lstthanks{Torben~Hoffmann}{toho@it.dtu.dk}{1999/02/18} for providing the definition.
% \begingroup
%    \begin{macrocode}
%<*ml>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% ML definition (c) 1999 Torben Hoffmann <toho@it.dtu.dk>
%%
\lst@definelanguage{ML}%
  {keywords={abstype,and,andalso,as,case,do,datatype,else,end,eqtype,%
       exception,fn,fun,functor,handle,if,in,include,infix,infixr,%
       let,local,nonfix,of,op,open,orelse,raise,rec,sharing,sig,%
       signature,struct,structure,then,type,val,with,withtype,while},%
   sensitive,%
   nestedcomment={(*}{*)},%
   stringizer=[d]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</ml>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Modula-2}
%
% Took data from
% \begin{itemize}
% \item
%       \textsc{Niklaus Wirth}: \textbf{Programmieren in Modula-2},
%       \"Ubers.\ Guido Pfeiffer;
%       2.\ Auflage -- Berlin; Heidelberg; New York; London; Paris; Tokyo;
%               Hong Kong: Springer, 1991;
%       ISBN 3-540-51689-1.
% \end{itemize}
% \begingroup
%    \begin{macrocode}
%<*modula>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Modula-2}%
  {keywords={AND,ARRAY,BEGIN,BY,CASE,CONST,DIV,DO,ELSE,ELSIF,END,EXIT,%
      EXPORT,FOR,FROM,IF,IMPLEMENTATION,IMPORT,IN,MOD,MODULE,NOT,OF,%
      OR,POINTER,PROCEDURE,QUALIFIED,RECORD,REPEAT,RETURN,SET,THEN,%
      TYPE,UNTIL,VAR,WHILE,WITH,ABS,BITSET,BOOLEAN,CAP,CARDINAL,CHAR,%
      CHR,DEC,EXCL,FALSE,FLOAT,HALT,HIGH,INC,INCL,INTEGER,LONGCARD,%
      LONGINT,LONGREAL,MAX,MIN,NIL,ODD,ORD,PROC,REAL,SIZE,TRUE,TRUNC,%
      VAL},%
   sensitive,%
   nestedcomment={(*}{*)},%
   stringizer=[d]'"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</modula>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Oberon-2}
%
% \begingroup
%    \begin{macrocode}
%<*oberon>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Oberon-2}%
  {keywords={ARRAY,BEGIN,BOOLEAN,BY,CASE,CHAR,CONST,DIV,DO,ELSE,%
      ELSIF,END,EXIT,FALSE,FOR,IF,IMPORT,IN,INTEGER,IS,LONGINT,%
      LONGREAL,LOOP,MOD,MODULE,NIL,OF,OR,POINTER,PROCEDURE,REAL,RECORD,%
      REPEAT,RETURN,SET,SHORTINT,THEN,TO,TRUE,TYPE,UNTIL,VAR,WHILE,%
      WITH,ABS,ASH,CAP,CHR,COPY,DEC,ENTIER,EXCL,HALT,INC,INCL,LEN,LONG,%
      MAX,MIN,NEW,ODD,ORD,SHORT,SIZE},%
   sensitive,%
   nestedcomment={(*}{*)},%
   stringizer=[d]'"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</oberon>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Pascal}
%
% \begingroup
%    \begin{macrocode}
%<*pascal>
%    \end{macrocode}
% Thanks to \lsthelper{Andreas Stephan}{Andreas.Stephan@victoria.de}{1998/04/07}{alpha, byte, pack, unpack} for reporting non-keywords alpha, byte, pack and unpack.
%    \begin{macrocode}
\lst@definelanguage[XSC]{Pascal}[Standard]{Pascal}
  {deletekeywords={alfa,byte,pack,unpack},% 1998 Andreas Stephan
   morekeywords={dynamic,external,forward,global,module,nil,operator,%
      priority,sum,type,use,dispose,mark,page,release,cimatrix,%
      cinterval,civector,cmatrix,complex,cvector,dotprecision,imatrix,%
      interval,ivector,rmatrix,rvector,string,im,inf,re,sup,chr,comp,%
      eof,eoln,expo,image,ival,lb,lbound,length,loc,mant,maxlength,odd,%
      ord,pos,pred,round,rval,sign,substring,succ,trunc,ub,ubound}%
  }%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[Borland6]{Pascal}[Standard]{Pascal}
  {morekeywords={asm,constructor,destructor,implementation,inline,%
      interface,nil,object,shl,shr,string,unit,uses,xor},%
   ndkeywords={Abs,Addr,ArcTan,Chr,Concat,Copy,Cos,CSeg,DiskFree,%
      DiskSize,DosExitCode,DosVersion,DSeg,EnvCount,EnvStr,Eof,Eoln,%
      Exp,FExpand,FilePos,FileSize,Frac,FSearch,GetBkColor,GetColor,%
      GetDefaultPalette,GetDriverName,GetEnv,GetGraphMode,GetMaxMode,%
      GetMaxX,GetMaxY,GetModeName,GetPaletteSize,GetPixel,GetX,GetY,%
      GraphErrorMsg,GraphResult,Hi,ImageSize,InstallUserDriver,%
      InstallUserFont,Int,IOResult,KeyPressed,Length,Lo,MaxAvail,%
      MemAvail,MsDos,Odd,Ofs,Ord,OvrGetBuf,OvrGetRetry,ParamCount,%
      ParamStr,Pi,Pos,Pred,Ptr,Random,ReadKey,Round,SeekEof,SeekEoln,%
      Seg,SetAspectRatio,Sin,SizeOf,Sound,SPtr,Sqr,Sqrt,SSeg,Succ,%
      Swap,TextHeight,TextWidth,Trunc,TypeOf,UpCase,WhereX,WhereY,%
      Append,Arc,Assign,AssignCrt,Bar,Bar3D,BlockRead,BlockWrite,ChDir,%
      Circle,ClearDevice,ClearViewPort,Close,CloseGraph,ClrEol,ClrScr,%
      Dec,Delay,Delete,DelLine,DetectGraph,Dispose,DrawPoly,Ellipse,%
      Erase,Exec,Exit,FillChar,FillEllipse,FillPoly,FindFirst,FindNext,%
      FloodFill,Flush,FreeMem,FSplit,GetArcCoords,GetAspectRatio,%
      GetDate,GetDefaultPalette,GetDir,GetCBreak,GetFAttr,%
      GetFillSettings,GetFTime,GetImage,GetIntVec,GetLineSettings,%
      GetMem,GetPalette,GetTextSettings,GetTime,GetVerify,%
      GetViewSettings,GoToXY,Halt,HighVideo,Inc,InitGraph,Insert,%
      InsLine,Intr,Keep,Line,LineRel,LineTo,LowVideo,Mark,MkDir,Move,%
      MoveRel,MoveTo,MsDos,New,NormVideo,NoSound,OutText,OutTextXY,%
      OvrClearBuf,OvrInit,OvrInitEMS,OvrSetBuf,PackTime,PieSlice,%
      PutImage,PutPixel,Randomize,Rectangle,Release,Rename,%
      RestoreCrtMode,RmDir,RunError,Sector,Seek,SetActivePage,%
      SetAllPalette,SetBkColor,SetCBreak,SetColor,SetDate,SetFAttr,%
      SetFillPattern,SetFillStyle,SetFTime,SetGraphBufSize,%
      SetGraphMode,SetIntVec,SetLineStyle,SetPalette,SetRGBPalette,%
      SetTextBuf,SetTextJustify,SetTextStyle,SetTime,SetUserCharSize,%
      SetVerify,SetViewPort,SetVisualPage,SetWriteMode,Sound,Str,%
      SwapVectors,TextBackground,TextColor,TextMode,Truncate,%
      UnpackTime,Val,Window}%
  }%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[Standard]{Pascal}%
  {keywords={alfa,and,array,begin,boolean,byte,case,char,const,div,do,%
      downto,else,end,false,file,for,function,get,goto,if,in,integer,%
      label,maxint,mod,new,not,of,or,pack,packed,page,program,put,%
      procedure,read,readln,real,record,repeat,reset,rewrite,set,text,%
      then,to,true,type,unpack,until,var,while,with,write,writeln},%
   sensitive=f,%
   doublecomment={(*}{*)}{\{}{\}},%
   stringizer=[d]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</pascal>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Perl}
%
% I got the data from \texttt{http://www.perl.com}.
% But I wish to thank \lsthelper{Herbert~Weinhandl}{weinhand@grz08u.unileoben.ac.at}{}{} for the book `Learning Perl'.
% \begingroup
%    \begin{macrocode}
%<*perl>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Perl}%
  {keywords={abs,accept,alarm,atan2,bind,binmode,bless,caller,chdir,%
      chmod,chomp,chop,chown,chr,chroot,close,closedir,connect,%
      continue,cos,crypt,dbmclose,dbmopen,defined,delete,die,do,dump,%
      each,else,elsif,endgrent,endhostent,endnetent,endprotoent,%
      endpwent,endservent,eof,eval,exec,exists,exit,exp,fcntl,fileno,%
      flock,for,foreach,fork,format,formline,getc,getgrent,getgrgid,%
      getgrnam,gethostbyaddr,gethostbyname,gethostent,getlogin,%
      getnetbyaddr,getnetbyname,getnetent,getpeername,getpgrp,%
      getppid,getpriority,getprotobyname,getprotobynumber,getprotoent,%
      getpwent,getpwnam,getpwuid,getservbyname,getservbyport,%
      getservent,getsockname,getsockopt,glob,gmtime,goto,grep,hex,if,%
      import,index,int,ioctl,join,keys,kill,last,lc,lcfirst,length,%
      link,listen,local,localtime,log,lstat,m,map,mkdir,msgctl,msgget,%
      msgrcv,msgsnd,my,next,no,oct,open,opendir,ord,pack,package,pipe,%
      pop,pos,print,printf,prototype,push,q,qq,quotemeta,qw,qx,rand,%
      read,readdir,readlink,recv,redo,ref,rename,require,reset,return,%
      reverse,rewinddir,rindex,rmdir,s,scalar,seek,seekdir,select,%
      semctl,semget,semop,send,setgrent,sethostent,setnetent,setpgrp,%
      setpriority,setprotoent,setpwent,setservent,setsockopt,shift,%
      shmctl,shmget,shmread,shmwrite,shutdown,sin,sleep,socket,%
      socketpair,sort,splice,split,sprintf,sqrt,srand,stat,study,sub,%
      substr,symlink,syscall,sysopen,sysread,system,syswrite,tell,%
      telldir,tie,tied,time,times,tr,truncate,uc,ucfirst,umask,undef,%
      unless,unlink,unpack,unshift,untie,until,use,utime,values,vec,%
      wait,waitpid,wantarray,warn,while,write,y},%
   sensitive,%
   commentline=\#,%
   stringizer=[b]"',%
   SelectCharTable=%
      \lst@ReplaceInput{\$\#}{\lst@ProcessOther\$\lst@ProcessOther\#}%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</perl>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{PL/I}
%
% Found the data in
% \begin{itemize}
% \item
%		\textsc{Bernhard Fischer, Herman Fischer}:
%		\textbf{Structured Programming in PL/I and PL/C};
%		Copyright {\copyright} 1976 by Marcel Dekker, Inc.;
%		ISBN 0-8247-6394-7
% \end{itemize}
% \begingroup
%    \begin{macrocode}
%<*pli>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{PL/I}%
  {keywords={ABS,ATAN,AUTOMATIC,AUTO,ATAND,BEGIN,BINARY,BIN,BIT,%
      BUILTIN,BY,CALL,CHARACTER,CHAR,CHECK,COLUMN,COL,COMPLEX,CPLX,%
      COPY,COS,COSD,COSH,DATA,DATE,DECIMAL,DEC,DECLARE,DCL,DO,EDIT,%
      ELSE,END,ENDFILE,ENDPAGE,ENTRY,EXP,EXTERNAL,EXT,FINISH,FIXED,%
      FIXEDOVERFLOW,FOFL,FLOAT,FORMAT,GET,GO,GOTO,IF,IMAG,INDEX,%
      INITIAL,INIT,INTERNAL,INT,LABEL,LENGTH,LIKE,LINE,LIST,LOG,LOG2,%
      LOG10,MAIN,MAX,MIN,MOD,NOCHECK,NOFIXEDOVERFLOW,NOFOFL,NOOVERFLOW,%
      NOOFL,NOSIZE,NOUNDERFLOW,NOUFL,NOZERODIVIDE,NOZDIV,ON,OPTIONS,%
      OVERFLOW,OFL,PAGE,PICTURE,PROCEDURE,PROC,PUT,READ,REPEAT,RETURN,%
      RETURNS,ROUND,SIN,SIND,SINH,SIZE,SKIP,SQRT,STATIC,STOP,STRING,%
      SUBSTR,SUM,SYSIN,SYSPRINT,TAN,TAND,TANH,THEN,TO,UNDERFLOW,UFL,%
      VARYING,WHILE,WRITE,ZERODIVIDE,ZDIV},%
   sensitive=f,%
   singlecomment={/*}{*/},%
   stringizer=[d]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</pli>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{POV-Ray}
%
% \lstthanks{Berthold~H\"ollmann}{bhoel@starship.python.net}{1999/04/15} sent me the definition.
% But I removed |blankstring=false| and |flexiblecolumns=true| from the driver since they have nothing to do with a language definition.
% \begingroup
%    \begin{macrocode}
%<*pov>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% POV definition (c) 1999 Berthold Höllmann <bhoel@starship.python.net>
%%
\lst@definelanguage{POV}%
  {keywords={abs,absorption,acos,acosh,adaptive,adc_bailout,agate,%
      agate_turb,all,alpha,ambient,ambient_light,angle,aperture,append,%
      arc_angle,area_light,array,asc,asin,asinh,assumed_gamma,atan,%
      atan2,atanh,average,background,bezier_spline,bicubic_patch,%
      black_hole,blob,blue,blur_samples,bounded_by,box,boxed,bozo,%
      break,brick,brick_size,brightness,brilliance,bumps,bump_map,%
      bump_size,camera,case,caustics,ceil,checker,chr,clipped_by,clock,%
      clock_delta,color,color_map,colour,colour_map,component,%
      composite,concat,cone,confidence,conic_sweep,control0,control1,%
      cos,cosh,count,crackle,crand,cube,cubic,cubic_spline,cubic_wave,%
      cylinder,cylindrical,debug,declare,default,defined,degrees,%
      density,density_file,density_map,dents,difference,diffuse,%
      dimensions,dimension_size,direction,disc,distance,%
      distance_maximum,div,eccentricity,else,emission,end,error,%
      error_bound,exp,extinction,fade_distance,fade_power,falloff,%
      falloff_angle,false,fclose,file_exists,filter,finish,fisheye,%
      flatness,flip,floor,focal_point,fog,fog_alt,fog_offset,fog_type,%
      fopen,frequency,gif,global_settings,gradient,granite,%
      gray_threshold,green,height_field,hexagon,hf_gray_16,hierarchy,%
      hollow,hypercomplex,if,ifdef,iff,ifndef,image_map,include,int,%
      interior,interpolate,intersection,intervals,inverse,ior,irid,%
      irid_wavelength,jitter,julia_fractal,lambda,lathe,leopard,%
      light_source,linear_spline,linear_sweep,local,location,log,%
      looks_like,look_at,low_error_factor,macro,mandel,map_type,marble,%
      material,material_map,matrix,max,max_intersections,max_iteration,%
      max_trace_level,media,media_attenuation,media_interaction,merge,%
      mesh,metallic,min,minimum_reuse,mod,mortar,nearest_count,no,%
      normal,normal_map,no_shadow,number_of_waves,object,octaves,off,%
      offset,omega,omnimax,on,once,onion,open,orthographic,panoramic,%
      perspective,pgm,phase,phong,phong_size,pi,pigment,pigment_map,%
      planar,plane,png,point_at,poly,polygon,poly_wave,pot,pow,ppm,%
      precision,prism,pwr,quadratic_spline,quadric,quartic,quaternion,%
      quick_color,quick_colour,quilted,radial,radians,radiosity,radius,%
      rainbow,ramp_wave,rand,range,ratio,read,reciprocal,%
      recursion_limit,red,reflection,reflection_exponent,refraction,%
      render,repeat,rgb,rgbf,rgbft,rgbt,right,ripples,rotate,roughness,%
      samples,scale,scallop_wave,scattering,seed,shadowless,sin,%
      sine_wave,sinh,sky,sky_sphere,slice,slope_map,smooth,%
      smooth_triangle,sor,specular,sphere,spherical,spiral1,spiral2,%
      spotlight,spotted,sqr,sqrt,statistics,str,strcmp,strength,strlen,%
      strlwr,strupr,sturm,substr,superellipsoid,switch,sys,t,tan,tanh,%
      text,texture,texture_map,tga,thickness,threshold,tightness,tile2,%
      tiles,torus,track,transform,translate,transmit,triangle,%
      triangle_wave,true,ttf,turbulence,turb_depth,type,u,%
      ultra_wide_angle,undef,union,up,use_color,use_colour,use_index,%
      u_steps,v,val,variance,vaxis_rotate,vcross,vdot,version,vlength,%
      vnormalize,vrotate,v_steps,warning,warp,water_level,waves,while,%
      width,wood,wrinkles,write,x,y,yes,z},%
   directives={break,case,debug,declare,default,else,end,fclose,fopen,%
      local,macro,read,render,statistics,switch,undef,version,warning,%
      write},%
   sensitive,%
   commentline=//,%
   singlecomment={/*}{*/},%
   stringizer=[d]",%
  }[keywords,directives,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</pov>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Prolog}
%
% \lsthelper{Dominique~de~Waleffe}{ddw@miscrit.be}{1997/11/24}{Prolog} mailed me the data for Prolog.
% He took the keywords from the \textsf{LGrind} language definition file.
% \begingroup
%    \begin{macrocode}
%<*prolog>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Prolog definition (c) 1997 Dominique de Waleffe <ddw@miscrit.be>
%%
\lst@definelanguage{Prolog}%
  {keywords={op,mod,abort,ancestors,arg,ascii,ask,assert,asserta,%
      assertz,atom,atomic,char,clause,close,concat,consult,ed,ef,em,%
      eof,fail,file,findall,write,functor,getc,integer,is,length,%
      listing,load,name,nl,nonvar,not,numbervars,op,or,pp,prin,print,%
      private,prompt,putc,ratom,read,read_from_this_file,rename,repeat,%
      retract,retractall,save,see,seeing,seen,sh,skip,statistics,%
      subgoal_of,system,tab,tell,telling,time,told,trace,true,unload,%
      untrace,var,write},%
   sensitive=f,%
   commentline=\%,%
   singlecomment={/*}{*/},%
   stringizer=[bd]"'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</prolog>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Python}
%
% \lstthanks{Michael~Weber}{mweber@informatik.hu-berlin.de}{1998/12/21} sent me the definition.
% He got data from \textsc{Mark Lutz}: \textbf{Programming Python}; O'Reilly 1996; ISBN 1-56592-197-6.
% \begingroup
%    \begin{macrocode}
%<*python>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Python definition (c) 1998 Michael Weber
%%                            <mweber@informatik.hu-berlin.de>
%%
\lst@definelanguage{Python}%
  {keywords={access,and,break,class,continue,def,del,elif,else,except,%
      exec,finally,for,from,global,if,import,in,is,lambda,not,or,pass,%
      print,raise,return,try,while},%
   sensitive=true,%
   commentline=\#,%
   singlecomment={'''}{'''},% used for documentation text
   stringizer={'"}% 
  }%
%    \end{macrocode}
%    \begin{macrocode}
%</python>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{SHELXL}
%
% Thanks to \lstthanks{Aidan~Philip~Heerdegen}{Aidan.Heerdegen@anu.edu.au}{1999/07/09} for mailing this definition.
% \begingroup
%    \begin{macrocode}
%<*shelxl>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% SHELXL definition (c) 1999 Aidan~Philip~Heerdegen
%%                            <Aidan.Heerdegen@anu.edu.au>
%%
\lst@definelanguage{SHELXL}%
  {keywords={TITL,CELL,ZERR,LATT,SYMM,SFAC,DISP,UNIT,LAUE, %
      REM,MORE,TIME,END,HKLF,OMIT,SHEL,BASF,TWIN,EXTI,SWAT,%
      MERG,SPEC,RESI,MOVE,ANIS,AFIX,HFIX,FRAG,FEND,EXYZ,EADP,%        
      EQIV,OMIT,CONN,PART,BIND,FREE,DFIX,BUMP,SAME,SADI,CHIV,%
      FLAT,DELU,SIMU,DEFS,ISOR,SUMP,L.S.,CGLS,SLIM,BLOC,DAMP,%
      WGHT,FVAR,BOND,CONF,MPLA,RTAB,LIST,ACTA,SIZE,TEMP,WPDB,%
      FMAP,GRID,PLAN,MOLE},%
   sensitive=false,%
   alsoother=_,% Makes the syntax highlighting ignore the underscores
   fixedcommentline={! },%
   stringizer={}%
  }%
%    \end{macrocode}
%    \begin{macrocode}
%</shelxl>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Simula}
%
% Took data from
% \begin{itemize}
% \item
%		\textsc{G\"unther Lamprecht}:
%		\textbf{Introduction to SIMULA 67};
%		Braunschweig; Wiesbaden: Vieweg, 1981
% \end{itemize}
% \begingroup
%    \begin{macrocode}
%<*simula>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[IBM]{Simula}[DEC]{Simula}{}%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[DEC]{Simula}[67]{Simula}%
  {morekeywords={and,eq,eqv,ge,gt,hidden,imp,le,long,lt,ne,not,%
      options,or,protected,short}%
  }%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[CII]{Simula}[67]{Simula}%
  {morekeywords={and,equiv,exit,impl,not,or,stop}}%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[67]{Simula}%
  {keywords={activate,after,array,at,before,begin,boolean,character,%
      class,comment,delay,detach,do,else,end,external,false,for,go,%
      goto,if,in,inner,inspect,integer,is,label,name,new,none,notext,%
      otherwise,prior,procedure,qua,reactivate,real,ref,resume,simset,%
      simulation,step,switch,text,then,this,to,true,until,value,%
      virtual,when,while},%
   sensitive=f,%
   keywordcommentsemicolon={end}{else,end,otherwise,when}{comment},%
   stringizer=[d]"'%
  }[keywords,keywordcomments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</simula>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{SQL}
%
% Data come from \lstthanks{Christian~Haul}{haul@dvs1.informatik.tu-darmstadt.de}{1998/01/09}.
% \begingroup
%    \begin{macrocode}
%<*sql>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% SQL definition (c) 1998 Christian Haul
%%                         <haul@dvs1.informatik.tu-darmstadt.de>
%%
\lst@definelanguage{sql}%
  {keywords={ABSOLUTE,ACTION,ADD,ALLOCATE,ALTER,ARE,ASSERTION,AT,%
      BETWEEN,BIT,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,%
      CATALOG,CHAR,CHAR_LENGTH,CHARACTER_LENGTH,CLUSTER,COALESCE,%
      COLLATE,COLLATION,COLUMN,CONNECT,CONNECTION,CONSTRAINT,%
      CONSTRAINTS,CONVERT,CORRESPONDING,CREATE,CROSS,CURRENT_DATE,%
      CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_USER,DATE,DAY,DEALLOCATE,%
      DEC,DECIMAL,DEFERRABLE,DEFERED,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,%
      DISCONNECT,DOMAIN,DROP,ELSE,END,EXEC,EXCEPT,EXCEPTION,EXECUTE,%
      EXTERNAL,EXTRACT,FALSE,FIRST,FLOAT,FOREIGN,FROM,FULL,GET,GLOBAL,%
      GRAPHIC,HAVING,HOUR,IDENTITY,IMMEDIATE,INDEX,INITIALLY,INNER,%
      INPUT,INSENSITIVE,INT,INTEGER,INTERSECT,INTERVAL,ISOLATION,JOIN,%
      KEY,LAST,LEADING,LEFT,LEVEL,LOCAL,LOWER,MATCH,MINUTE,MONTH,NAMES,%
      NATIONAL,NATURAL,NCHAR,NEXT,NO,NOT,NULL,NULLIF,OCTET_LENGTH,ON,%
      ONLY,ORDERED,OUTER,OUTPUT,OVERLAPS,PAD,PARTIAL,POSITION,PREPARE,%
      PRESERVE,PRIMARY,PRIOR,READ,RELATIVE,RESTRICT,REVOKE,RIGHT,ROWS,%
      SCROLL,SECOND,SELECT,SESSION,SESSION_USER,SIZE,SMALLINT,SPACE,%
      SQLSTATE,SUBSTRING,SYSTEM_USER,TABLE,TEMPORARY,THEN,TIME,%
      TIMESTAMP,TIMEZONE_HOUR,TIMEZONE_MINUTE,TRAILING,TRANSACTION,%
      TRANSLATE,TRANSLATION,TRIM,TRUE,UNIQUE,UNKNOWN,UPPER,USAGE,USING,%
      VALUE,VARCHAR,VARGRAPHIC,VARYING,WHEN,WHERE,WRITE,YEAR,ZONE},%
   sensitive,%
   commentline=--,%
   singlecomment={/*}{*/},%
   stringizer=[d]'"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</sql>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{\TeX}
%
% I extracted the data from |plain.tex| and |latex.ltx|.
% \begingroup
%    \begin{macrocode}
%<*tex>
%    \end{macrocode}
%
%    \begin{macrocode}
\lst@definelanguage[AlLaTeX]{TeX}[LaTeX]{TeX}%
  {moretexcs={AtBeginDocument,AtBeginDvi,AtEndDocument,AtEndOfClass,%
      AtEndOfPackage,ClassError,ClassInfo,ClassWarning,%
      ClassWarningNoLine,CurrentOption,DeclareErrorFont,%
      DeclareFixedFont,DeclareFontEncoding,DeclareFontEncodingDefaults,%
      DeclareFontFamily,DeclareFontShape,DeclareFontSubstitution,%
      DeclareMathAccent,DeclareMathAlphabet,DeclareMathAlphabet,%
      DeclareMathDelimiter,DeclareMathRadical,DeclareMathSizes,%
      DeclareMathSymbol,DeclareMathVersion,DeclareOldFontCommand,%
      DeclareOption,DeclarePreloadSizes,DeclareRobustCommand,%
      DeclareSizeFunction,DeclareSymbolFont,DeclareSymbolFontAlphabet,%
      DeclareTextAccent,DeclareTextAccentDefault,DeclareTextCommand,%
      DeclareTextCommandDefault,DeclareTextComposite,%
      DeclareTextCompositeCommand,DeclareTextFontCommand,%
      DeclareTextSymbol,DeclareTextSymbolDefault,ExecuteOptions,%
      GenericError,GenericInfo,GenericWarning,IfFileExists,%
      InputIfFileExists,LoadClass,LoadClassWithOptions,MessageBreak,%
      OptionNotUsed,PackageError,PackageInfo,PackageWarning,%
      PackageWarningNoLine,PassOptionsToClass,PassOptionsToPackage,%
      ProcessOptionsProvidesClass,ProvidesFile,ProvidesFile,%
      ProvidesPackage,ProvideTextCommand,RequirePackage,%
      RequirePackageWithOptions,SetMathAlphabet,SetSymbolFont,%
      TextSymbolUnavailable,UseTextAccent,UseTextSymbol},%
   keywords={array,center,displaymath,document,enumerate,eqnarray,%
      equation,flushleft,flushright,itemize,list,lrbox,math,minipage,%
      picture,sloppypar,tabbing,tabular,trivlist,verbatim}%
  }%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[LaTeX]{TeX}[common]{TeX}%
  {moretexcs={a,AA,aa,addcontentsline,addpenalty,addtocontents,%
      addtocounter,addtolength,addtoversion,addvspace,alph,Alph,and,%
      arabic,array,arraycolsep,arrayrulewidth,arraystretch,author,%
      baselinestretch,begin,bezier,bfseries,bibcite,bibdata,bibitem,%
      bibliography,bibliographystyle,bibstyle,boldmath,botfigrule,%
      bottomfraction,Box,caption,center,CheckCommand,circle,citation,%
      cite,cleardoublepage,clearpage,cline,columnsep,columnseprule,%
      columnwidth,contentsline,dashbox,date,dblfigrule,%
      dblfloatpagefraction,dblfloatsep,dbltextfloatsep,dbltopfraction,%
      defaultscriptratio,defaultscriptscriptratio,depth,Diamond,%
      displaymath,document,documentclass,documentstyle,doublerulesep,%
      em,emph,endarray,endcenter,enddisplaymath,enddocument,%
      endenumerate,endeqnarray,endequation,endflushleft,endflushright,%
      enditemize,endlist,endlrbox,endmath,endminipage,endpicture,%
      endsloppypar,endtabbing,endtabular,endtrivlist,endverbatim,%
      enlargethispage,ensuremath,enumerate,eqnarray,equation,%
      evensidemargin,extracolsep,fbox,fboxrule,fboxsep,filecontents,%
      fill,floatpagefraction,floatsep,flushbottom,flushleft,flushright,%
      fnsymbol,fontencoding,fontfamily,fontseries,fontshape,fontsize,%
      fontsubfuzz,footnotemark,footnotesep,footnotetext,footskip,frac,%
      frame,framebox,fussy,glossary,headheight,headsep,height,hline,%
      hspace,I,include,includeonly,index,inputlineno,intextsep,%
      itemindent,itemize,itemsep,iterate,itshape,Join,kill,label,%
      labelsep,labelwidth,LaTeX,LaTeXe,leadsto,lefteqn,leftmargin,%
      leftmargini,leftmarginii,leftmarginiii,leftmarginiv,leftmarginv,%
      leftmarginvi,leftmark,lhd,linebreak,linespread,linethickness,%
      linewidth,list,listfiles,listfiles,listparindent,lrbox,%
      makeatletter,makeatother,makebox,makeglossary,makeindex,%
      makelabel,MakeLowercase,MakeUppercase,marginpar,marginparpush,%
      marginparsep,marginparwidth,markboth,markright,math,mathbf,%
      mathellipsis,mathgroup,mathit,mathsf,mathsterling,mathtt,%
      mathunderscore,mathversion,mbox,mdseries,mho,minipage,%
      multicolumn,multiput,NeedsTeXFormat,newcommand,newcounter,%
      newenvironment,newfont,newhelp,newlabel,newlength,newline,%
      newmathalphabet,newpage,newsavebox,newtheorem,nobreakspace,%
      nobreakspace,nocite,nocorr,nocorrlist,nofiles,nolinebreak,%
      nonumber,nopagebreak,normalcolor,normalfont,normalmarginpar,%
      numberline,obeycr,oddsidemargin,oldstylenums,onecolumn,oval,%
      pagebreak,pagenumbering,pageref,pagestyle,paperheight,paperwidth,%
      paragraphmark,parbox,parsep,partopsep,picture,poptabs,pounds,%
      protect,pushtabs,put,qbezier,qbeziermax,r,raggedleft,raisebox,%
      ref,refstepcounter,renewcommand,renewenvironment,restorecr,%
      reversemarginpar,rhd,rightmargin,rightmark,rmfamily,roman,Roman,%
      rootbox,rule,samepage,sbox,scshape,secdef,sectionmark,selectfont,%
      setcounter,settodepth,settoheight,settowidth,sffamily,shortstack,%
      showoutput,showoverfull,sloppy,sloppypar,slshape,sqsubset,%
      sqsupset,SS,stackrel,stepcounter,stop,stretch,subparagraphmark,%
      subsectionmark,subsubsectionmark,suppressfloats,symbol,tabbing,%
      tabbingsep,tabcolsep,tabular,tabularnewline,textasciicircum,%
      textasciitilde,textbackslash,textbar,textbf,textbraceleft,%
      textbraceright,textbullet,textcircled,textcompwordmark,%
      textdagger,textdaggerdbl,textdollar,textellipsis,textemdash,%
      textendash,textexclamdown,textfloatsep,textfraction,textgreater,%
      textheight,textit,textless,textmd,textnormal,textparagraph,%
      textperiodcentered,textquestiondown,textquotedblleft,%
      textquotedblright,textquoteleft,textquoteright,textregistered,%
      textrm,textsc,textsection,textsf,textsl,textsterling,%
      textsuperscript,texttrademark,texttt,textunderscore,textup,%
      textvisiblespace,textwidth,thanks,thefootnote,thempfn,thempfn,%
      thempfootnote,thepage,thepage,thicklines,thinlines,thispagestyle,%
      title,today,topfigrule,topfraction,topmargin,topsep,totalheight,%
      tracingfonts,trivlist,ttfamily,twocolumn,typein,typeout,%
      unboldmath,unitlength,unlhd,unrhd,upshape,usebox,usecounter,%
      usefont,usepackage,value,vector,verb,verbatim,vline,vspace,width}%
  }%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[plain]{TeX}[common]{TeX}%
  {moretexcs={advancepageno,beginsection,bf,bffam,bye,cal,cleartabs,%
      columns,dosupereject,endinsert,eqalign,eqalignno,fiverm,fivebf,%
      fivei,fivesy,folio,footline,hang,headline,it,itemitem,itfam,%
      leqalignno,magnification,makefootline,makeheadline,midinsert,mit,%
      mscount,nopagenumbers,normalbottom,of,oldstyle,pagebody,%
      pagecontents,pageinsert,pageno,plainoutput,preloaded,proclaim,rm,%
      settabs,sevenbf,seveni,sevensy,sevenrm,sl,slfam,supereject,%
      tabalign,tabs,tabsdone,tabsyet,tenbf,tenex,teni,tenit,tenrm,%
      tensl,tensy,tentt,textindent,topglue,topins,topinsert,tt,ttfam,%
      ttraggedright,vfootnote}%
  }%
%    \end{macrocode}
% The following language is only a helper.
%    \begin{macrocode}
\lst@definelanguage[common]{TeX}[primitive]{TeX}
  {moretexcs={active,acute,ae,AE,aleph,allocationnumber,allowbreak,%
      alpha,amalg,angle,approx,arccos,arcsin,arctan,arg,arrowvert,%
      Arrowvert,ast,asymp,b,backslash,bar,beta,bgroup,big,Big,bigbreak,%
      bigcap,bigcirc,bigcup,bigg,Bigg,biggl,Biggl,biggm,Biggm,biggr,%
      Biggr,bigl,Bigl,bigm,Bigm,bigodot,bigoplus,bigotimes,bigr,Bigr,%
      bigskip,bigskipamount,bigsqcup,bigtriangledown,bigtriangleup,%
      biguplus,bigvee,bigwedge,bmod,bordermatrix,bot,bowtie,brace,%
      braceld,bracelu,bracerd,braceru,bracevert,brack,break,breve,%
      buildrel,bullet,c,cap,cases,cdot,cdotp,cdots,centering,%
      centerline,check,chi,choose,circ,clubsuit,colon,cong,coprod,%
      copyright,cos,cosh,cot,coth,csc,cup,d,dag,dagger,dashv,ddag,%
      ddagger,ddot,ddots,deg,delta,Delta,det,diamond,diamondsuit,dim,%
      displaylines,div,do,dospecials,dot,doteq,dotfill,dots,downarrow,%
      Downarrow,downbracefill,egroup,eject,ell,empty,emptyset,endgraf,%
      endline,enskip,enspace,epsilon,equiv,eta,exists,exp,filbreak,%
      flat,fmtname,fmtversion,footins,footnote,footnoterule,forall,%
      frenchspacing,frown,gamma,Gamma,gcd,ge,geq,gets,gg,goodbreak,%
      grave,H,hat,hbar,heartsuit,hglue,hideskip,hidewidth,hom,%
      hookleftarrow,hookrightarrow,hphantom,hrulefill,i,ialign,iff,Im,%
      imath,in,inf,infty,int,interdisplaylinepenalty,%
      interfootnotelinepenalty,intop,iota,item,j,jmath,joinrel,jot,%
      kappa,ker,l,L,lambda,Lambda,land,langle,lbrace,lbrack,lceil,%
      ldotp,ldots,le,leavevmode,leftarrow,Leftarrow,leftarrowfill,%
      leftharpoondown,leftharpoonup,leftline,leftrightarrow,%
      Leftrightarrow,leq,lfloor,lg,lgroup,lhook,lim,liminf,limsup,line,%
      ll,llap,lmoustache,ln,lnot,log,longleftarrow,Longleftarrow,%
      longleftrightarrow,Longleftrightarrow,longmapsto,longrightarrow,%
      Longrightarrow,loop,lor,lq,magstep,magstep,magstephalf,mapsto,%
      mapstochar,mathhexbox,mathpalette,mathstrut,matrix,max,maxdimen,%
      medbreak,medskip,medskipamount,mid,min,models,mp,mu,multispan,%
      nabla,narrower,natural,ne,nearrow,neg,negthinspace,neq,newbox,%
      newcount,newdimen,newfam,newif,newinsert,newlanguage,newmuskip,%
      newread,newskip,newtoks,newwrite,next,ni,nobreak,nointerlineskip,%
      nonfrenchspacing,normalbaselines,normalbaselineskip,%
      normallineskip,normallineskiplimit,not,notin,nu,null,nwarrow,o,O,%
      oalign,obeylines,obeyspaces,odot,oe,OE,offinterlineskip,oint,%
      ointop,omega,Omega,ominus,ooalign,openup,oplus,oslash,otimes,%
      overbrace,overleftarrow,overrightarrow,owns,P,parallel,partial,%
      perp,phantom,phi,Phi,pi,Pi,pm,pmatrix,pmod,Pr,prec,preceq,prime,%
      prod,propto,psi,Psi,qquad,quad,raggedbottom,raggedright,rangle,%
      rbrace,rbrack,rceil,Re,relbar,Relbar,removelastskip,repeat,%
      rfloor,rgroup,rho,rhook,rightarrow,Rightarrow,rightarrowfill,%
      rightharpoondown,rightharpoonup,rightleftharpoons,rightline,rlap,%
      rmoustache,root,rq,S,sb,searrow,sec,setminus,sharp,showhyphens,%
      sigma,Sigma,sim,simeq,sin,sinh,skew,slash,smallbreak,smallint,%
      smallskip,smallskipamount,smash,smile,sp,space,spadesuit,sqcap,%
      sqcup,sqrt,sqsubseteq,sqsupseteq,ss,star,strut,strutbox,subset,%
      subseteq,succ,succeq,sum,sup,supset,supseteq,surd,swarrow,t,tan,%
      tanh,tau,TeX,theta,Theta,thinspace,tilde,times,to,top,tracingall,%
      triangle,triangleleft,triangleright,u,underbar,underbrace,%
      uparrow,Uparrow,upbracefill,updownarrow,Updownarrow,uplus,%
      upsilon,Upsilon,v,varepsilon,varphi,varpi,varrho,varsigma,%
      vartheta,vdash,vdots,vec,vee,vert,Vert,vglue,vphantom,wedge,%
      widehat,widetilde,wlog,wp,wr,xi,Xi,zeta}%
  }%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[primitive]{TeX}%
  {texcs={above,abovedisplayshortskip,abovedisplayskip,abovewithdelims,%
      accent,adjdemerits,advance,afterassignment,aftergroup,atop,%
      atopwithdelims,badness,baselineskip,batchmode,begingroup,%
      belowdisplayshortskip,belowdisplayskip,binoppenalty,botmark,box,%
      boxmaxdepth,brokenpenalty,catcode,char,chardef,cleaders,closein,%
      closeout,clubpenalty,copy,count,countdef,cr,crcr,csname,day,%
      deadcycles,def,defaulthyphenchar,defaultskewchar,delcode,%
      delimiter,delimiterfactor,delimitershortfall,dimen,dimendef,%
      discretionary,displayindent,displaylimits,displaystyle,%
      displaywidowpenalty,displaywidth,divide,doublehyphendemerits,dp,%
      edef,else,emergencystretch,end,endcsname,endgroup,endinput,%
      endlinechar,eqno,errhelp,errmessage,errorcontextlines,%
      errorstopmode,escapechar,everycr,everydisplay,everyhbox,everyjob,%
      everymath,everypar,everyvbox,exhyphenpenalty,expandafter,fam,fi,%
      finalhypendemerits,firstmark,floatingpenalty,font,fontdimen,%
      fontname,futurelet,gdef,global,globaldefs,halign,hangafter,%
      hangindent,hbadness,hbox,hfil,hfill,hfilneg,hfuzz,hoffset,%
      holdinginserts,hrule,hsize,hskip,hss,ht,hyphenation,hyphenchar,%
      hyphenpenalty,if,ifcase,ifcat,ifdim,ifeof,iffalse,ifhbox,ifhmode,%
      ifinner,ifmmode,ifnum,ifodd,iftrue,ifvbox,ifvmode,ifvoid,ifx,%
      ignorespaces,immediate,indent,input,insert,insertpenalties,%
      interlinepenalty,jobname,kern,language,lastbox,lastkern,%
      lastpenalty,lastskip,lccode,leaders,left,lefthyphenmin,leftskip,%
      leqno,let,limits,linepenalty,lineskip,lineskiplimits,long,%
      looseness,lower,lowercase,mag,mark,mathaccent,mathbin,mathchar,%
      mathchardef,mathchoice,mathclose,mathcode,mathinner,mathop,%
      mathopen,mathord,mathpunct,mathrel,mathsurround,maxdeadcycles,%
      maxdepth,meaning,medmuskip,message,mkern,month,moveleft,%
      moveright,mskip,multiply,muskip,muskipdef,newlinechar,noalign,%
      noboundary,noexpand,noindent,nolimits,nonscript,nonstopmode,%
      nulldelimiterspace,nullfont,number,omit,openin,openout,or,outer,%
      output,outputpenalty,over,overfullrule,overline,overwithdelims,%
      pagedepth,pagefilllstretch,pagefillstretch,pagefilstretch,%
      pagegoal,pageshrink,pagestretch,pagetotal,par,parfillskip,%
      parindent,parshape,parskip,patterns,pausing,penalty,%
      postdisplaypenalty,predisplaypenalty,predisplaysize,pretolerance,%
      prevdepth,prevgraf,radical,raise,read,relax,relpenalty,right,%
      righthyphenmin,rightskip,romannumeral,scriptfont,%
      scriptscriptfont,scriptscriptstyle,scriptspace,scriptstyle,%
      scrollmode,setbox,setlanguage,sfcode,shipout,show,showbox,%
      showboxbreadth,showboxdepth,showlists,showthe,skewchar,skip,%
      skipdef,spacefactor,spaceskip,span,special,splitbotmark,%
      splitfirstmark,splitmaxdepth,splittopskip,string,tabskip,%
      textfont,textstyle,the,thickmuskip,thinmuskip,time,toks,toksdef,%
      tolerance,topmark,topskip,tracingcommands,tracinglostchars,%
      tracingmacros,tracingonline,tracingoutput,tracingpages,%
      tracingparagraphs,tracingrestores,tracingstats,uccode,uchyph,%
      underline,unhbox,unhcopy,unkern,unpenalty,unskip,unvbox,unvcopy,%
      uppercase,vadjust,valign,vbadness,vbox,vcenter,vfil,vfill,%
      vfilneg,vfuzz,voffset,vrule,vsize,vskip,vsplit,vss,vtop,wd,%
      widowpenalty,write,xdef,xleaders,xspaceskip,year},%
   sensitive,%
   alsoother={0123456789},%
   commentline=\%%
  }[keywords,tex,comments]%
%    \end{macrocode}
%
%    \begin{macrocode}
%</tex>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{VHDL}
%
% This language is due to \lstthanks{Kai~Wollenweber}{kai@ece.wpi.edu}{1997/11/04}{VHDL}.
% I've done conversion to version 0.19 only.
% \lsthelper{Gaurav Aggarwal}{gaurav@ics.uci.edu}{1998/04/02}{sensitive=f} reported that VHDL is case insensitive.
% \begingroup
%    \begin{macrocode}
%<*vhdl>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% VHDL definition (c) 1997 Kai Wollenweber <kai@ece.wpi.edu>
%%
\lst@definelanguage{VHDL}%
  {keywords={ALL,ARCHITECTURE,ABS,AND,ASSERT,ARRAY,AFTER,ALIAS,%
      ACCESS,ATTRIBUTE,BEGIN,BODY,BUS,BLOCK,BUFFER,CONSTANT,CASE,%
      COMPONENT,CONFIGURATION,DOWNTO,ELSE,ELSIF,END,ENTITY,EXIT,%
      FUNCTION,FOR,FILE,GENERIC,GENERATE,GUARDED,GROUP,IF,IN,INOUT,IS,%
      INERTIAL,IMPURE,LIBRARY,LOOP,LABEL,LITERAL,LINKAGE,MAP,MOD,NOT,%
      NOR,NAND,NULL,NEXT,NEW,OUT,OF,OR,OTHERS,ON,OPEN,PROCESS,PORT,%
      PACKAGE,PURE,PROCEDURE,POSTPONED,RANGE,REM,ROL,ROR,REPORT,RECORD,%
      RETURN,REGISTER,REJECT,SIGNAL,SUBTYPE,SLL,SRL,SLA,SRA,SEVERITY,%
      SELECT,THEN,TYPE,TRANSPORT,TO,USE,UNITS,UNTIL,VARIABLE,WHEN,WAIT,%
      WHILE,XOR,XNOR},%
   sensitive=f,% 1998 Gaurav Aggarwal
   commentline=--,%
   stringizer=[d]{"}%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</vhdl>
%    \end{macrocode}
% \endgroup
%
%
% \setcounter{IndexColumns}{2}
% \PrintIndex
%
%
% \Finale
%
\endinput
