% \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, Style and Format drivers\\ for \textsf{Listings 1.0}\\ {\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\"}\def\'{\string\'}\immediate\write\authors{#1}\endgroup}
%
% \newcommand*\lsthelper[4]{#1}
%
%
% \section{Installation and configuration}
%
% \begingroup
%    \begin{macrocode}
%% (w)(c) 1996/1997/1998/1999/2000/2001/2002 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.
%%
%% 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}{lang1}}
    \file{lstlang2.sty}{\from{lstdrvrs.dtx}{lang2}}
    \file{lstlang3.sty}{\from{lstdrvrs.dtx}{lang3}}
}


\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}
\ProvidesFile{listings.cfg}[2002/04/01 v1.0 listings configuration]
\def\lstlanguagefiles
    {lstlang0.sty,lstlang1.sty,lstlang2.sty,lstlang3.sty}
\lstset{defaultdialect=[R/3 6.10]ABAP,
        defaultdialect=[95]Ada,
        defaultdialect=[68]Algol,
        defaultdialect=[ANSI]C,
        defaultdialect=[light]Caml,
        defaultdialect=[1985]Cobol,
        defaultdialect=[ISO]C++,
        defaultdialect=[95]Fortran,
        defaultdialect=[3.0]Mathematica,
        defaultdialect=[OMG]OCL,
        defaultdialect=[Standard]Pascal,
        defaultdialect=[67]Simula,
        defaultdialect=[plain]TeX,
        defaultdialect=[97]VRML}
\lstalias[]{TclTk}[tk]{tcl}
%    \end{macrocode}
% \begingroup
%    \begin{macrocode}
%</config>
%    \end{macrocode}
% \endgroup
%
%    \begin{macrocode}
%<+lang1>\ProvidesFile{lstlang1}
%<+lang2>\ProvidesFile{lstlang2}
%<+lang3>\ProvidesFile{lstlang3}
%<-config>    [2002/07/31 v1.0d listings language file]
%    \end{macrocode}
%
%
% \section{Language drivers}
%
%
% \subsection{Abap}
%
% \lstthanks{Knut Lickert}{knut.lickert@gmx.de}{2000/08/01,2001/12/29} added
% support for Abap.\footnote{In this section `I' is Knut Lickert.}
%
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Abap definition by Knut Lickert <knut.lickert@gmx.de>
%%
%    \end{macrocode}
%
% There are some other new commands in release 6.10.
% They will follow later, but up to now I don't work
% with 6.10.
%
%    \begin{macrocode}
%%%%knut>>>>>new
\lst@definelanguage[R/3 6.10]{ABAP}[R/3 4.6C]{ABAP}%
  {morekeywords={try,endtry},%
  }[keywords,comments,strings]
%%%%knut<<<<<new -end-
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[R/3 4.6C]{ABAP}[R/3 3.1]{ABAP}%
  {morekeywords={method,ref,class,create,object,%
        catch,system-exceptions,endcatch,%knut
        },%
   literate={->}{{$\rightarrow$}}1{=>}{{$\Rightarrow$}}1,%knut
  }[keywords,comments,strings]
%    \end{macrocode}
% Yes there are also some more releases in R/3 (2.1\ldots), but I
% know them not really. So let's start with R/3~3.1.
%    \begin{macrocode}
\lst@definelanguage[R/3 3.1]{ABAP}[R/2 5.0]{ABAP}{}%
%    \end{macrocode}
% As I remember all this commands exists in R/2. Many commands are
% new in R/2~5.0 (compared with R/2 4.3). But as I am not using
% R/2~4.3 any more, I start with R/2~5.0.
%    \begin{macrocode}
\lst@definelanguage[R/2 5.0]{ABAP}%
  {sensitive=f,%
   procnamekeys={report,program,form,function},%
   morekeywords={*,add,after,alias,analyzer,and,append,area,assign,at,%
        authority-check,before,binary,blank,break-point,calendar,call,%
        case,change,changing,check,clear,cnt,co,collect,commit,common,%
        component,compute,condense,cos,cp,cs,currency-conversion,%
        cursor,data,database,dataset,decimals,define,delete,dequeue,%
        describe,detail,dialog,directory,div,divide,do,documentation,%
        during,dynpro,else,end-of-page,end-of-selection,endat,endcase,%
        enddo,endfor,endform,endif,endloop,endmodule,endselect,%
        endwhile,enqueue,exceptions,exit,exp,export,exporting,extract,%
        field,field-groups,field-symbols,find,for,form,format,free,%
        from,function,generating,get,giving,hide,id,if,import,%
        importing,in,incl,include,initial,initialization,input,insert,%
        interrupt,into,is,language,leave,like,line,lines,line-count,
        line-selection,list-processing,load,local,log,logfile,loop,%
        margin,mark,mask,memory,menue,message,mod,modify,module,move,%
        move-text,multiply,na,new,new-line,new-page,no-gaps,np,ns,%
        number,obligatory,occurs,of,on,or,others,output,parameter,%
        parameters,parts,perform,pf-status,places,position,process,%
        raise,raising,ranges,read,refresh,refresh-dynpro,reject,remote,%
        replace,report,reserve,reset,restart,run,screen,scroll,search,%
        segments,select,select-options,selection-screen,set,shift,sin,%
        single,sqrt,start-of-selection,statement,structure,submit,%
        subtract,summary,summing,suppress,system,table,tables,task,%
        text,time,to,top-of-page,trace,transaction,transfer,%
        transfer-dynpro,translate,type,unpack,update,user-command,%
        using,value,when,where,while,window,with,workfile,write,},%
   morecomment=[l]",%
   morecomment=[f][0]*,%
   morestring=[d]'%
  }[keywords,comments,strings,procnames]
%    \end{macrocode}
% This section for R/2~4.3 is not really maintained. It is just what I remember
% of the past.
%    \begin{macrocode}
\lst@definelanguage[R/2 4.3]{ABAP}[R/2 5.0]{ABAP}%
  {deletekeywords={function,importing,exporting,changing,exceptions,%
        raise,raising}%
  }[keywords,comments,strings]
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{ACSL}
%
% This language was provided by \lstthanks{Andreas~Matthias}{amat@kabsi.at}
% {2000/03/21}. I'm sorry for forgetting to add this language for a long time.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% ACSL definition (c) 2000 by Andreas Matthias <amat@kabsi.at>
%%
\lst@definelanguage{ACSL}[90]{Fortran}%
   {morekeywords={algorithm,cinterval,constant,derivative,discrete,%
         dynamic,errtag,initial,interval,maxterval,minterval,%
         merror,xerror,nsteps,procedural,save,schedule,sort,%
         table,terminal,termt,variable},%
    sensitive=false,%
    morecomment=[l]!%
   }[keywords, comments]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
%
% \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}
%<*lang1>
%    \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}%
  {morekeywords={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,%
   morecomment=[l]--,%
   morestring=[m]",% percent not defined as stringizer so far
   morestring=[m]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \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}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[68]{Algol}%
% ??? should 'i' be a keyword
  {morekeywords={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,% ???
   morecomment=[s]{\#}{\#},%
   keywordcomment={co,comment}%
  }[keywords,comments,keywordcomments]%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[60]{Algol}%
  {morekeywords={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]%
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Assembler}
%
% Credits go to \lstthanks{Andrew Zabolotny}{zap@cobra.ru}{2002/07/05}.
% \begingroup
%    \begin{macrocode}
%<*lang3>
%%
%% x86masm definition (c) 2002 Andrew Zabolotny <zap@cobra.ru>
%%
\lst@definelanguage[x86masm]{Assembler}%
  {morekeywords={al,ah,ax,eax,bl,bh,bx,ebx,cl,ch,cx,ecx,dl,dh,dx,edx,%
      si,esi,di,edi,bp,ebp,sp,esp,cs,ds,es,ss,fs,gs,cr0,cr1,cr2,cr3,%
      db0,db1,db2,db3,db4,db5,db6,db7,tr0,tr1,tr2,tr3,tr4,tr5,tr6,tr7,%
      st,aaa,aad,aam,aas,adc,add,and,arpl,bound,bsf,bsr,bswap,bt,btc,%
      btr,bts,call,cbw,cdq,clc,cld,cli,clts,cmc,cmp,cmps,cmpsb,cmpsw,%
      cmpsd,cmpxchg,cwd,cwde,daa,das,dec,div,enter,hlt,idiv,imul,in,%
      inc,ins,int,into,invd,invlpg,iret,ja,jae,jb,jbe,jc,jcxz,jecxz,%
      je,jg,jge,jl,jle,jna,jnae,jnb,jnbe,jnc,jne,jng,jnge,jnl,jnle,%
      jno,jnp,jns,jnz,jo,jp,jpe,jpo,js,jz,jmp,lahf,lar,lea,leave,lgdt,%
      lidt,lldt,lmsw,lock,lods,lodsb,lodsw,lodsd,loop,loopz,loopnz,%
      loope,loopne,lds,les,lfs,lgs,lss,lsl,ltr,mov,movs,movsb,movsw,%
      movsd,movsx,movzx,mul,neg,nop,not,or,out,outs,pop,popa,popad,%
      popf,popfd,push,pusha,pushad,pushf,pushfd,rcl,rcr,rep,repe,%
      repne,repz,repnz,ret,retf,rol,ror,sahf,sal,sar,sbb,scas,seta,%
      setae,setb,setbe,setc,sete,setg,setge,setl,setle,setna,setnae,%
      setnb,setnbe,setnc,setne,setng,setnge,setnl,setnle,setno,setnp,%
      setns,setnz,seto,setp,setpe,setpo,sets,setz,sgdt,shl,shld,shr,%
      shrd,sidt,sldt,smsw,stc,std,sti,stos,stosb,stosw,stosd,str,sub,%
      test,verr,verw,wait,wbinvd,xadd,xchg,xlatb,xor,fabs,fadd,fbld,%
      fbstp,fchs,fclex,fcom,fcos,fdecstp,fdiv,fdivr,ffree,fiadd,ficom,%
      fidiv,fidivr,fild,fimul,fincstp,finit,fist,fisub,fisubr,fld,fld1,%
      fldl2e,fldl2t,fldlg2,fldln2,fldpi,fldz,fldcw,fldenv,fmul,fnop,%
      fpatan,fprem,fprem1,fptan,frndint,frstor,fsave,fscale,fsetpm,%
      fsin,fsincos,fsqrt,fst,fstcw,fstenv,fstsw,fsub,fsubr,ftst,fucom,%
      fwait,fxam,fxch,fxtract,fyl2x,fyl2xp1,f2xm1},%
   morekeywords=[2]{.align,.alpha,assume,byte,code,comm,comment,.const,%
      .cref,.data,.data?,db,dd,df,dosseg,dq,dt,dw,dword,else,end,endif,%
      endm,endp,ends,eq,equ,.err,.err1,.err2,.errb,.errdef,.errdif,%
      .erre,.erridn,.errnb,.errndef,.errnz,event,exitm,extrn,far,%
      .fardata,.fardata?,fword,ge,group,gt,high,if,if1,if2,ifb,ifdef,%
      ifdif,ife,ifidn,ifnb,ifndef,include,includelib,irp,irpc,label,%
      .lall,le,length,.lfcond,.list,local,low,lt,macro,mask,mod,.model,%
      name,ne,near,offset,org,out,page,proc,ptr,public,purge,qword,.%
      radix,record,rept,.sall,seg,segment,.seq,.sfcond,short,size,%
      .stack,struc,subttl,tbyte,.tfcond,this,title,type,.type,width,%
      word,.xall,.xcref,.xlist},%
   alsoletter=.,alsodigit=?,%
   sensitive=f,%
   morestring=[b]",%
   morestring=[b]',%
   morecomment=[l];%
   }[directives,keywords,comments,strings]
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Basic}
%
% Credits go to \lstthanks{Robert Frank}{rf7@ukc.ac.uk}{2002/07/05}.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%%
%% Visual Basic definition (c) 2002 Robert Frank <rf7@ukc.ac.uk>
%%
\lst@definelanguage[Visual]{Basic}
  {morekeywords={Abs,Array,Asc,AscB,AscW,Atn,Avg,CBool,CByte,CCur,%
      CDate,CDbl,Cdec,Choose,Chr,ChrB,ChrW,CInt,CLng,Command,Cos,%
      Count,CreateObject,CSng,CStr,CurDir,CVar,CVDate,CVErr,Date,%
      DateAdd,DateDiff,DatePart,DateSerial,DateValue,Day,DDB,Dir,%
      DoEvents,Environ,EOF,Error,Exp,FileAttr,FileDateTime,FileLen,%
      Fix,Format,FreeFile,FV,GetAllStrings,GetAttr,%
      GetAutoServerSettings,GetObject,GetSetting,Hex,Hour,IIf,%
      IMEStatus,Input,InputB,InputBox,InStr,InstB,Int,Integer,IPmt,%
      IsArray,IsDate,IsEmpty,IsError,IsMissing,IsNull,IsNumeric,%
      IsObject,LBound,LCase,Left,LeftB,Len,LenB,LoadPicture,Loc,LOF,%
      Log,Ltrim,Max,Mid,MidB,Min,Minute,MIRR,Month,MsgBox,Now,NPer,%
      NPV,Oct,Partition,Pmt,PPmt,PV,QBColor,Rate,RGB,Right,RightB,Rnd,%
      Rtrim,Second,Seek,Sgn,Shell,Sin,SLN,Space,Spc,Sqr,StDev,StDevP,%
      Str,StrComp,StrConv,String,Switch,Sum,SYD,Tab,Tan,Time,Timer,%
      TimeSerial,TimeValue,Trim,TypeName,UBound,Ucase,Val,Var,VarP,%
      VarType,Weekday,Year},% functions
   morekeywords=[2]{Accept,Activate,Add,AddCustom,AddFile,AddFromFile,%
      AddFromTemplate,AddItem,AddNew,AddToAddInToolbar,%
      AddToolboxProgID,Append,AppendChunk,Arrange,Assert,AsyncRead,%
      BatchUpdate,BeginTrans,Bind,Cancel,CancelAsyncRead,CancelBatch,%
      CancelUpdate,CanPropertyChange,CaptureImage,CellText,CellValue,%
      Circle,Clear,ClearFields,ClearSel,ClearSelCols,Clone,Close,Cls,%
      ColContaining,ColumnSize,CommitTrans,CompactDatabase,Compose,%
      Connect,Copy,CopyQueryDef,CreateDatabase,CreateDragImage,%
      CreateEmbed,CreateField,CreateGroup,CreateIndex,CreateLink,%
      CreatePreparedStatement,CreatePropery,CreateQuery,%
      CreateQueryDef,CreateRelation,CreateTableDef,CreateUser,%
      CreateWorkspace,Customize,Delete,DeleteColumnLabels,%
      DeleteColumns,DeleteRowLabels,DeleteRows,DoVerb,Drag,Draw,Edit,%
      EditCopy,EditPaste,EndDoc,EnsureVisible,EstablishConnection,%
      Execute,ExtractIcon,Fetch,FetchVerbs,Files,FillCache,Find,%
      FindFirst,FindItem,FindLast,FindNext,FindPrevious,Forward,%
      GetBookmark,GetChunk,GetClipString,GetData,GetFirstVisible,%
      GetFormat,GetHeader,GetLineFromChar,GetNumTicks,GetRows,%
      GetSelectedPart,GetText,GetVisibleCount,GoBack,GoForward,Hide,%
      HitTest,HoldFields,Idle,InitializeLabels,InsertColumnLabels,%
      InsertColumns,InsertObjDlg,InsertRowLabels,InsertRows,Item,%
      KillDoc,Layout,Line,LinkExecute,LinkPoke,LinkRequest,LinkSend,%
      Listen,LoadFile,LoadResData,LoadResPicture,LoadResString,%
      LogEvent,MakeCompileFile,MakeReplica,MoreResults,Move,MoveData,%
      MoveFirst,MoveLast,MoveNext,MovePrevious,NavigateTo,NewPage,%
      NewPassword,NextRecordset,OLEDrag,OnAddinsUpdate,OnConnection,%
      OnDisconnection,OnStartupComplete,Open,OpenConnection,%
      OpenDatabase,OpenQueryDef,OpenRecordset,OpenResultset,OpenURL,%
      Overlay,PaintPicture,Paste,PastSpecialDlg,PeekData,Play,Point,%
      PopulatePartial,PopupMenu,Print,PrintForm,PropertyChanged,Pset,%
      Quit,Raise,RandomDataFill,RandomFillColumns,RandomFillRows,%
      rdoCreateEnvironment,rdoRegisterDataSource,ReadFromFile,%
      ReadProperty,Rebind,ReFill,Refresh,RefreshLink,RegisterDatabase,%
      Reload,Remove,RemoveAddInFromToolbar,RemoveItem,Render,%
      RepairDatabase,Reply,ReplyAll,Requery,ResetCustom,%
      ResetCustomLabel,ResolveName,RestoreToolbar,Resync,Rollback,%
      RollbackTrans,RowBookmark,RowContaining,RowTop,Save,SaveAs,%
      SaveFile,SaveToFile,SaveToolbar,SaveToOle1File,Scale,ScaleX,%
      ScaleY,Scroll,Select,SelectAll,SelectPart,SelPrint,Send,%
      SendData,Set,SetAutoServerSettings,SetData,SetFocus,SetOption,%
      SetSize,SetText,SetViewport,Show,ShowColor,ShowFont,ShowHelp,%
      ShowOpen,ShowPrinter,ShowSave,ShowWhatsThis,SignOff,SignOn,Size,%
      Span,SplitContaining,StartLabelEdit,StartLogging,Stop,%
      Synchronize,TextHeight,TextWidth,ToDefaults,TwipsToChartPart,%
      TypeByChartType,Update,UpdateControls,UpdateRecord,UpdateRow,%
      Upto,WhatsThisMode,WriteProperty,ZOrder},% methods
   morekeywords=[3]{AccessKeyPress,AfterAddFile,AfterChangeFileName,%
      AfterCloseFile,AfterColEdit,AfterColUpdate,AfterDelete,%
      AfterInsert,AfterLabelEdit,AfterRemoveFile,AfterUpdate,%
      AfterWriteFile,AmbienChanged,ApplyChanges,Associate,%
      AsyncReadComplete,AxisActivated,AxisLabelActivated,%
      AxisLabelSelected,AxisLabelUpdated,AxisSelected,%
      AxisTitleActivated,AxisTitleSelected,AxisTitleUpdated,%
      AxisUpdated,BeforeClick,BeforeColEdit,BeforeColUpdate,%
      BeforeConnect,BeforeDelete,BeforeInsert,BeforeLabelEdit,%
      BeforeLoadFile,BeforeUpdate,ButtonClick,ButtonCompleted,%
      ButtonGotFocus,ButtonLostFocus,Change,ChartActivated,%
      ChartSelected,ChartUpdated,Click,ColEdit,Collapse,ColResize,%
      ColumnClick,Compare,ConfigChageCancelled,ConfigChanged,%
      ConnectionRequest,DataArrival,DataChanged,DataUpdated,DblClick,%
      Deactivate,DeviceArrival,DeviceOtherEvent,DeviceQueryRemove,%
      DeviceQueryRemoveFailed,DeviceRemoveComplete,DeviceRemovePending,%
      DevModeChange,Disconnect,DisplayChanged,Dissociate,%
      DoGetNewFileName,Done,DonePainting,DownClick,DragDrop,DragOver,%
      DropDown,EditProperty,EnterCell,EnterFocus,Event,ExitFocus,%
      Expand,FootnoteActivated,FootnoteSelected,FootnoteUpdated,%
      GotFocus,HeadClick,InfoMessage,Initialize,IniProperties,%
      ItemActivated,ItemAdded,ItemCheck,ItemClick,ItemReloaded,%
      ItemRemoved,ItemRenamed,ItemSeletected,KeyDown,KeyPress,KeyUp,%
      LeaveCell,LegendActivated,LegendSelected,LegendUpdated,%
      LinkClose,LinkError,LinkNotify,LinkOpen,Load,LostFocus,%
      MouseDown,MouseMove,MouseUp,NodeClick,ObjectMove,%
      OLECompleteDrag,OLEDragDrop,OLEDragOver,OLEGiveFeedback,%
      OLESetData,OLEStartDrag,OnAddNew,OnComm,Paint,PanelClick,%
      PanelDblClick,PathChange,PatternChange,PlotActivated,%
      PlotSelected,PlotUpdated,PointActivated,PointLabelActivated,%
      PointLabelSelected,PointLabelUpdated,PointSelected,%
      PointUpdated,PowerQuerySuspend,PowerResume,PowerStatusChanged,%
      PowerSuspend,QueryChangeConfig,QueryComplete,QueryCompleted,%
      QueryTimeout,QueryUnload,ReadProperties,Reposition,%
      RequestChangeFileName,RequestWriteFile,Resize,ResultsChanged,%
      RowColChange,RowCurrencyChange,RowResize,RowStatusChanged,%
      SelChange,SelectionChanged,SendComplete,SendProgress,%
      SeriesActivated,SeriesSelected,SeriesUpdated,SettingChanged,%
      SplitChange,StateChanged,StatusUpdate,SysColorsChanged,%
      Terminate,TimeChanged,TitleActivated,TitleSelected,%
      TitleActivated,UnboundAddData,UnboundDeleteRow,%
      UnboundGetRelativeBookmark,UnboundReadData,UnboundWriteData,%
      Unload,UpClick,Updated,Validate,ValidationError,WillAssociate,%
      WillChangeData,WillDissociate,WillExecute,WillUpdateRows,%
      WithEvents,WriteProperties},% VB-events
   morekeywords=[4]{AppActivate,Base,Beep,Call,Case,ChDir,ChDrive,%
      Const,Declare,DefBool,DefByte,DefCur,DefDate,DefDbl,DefDec,%
      DefInt,DefLng,DefObj,DefSng,DefStr,Deftype,DefVar,DeleteSetting,%
      Dim,Do,Else,ElseIf,End,Enum,Erase,Event,Exit,Explicit,FileCopy,%
      For,ForEach,Friend,Function,Get,GoSub,GoTo,If,Implements,Kill,%
      Let,LineInput,Lock,Lset,MkDir,Name,Next,OnError,On,Option,%
      Private,Property,Public,Put,RaiseEvent,Randomize,ReDim,Rem,%
      Reset,Resume,Return,RmDir,Rset,SavePicture,SaveSetting,%
      SendKeys,SetAttr,Static,Sub,Then,Type,Unlock,Wend,While,Width,%
      With,Write},% statements
   sensitive=false,                                          
   keywordcomment=rem,%
   MoreSelectCharTable=\def\lst@BeginKC@{% chmod
      \lst@ResetToken
      \lst@BeginComment\lst@GPmode{{\lst@commentstyle}%
                       \lst@Lmodetrue\lst@modetrue}\@empty}%
   morecomment=[l]{'},                                       
   morecomment=[s]{/*}{*/},                                  
   morestring=[b]",                                          
   }[keywords,comments,strings,keywordcomments]
%</lang1>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Clean}
%
% Thanks to \lstthanks{Jos\'e~Romildo~Malaquias}{romildo@iceb.ufop.br}{2000/08/08}.
% \lsthelper{Markus~Pahlow}{pahlowm@mar.dfo-mpo.gc.ca}{2001/10/12}{missing comma}
% found a missing comma
% \begingroup
%    \begin{macrocode}
%<*lang3>
%%
%% Clean definition (c) 1999 Jos\'e Romildo Malaquias
%%                           <romildo@iceb.ufop.br>
%%
%% Clean 1.3 :  some standard functional language: pure, lazy,
%%              polymorphic type system, modules, type classes,
%%              garbage collection, functions as first class citizens
%%
\lst@definelanguage{Clean}%
  {otherkeywords={:,::,=,:==,=:,=>,->,<-,<-:,\{,\},\{|,|\},\#,\#!,|,\&,%
      [,],!,.,\\\\,;,_},%
   morekeywords={from,definition,implementation,import,module,system,%
      case,code,if,in,let,let!,of,where,with,infix,infixl,infixr},%
   morendkeywords={True,False,Start,Int,Real,Char,Bool,String,World,%
      File,ProcId},%
   sensitive,%
   morecomment=[l]//,% missing comma: Markus Pahlow
   morecomment=[n]{/*}{*/},%
   morestring=[b]"%
  }[keywords,comments,strings]%
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Corba IDL}
%
% This language definition is due to \lstthanks{Jens~T.~Berger~Thielemann}
% {jensthi@ifi.uio.no}{1999/11/28}.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%%
%% Corba IDL definition (c) 1999 Jens T. Berger Thielemann
%%                               <jensthi@ifi.uio.no>
%%
\lst@definelanguage[CORBA]{IDL}%
  {morekeywords={any,attribute,boolean,case,char,const,context,default,%
      double,enum,exception,fixed,float,in,inout,interface,long,module,%
      native,Object,octet,oneway,out,raises,readonly,sequence,short,%
      string,struct,switch,typedef,union,unsigned,void,wchar,wstring,%
      FALSE,TRUE},%
   sensitive,%
   moredirectives={define,elif,else,endif,error,if,ifdef,ifndef,line,%
      include,pragma,undef,warning},%
   morecomment=[l]//,%
   morecomment=[s]{/*}{*/},%
   morestring=[b]"%
  }[keywords,comments,strings]%
%</lang2>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{C, C++, et al}
%
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
% For compatibility the `ANSI' language is defined in terms of ISO.
%    \begin{macrocode}
\lst@definelanguage[ANSI]{C++}[ISO]{C++}{}%
%    \end{macrocode}
% \lstthanks{Michael Piefel}{piefel@informatik.hu-berlin.de}{2001/11/21}
% suggested some more changes and added GNU C++.
%    \begin{macrocode}
\lst@definelanguage[GNU]{C++}[ISO]{C++}%
  {morekeywords={__attribute__,__extension__,__restrict,__restrict__,%
      typeof,__typeof__},%
  }%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[Visual]{C++}[ISO]{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[ISO]{C++}[ANSI]{C}%
  {morekeywords={and,and_eq,asm,bad_cast,bad_typeid,bitand,bitor,bool,%
      catch,class,compl,const_cast,delete,dynamic_cast,explicit,export,%
      false,friend,inline,mutable,namespace,new,not,not_eq,operator,or,%
      or_eq,private,protected,public,reinterpret_cast,static_cast,%
      template,this,throw,true,try,typeid,type_info,typename,using,%
      virtual,wchar_t,xor,xor_eq},%
  }%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
% Objective-C is due to \lstthanks{Detlev~Dr\"oge}
%{droege@informatik.uni-koblenz.de}{1997/11/04}.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \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},%
   moredirectives={import}%
  }%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[ANSI]{C}%
  {morekeywords={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,%
   morecomment=[s]{/*}{*/},%
   morecomment=[l]//,% nonstandard
   morestring=[b]",%
   morestring=[b]',%
   moredirectives={define,elif,else,endif,error,if,ifdef,ifndef,line,%
      include,pragma,undef,warning}%
  }[keywords,comments,strings,directives]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
% Thanks go to \lstthanks{Martin~Brodbeck}{Martin.Brodbeck@gmx.de}{2002/03/17}.
%    \begin{macrocode}
%%
%% C-Sharp definition (c) 2002 Martin Brodbeck <Martin.Brodbeck@gmx.de>
%%
\lst@definelanguage[Sharp]{C}%
  {morekeywords={abstract,base,bool,break,byte,case,catch,char,checked,%
      class,const,continue,decimal,default,delegate,do,double,else,%
      enum,event,explicit,extern,false,finally,fixed,float,for,foreach,%
      goto,if,implicit,in,int,interface,internal,is,lock,long,%
      namespace,new,null,object,operator,out,override,params,private,%
      protected,public,readonly,ref,return,sbyte,sealed,short,sizeof,%
      static,string,struct,switch,this,throw,true,try,typeof,uint,%
      ulong,unchecked,unsafe,ushort,using,virtual,void,while},%
   sensitive,%
   morecomment=[s]{/*}{*/},%
   morecomment=[l]//,%
   morestring=[b]"
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Caml and Objective Caml}
%
% \lstthanks{Patrick~Cousot}{Patrick.Cousot@wanadoo.fr}{1999/01/09} mailed me
% the definition.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% (Objective) Caml definition (c) 1999 Patrick Cousot
%%                                      <Patrick.Cousot@wanadoo.fr>
%%
%% Objective CAML and Caml light are freely available, together with 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}
  {morekeywords={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,%
   morecomment=[n]{(*}{*)},%
   morestring=[b]",%
   moredirectives={open,close,include}%
  }[keywords,comments,strings,directives]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \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}
%<*lang2>
%    \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}%
  {morekeywords={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},%
   alsodigit=-%,
   sensitive=f,% ???
   morecomment=[f][commentstyle][6]*,%
   morestring=[d]"% ??? doubled
  }[keywords,comments,strings]%
%    \end{macrocode}
% \texttt{commentstyle} (not the surrounding brackets) have been added after
% a bug report by \lsthelper{Stephen Reindl}{Stephen.Reindl@vodafone.de}
% {2002/05/28}{no commentstyle in Cobol}.
%    \begin{macrocode}
%</lang2>
%    \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}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Comal 80}%
  {morekeywords={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,% ???
   morecomment=[l]//,%
   morestring=[d]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{C-Shell}
%
% This language is from \lstthanks{Kai~Below}{below@tu-harburg.de}{1998/09/21},
% but he pointed out that some keywords are probably missing.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% csh definition (c) 1998 Kai Below <below@tu-harburg.de>
%%
\lst@definelanguage{csh}
  {morekeywords={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},%
   morecomment=[l]\#,%
   morestring=[d]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Delphi}
%
% I took the data from Delphi 1.0 (?) online help.
% \lstthanks{Christian~Gudrian}{chrigu@kawo1.rwth-aachen.de}{2001/08/16}
% provided the `double slash' comment.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Delphi}%
  {morekeywords={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},%
   morendkeywords={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,%
   morecomment=[s]{(*}{*)},%
   morecomment=[s]{\{}{\}},%
   morecomment=[l]{//},% 2001 Christian Gudrian
   morestring=[d]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \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}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Eiffel}%
  {morekeywords={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,%
   morecomment=[l]--,%
   morestring=[d]",%
  }[keywords,comments,strings]%
%    \end{macrocode}
% The key=value \texttt{stringtest=false} has been removed after a bug
% report from \lsthelper{Xavier~Cr\'egut}{cregut@enseeiht.fr}{2002/09/09}
% {stringtest no more part of package}.
%    \begin{macrocode}
%</lang2>
%    \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}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Elan}%
  {morekeywords={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,%
   morestring=[d]"%
  }[keywords,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Euphoria}
%
% \lstthanks{Detlef~Reimers}{dreimers@aol.com}{1998/08/30} sent me the language
% definition.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Euphoria definition (c) 1998 Detlef Reimers <dreimers@aol.com>
%%
\lst@definelanguage{Euphoria}%
% for Euphoria 2.0, Rapid Deployment Software, Kanada
  {morekeywords={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,%
   morecomment=[l]--,%
   morestring=[d]',%
   morestring=[d]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \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}
%<*lang1>
%    \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 |morecomment=[f]| 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 morecomment=[f] 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},%
   deletecomment=[f],% no fixed comment line: 1998 Magne Rudshaug
   morecomment=[l]!%
  }%
%    \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}%
  {morekeywords={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 %%
   morecomment=[f]*,%
   morecomment=[f]C,%
   morecomment=[f]c,%
   morestring=[d]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Haskell}
%
% Thanks to \lstthanks{Peter~Bartke}{bartke@inf.fu-berlin.de}{1999/11/18} for
% providing the new definition.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Haskell98 as implemented in Hugs98. See http://www.haskell.org
%% All keywords from Prelude and Standard Libraries
%% (c) 1999 Peter Bartke <bartke@inf.fu-berlin.de>
%%
\lst@definelanguage{Haskell}%
  {otherkeywords={=>},%
   morekeywords={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,AbsoluteSeek,AppendMode,%
      Array,BlockBuffering,Bool,BufferMode,Char,Complex,Double,Either,%
      FilePath,Float,Int,Integer,IO,IOError,Ix,LineBuffering,Maybe,%
      Ordering,NoBuffering,ReadMode,ReadWriteMode,ReadS,RelativeSeek,%
      SeekFromEnd,SeekMode,ShowS,StdGen,String,Void,Bounded,Enum,Eq,%
      Eval,ExitCode,exitFailure,exitSuccess,Floating,Fractional,%
      Functor,Handle,HandlePosn,IOMode,Integral,List,Monad,MonadPlus,%
      MonadZero,Num,Numeric,Ord,Random,RandomGen,Ratio,Rational,Read,%
      Real,RealFloat,RealFrac,Show,System,Prelude,EQ,False,GT,Just,%
      Left,LT,Nothing,Right,WriteMode,True,abs,accum,accumArray,%
      accumulate,acos,acosh,all,and,any,ap,appendFile,applyM,%
      approxRational,array,asTypeOf,asin,asinh,assocs,atan,atan2,atanh,%
      bounds,bracket,bracket_,break,catch,catMaybes,ceiling,chr,cis,%
      compare,concat,concatMap,conjugate,const,cos,cosh,curry,cycle,%
      decodeFloat,delete,deleteBy,deleteFirstsBy,denominator,%
      digitToInt,div,divMod,drop,dropWhile,either,elem,elems,elemIndex,%
      elemIndices,encodeFloat,enumFrom,enumFromThen,enumFromThenTo,%
      enumFromTo,error,even,exitFailure,exitWith,exp,exponent,fail,%
      filter,filterM,find,findIndex,findIndices,flip,floatDigits,%
      floatRadix,floatRange,floatToDigits,floor,foldl,foldM,foldl1,%
      foldr,foldr1,fromDouble,fromEnum,fromInt,fromInteger,%
      fromIntegral,fromJust,fromMaybe,fromRat,fromRational,%
      fromRealFrac,fst,gcd,genericLength,genericTake,genericDrop,%
      genericSplitAt,genericIndex,genericReplicate,getArgs,getChar,%
      getContents,getEnv,getLine,getProgName,getStdGen,getStdRandom,%
      group,groupBy,guard,hClose,hFileSize,hFlush,hGetBuffering,%
      hGetChar,hGetContents,hGetLine,hGetPosn,hIsClosed,hIsEOF,hIsOpen,%
      hIsReadable,hIsSeekable,hIsWritable,hLookAhead,hPutChar,hPutStr,%
      hPutStrLn,hPrint,hReady,hSeek,hSetBuffering,hSetPosn,head,%
      hugsIsEOF,hugsHIsEOF,hugsIsSearchErr,hugsIsNameErr,%
      hugsIsWriteErr,id,ioError,imagPart,index,indices,init,inits,%
      inRange,insert,insertBy,interact,intersect,intersectBy,%
      intersperse,intToDigit,ioeGetErrorString,ioeGetFileName,%
      ioeGetHandle,isAlreadyExistsError,isAlreadyInUseError,isAlpha,%
      isAlphaNum,isAscii,isControl,isDenormalized,isDoesNotExistError,%
      isDigit,isEOF,isEOFError,isFullError,isHexDigit,isIEEE,%
      isIllegalOperation,isInfinite,isJust,isLower,isNaN,%
      isNegativeZero,isNothing,isOctDigit,isPermissionError,isPrefixOf,%
      isPrint,isSpace,isSuffixOf,isUpper,isUserError,iterate,ixmap,%
      join,last,lcm,length,lex,lexDigits,lexLitChar,liftM,liftM2,%
      liftM3,liftM4,liftM5,lines,listArray,listToMaybe,log,logBase,%
      lookup,magnitude,makePolar,map,mapAccumL,mapAccumR,mapAndUnzipM,%
      mapM,mapM_,mapMaybe,max,maxBound,maximum,maximumBy,maybe,%
      maybeToList,min,minBound,minimum,minimumBy,mkPolar,mkStdGen,%
      mplus,mod,msum,mzero,negate,next,newStdGen,not,notElem,nub,nubBy,%
      null,numerator,odd,openFile,or,ord,otherwise,partition,phase,pi,%
      polar,pred,print,product,properFraction,putChar,putStr,putStrLn,%
      quot,quotRem,random,randomIO,randomR,randomRIO,randomRs,randoms,%
      rangeSize,read,readDec,readFile,readFloat,readHex,readInt,readIO,%
      readList,readLitChar,readLn,readParen,readOct,readSigned,reads,%
      readsPrec,realPart,realToFrac,recip,rem,repeat,replicate,return,%
      reverse,round,scaleFloat,scanl,scanl1,scanr,scanr1,seq,sequence,%
      sequence_,setStdGen,show,showChar,showEFloat,showFFloat,%
      showFloat,showGFloat,showInt,showList,showLitChar,showParen,%
      showSigned,showString,shows,showsPrec,significand,signum,sin,%
      sinh,snd,sort,sortBy,span,split,splitAt,sqrt,stderr,stdin,stdout,%
      strict,subtract,succ,sum,system,tail,tails,take,takeWhile,tan,%
      tanh,toEnum,toInt,toInteger,toLower,toRational,toUpper,transpose,%
      truncate,try,uncurry,undefined,unfoldr,union,unionBy,unless,%
      unlines,until,unwords,unzip,unzip3,unzip4,unzip5,unzip6,unzip7,%
      userError,when,words,writeFile,zero,zip,zip3,zip4,zip5,zip6,zip7,%
      zipWith,zipWithM,zipWithM_,zipWith3,zipWith4,zipWith5,zipWith6,%
      zipWith7},%
   sensitive,%
   morecomment=[l]--,%
   morecomment=[n]{\{-}{-\}},%
   morestring=[b]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \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}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{HTML}%
  {morekeywords={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,%
   morestring=[d]",% ??? doubled
%    \end{macrocode}
% Now we take care of comments.
% We don't enter comment mode if we aren't inside |<>|.
%    \begin{macrocode}
   MoreSelectCharTable=%
      \lst@CArgX--\relax\lst@DefDelimB{}{}%
          {\ifnum\lst@mode=\lst@insidemode\else
               \expandafter\@gobblethree
           \fi}%
          \lst@BeginComment\lst@commentmode{{\lst@commentstyle}}%
      \lst@CArgX--\relax\lst@DefDelimE{}{}{}%
          \lst@EndComment\lst@commentmode
  }[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|. And after receiving a bug
% report from \lsthelper{Jochen Schneider}{jschneider@ds3.etech.haw-hamburg.de}
% {2002/04/05}{use of \lst@thestyle doesn't match its definition} I converted
% the version 0.21 contents of |MoreSelectCharTable| to version 1.0.
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{IDL}
%
% The definition is from \lstthanks{J\"urgen~Heim}
% {heim@astro.uni-tuebingen.de}{1998/07/27}.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% IDL definition (c) 1998 Juergen Heim <heim@astro.uni-tuebingen.de>
%%
\lst@definelanguage{IDL}%
  {morekeywords={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,%
   morecomment=[l];,%
   morestring=[d]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Java}
%
% Got data from \texttt{http://java.sun.com}.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Java}%
  {morekeywords={abstract,boolean,break,byte,case,catch,char,class,%
      const,continue,default,do,double,else,extends,false,final,%
      finally,float,for,goto,if,implements,import,instanceof,int,%
      interface,label,long,native,new,null,package,private,protected,%
      public,return,short,static,super,switch,synchronized,this,throw,%
      throws,transient,true,try,void,volatile,while},%
   sensitive,%
   morecomment=[l]//,%
   morecomment=[s]{/*}{*/},%
   morestring=[b]",%
   morestring=[b]',%
  }[keywords,comments,strings]%
%    \end{macrocode}
% \lsthelper{Herbert Voss}{Herbert.Voss@alumni.TU-Berlin.de}{2002/07/30}
% {missing keyword label} added the keyword \texttt{label}.
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{ksh}
%
% Thanks to \lstthanks{Jeffrey Ratcliffe}{Jeffrey.Ratcliffe@m.eads.net}
% {2002/02/21} for this language definition.
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{ksh}
  {morekeywords={alias,awk,cat,echo,else,elif,fi,exec,exit,%
      for,in,do,done,select,case,esac,while,until,function,%
      time,export,cd,eval,fc,fg,kill,let,pwd,read,return,rm,%
      glob,goto,history,if,logout,nice,nohup,onintr,repeat,sed,%
      set,setenv,shift,source,switch,then,umask,unalias,%
      unset,wait,@,env,argv,child,home,ignoreeof,noclobber,%
      noglob,nomatch,path,prompt,shell,status,verbose,print,printf,%
      sqrt,BEGIN,END},%
   morecomment=[l]\#,%
   morestring=[d]",%
   morestring=[d]'%
  }[keywords,comments,strings]%
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Lisp, AutoLisp}
%
% 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' delimiters. 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}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Lisp}%
  {morekeywords={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=-,%
   morecomment=[l];,%
   morecomment=[s]{\#|}{|\#},% 1997 Aslak Raanes
   morestring=[b]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \end{macrocode}
% \endgroup
%
%
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
% \lstthanks{Stefan Lagotzki}{info@lagotzki.de}{2001/10/28} warned me to
% define this as a lisp dialect \ldots
%    \begin{macrocode}
%%
%% AutoLISP/VisualLISP - Stefan Lagotzki, info@lagotzki.de
%%
\lst@definelanguage[Auto]{Lisp}%
  {morekeywords={abs,acad_colordlg,acad_helpdlg,acad_strlsort,%
      action_tile,add_list,alert,alloc,and,angle,angtof,angtos,append,%
      apply,arx,arxload,arxunload,ascii,assoc,atan,atof,atoi,atom,%
      atoms-family,autoarxload,autoload,Boole,boundp,caddr,cadr,car,%
      cdr,chr,client_data_tile,close,command,cond,cons,cos,cvunit,%
      defun,defun-q,defun-q-list-ref,defun-q-list-set,dictadd,dictnext,%
      dictremove,dictrename,dictsearch,dimx_tile,dimy_tile,distance,%
      distof,done_dialog,end_image,end_list,entdel,entget,entlast,%
      entmake,entmakex,entmod,entnext,entsel,entupd,eq,equal,*error*,%
      eval,exit,exp,expand,expt,fill_image,findfile,fix,float,foreach,%
      function,gc,gcd,get_attr,get_tile,getangle,getcfg,getcname,%
      getcorner,getdist,getenv,getfiled,getint,getkword,getorient,%
      getpoint,getreal,getstring,getvar,graphscr,grclear,grdraw,grread,%
      grtext,grvecs,handent,help,if,initdia,initget,inters,itoa,lambda,%
      last,layoutlist,length,list,listp,load,load_dialog,log,logand,%
      logior,lsh,mapcar,max,mem,member,menucmd,menugroup,min,minusp,%
      mode_tile,namedobjdict,nentsel,nentselp,new_dialog,not,nth,%
      null,numberp,open,or,osnap,polar,prin1,princ,print,progn,prompt,%
      quit,quote,read,read-char,read-line,redraw,regapp,rem,repeat,%
      reverse,rtos,set,set_tile,setcfg,setenv,setfunhelp,setq,%
      setvar,setview,sin,slide_image,snvalid,sqrt,ssadd,ssdel,ssget,%
      ssgetfirst,sslength,ssmemb,ssname,ssnamex,sssetfirst,startapp,%
      start_dialog,start_image,start_list,strcase,strcat,strlen,subst,%
      substr,tablet,tblnext,tblobjname,tblsearch,term_dialog,terpri,%
      textbox,textpage,textscr,trace,trans,type,unload_dialog,untrace,%
      vector_image,ver,vl-acad-defun,vl-acad-undefun,vl-arx-import,%
      vl-bb-ref,vl-bb-set,vl-catch-all-apply,%
      vl-catch-all-error-message,vl-catch-all-error-p,vl-cmdf,vl-consp,%
      vl-directory-files,vl-doc-export,vl-doc-import,vl-doc-ref,%
      vl-doc-set,vl-every,vl-exit-with-error,vl-exit-with-value,%
      vl-file-copy,vl-file-delete,vl-file-directory-p,vl-file-rename,%
      vl-file-size,vl-file-systime,vl-filename-base,%
      vl-filename-directory,vl-filename-extension,vl-filename-mktemp,%
      vl-get-resource,vl-list*,vl-list->string,%
      vl-list-exported-functions,vl-list-length,vl-list-loaded-vlx,%
      vl-load-all,vl-load-com,vl-load-reactors,vl-member-if,%
      vl-member-if-not,vl-position,vl-prin1-to-string,%
      vl-princ-to-string,vl-propagate,vl-registry-delete,%
      vl-registry-descendents,vl-registry-read,vl-registry-write,%
      vl-remove,vl-remove-if,vl-remove-if-not,vl-some,vl-sort,%
      vl-sort-i,vl-string->list,vl-string-elt,vl-string-left-trim,%
      vl-string-mismatch,vl-string-position,vl-string-right-trim,%
      vl-string-search,vl-string-subst,vl-string-translate,%
      vl-string-trim,vl-symbol-name,vl-symbol-value,vl-symbolp,%
      vl-unload-vlx,vl-vbaload,vl-vbarun,vl-vlx-loaded-p,vlax-3D-point,%
      vlax-add-cmd,vlax-create-object,vlax-curve-getArea,%
      vlax-curve-getDistAtParam,vlax-curve-getDistAtPoint,%
      vlax-curve-getEndParam,vlax-curve-getEndPoint,%
      vlax-curve-getParamAtDist,vlax-curve-getParamAtPoint,%
      vlax-curve-getPointAtDist,vlax-curve-getPointAtParam,%
      vlax-curve-getStartParam,vlax-curve-getStartPoint,%
      vlax-curve-isClosed,vlax-curve-isPeriodic,vlax-curve-isPlanar,%
      vlax-curve-getClosestPointTo,%
      vlax-curve-getClosestPointToProjection,vlax-curve-getFirstDeriv,%
      vlax-curve-getSecondDeriv,vlax-dump-object,%
      vlax-ename->vla-object,vlax-erased-p,vlax-for,%
      vlax-get-acad-object,vlax-get-object,vlax-get-or-create-object,%
      vlax-get-property,vlax-import-type-library,vlax-invoke-method,%
      vlax-ldata-delete,vlax-ldata-get,vlax-ldata-list,vlax-ldata-put,%
      vlax-ldata-test,vlax-make-safearray,vlax-make-variant,%
      vlax-map-collection,vlax-method-applicable-p,%
      vlax-object-released-p,vlax-product-key,%
      vlax-property-available-p,vlax-put-property,vlax-read-enabled-p,%
      vlax-release-object,vlax-remove-cmd,vlax-safearray-fill,%
      vlax-safearray-get-dim,vlax-safearray-get-element,%
      vlax-safearray-get-l-bound,vlax-safearray-get-u-bound,%
      vlax-safearray-put-element,vlax-safearray-type,%
      vlax-safearray->list,vlax-tmatrix,vlax-typeinfo-available-p,%
      vlax-variant-change-type,vlax-variant-type,vlax-variant-value,%
      vlax-vla-object->ename,vlax-write-enabled-p,vlisp-compile,%
      vlr-acdb-reactor,vlr-add,vlr-added-p,vlr-beep-reaction,%
      vlr-command-reactor,vlr-current-reaction-name,vlr-data,%
      vlr-data-set,vlr-deepclone-reactor,vlr-docmanager-reactor,%
      vlr-dwg-reactor,vlr-dxf-reactor,vlr-editor-reactor,%
      vlr-insert-reactor,vlr-linker-reactor,vlr-lisp-reactor,%
      vlr-miscellaneous-reactor,vlr-mouse-reactor,vlr-notification,%
      vlr-object-reactor,vlr-owner-add,vlr-owner-remove,vlr-owners,%
      vlr-pers,vlr-pers-list,vlr-pers-p,vlr-pers-release,%
      vlr-reaction-names,vlr-reaction-set,vlr-reactions,vlr-reactors,%
      vlr-remove,vlr-remove-all,vlr-set-notification,%
      vlr-sysvar-reactor,vlr-toolbar-reactor,vlr-trace-reaction,%
      vlr-type,vlr-types,vlr-undo-reactor,vlr-wblock-reactor,%
      vlr-window-reactor,vlr-xref-reactor,vports,wcmatch,while,%
      write-char,write-line,xdroom,xdsize,zerop},%
   alsodigit=->,%
   otherkeywords={1+,1-},%
   sensitive=false,% 
   morecomment=[l];,%
   morecomment=[l];;,%
   morestring=[b]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \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}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Logo}%
% ??? {end,unix} also keywords
  {morekeywords={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}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Make}
%
% \lstthanks{Rolf~Niepraschk}{niepraschk@ptb.de}{2000/01/10} sent me the new
% definitions. \lstthanks{Markus~Pahlow}{pahlowm@mar.dfo-mpo.gc.ca}{2001/10/12}
% found a missing comma and added some keywords, which improve the highlighting
% with |makemacrouse=true| (but I haven't tested this).
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Make definitions (c) 2000 Rolf Niepraschk <niepraschk@ptb.de>
%%
\lst@definelanguage[gnu]{make}%
  {morekeywords={SHELL,MAKE,MAKEFLAGS,$@,$\%,$<,$?,$^,$+,$*,%
      @,^,<,\%,+,?,*,% Markus Pahlow
      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,% 
      AR,AS,CC,CXX,CO,CPP,FC,GET,LEX,PC,YACC,YACCR,MAKEINFO,TEXI2DVI,%
      WEAVE,CWEAVE,TANGLE,CTANGLE,RM,M2C,LINT,COMPILE,LINK,PREPROCESS,%
      CHECKOUT,%
      ARFLAGS,ASFLAGS,CFLAGS,CXXFLAGS,COFLAGS,CPPFLAGS,FFLAGS,GFLAGS,%
      LDFLAGS,LOADLIBES,LFLAGS,PFLAGS,RFLAGS,YFLAGS,M2FLAGS,MODFLAGS,%
      LINTFLAGS,MAKEINFO_FLAGS,TEXI2DVI_FLAGS,COFLAGS,GFLAGS,%
      OUTPUT_OPTION,SCCS_OUTPUT_OPTION,% missing comma: Markus Pahlow
      .PHONY,.SUFFIXES,.DEFAULT,.PRECIOUS,.INTERMEDIATE,.SECONDARY,%
      .IGNORE,.SILENT,.EXPORT_ALL_VARIABLES,MAKEFILES,VPATH,MAKESHELL,%
      MAKELEVEL,MAKECMDGOALS,SUFFIXES},%
   sensitive=true,
   morecomment=[l]\#,%
   morestring=[b]"%
  }[keywords,comments,strings,make]%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{make}
  {morekeywords={SHELL,MAKE,MAKEFLAGS,$@,$\%,$<,$?,$^,$+,$*},%
   sensitive=true,%
   morecomment=[l]\#,%
   morestring=[b]"%
  }[keywords,comments,strings,make]%
%    \end{macrocode}
% The two \texttt{[b]}-arguments have been added after a bug report by
% \lsthelper{Dr.~Jobst~Hoffmann}{2002/06/24,2002/09/05}{language=make leads
% to: Use of \lst@FindAlias doesn't match its definition}.
%    \begin{macrocode}
%</lang2>
%    \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}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Matlab}%
  {morekeywords={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,%
   morecomment=[l]\%,%
   morestring=[m]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Mathematica}
%
% \lstthanks{Michael Wiese}{wiese@itwm.uni-kl.de}{1999/02/25} typed in all the
% keywords!
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \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}%
  {morekeywords={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},%
   morendkeywords={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,%
   morecomment=[s]{(*}{*)},%
   morestring=[d]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Mercury}
%
% \lstthanks{Dominique~de~Waleffe}{ddw@miscrit.be}{1997/11/24} mailed me the
% data and \lstthanks{Ralph~Becket}{rbeck@microsoft.com}{2001/05/01} extended
% the definition.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Mercury definition (c) 1997 Dominique de Waleffe <ddw@miscrit.be>
%% Extended (c) 2001 Ralph Becket <rbeck@microsoft.com>
%%
\lst@definelanguage{Mercury}%
  {otherkeywords={::,->,-->,--->,:-,==,=>,<=,<=>},%
   morekeywords={module,include_module,import_module,interface,%
      end_module,implementation,mode,is,failure,semidet,nondet,det,%
      multi,erroneous,inst,in,out,di,uo,ui,type,typeclass,instance,%
      where,with_type,pred,func,lambda,impure,semipure,if,then,else,%
      some,all,not,true,fail,pragma,memo,no_inline,inline,loop_check,%
      minimal_model,fact_table,type_spec,terminates,does_not_terminate,%
      check_termination,promise_only_solution,unsafe_promise_unique,%
      source_file,obsolete,import,export,c_header_code,c_code,%
      foreign_code,foreign_proc,may_call_mercury,will_not_call_mercury,%
      thread_safe,not_thread_safe},%
   sensitive=t,%
   morecomment=[l]\%,%
   morecomment=[s]{/*}{*/},%
   morestring=[bd]",%
   morestring=[bd]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \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}
%<*lang2>
%    \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}%
  {morekeywords={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,%
   morecomment=[l]||,%
   morestring=[b]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{ML}
%
% Thanks to \lstthanks{Torben~Hoffmann}{toho@it.dtu.dk}{1999/02/18} for
% providing the definition.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% ML definition (c) 1999 Torben Hoffmann <toho@it.dtu.dk>
%%
\lst@definelanguage{ML}%
  {morekeywords={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,%
   morecomment=[n]{(*}{*)},%
   morestring=[d]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \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}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Modula-2}%
  {morekeywords={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,DEFINITION,LOOP},% added keywords due to Peter Bartke 99/07/22
   sensitive,%
   morecomment=[n]{(*}{*)},%
   morestring=[d]',%
   morestring=[d]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{NASTRAN}
%
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
% The definition is from \lsthelper{Jeffrey Ratcliffe}
% {Jeffrey.Ratcliffe@m.eads.net}{2002/02/21}{}---except the
% \texttt{MoreSelectCharTable} part which simulates the keyword
% \texttt{BEGIN BULK}.
%    \begin{macrocode}
\lst@definelanguage{NASTRAN}
  {morekeywords={ENDDATA},%
   morecomment=[l]$,%
   MoreSelectCharTable=%
        \lst@CArgX BEGIN\ BULK\relax\lst@CDef{}%
        {\lst@ifmode\else \ifnum\lst@length=\z@
             \lst@EnterMode{\lst@GPmode}{\lst@modetrue
                  \let\lst@currstyle\lst@gkeywords@sty}%
         \fi \fi}%
        {\ifnum\lst@mode=\lst@GPmode
             \lst@XPrintToken \lst@LeaveMode
         \fi}%
  }[keywords,comments]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Oberon-2}
%
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Oberon-2}%
  {morekeywords={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,%
   morecomment=[n]{(*}{*)},%
   morestring=[d]',%
   morestring=[d]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{OCL}
%
% This definition is based on chapter 7 of the OMG UML standard version 1.3:
% \begin{itemize}
% \item
%               \textsc{OMG}:
%               \textbf{OMG Unified Modeling Language Specification};
%               {\copyright} 1999 OMG;
%               Available at \texttt{ftp://ftp.omg.org/pub/docs/ad/99-06-08.pdf}.
% \end{itemize}%
% This language is due to \lstthanks{Achim~D.~Brucker}
% {brucker@informatik.uni-freiburg.de}{2000/08/14}.
%
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% OCL definition (c) 2000 Achim D. Brucker
%%                         <brucker@informatik.uni-freiburg.de>
%%
%% You are allowed to use, modify and distribute this code either under
%% the terms of the LPPL (version 1.0 or later) or the GPL (version 2.0
%% or later).
%%
%    \end{macrocode}
% First we define are very decorative style. In the OMG standard only the
% boolean (infix (?)) operations are highlighted, but I think all OCL-defined
% operations should be highlighted, because they are \emph{guaranteed} to be
% side-effect-free (in OCL only side effect free evaluations or path
% expressions are allowed).
%    \begin{macrocode}
\lst@definelanguage[decorative]{OCL}[OMG]{OCL}
  {otherkeywords={@pre},%
   morendkeywords={name,attributes,associatoinEnds,operations,%
      supertypes,allSupertypes,allInstances,oclIsKindOf,oclIsTypeOf,%
      oclAsType,oclInState,oclIsNew,evaluationType,abs,floor,round,max,%
      min,div,mod,size,concat,toUpper,toLower,substring,includes,%
      excludes,count,includesAll,exludesAll,isEmpty,notEmpty,sum,%
      exists,forAll,isUnique,sortedBy,iterate,union,intersection,%
      including,excluding,symmetricDifference,select,reject,collect,%
      asSequence,asBag,asSequence,asSet,append,prepend,subSequence,at,%
      first,last,true,false,isQuery}%
  }%
%    \end{macrocode} 
% Remark: "isQuery" is not real OCL, but a important attribute of the
% underlying UML model.
%
% The dialect called \texttt{OMG} is a very spare version. If you use
% this variant with bold style for first and second order keywords you
% get the look and feel of the OMG standard. First order keywords are the
% OCL context declarations (see section 7.3 of the OMG standard):
%    \begin{macrocode}
\lst@definelanguage[OMG]{OCL}%
    {morekeywords={context,pre,inv,post},%
%    \end{macrocode} 
% Second order keywords are the operation which are defined for type
% Boolean (see pages 7-34/35 of the OMG standard) and the let-operation
% (in principle these are the infix operations):
%    \begin{macrocode}
    ndkeywords={or,xor,and,not,implies,if,then,else,endif},%
%    \end{macrocode} 
% Third order keywords are the basic data types as declared in section 7.4 of
% the OMG standard:
%    \begin{macrocode}
    morerdkeywords={Boolean,Integer,Real,String,Set,Sequence,Bag,%
       OclType,OclAny,OclExpression,Enumeration,Collection,},%
    sensitive=t,%
    morecomment=[l]--,%
    morestring=[d]'%
   }[keywords,rdkeywords,comments,strings]%
%    \end{macrocode} 
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Octave}
%
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
% As you can read below the definition is due to \lsthelper{Ulrich G. Wortmann}
% {uliw@erdw.ethz.ch}{2002/02/18}{}.
%    \begin{macrocode}
%%
%% Octave definition (c) 2001,2002 Ulrich G. Wortmann
%%                                 <uliw@erdw.ethz.ch>
%%
\lst@definelanguage{Octave}%
  {morekeywords={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,%
      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,%
      stderr,stdout,plot,set,endif,wk1write,xlabel,xor,ylabel,zeros,%
      zlabel,zoom,endwhile,endfunction},%
   sensitive=f,%
   morecomment=[l]\#,%
   morecomment=[l]\#\#,%
   morestring=[m]',%
   morestring=[m]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Pascal}
%
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \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},%
   morendkeywords={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}%
  {morekeywords={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,%
   morecomment=[s]{(*}{*)},%
   morecomment=[s]{\{}{\}},%
   morestring=[d]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \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}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Perl}%
  {morekeywords={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,%
   morecomment=[l]\#,%
   morestring=[b]",%
   morestring=[b]',%
   MoreSelectCharTable=%
      \lst@ReplaceInput{\$\#}{\lst@ProcessOther\$\lst@ProcessOther\#}%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{PHP}
%
% \lstthanks{Luca Balzerani}{lou@latoserver.it}{2002/04/06} sent me this
% language definition.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% PHP definition by Luca Balzerani, <lou@latoserver.it>
%%
\lst@definelanguage{PHP}%
  {morekeywords={%
    abs,acos,acosh,addcslashes,addslashes,apache_child_terminate,%
    apache_note,apache_setenv,array_change_key_case,array_chunk,%
    array_diff,array_fill,array_filter,array_flip,array_intersect,%
    array_keys,array_map,array_merge_recursive,array_merge,%
    array_pad,array_pop,array_push,array_rand,array_reduce,%
    array_search,array_shift,array_slice,array_splice,array_sum,%
    array_unshift,array_values,array_walk,array,arsort,ascii2ebcdic,%
    asinh,asort,aspell_check_raw,aspell_check,aspell_new,%
    assert_options,assert,atan,atan2,atanh,base_convert,%
    base64_encode,basename,bcadd,bccomp,bcdiv,bcmod,bcmul,bcpow,%
    bcsqrt,bcsub,bin2hex,bind_textdomain_codeset,bindec,%
    bzclose,bzcompress,bzdecompress,bzerrno,bzerror,bzerrstr,%
    bzopen,bzread,bzwrite,cal_days_in_month,cal_from_jd,cal_info,%
    call_user_func_array,call_user_func,call_user_method_array,%
    ccvs_add,ccvs_auth,ccvs_command,ccvs_count,ccvs_delete,%
    ccvs_init,ccvs_lookup,ccvs_new,ccvs_report,ccvs_return,%
    ccvs_sale,ccvs_status,ccvs_textvalue,ccvs_void,ceil,chdir,%
    checkdnsrr,chgrp,chmod,chop,chown,chr,chroot,chunk_split,%
    clearstatcache,closedir,closelog,com_addref,com_get,com_invoke,%
    com_load_typelib,com_load,com_propget,com_propput,com_propset,%
    com_set,compact,connection_aborted,connection_status,%
    constant,convert_cyr_string,copy,cos,cosh,count_chars,count,%
    cpdf_add_outline,cpdf_arc,cpdf_begin_text,cpdf_circle,cpdf_clip,%
    cpdf_closepath_fill_stroke,cpdf_closepath_stroke,cpdf_closepath,%
    cpdf_curveto,cpdf_end_text,cpdf_fill_stroke,cpdf_fill,%
    cpdf_finalize,cpdf_global_set_document_limits,cpdf_import_jpeg,%
    cpdf_moveto,cpdf_newpath,cpdf_open,cpdf_output_buffer,%
    cpdf_place_inline_image,cpdf_rect,cpdf_restore,cpdf_rlineto,%
    cpdf_rotate_text,cpdf_rotate,cpdf_save_to_file,cpdf_save,%
    cpdf_set_action_url,cpdf_set_char_spacing,cpdf_set_creator,%
    cpdf_set_font_directories,cpdf_set_font_map_file,cpdf_set_font,%
    cpdf_set_keywords,cpdf_set_leading,cpdf_set_page_animation,%
    cpdf_set_text_matrix,cpdf_set_text_pos,cpdf_set_text_rendering,%
    cpdf_set_title,cpdf_set_viewer_preferences,%
    cpdf_setdash,cpdf_setflat,cpdf_setgray_fill,cpdf_setgray_stroke,%
    cpdf_setlinecap,cpdf_setlinejoin,cpdf_setlinewidth,%
    cpdf_setrgbcolor_fill,cpdf_setrgbcolor_stroke,cpdf_setrgbcolor,%
    cpdf_show,cpdf_stringwidth,cpdf_stroke,cpdf_text,cpdf_translate,%
    crack_closedict,crack_getlastmessage,crack_opendict,crc32,%
    crypt,ctype_alnum,ctype_alpha,ctype_cntrl,ctype_digit,%
    ctype_lower,ctype_print,ctype_punct,ctype_space,ctype_upper,%
    curl_close,curl_errno,curl_error,curl_exec,curl_getinfo,%
    curl_setopt,curl_version,current,cybercash_base64_decode,%
    cybercash_decr,cybercash_encr,cybermut_creerformulairecm,%
    cybermut_testmac,cyrus_authenticate,cyrus_bind,cyrus_close,%
    cyrus_query,cyrus_unbind,date,dba_close,dba_delete,dba_exists,%
    dba_firstkey,dba_insert,dba_nextkey,dba_open,dba_optimize,%
    dba_replace,dba_sync,dbase_add_record,dbase_close,dbase_create,%
    dbase_get_record_with_names,dbase_get_record,dbase_numfields,%
    dbase_open,dbase_pack,dbase_replace_record,dblist,dbmclose,%
    dbmexists,dbmfetch,dbmfirstkey,dbminsert,dbmnextkey,dbmopen,%
    dbplus_add,dbplus_aql,dbplus_chdir,dbplus_close,dbplus_curr,%
    dbplus_errno,dbplus_find,dbplus_first,dbplus_flush,%
    dbplus_freelock,dbplus_freerlocks,dbplus_getlock,%
    dbplus_info,dbplus_last,dbplus_lockrel,dbplus_next,dbplus_open,%
    dbplus_rchperm,dbplus_rcreate,dbplus_rcrtexact,dbplus_rcrtlike,%
    dbplus_restorepos,dbplus_rkeys,dbplus_ropen,dbplus_rquery,%
    dbplus_rsecindex,dbplus_runlink,dbplus_rzap,dbplus_savepos,%
    dbplus_setindexbynumber,dbplus_sql,dbplus_tcl,dbplus_tremove,%
    dbplus_undoprepare,dbplus_unlockrel,dbplus_unselect,%
    dbplus_xlockrel,dbplus_xunlockrel,dbx_close,dbx_compare,%
    dbx_error,dbx_query,dbx_sort,dcgettext,dcngettext,debugger_off,%
    decbin,dechex,decoct,define_syslog_variables,define,defined,%
    delete,dgettext,die,dio_close,dio_fcntl,dio_open,dio_read,%
    dio_stat,dio_truncate,dio_write,dirname,disk_free_space,%
    diskfreespace,dl,dngettext,domxml_add_root,domxml_attributes,%
    domxml_dumpmem,domxml_get_attribute,domxml_new_child,%
    domxml_node_set_content,domxml_node_unlink_node,domxml_node,%
    domxml_set_attribute,domxml_version,dotnet_load,doubleval,each,%
    easter_days,ebcdic2ascii,echo,empty,end,ereg_replace,ereg,%
    eregi,error_log,error_reporting,escapeshellarg,escapeshellcmd,%
    exec,exit,exp,explode,expm1,extension_loaded,extract,ezmlm_hash,%
    fbsql_autocommit,fbsql_change_user,fbsql_close,fbsql_commit,%
    fbsql_create_blob,fbsql_create_clob,fbsql_create_db,%
    fbsql_database_password,fbsql_database,fbsql_db_query,%
    fbsql_drop_db,fbsql_errno,fbsql_error,fbsql_fetch_array,%
    fbsql_fetch_field,fbsql_fetch_lengths,fbsql_fetch_object,%
    fbsql_field_flags,fbsql_field_len,fbsql_field_name,%
    fbsql_field_table,fbsql_field_type,fbsql_free_result,%
    fbsql_hostname,fbsql_insert_id,fbsql_list_dbs,fbsql_list_fields,%
    fbsql_next_result,fbsql_num_fields,fbsql_num_rows,%
    fbsql_pconnect,fbsql_query,fbsql_read_blob,fbsql_read_clob,%
    fbsql_rollback,fbsql_select_db,fbsql_set_lob_mode,%
    fbsql_start_db,fbsql_stop_db,fbsql_tablename,fbsql_username,%
    fclose,fdf_add_template,fdf_close,fdf_create,fdf_get_file,%
    fdf_get_value,fdf_next_field_name,fdf_open,fdf_save,fdf_set_ap,%
    fdf_set_file,fdf_set_flags,fdf_set_javascript_action,%
    fdf_set_status,fdf_set_submit_form_action,fdf_set_value,feof,%
    fgetc,fgetcsv,fgets,fgetss,file_exists,file,fileatime,filectime,%
    fileinode,filemtime,fileowner,fileperms,filepro_fieldcount,%
    filepro_fieldtype,filepro_fieldwidth,filepro_retrieve,%
    filepro,filesize,filetype,floatval,flock,floor,flush,fopen,%
    fputs,fread,frenchtojd,fribidi_log2vis,fscanf,fseek,fsockopen,%
    ftell,ftok,ftp_cdup,ftp_chdir,ftp_connect,ftp_delete,ftp_exec,%
    ftp_fput,ftp_get,ftp_login,ftp_mdtm,ftp_mkdir,ftp_nlist,%
    ftp_put,ftp_pwd,ftp_quit,ftp_rawlist,ftp_rename,ftp_rmdir,%
    ftp_size,ftp_systype,ftruncate,func_get_arg,func_get_args,%
    function_exists,fwrite,get_browser,get_cfg_var,%
    get_class_vars,get_class,get_current_user,get_declared_classes,%
    get_defined_functions,get_defined_vars,get_extension_funcs,%
    get_included_files,get_loaded_extensions,get_magic_quotes_gpc,%
    get_meta_tags,get_object_vars,get_parent_class,%
    get_resource_type,getallheaders,getcwd,getdate,getenv,%
    gethostbyname,gethostbynamel,getimagesize,getlastmod,getmxrr,%
    getmyinode,getmypid,getmyuid,getprotobyname,getprotobynumber,%
    getrusage,getservbyname,getservbyport,gettext,gettimeofday,%
    gmdate,gmmktime,gmp_abs,gmp_add,gmp_and,gmp_clrbit,gmp_cmp,%
    gmp_div_q,gmp_div_qr,gmp_div_r,gmp_div,gmp_divexact,gmp_fact,%
    gmp_gcdext,gmp_hamdist,gmp_init,gmp_intval,gmp_invert,%
    gmp_legendre,gmp_mod,gmp_mul,gmp_neg,gmp_or,gmp_perfect_square,%
    gmp_pow,gmp_powm,gmp_prob_prime,gmp_random,gmp_scan0,gmp_scan1,%
    gmp_sign,gmp_sqrt,gmp_sqrtrem,gmp_strval,gmp_sub,gmp_xor,%
    gregoriantojd,gzclose,gzcompress,gzdeflate,gzencode,gzeof,%
    gzgetc,gzgets,gzgetss,gzinflate,gzopen,gzpassthru,gzputs,gzread,%
    gzseek,gztell,gzuncompress,gzwrite,header,headers_sent,hebrev,%
    hexdec,highlight_file,highlight_string,htmlentities,%
    hw_array2objrec,hw_changeobject,hw_children,hw_childrenobj,%
    hw_connect,hw_connection_info,hw_cp,hw_deleteobject,%
    hw_docbyanchorobj,hw_document_attributes,hw_document_bodytag,%
    hw_document_setcontent,hw_document_size,hw_dummy,hw_edittext,%
    hw_errormsg,hw_free_document,hw_getanchors,hw_getanchorsobj,%
    hw_getchildcoll,hw_getchildcollobj,hw_getchilddoccoll,%
    hw_getobject,hw_getobjectbyquery,hw_getobjectbyquerycoll,%
    hw_getobjectbyqueryobj,hw_getparents,hw_getparentsobj,%
    hw_getremote,hw_getremotechildren,hw_getsrcbydestobj,hw_gettext,%
    hw_identify,hw_incollections,hw_info,hw_inscoll,hw_insdoc,%
    hw_insertdocument,hw_insertobject,hw_mapid,hw_modifyobject,%
    hw_new_document,hw_objrec2array,hw_output_document,hw_pconnect,%
    hw_root,hw_setlinkroot,hw_stat,hw_unlock,hw_who,hypot,%
    ibase_blob_cancel,ibase_blob_close,ibase_blob_create,%
    ibase_blob_get,ibase_blob_import,ibase_blob_info,%
    ibase_close,ibase_commit,ibase_connect,ibase_errmsg,%
    ibase_fetch_object,ibase_fetch_row,ibase_field_info,%
    ibase_free_result,ibase_num_fields,ibase_pconnect,ibase_prepare,%
    ibase_rollback,ibase_timefmt,ibase_trans,icap_close,%
    icap_delete_calendar,icap_delete_event,icap_fetch_event,%
    icap_list_events,icap_open,icap_rename_calendar,icap_reopen,%
    icap_store_event,iconv_get_encoding,iconv_set_encoding,iconv,%
    ifx_blobinfile_mode,ifx_byteasvarchar,ifx_close,ifx_connect,%
    ifx_create_blob,ifx_create_char,ifx_do,ifx_error,ifx_errormsg,%
    ifx_fieldproperties,ifx_fieldtypes,ifx_free_blob,ifx_free_char,%
    ifx_get_blob,ifx_get_char,ifx_getsqlca,ifx_htmltbl_result,%
    ifx_num_fields,ifx_num_rows,ifx_pconnect,ifx_prepare,ifx_query,%
    ifx_update_blob,ifx_update_char,ifxus_close_slob,%
    ifxus_free_slob,ifxus_open_slob,ifxus_read_slob,ifxus_seek_slob,%
    ifxus_write_slob,ignore_user_abort,image2wbmp,%
    imagearc,imagechar,imagecharup,imagecolorallocate,imagecolorat,%
    imagecolorclosestalpha,imagecolorclosesthwb,%
    imagecolorexact,imagecolorexactalpha,imagecolorresolve,%
    imagecolorset,imagecolorsforindex,imagecolorstotal,%
    imagecopy,imagecopymerge,imagecopymergegray,imagecopyresampled,%
    imagecreate,imagecreatefromgd,imagecreatefromgd2,%
    imagecreatefromgif,imagecreatefromjpeg,imagecreatefrompng,%
    imagecreatefromwbmp,imagecreatefromxbm,imagecreatefromxpm,%
    imagedashedline,imagedestroy,imageellipse,imagefill,%
    imagefilledellipse,imagefilledpolygon,imagefilledrectangle,%
    imagefontheight,imagefontwidth,imageftbbox,imagefttext,%
    imagegd,imagegd2,imagegif,imageinterlace,imagejpeg,imageline,%
    imagepalettecopy,imagepng,imagepolygon,imagepsbbox,%
    imagepsextendfont,imagepsfreefont,imagepsloadfont,%
    imagepstext,imagerectangle,imagesetbrush,imagesetpixel,%
    imagesetthickness,imagesettile,imagestring,imagestringup,%
    imagesy,imagetruecolortopalette,imagettfbbox,imagettftext,%
    imagewbmp,imap_8bit,imap_alerts,imap_append,imap_base64,%
    imap_body,imap_bodystruct,imap_check,imap_clearflag_full,%
    imap_createmailbox,imap_delete,imap_deletemailbox,imap_errors,%
    imap_fetch_overview,imap_fetchbody,imap_fetchheader,%
    imap_get_quota,imap_getmailboxes,imap_getsubscribed,imap_header,%
    imap_headers,imap_last_error,imap_listmailbox,%
    imap_mail_compose,imap_mail_copy,imap_mail_move,imap_mail,%
    imap_mime_header_decode,imap_msgno,imap_num_msg,imap_num_recent,%
    imap_ping,imap_popen,imap_qprint,imap_renamemailbox,imap_reopen,%
    imap_rfc822_parse_headers,imap_rfc822_write_address,%
    imap_search,imap_set_quota,imap_setacl,imap_setflag_full,%
    imap_status,imap_subscribe,imap_thread,imap_uid,imap_undelete,%
    imap_utf7_decode,imap_utf7_encode,imap_utf8,implode,%
    in_array,include_once,include,ingres_autocommit,ingres_close,%
    ingres_connect,ingres_fetch_array,ingres_fetch_object,%
    ingres_field_length,ingres_field_name,ingres_field_nullable,%
    ingres_field_scale,ingres_field_type,ingres_num_fields,%
    ingres_pconnect,ingres_query,ingres_rollback,ini_alter,%
    ini_get,ini_restore,ini_set,intval,ip2long,iptcembed,iptcparse,%
    ircg_disconnect,ircg_fetch_error_msg,ircg_get_username,%
    ircg_ignore_add,ircg_ignore_del,ircg_is_conn_alive,ircg_join,%
    ircg_lookup_format_messages,ircg_msg,ircg_nick,%
    ircg_nickname_unescape,ircg_notice,ircg_part,ircg_pconnect,%
    ircg_set_current,ircg_set_file,ircg_set_on_die,ircg_topic,%
    is_array,is_bool,is_dir,is_double,is_executable,is_file,%
    is_int,is_integer,is_link,is_long,is_null,is_numeric,is_object,%
    is_real,is_resource,is_scalar,is_string,is_subclass_of,%
    is_writable,is_writeable,isset,java_last_exception_clear,%
    jddayofweek,jdmonthname,jdtofrench,jdtogregorian,jdtojewish,%
    jdtounix,jewishtojd,join,jpeg2wbmp,juliantojd,key,krsort,ksort,%
    ldap_8859_to_t61,ldap_add,ldap_bind,ldap_close,ldap_compare,%
    ldap_count_entries,ldap_delete,ldap_dn2ufn,ldap_err2str,%
    ldap_error,ldap_explode_dn,ldap_first_attribute,%
    ldap_first_reference,ldap_free_result,ldap_get_attributes,%
    ldap_get_entries,ldap_get_option,ldap_get_values_len,%
    ldap_list,ldap_mod_add,ldap_mod_del,ldap_mod_replace,%
    ldap_next_attribute,ldap_next_entry,ldap_next_reference,%
    ldap_parse_result,ldap_read,ldap_rename,ldap_search,%
    ldap_set_rebind_proc,ldap_sort,ldap_start_tls,ldap_t61_to_8859,%
    leak,levenshtein,link,linkinfo,list,localeconv,localtime,log,%
    log1p,long2ip,lstat,ltrim,mail,%
    mailparse_msg_create,mailparse_msg_extract_part_file,%
    mailparse_msg_free,mailparse_msg_get_part_data,%
    mailparse_msg_get_structure,mailparse_msg_parse_file,%
    mailparse_rfc822_parse_addresses,mailparse_stream_encode,%
    max,mb_convert_encoding,mb_convert_kana,mb_convert_variables,%
    mb_decode_numericentity,mb_detect_encoding,mb_detect_order,%
    mb_encode_numericentity,mb_http_input,mb_http_output,%
    mb_language,mb_output_handler,mb_parse_str,%
    mb_send_mail,mb_strcut,mb_strimwidth,mb_strlen,mb_strpos,%
    mb_strwidth,mb_substitute_character,mb_substr,mcal_append_event,%
    mcal_create_calendar,mcal_date_compare,mcal_date_valid,%
    mcal_day_of_year,mcal_days_in_month,mcal_delete_calendar,%
    mcal_event_add_attribute,mcal_event_init,mcal_event_set_alarm,%
    mcal_event_set_class,mcal_event_set_description,%
    mcal_event_set_recur_daily,mcal_event_set_recur_monthly_mday,%
    mcal_event_set_recur_none,mcal_event_set_recur_weekly,%
    mcal_event_set_start,mcal_event_set_title,mcal_expunge,%
    mcal_fetch_event,mcal_is_leap_year,mcal_list_alarms,%
    mcal_next_recurrence,mcal_open,mcal_popen,mcal_rename_calendar,%
    mcal_snooze,mcal_store_event,mcal_time_valid,mcal_week_of_year,%
    mcrypt_cfb,mcrypt_create_iv,mcrypt_decrypt,mcrypt_ecb,%
    mcrypt_enc_get_block_size,mcrypt_enc_get_iv_size,%
    mcrypt_enc_get_modes_name,mcrypt_enc_get_supported_key_sizes,%
    mcrypt_enc_is_block_algorithm,mcrypt_enc_is_block_mode,%
    mcrypt_encrypt,mcrypt_generic_deinit,mcrypt_generic_end,%
    mcrypt_generic,mcrypt_get_block_size,mcrypt_get_cipher_name,%
    mcrypt_get_key_size,mcrypt_list_algorithms,mcrypt_list_modes,%
    mcrypt_module_get_algo_block_size,%
    mcrypt_module_get_supported_key_sizes,%
    mcrypt_module_is_block_algorithm,mcrypt_module_is_block_mode,%
    mcrypt_module_self_test,mcrypt_ofb,md5_file,md5,%
    metaphone,method_exists,mhash_count,mhash_get_block_size,%
    mhash_keygen_s2k,mhash,microtime,min,ming_setcubicthreshold,%
    ming_useswfversion,mkdir,mktime,move_uploaded_file,%
    msession_count,msession_create,msession_destroy,%
    msession_find,msession_get_array,msession_get,msession_getdata,%
    msession_list,msession_listvar,msession_lock,msession_plugin,%
    msession_set_array,msession_set,msession_setdata,%
    msession_uniq,msession_unlock,msql_affected_rows,msql_close,%
    msql_create_db,msql_createdb,msql_data_seek,msql_dbname,%
    msql_dropdb,msql_error,msql_fetch_array,msql_fetch_field,%
    msql_fetch_row,msql_field_seek,msql_fieldflags,msql_fieldlen,%
    msql_fieldtable,msql_fieldtype,msql_free_result,msql_freeresult,%
    msql_list_fields,msql_list_tables,msql_listdbs,msql_listfields,%
    msql_num_fields,msql_num_rows,msql_numfields,msql_numrows,%
    msql_query,msql_regcase,msql_result,msql_select_db,%
    msql_tablename,msql,mssql_bind,mssql_close,mssql_connect,%
    mssql_execute,mssql_fetch_array,mssql_fetch_assoc,%
    mssql_fetch_field,mssql_fetch_object,mssql_fetch_row,%
    mssql_field_name,mssql_field_seek,mssql_field_type,%
    mssql_get_last_message,mssql_guid_string,mssql_init,%
    mssql_min_message_severity,mssql_next_result,mssql_num_fields,%
    mssql_pconnect,mssql_query,mssql_result,mssql_rows_affected,%
    mt_getrandmax,mt_rand,mt_srand,muscat_close,muscat_get,%
    muscat_setup_net,muscat_setup,mysql_affected_rows,%
    mysql_close,mysql_connect,mysql_create_db,mysql_data_seek,%
    mysql_db_query,mysql_drop_db,mysql_errno,mysql_error,%
    mysql_fetch_array,mysql_fetch_assoc,mysql_fetch_field,%
    mysql_fetch_object,mysql_fetch_row,mysql_field_flags,%
    mysql_field_name,mysql_field_seek,mysql_field_table,%
    mysql_free_result,mysql_get_client_info,mysql_get_host_info,%
    mysql_get_server_info,mysql_insert_id,mysql_list_dbs,%
    mysql_list_tables,mysql_num_fields,mysql_num_rows,%
    mysql_query,mysql_result,mysql_select_db,mysql_tablename,%
    natcasesort,natsort,ncurses_addch,ncurses_addchnstr,%
    ncurses_addnstr,ncurses_addstr,ncurses_assume_default_colors,%
    ncurses_attron,ncurses_attrset,ncurses_baudrate,ncurses_beep,%
    ncurses_bkgdset,ncurses_border,ncurses_can_change_color,%
    ncurses_clear,ncurses_clrtobot,ncurses_clrtoeol,%
    ncurses_curs_set,ncurses_def_prog_mode,ncurses_def_shell_mode,%
    ncurses_delay_output,ncurses_delch,ncurses_deleteln,%
    ncurses_doupdate,ncurses_echo,ncurses_echochar,ncurses_end,%
    ncurses_erasechar,ncurses_filter,ncurses_flash,ncurses_flushinp,%
    ncurses_halfdelay,ncurses_has_colors,ncurses_has_ic,%
    ncurses_has_key,ncurses_hline,ncurses_inch,ncurses_init_color,%
    ncurses_init,ncurses_insch,ncurses_insdelln,ncurses_insertln,%
    ncurses_instr,ncurses_isendwin,ncurses_keyok,ncurses_killchar,%
    ncurses_move,ncurses_mvaddch,ncurses_mvaddchnstr,%
    ncurses_mvaddnstr,ncurses_mvaddstr,ncurses_mvcur,%
    ncurses_mvgetch,ncurses_mvhline,ncurses_mvinch,ncurses_mvvline,%
    ncurses_napms,ncurses_newwin,ncurses_nl,ncurses_nocbreak,%
    ncurses_nonl,ncurses_noqiflush,ncurses_noraw,ncurses_putp,%
    ncurses_raw,ncurses_refresh,ncurses_resetty,ncurses_savetty,%
    ncurses_scr_init,ncurses_scr_restore,ncurses_scr_set,%
    ncurses_slk_attr,ncurses_slk_attroff,ncurses_slk_attron,%
    ncurses_slk_clear,ncurses_slk_color,ncurses_slk_init,%
    ncurses_slk_refresh,ncurses_slk_restore,ncurses_slk_touch,%
    ncurses_standout,ncurses_start_color,ncurses_termattrs,%
    ncurses_typeahead,ncurses_ungetch,ncurses_use_default_colors,%
    ncurses_use_extended_names,ncurses_vidattr,ncurses_vline,%
    next,ngettext,nl_langinfo,nl2br,notes_body,notes_copy_db,%
    notes_create_note,notes_drop_db,notes_find_note,%
    notes_list_msgs,notes_mark_read,notes_mark_unread,%
    notes_search,notes_unread,notes_version,number_format,ob_clean,%
    ob_end_flush,ob_flush,ob_get_contents,ob_get_length,%
    ob_gzhandler,ob_iconv_handler,ob_implicit_flush,ob_start,%
    ocicancel,ocicollappend,ocicollassign,ocicollassignelem,%
    ocicollmax,ocicollsize,ocicolltrim,ocicolumnisnull,%
    ocicolumnprecision,ocicolumnscale,ocicolumnsize,ocicolumntype,%
    ocicommit,ocidefinebyname,ocierror,ociexecute,ocifetch,%
    ocifetchstatement,ocifreecollection,ocifreecursor,ocifreedesc,%
    ociinternaldebug,ociloadlob,ocilogoff,ocilogon,ocinewcollection,%
    ocinewdescriptor,ocinlogon,ocinumcols,ociparse,ociplogon,%
    ocirollback,ocirowcount,ocisavelob,ocisavelobfile,%
    ocisetprefetch,ocistatementtype,ociwritelobtofile,octdec,%
    odbc_binmode,odbc_close_all,odbc_close,odbc_columnprivileges,%
    odbc_commit,odbc_connect,odbc_cursor,odbc_do,odbc_error,%
    odbc_exec,odbc_execute,odbc_fetch_array,odbc_fetch_into,%
    odbc_fetch_row,odbc_field_len,odbc_field_name,odbc_field_num,%
    odbc_field_scale,odbc_field_type,odbc_foreignkeys,%
    odbc_gettypeinfo,odbc_longreadlen,odbc_next_result,%
    odbc_num_rows,odbc_pconnect,odbc_prepare,odbc_primarykeys,%
    odbc_procedures,odbc_result_all,odbc_result,odbc_rollback,%
    odbc_specialcolumns,odbc_statistics,odbc_tableprivileges,%
    opendir,openlog,openssl_csr_export_to_file,openssl_csr_export,%
    openssl_csr_sign,openssl_error_string,openssl_free_key,%
    openssl_get_publickey,openssl_open,openssl_pkcs7_decrypt,%
    openssl_pkcs7_sign,openssl_pkcs7_verify,%
    openssl_pkey_export,openssl_pkey_new,openssl_private_decrypt,%
    openssl_public_decrypt,openssl_public_encrypt,openssl_seal,%
    openssl_verify,openssl_x509_check_private_key,%
    openssl_x509_export_to_file,openssl_x509_export,%
    openssl_x509_parse,openssl_x509_read,ora_bind,ora_close,%
    ora_columnsize,ora_columntype,ora_commit,ora_commitoff,%
    ora_do,ora_error,ora_errorcode,ora_exec,ora_fetch_into,%
    ora_getcolumn,ora_logoff,ora_logon,ora_numcols,ora_numrows,%
    ora_parse,ora_plogon,ora_rollback,ord,overload,ovrimos_close,%
    ovrimos_connect,ovrimos_cursor,ovrimos_exec,ovrimos_execute,%
    ovrimos_fetch_row,ovrimos_field_len,ovrimos_field_name,%
    ovrimos_field_type,ovrimos_free_result,ovrimos_longreadlen,%
    ovrimos_num_rows,ovrimos_prepare,ovrimos_result_all,%
    ovrimos_rollback,pack,parse_ini_file,parse_str,parse_url,%
    pathinfo,pclose,pdf_add_annotation,pdf_add_bookmark,%
    pdf_add_locallink,pdf_add_note,pdf_add_outline,pdf_add_pdflink,%
    pdf_add_weblink,pdf_arc,pdf_arcn,pdf_attach_file,pdf_begin_page,%
    pdf_begin_template,pdf_circle,pdf_clip,pdf_close_image,%
    pdf_close_pdi,pdf_close,pdf_closepath_fill_stroke,%
    pdf_closepath,pdf_concat,pdf_continue_text,pdf_curveto,%
    pdf_end_page,pdf_end_pattern,pdf_end_template,pdf_endpath,%
    pdf_fill,pdf_findfont,pdf_get_buffer,pdf_get_font,%
    pdf_get_fontsize,pdf_get_image_height,pdf_get_image_width,%
    pdf_get_minorversion,pdf_get_parameter,pdf_get_pdi_parameter,%
    pdf_get_value,pdf_initgraphics,pdf_lineto,pdf_makespotcolor,%
    pdf_new,pdf_open_ccitt,pdf_open_file,pdf_open_gif,%
    pdf_open_image,pdf_open_jpeg,pdf_open_memory_image,%
    pdf_open_pdi,pdf_open_png,pdf_open_tiff,pdf_open,%
    pdf_place_pdi_page,pdf_rect,pdf_restore,pdf_rotate,pdf_save,%
    pdf_set_border_color,pdf_set_border_dash,pdf_set_border_style,%
    pdf_set_duration,pdf_set_font,pdf_set_horiz_scaling,%
    pdf_set_info_creator,pdf_set_info_keywords,pdf_set_info_subject,%
    pdf_set_info,pdf_set_leading,pdf_set_parameter,pdf_set_text_pos,%
    pdf_set_text_rise,pdf_set_transition,pdf_set_value,%
    pdf_setcolor,pdf_setdash,pdf_setflat,pdf_setfont,%
    pdf_setgray_stroke,pdf_setgray,pdf_setlinecap,pdf_setlinejoin,%
    pdf_setmatrix,pdf_setmiterlimit,pdf_setpolydash,%
    pdf_setrgbcolor_stroke,pdf_setrgbcolor,pdf_show_boxed,%
    pdf_show,pdf_skew,pdf_stringwidth,pdf_stroke,pdf_translate,%
    pfpro_init,pfpro_process_raw,pfpro_process,pfpro_version,%
    pg_cancel_query,pg_client_encoding,pg_close,pg_cmdtuples,%
    pg_connection_busy,pg_connection_reset,pg_connection_status,%
    pg_copy_to,pg_dbname,pg_end_copy,pg_errormessage,%
    pg_escape_string,pg_exec,pg_fetch_array,pg_fetch_object,%
    pg_fieldisnull,pg_fieldname,pg_fieldnum,pg_fieldprtlen,%
    pg_fieldtype,pg_freeresult,pg_get_result,pg_getlastoid,pg_host,%
    pg_last_notice,pg_lo_close,pg_lo_seek,pg_lo_tell,pg_loclose,%
    pg_loexport,pg_loimport,pg_loopen,pg_loread,pg_loreadall,%
    pg_lowrite,pg_numfields,pg_numrows,pg_options,pg_pconnect,%
    pg_put_line,pg_request_cancel,pg_result_error,pg_result_status,%
    pg_send_query,pg_set_client_encoding,pg_trace,pg_tty,pg_untrace,%
    php_sapi_name,php_uname,phpcredits,phpinfo,<version,pi,%
    popen,pos,posix_ctermid,posix_getcwd,posix_getegid,%
    posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,%
    posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,%
    posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,%
    posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,%
    posix_setpgid,posix_setsid,posix_setuid,posix_times,%
    posix_uname,pow,preg_grep,preg_match_all,preg_match,preg_quote,%
    preg_replace,preg_split,prev,print_r,print,printer_abort,%
    printer_create_brush,printer_create_dc,printer_create_font,%
    printer_delete_brush,printer_delete_dc,printer_delete_font,%
    printer_draw_bmp,printer_draw_chord,printer_draw_elipse,%
    printer_draw_pie,printer_draw_rectangle,printer_draw_roundrect,%
    printer_end_doc,printer_end_page,printer_get_option,%
    printer_logical_fontheight,printer_open,printer_select_brush,%
    printer_select_pen,printer_set_option,printer_start_doc,%
    printer_write,printf,pspell_add_to_personal,%
    pspell_check,pspell_clear_session,pspell_config_create,%
    pspell_config_mode,pspell_config_personal,pspell_config_repl,%
    pspell_config_save_repl,pspell_new_config,pspell_new_personal,%
    pspell_save_wordlist,pspell_store_replacement,pspell_suggest,%
    qdom_error,qdom_tree,quoted_printable_decode,quotemeta,rad2deg,%
    range,rawurldecode,rawurlencode,read_exif_data,readdir,readfile,%
    readline_add_history,readline_clear_history,%
    readline_info,readline_list_history,readline_read_history,%
    readline,readlink,realpath,recode_file,recode_string,recode,%
    register_tick_function,rename,require_once,require,reset,%
    rewind,rewinddir,rmdir,round,rsort,rtrim,%
    satellite_exception_id,satellite_exception_value,%
    satellite_load_idl,satellite_object_to_string,sem_acquire,%
    sem_release,sem_remove,serialize,sesam_affected_rows,%
    sesam_connect,sesam_diagnostic,sesam_disconnect,sesam_errormsg,%
    sesam_fetch_array,sesam_fetch_result,sesam_fetch_row,%
    sesam_field_name,sesam_free_result,sesam_num_fields,sesam_query,%
    sesam_seek_row,sesam_settransaction,session_cache_expire,%
    session_decode,session_destroy,session_encode,%
    session_id,session_is_registered,session_module_name,%
    session_register,session_save_path,session_set_cookie_params,%
    session_start,session_unregister,session_unset,%
    set_error_handler,set_file_buffer,set_magic_quotes_runtime,%
    setcookie,setlocale,settype,shell_exec,shm_attach,shm_detach,%
    shm_put_var,shm_remove_var,shm_remove,shmop_close,shmop_delete,%
    shmop_read,shmop_size,shmop_write,show_source,shuffle,%
    sin,sinh,sizeof,sleep,snmp_get_quick_print,snmp_set_quick_print,%
    snmprealwalk,snmpset,snmpwalk,snmpwalkoid,socket_accept,%
    socket_close,socket_connect,socket_create_listen,%
    socket_create,socket_fd_alloc,socket_fd_clear,socket_fd_free,%
    socket_fd_set,socket_fd_zero,socket_get_status,socket_getopt,%
    socket_getsockname,socket_iovec_add,socket_iovec_alloc,%
    socket_iovec_fetch,socket_iovec_free,socket_iovec_set,%
    socket_listen,socket_read,socket_readv,socket_recv,%
    socket_recvmsg,socket_select,socket_send,socket_sendmsg,%
    socket_set_blocking,socket_set_nonblock,socket_set_timeout,%
    socket_shutdown,socket_strerror,socket_write,socket_writev,sort,%
    split,spliti,sprintf,sql_regcase,sqrt,srand,sscanf,stat,str_pad,%
    str_replace,str_rot13,strcasecmp,strchr,strcmp,strcoll,strcspn,%
    strip_tags,stripcslashes,stripslashes,stristr,strlen,%
    strnatcmp,strncasecmp,strncmp,strpos,strrchr,strrev,strrpos,%
    strstr,strtok,strtolower,strtotime,strtoupper,strtr,strval,%
    substr_replace,substr,swf_actiongeturl,swf_actiongotoframe,%
    swf_actionnextframe,swf_actionplay,swf_actionprevframe,%
    swf_actionstop,swf_actiontogglequality,swf_actionwaitforframe,%
    swf_addcolor,swf_closefile,swf_definebitmap,swf_definefont,%
    swf_definepoly,swf_definerect,swf_definetext,swf_endbutton,%
    swf_endshape,swf_endsymbol,swf_fontsize,swf_fontslant,%
    swf_getbitmapinfo,swf_getfontinfo,swf_getframe,swf_labelframe,%
    swf_modifyobject,swf_mulcolor,swf_nextid,swf_oncondition,%
    swf_ortho,swf_ortho2,swf_perspective,swf_placeobject,%
    swf_popmatrix,swf_posround,swf_pushmatrix,swf_removeobject,%
    swf_scale,swf_setfont,swf_setframe,swf_shapearc,%
    swf_shapecurveto3,swf_shapefillbitmapclip,%
    swf_shapefilloff,swf_shapefillsolid,swf_shapelinesolid,%
    swf_shapemoveto,swf_showframe,swf_startbutton,swf_startdoaction,%
    swf_startsymbol,swf_textwidth,swf_translate,swf_viewport,%
    sybase_close,sybase_connect,sybase_data_seek,sybase_fetch_array,%
    sybase_fetch_object,sybase_fetch_row,sybase_field_seek,%
    sybase_get_last_message,sybase_min_client_severity,%
    sybase_min_message_severity,sybase_min_server_severity,%
    sybase_num_rows,sybase_pconnect,sybase_query,sybase_result,%
    symlink,syslog,system,tan,tanh,tempnam,textdomain,time,tmpfile,%
    trigger_error,trim,uasort,ucfirst,ucwords,udm_add_search_limit,%
    udm_api_version,udm_cat_list,udm_cat_path,udm_check_charset,%
    udm_clear_search_limits,udm_close_stored,udm_crc32,udm_errno,%
    udm_find,udm_free_agent,udm_free_ispell_data,udm_free_res,%
    udm_get_res_field,udm_get_res_param,udm_load_ispell_data,%
    udm_set_agent_param,uksort,umask,uniqid,unixtojd,unlink,unpack,%
    unserialize,unset,urldecode,urlencode,user_error,usleep,usort,%
    utf8_encode,var_dump,var_export,version_compare,virtual,%
    vpopmail_add_alias_domain,vpopmail_add_domain_ex,%
    vpopmail_add_user,vpopmail_alias_add,vpopmail_alias_del_domain,%
    vpopmail_alias_get_all,vpopmail_alias_get,vpopmail_auth_user,%
    vpopmail_del_domain,vpopmail_del_user,vpopmail_error,%
    vpopmail_set_user_quota,vprintf,vsprintf,w32api_deftype,%
    w32api_invoke_function,w32api_register_function,%
    wddx_add_vars,wddx_deserialize,wddx_packet_end,%
    wddx_serialize_value,wddx_serialize_vars,wordwrap,%
    xml_get_current_byte_index,xml_get_current_column_number,%
    xml_get_error_code,xml_parse_into_struct,xml_parse,%
    xml_parser_create,xml_parser_free,xml_parser_get_option,%
    xml_set_character_data_handler,xml_set_default_handler,%
    xml_set_end_namespace_decl_handler,%
    xml_set_notation_decl_handler,xml_set_object,%
    xml_set_start_namespace_decl_handler,%
    xmldoc,xmldocfile,xmlrpc_decode_request,xmlrpc_decode,%
    xmlrpc_encode,xmlrpc_get_type,xmlrpc_parse_method_descriptions,%
    xmlrpc_server_call_method,xmlrpc_server_create,%
    xmlrpc_server_register_introspection_callback,%
    xmlrpc_set_type,xmltree,xpath_eval_expression,xpath_eval,%
    xptr_eval,xptr_new_context,xslt_create,xslt_errno,xslt_error,%
    xslt_process,xslt_set_base,xslt_set_encoding,%
    xslt_set_log,xslt_set_sax_handler,xslt_set_sax_handlers,%
    xslt_set_scheme_handlers,yaz_addinfo,yaz_ccl_conf,yaz_ccl_parse,%
    yaz_connect,yaz_database,yaz_element,yaz_errno,yaz_error,%
    yaz_itemorder,yaz_present,yaz_range,yaz_record,yaz_scan_result,%
    yaz_search,yaz_sort,yaz_syntax,yaz_wait,yp_all,yp_cat,%
    yp_errno,yp_first,yp_get_default_domain,yp_master,yp_match,%
    yp_order,zend_logo_guid,zend_version,zip_close,zip_entry_close,%
    zip_entry_compressionmethod,zip_entry_filesize,zip_entry_name,%
    zip_entry_read,zip_open,zip_read},%
   sensitive,%
   morecomment=[l]\#,%
   morecomment=[l]//,%
   morecomment=[s]{/*}{*/},%
   morestring=[b]",%
   morestring=[b]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \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}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{PL/I}%
  {morekeywords={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,%
   morecomment=[s]{/*}{*/},%
   morestring=[d]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \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}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% POV definition (c) 1999 Berthold H\"ollmann
%%                         <bhoel@starship.python.net>
%%
\lst@definelanguage{POV}%
  {morekeywords={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},%
   moredirectives={break,case,debug,declare,default,else,end,fclose,%
      fopen,local,macro,read,render,statistics,switch,undef,version,%
      warning,write},%
   sensitive,%
   morecomment=[l]//,%
   morecomment=[s]{/*}{*/},%
   morestring=[d]",%
  }[keywords,directives,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \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}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Prolog definition (c) 1997 Dominique de Waleffe <ddw@miscrit.be>
%%
\lst@definelanguage{Prolog}%
  {morekeywords={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,%
   morecomment=[l]\%,%
   morecomment=[s]{/*}{*/},%
   morestring=[bd]",%
   morestring=[bd]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \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}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Python definition (c) 1998 Michael Weber
%%                            <mweber@informatik.hu-berlin.de>
%%
\lst@definelanguage{Python}%
  {morekeywords={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,%
   morecomment=[l]\#,%
   morecomment=[s]{'''}{'''},% used for documentation text
   morecomment=[s]{"""}{"""},% added by Philipp Matthias Hahn
   morestring=[b]',% 
   morestring=[b]"% 
  }%
%    \end{macrocode}
% \lsthelper{Philipp Matthias Hahn}{pmhahn@titan.lahn.de}{2002/04/18}{}
% added the third comment. \lsthelper{eRreuR}{rogspr@newdeal.ch}{2002/05/28}
% {probl\`eme avec "listings" et le langage Python} found a bug using Python
% and \lsthelper{Nicolas Markey}{markey@lsv.ens-cachan.fr}{2002/05/29}
% {listings and Python} informed me about the corresponding thread on
% \texttt{fr.comp.text.tex} and provided the fix---adding \texttt{[b]} to
% both \texttt{morestring} declarations.
%    \begin{macrocode}
%</lang1>
%    \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}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% SHELXL definition (c) 1999 Aidan Philip Heerdegen
%%                            <Aidan.Heerdegen@anu.edu.au>
%%
\lst@definelanguage{SHELXL}%
  {morekeywords={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
   morecomment=[l]{! },%
  }%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \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}
%<*lang3>
%    \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}%
  {morekeywords={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},%
   morestring=[d]",%
   morestring=[d]'%
  }[keywords,keywordcomments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{SQL}
%
% Data come from \lstthanks{Christian~Haul}
% {haul@dvs1.informatik.tu-darmstadt.de}{1998/01/09}.
% \lstthanks{Neil Conway}{nconway@klamath.dyndns.org}{2002/07/06} added some
% keywords.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% SQL definition (c) 1998 Christian Haul
%%                         <haul@dvs1.informatik.tu-darmstadt.de>
%%            and (c) 2002 Neil Conway <nconway@klamath.dyndns.org>
%%
\lst@definelanguage{SQL}%
  {morekeywords={ABSOLUTE,ACTION,ADD,ALLOCATE,ALTER,ARE,AS,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,INSERT,INT,INTO,INTEGER,INTERSECT,INTERVAL,%
      ISOLATION,JOIN,KEY,LAST,LEADING,LEFT,LEVEL,LIMIT,LOCAL,LOWER,%
      MATCH,MINUTE,MONTH,NAMES,NATIONAL,NATURAL,NCHAR,NEXT,NO,NOT,NULL,%
      NULLIF,OCTET_LENGTH,ON,ONLY,ORDER,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,VALUES,VARCHAR,%
      VARGRAPHIC,VARYING,WHEN,WHERE,WRITE,YEAR,ZONE},%
   sensitive,%
   morecomment=[l]--,%
   morecomment=[s]{/*}{*/},%
   morestring=[d]',%
   morestring=[d]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
%
%
% \subsection{Tcl/Tk}
%
% Tcl/Tk is a very dynamic language. A statical analysis might not be
% adequate. Nevertheless the following definitions produce the desired
% result for my programs with a minimum of ``misses''.
%
% Data come from
% \begin{itemize}
% \item
%		\textsc{Welch, Brent B.}:
%		\textbf{Practical Programming in Tcl and Tk};
%		{\copyright} 1997 Prentice Hall, Inc.;
%		ISBN 0-13-616830-2.
% \item
%		\textsc{Ousterhout, John K.}:
%		\textbf{Tcl and the Tk Toolkit};
%		{\copyright} 1997 Addison-Wesley Publishing Company;
%		ISBN 0-201-6337-X.
% \end{itemize}
% \lstthanks{Gerd~Neugebauer}{gerd.neugebauer@gmx.de}{2000/09/16} added support
% for Tcl/Tk.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Tcl/Tk definition (c) Gerd Neugebauer <gerd.neugebauer@gmx.de>
%%
\lst@definelanguage[tk]{tcl}[]{tcl}%
  {morekeywords={activate,add,separator,radiobutton,checkbutton,%
      command,cascade,all,bell,bind,bindtags,button,canvas,canvasx,%
      canvasy,cascade,cget,checkbutton,config,configu,configur,%
      configure,clipboard,create,arc,bitmap,image,line,oval,polygon,%
      rectangle,text,textwindow,curselection,delete,destroy,end,entry,%
      entrycget,event,focus,font,actual,families,measure,metrics,names,%
      frame,get,grab,current,release,status,grid,columnconfigure,%
      rowconfigure,image,image,create,bitmap,photo,delete,height,types,%
      widt,names,index,insert,invoke,itemconfigure,label,listbox,lower,%
      menu,menubutton,message,move,option,add,clear,get,readfile,pack,%
      photo,place,radiobutton,raise,scale,scroll,scrollbar,search,see,%
      selection,send,stdin,stdout,stderr,tag,bind,text,tk,tkerror,%
      tkwait,window,variable,visibility,toplevel,unknown,update,winfo,%
      class,exists,ismapped,parent,reqwidth,reqheight,rootx,rooty,%
      width,height,wm,aspect,client,command,deiconify,focusmodel,frame,%
      geometry,group,iconbitmap,iconify,iconmask,iconname,iconposition,%
      iconwindow,maxsize,minsize,overrideredirect,positionfrom,%
      protocol,sizefrom,state,title,transient,withdraw,xview,yview,%
      yposition,%
      -accelerator,-activebackground,-activeborderwidth,%
      -activeforeground,-after,-anchor,-arrow,-arrowshape,-aspect,%
      -async,-background,-before,-bg,-bigincrement,-bitmap,-bordermode,%
      -borderwidth,-button,-capstyle,-channel,-class,-closeenough,%
      -colormap,-column,-columnspan,-command,-confine,-container,%
      -count,-cursor,-data,-default,-detail,-digits,-direction,%
      -displayof,-disableforeground,-elementborderwidth,-expand,%
      -exportselection,-extend,-family,-fg,-file,-fill,-focus,-font,%
      -fontmap,-foreground,-format,-from,-gamma,-global,-height,%
      -highlightbackground,-highlightcolor,-highlightthickness,-icon,%
      -image,-in,-insertbackground,-insertborderwidth,-insertofftime,%
      -insertontime,-imsertwidth,-ipadx,-ipady,-joinstyle,-jump,%
      -justify,-keycode,-keysym,-label,-lastfor,-length,-maskdata,%
      -maskfile,-menu,-message,-mode,-offvalue,-onvalue,-orient,%
      -outlien,-outlinestipple,-overstrike,-override,-padx,-pady,%
      -pageanchor,-pageheight,-pagewidth,-pagey,-pagey,-palette,%
      -parent,-place,-postcommand,-relheight,-relief,-relwidth,-relx,%
      -rely,-repeatdelay,-repeatinterval,-resolution,-root,-rootx,%
      -rooty,-rotate,-row,-rowspan,-screen,-selectcolor,-selectimage,%
      -sendevent,-serial,-setgrid,-showvalue,-shrink,-side,-size,%
      -slant,-sliderlength,-sliderrelief,-smooth,-splinesteps,-state,%
      -sticky,-stipple,-style,-subsample,-subwindow,-tags,-takefocus,%
      -tearoff,-tearoffcommand,-text,-textvariable,-tickinterval,-time,%
      -title,-to,-troughcolor,-type,-underline,-use,-value,-variable,%
      -visual,-width,-wrap,-wraplength,-x,-xscrollcommand,-y,%
      -bgstipple,-fgstipple,-lmargin1,-lmargin2,-rmargin,-spacing1,%
      -spacing2,-spacing3,-tabs,-yscrollcommand,-zoom,%
      activate,add,addtag,bbox,cget,clone,configure,coords,%
      curselection,debug,delete,delta,deselect,dlineinfo,dtag,dump,%
      entrycget,entryconfigure,find,flash,fraction,get,gettags,handle,%
      icursor,identify,index,insert,invoke,itemcget,itemconfigure,mark,%
      moveto,own,post,postcascade,postscript,put,redither,ranges,%
      scale,select,show,tag,type,unpost,xscrollcommand,xview,%
      yscrollcommand,yview,yposition}%
  }%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[]{tcl}%
  {alsoletter={.:,*=&-},%
   morekeywords={after,append,array,names,exists,anymore,donesearch,%
      get,nextelement,set,size,startsearch,auto_mkindex,binary,break,%
      case,catch,cd,clock,close,concat,console,continue,default,else,%
      elseif,eof,error,eval,exec,-keepnewline,exit,expr,fblocked,%
      fconfigure,fcopy,file,atime,dirname,executable,exists,extension,%
      isdirectory,isfile,join,lstat,mtime,owned,readable,readlink,%
      rootname,size,stat,tail,type,writable,-permissions,-group,-owner,%
      -archive,-hidden,-readonly,-system,-creator,-type,-force,%
      fileevent,flush,for,foreach,format,gets,glob,global,history,if,%
      incr,info,argsbody,cmdcount,commands,complete,default,exists,%
      globals,level,library,locals,patchlevel,procs,script,tclversion,%
      vars,interp,join,lappend,lindex,linsert,list,llength,lrange,%
      lreplace,lsearch,-exact,-regexp,-glob,lsort,-ascii,-integer,%
      -real,-dictionary,-increasing,-decreasing,-index,-command,load,%
      namespace,open,package,forget,ifneeded,provide,require,unknown,%
      vcompare,versions,vsatisfies,pid,proc,puts,-nonewline,pwd,read,%
      regexp,-indices,regsub,-all,-nocaserename,return,scan,seek,set,%
      socket,source,split,string,compare,first,index,last,length,match,%
      range,tolower,toupper,trim,trimleft,trimright,subst,switch,tell,%
      time,trace,variable,vdelete,vinfo,unknown,unset,uplevel,upvar,%
      vwait,while,acos,asin,atan,atan2,ceil,cos,cosh,exp,floor,fmod,%
      hypot,log,log10,pow,sin,sinh,sqrt,tan,tanh,abs,double,int,round%
      },%
   morestring=[d]",%
   MoreSelectCharTable=%
      \lst@CArgX\#\relax\lst@DefDelimB{}{}%
          {\ifx\lst@lastother\lstum@backslash
               \expandafter\@gobblethree
           \fi}%
          \lst@BeginComment\lst@commentmode
          {{\lst@commentstyle}\lst@Lmodetrue}%
  }[keywords,comments,strings]%
%    \end{macrocode}
% And after receiving a bug report from \lsthelper{Vitaly A. Repin}
% {vitaly@radio.hop.stu.neva.ru}{2002/04/08}{undefined control sequence
% \lst@CommentB} I converted the version 0.21 contents of |MoreSelectCharTable|
% to version 1.0.
%    \begin{macrocode}
%</lang2>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Statistical languages}
%
% These languages have been added by \lstthanks{Winfried~Theis}
% {theis@statistik.uni-dortmund.de}{2000/09/05}. \lstthanks{Robert~Denham}
% {Robert.Denham@dnr.qld.gov.au}{2001/05/03} contributed the additional
% string delimiter |'|.
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{S}[]{R}{}
\lst@definelanguage[PLUS]{S}[]{R}{}
\lst@definelanguage{R}%
  {keywords={abbreviate,abline,abs,acos,acosh,action,add1,add,%
      aggregate,alias,Alias,alist,all,anova,any,aov,aperm,append,apply,%
      approx,approxfun,apropos,Arg,args,array,arrows,as,asin,asinh,%
      atan,atan2,atanh,attach,attr,attributes,autoload,autoloader,ave,%
      axis,backsolve,barplot,basename,besselI,besselJ,besselK,besselY,%
      beta,binomial,body,box,boxplot,break,browser,bug,builtins,bxp,by,%
      c,C,call,Call,case,cat,category,cbind,ceiling,character,char,%
      charmatch,check,chol,chol2inv,choose,chull,class,close,cm,codes,%
      coef,coefficients,co,col,colnames,colors,colours,commandArgs,%
      comment,complete,complex,conflicts,Conj,contents,contour,%
      contrasts,contr,control,helmert,contrib,convolve,cooks,coords,%
      distance,coplot,cor,cos,cosh,count,fields,cov,covratio,wt,CRAN,%
      create,crossprod,cummax,cummin,cumprod,cumsum,curve,cut,cycle,D,%
      data,dataentry,date,dbeta,dbinom,dcauchy,dchisq,de,debug,%
      debugger,Defunct,default,delay,delete,deltat,demo,de,density,%
      deparse,dependencies,Deprecated,deriv,description,detach,%
      dev2bitmap,dev,cur,deviance,off,prev,,dexp,df,dfbetas,dffits,%
      dgamma,dgeom,dget,dhyper,diag,diff,digamma,dim,dimnames,dir,%
      dirname,dlnorm,dlogis,dnbinom,dnchisq,dnorm,do,dotplot,double,%
      download,dpois,dput,drop,drop1,dsignrank,dt,dummy,dump,dunif,%
      duplicated,dweibull,dwilcox,dyn,edit,eff,effects,eigen,else,%
      emacs,end,environment,env,erase,eval,equal,evalq,example,exists,%
      exit,exp,expand,expression,External,extract,extractAIC,factor,%
      fail,family,fft,file,filled,find,fitted,fivenum,fix,floor,for,%
      For,formals,format,formatC,formula,Fortran,forwardsolve,frame,%
      frequency,ftable,ftable2table,function,gamma,Gamma,gammaCody,%
      gaussian,gc,gcinfo,gctorture,get,getenv,geterrmessage,getOption,%
      getwd,gl,glm,globalenv,gnome,GNOME,graphics,gray,grep,grey,grid,%
      gsub,hasTsp,hat,heat,help,hist,home,hsv,httpclient,I,identify,if,%
      ifelse,Im,image,\%in\%,index,influence,measures,inherits,install,%
      installed,integer,interaction,interactive,Internal,intersect,%
      inverse,invisible,IQR,is,jitter,kappa,kronecker,labels,lapply,%
      layout,lbeta,lchoose,lcm,legend,length,levels,lgamma,library,%
      licence,license,lines,list,lm,load,local,locator,log,log10,log1p,%
      log2,logical,loglin,lower,lowess,ls,lsfit,lsf,ls,machine,Machine,%
      mad,mahalanobis,make,link,margin,match,Math,matlines,mat,matplot,%
      matpoints,matrix,max,mean,median,memory,menu,merge,methods,min,%
      missing,Mod,mode,model,response,mosaicplot,mtext,mvfft,na,nan,%
      names,omit,nargs,nchar,ncol,NCOL,new,next,NextMethod,nextn,%
      nlevels,nlm,noquote,NotYetImplemented,NotYetUsed,nrow,NROW,null,%
      numeric,\%o\%,objects,offset,old,on,Ops,optim,optimise,optimize,%
      options,or,order,ordered,outer,package,packages,page,pairlist,%
      pairs,palette,panel,par,parent,parse,paste,path,pbeta,pbinom,%
      pcauchy,pchisq,pentagamma,persp,pexp,pf,pgamma,pgeom,phyper,pico,%
      pictex,piechart,Platform,plnorm,plogis,plot,pmatch,pmax,pmin,%
      pnbinom,pnchisq,pnorm,points,poisson,poly,polygon,polyroot,pos,%
      postscript,power,ppoints,ppois,predict,preplot,pretty,Primitive,%
      print,prmatrix,proc,prod,profile,proj,prompt,prop,provide,%
      psignrank,ps,pt,ptukey,punif,pweibull,pwilcox,q,qbeta,qbinom,%
      qcauchy,qchisq,qexp,qf,qgamma,qgeom,qhyper,qlnorm,qlogis,qnbinom,%
      qnchisq,qnorm,qpois,qqline,qqnorm,qqplot,qr,Q,qty,qy,qsignrank,%
      qt,qtukey,quantile,quasi,quit,qunif,quote,qweibull,qwilcox,%
      rainbow,range,rank,rbeta,rbind,rbinom,rcauchy,rchisq,Re,read,csv,%
      csv2,fwf,readline,socket,real,Recall,rect,reformulate,regexpr,%
      relevel,remove,rep,repeat,replace,replications,report,require,%
      resid,residuals,restart,return,rev,rexp,rf,rgamma,rgb,rgeom,R,%
      rhyper,rle,rlnorm,rlogis,rm,rnbinom,RNGkind,rnorm,round,row,%
      rownames,rowsum,rpois,rsignrank,rstandard,rstudent,rt,rug,runif,%
      rweibull,rwilcox,sample,sapply,save,scale,scan,scan,screen,sd,se,%
      search,searchpaths,segments,seq,sequence,setdiff,setequal,set,%
      setwd,show,sign,signif,sin,single,sinh,sink,solve,sort,source,%
      spline,splinefun,split,sqrt,stars,start,stat,stem,step,stop,%
      storage,strstrheight,stripplot,strsplit,structure,strwidth,sub,%
      subset,substitute,substr,substring,sum,summary,sunflowerplot,svd,%
      sweep,switch,symbol,symbols,symnum,sys,status,system,t,table,%
      tabulate,tan,tanh,tapply,tempfile,terms,terrain,tetragamma,text,%
      time,title,topo,trace,traceback,transform,tri,trigamma,trunc,try,%
      ts,tsp,typeof,unclass,undebug,undoc,union,unique,uniroot,unix,%
      unlink,unlist,unname,untrace,update,upper,url,UseMethod,var,%
      variable,vector,Version,vi,warning,warnings,weighted,weights,%
      which,while,window,write,\%x\%,x11,X11,xedit,xemacs,xinch,xor,%
      xpdrows,xy,xyinch,yinch,zapsmall,zip},%
   otherkeywords={!,!=,~,$,*,\&,\%/\%,\%*\%,\%\%,<-,<<-,_,/},%
   alsoother={._$},%
   sensitive,%
   morecomment=[l]\#,%
   morestring=[d]",%
   morestring=[d]'% 2001 Robert Denham
  }%
%    \end{macrocode}
% \lsthelper{Benjamin Janson}{benjamin.janson@gmx.de}{2002/07/09}
% {prockeywords undefined} got a \texttt{prockeywords undefined} error,
% which was removed by \lsthelper{Heiko Oberdiek}{oberdiek@uni-freiburg.de}
% {2002/07/10}{prockeywords -> procnamekeys}.
%    \begin{macrocode}
\lst@definelanguage{SAS}%
  {procnamekeys={proc},%
   morekeywords={DATA,AND,OR,NOT,EQ,GT,LT,GE,LE,NE,INFILE,INPUT,DO,BY,%
      TO,SIN,COS,OUTPUT,END,PLOT,RUN,LIBNAME,VAR,TITLE,FIRSTOBS,OBS,%
      DELIMITER,DLM,EOF,ABS,DIM,HBOUND,LBOUND,MAX,MIN,MOD,SIGN,SQRT,%
      CEIL,FLOOR,FUZZ,INT,ROUND,TRUNC,DIGAMMA,ERF,ERFC,EXP,GAMMA,%
      LGAMMA,LOG,LOG2,LOG10,ARCOS,ARSIN,ATAN,COSH,SINH,TANH,TAN,%
      POISSON,PROBBETA,PROBBNML,PROBCHI,PROBF,PROBGAM,PROBHYPR,%
      PROBNEGB,PROBNORM,PROBT,BETAINV,CINV,FINV,GAMINV,PROBIT,TINV,CSS,%
      CV,KURTOSIS,MEAN,NMISS,RANGE,SKEWNESS,STD,STDERR,SUM,USS,NORMAL,%
      RANBIN,RANCAU,RANEXP,RANGAM,RANNOR,RANPOI,RANTBL,RANTRI,RANUNI,%
      UNIFORM,IF,THEN,ELSE,WHILE,UNTIL,DROP,KEEP,LABEL,DEFAULT,ARRAY,%
      MERGE,CARDS,CARDS4,PUT,SET,UPDATE,ABORT,DELETE,DISPLAY,LIST,%
      LOSTCARD,MISSING,STOP,WHERE,ARRAY,DROP,KEEP,WINDOW,LENGTH,RENAME,%
      RETAIN,MEANS,UNIVARIATE,SUMMARY,TABULATE,CORR,FREQ,FOOTNOTE,NOTE,%
      SHOW},%
   otherkeywords={!,!=,~,$,*,\&,_,/,<,>=,=<,>},%
   morestring=[d]'%
   }[keywords,comments,strings,procnames]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{\TeX}
%
% I extracted the data from |plain.tex|, |latex.ltx|, and |size10.clo|.
% \lsthelper{Dr.~Peter~Leibner}{leibner@sta.siemens.de}{1999/11/08}{missing
% keywords in definition of \LaTeX} reported that some keywords are missing
% and also added a couple.
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \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},%
   morekeywords={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,bigskip,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,lim,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,mathrm,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,section,sectionmark,%
      selectfont,setcounter,settodepth,settoheight,settowidth,sffamily,%
      shortstack,showoutput,showoverfull,sloppy,sloppypar,slshape,%
      smallskip,sqsubset,sqsupset,SS,stackrel,stepcounter,stop,stretch,%
      subparagraphmark,subsectionmark,subsubsectionmark,sum,%
      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,%
      normalsize,small,footnotesize,scriptsize,tiny,large,Large,LARGE,%
      huge,Huge}%
  }%
%    \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}%
  {moretexcs={above,abovedisplayshortskip,abovedisplayskip,aftergroup,%
      abovewithdelims,accent,adjdemerits,advance,afterassignment,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$_},%
   morecomment=[l]\%%
  }[keywords,tex,comments]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{VBScript}
%
% \lstthanks{Sonja~Weidmann}{Sonja.Weidmann@sap.com}{2000/01/10}{VBScript}
% sent me this language definition.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% VBScript definition (c) 2000 Sonja Weidmann <Sonja.Weidmann@sap.com>
%%
\lst@definelanguage{VBScript}%
  {morekeywords={Call,Case,Const,Dim,Do,Each,Else,End,Erase,Error,Exit,%
      Explicit,For,Function,If,Loop,Next,On,Option,Private,Public,%
      Randomize,ReDim,Rem,Select,Set,Sub,Then,Wend,While,Abs,Array,Asc,%
      Atn,CBool,CByte,CCur,CDate,CDbl,Chr,CInt,CLng,Cos,CreateObject,%
      CSng,CStr,Date,DateAdd,DateDiff,DatePart,DateSerial,DateValue,%
      Day,Exp,Filter,Fix,FormatCurrency,FormatDateTime,FormatNumber,%
      FormatPercent,GetObject,Hex,Hour,InputBox,InStr,InStrRev,Int,%
      IsArray,IsDate,IsEmpty,IsNull,IsNumeric,IsObject,Join,LBound,%
      LCase,Left,Len,LoadPicture,Log,LTrim,Mid,Minute,Month,MonthName,%
      MsgBox,Now,Oct,Replace,RGB,Right,Rnd,Round,RTrim,ScriptEngine,%
      ScriptEngineBuildVersion,ScriptEngineMajorVersion,%
      ScriptEngineMinorVersion,Second,Sgn,Sin,Space,Split,Sqr,StrComp,%
      StrReverse,String,Tan,Time,TimeSerial,TimeValue,Trim,TypeName,%
      UBound,UCase,VarType,Weekday,WeekdayName,Year, And,Eqv,Imp,Is,%
      Mod,Not,Or,Xor,Add,BuildPath,Clear,Close,Copy,CopyFile,%
      CopyFolder,CreateFolder,CreateTextFile,Delete,DeleteFile,%
      DeleteFolder,Dictionary,Drive,DriveExists,Drives,Err,Exists,File,%
      FileExists,FileSystemObject,Files,Folder,FolderExists,Folders,%
      GetAbsolutePathName,GetBaseName,GetDrive,GetDriveName,%
      GetExtensionName,GetFile,GetFileName,GetFolder,%
      GetParentFolderName,GetSpecialFolder,GetTempName,Items,Keys,Move,%
      MoveFile,MoveFolder,OpenAsTextStream,OpenTextFile,Raise,Read,%
      ReadAll,ReadLine,Remove,RemoveAll,Skip,SkipLine,TextStream,Write,%
      WriteBlankLines,WriteLine,Alias,Archive,CDROM,Compressed,%
      Directory,Fixed,ForAppending,ForReading,ForWriting,Hidden,Normal,%
      RAMDisk,ReadOnly,Remote,Removable,System,SystemFolder,%
      TemporaryFolder,TristateFalse,TristateTrue,TristateUseDefault,%
      Unknown,Volume,WindowsFolder,vbAbortRetryIgnore,%
      vbApplicationModal,vbArray,vbBinaryCompare,vbBlack,vbBlue,%
      vbBoolean,vbByte,vbCr,vbCrLf,vbCritical,vbCurrency,vbCyan,%
      vbDataObject,vbDate,vbDecimal,vbDefaultButton1,vbDefaultButton2,%
      vbDefaultButton3,vbDefaultButton4,vbDouble,vbEmpty,vbError,%
      vbExclamation,vbFirstFourDays,vbFirstFullWeek,vbFirstJan1,%
      vbFormFeed,vbFriday,vbGeneralDate,vbGreen,vbInformation,%
      vbInteger,vbLf,vbLong,vbLongDate,vbLongTime,vbMagenta,vbMonday,%
      vbNewLine,vbNull,vbNullChar,vbNullString,vbOKC,ancel,vbOKOnly,%
      vbObject,vbObjectError,vbQuestion,vbRed,vbRetryCancel,vbSaturday,%
      vbShortDate,vbShortTime,vbSingle,vbString,vbSunday,vbSystemModal,%
      vbTab,vbTextCompare,vbThursday,vbTuesday,vbUseSystem,%
      vbUseSystemDayOfWeek,vbVariant,vbVerticalTab,vbWednesday,vbWhite,%
      vbYellow,vbYesNo,vbYesNoCancel},%
   sensitive=f,%
   morecomment=[l]',%
   morestring=[d]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \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}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% VHDL definition (c) 1997 Kai Wollenweber <kai@ece.wpi.edu>
%%
\lst@definelanguage{VHDL}%
  {morekeywords={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
   morecomment=[l]--,%
   morestring=[d]{"}%
  }[keywords,comments,strings]%
%    \end{macrocode}
% The VHDL-AMS dialect has been added by \lstthanks{Steffen~Klupsch}
% {steffen@vlsi.informatik.tu-darmstadt.de}{2001/10/05}.
%    \begin{macrocode}
%%
%% VHDL-AMS definition (c) Steffen Klupsch
%%
\lst@definelanguage[AMS]{VHDL}[]{VHDL}%
  {morekeywords={ACROSS,ARRAY,BREAK,DISCONNECT,NATURE,NOISE,PORT,%
      PROCEDURAL,QUANTITY,SHARED,SPECTRUM,SUBNATURE,TERMINAL,THROUGH,%
      TOLERANCE,UNAFFACTED,UNITS}}
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{VRML}
%
% This language is due to \lstthanks{Oliver~Baum}{oli.baum@web.de}{2001/07/10}
% {VRML}.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% VRML definition (c) 2001 Oliver Baum <oli.baum@web.de>
%%
\lst@definelanguage[97]{VRML}
  {morekeywords={DEF,EXTERNPROTO,FALSE,IS,NULL,PROTO,ROUTE,TO,TRUE,USE,%
      eventIn,eventOut,exposedField,field,Introduction,Anchor,%
      Appearance,AudioClip,Background,Billboard,Box,Collision,Color,%
      ColorInterpolator,Cone,Coordinate,CoordinateInterpolator,%
      Cylinder,CylinderSensor,DirectionalLight,ElevationGrid,Extrusion,%
      Fog,FontStyle,Group,ImageTexture,IndexedFaceSet,IndexedLineSet,%
      Inline,LOD,Material,MovieTexture,NavigationInfo,Normal,%
      NormalInterpolator,OrientationInterpolator,PixelTexture,%
      PlaneSensor,PointLight,PointSet,PositionInterpolator,%
      ProximitySensor,ScalarInterpolator,Script,Shape,Sound,Sphere,%
      SphereSensor,SpotLight,Switch,Text,TextureCoordinate,%
      TextureTransform,TimeSensor,TouchSensor,Transform,Viewpoint,%
      VisibilitySensor,WorldInfo},%
   morecomment=[l]\#,% bug: starts comment in the first column
   morestring=[b]"%
  }[keywords,comments,strings]
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{XML}
%
% This is my first attempt to support XML. It is from 2000/07/18.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{XML}%
  {keywords={,CDATA,DOCTYPE,ATTLIST,termdef,ELEMENT,EMPTY,ANY,ID,%
      IDREF,IDREFS,ENTITY,ENTITIES,NMTOKEN,NMTOKENS,NOTATION,%
      INCLUDE,IGNORE,SYSTEM,PUBLIC,NDATA,PUBLIC,%
      PCDATA,REQUIRED,IMPLIED,FIXED,%%% preceded by #
      xml,xml:space,xml:lang,version,standalone,default,preserve},%
   alsoother=$,%
   alsoletter=:,%
   keywordsinside=<>,%
   morestring=[d]",% ??? doubled
   morestring=[d]',% ??? doubled
   MoreSelectCharTable=%
      \lst@CArgX--\relax\lst@DefDelimB{}{}%
          {\ifnum\lst@mode=\lst@insidemode\else
               \expandafter\@gobblethree
           \fi}%
          \lst@BeginComment\lst@commentmode{{\lst@commentstyle}}%
      \lst@CArgX--\relax\lst@DefDelimE{}{}{}%
          \lst@EndComment\lst@commentmode
      \lst@CArgX[CDATA[\relax\lst@CDef{}%
          {\ifnum\lst@mode=\lst@insidemode
               \expandafter\lst@BeginCDATA
           \else \expandafter\lst@CArgEmpty
           \fi}%
          \@empty
      \lst@CArgX]]\relax\lst@CDef{}%
          {\ifnum\lst@mode=\lst@GPmode
               \expandafter\lst@EndComment
           \else \expandafter\lst@CArgEmpty
           \fi}%
          \@empty
  }[keywords,comments,strings,html]%
%    \end{macrocode}
% And after receiving a bug report from \lsthelper{Michael Niedermair}
% {m.g.n@gmx.de}{2002/04/07}{undefined control sequence \lst@commentmode} I
% converted the version 0.21 contents of |MoreSelectCharTable| to version 1.0.
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
%
%^^A \setcounter{IndexColumns}{2}
%^^A \PrintIndex
%
%
% \Finale
%
\endinput

