% \iffalse
%
% $Id: lstdrvrs.dtx 200 2015-06-04 18:59:32Z j_hoffmann $
%
%<*driver>
\documentclass{ltxdoc}
\usepackage{lstdoc, textcomp}
\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}
%
%
% \newbox\abstractbox
% \setbox\abstractbox=\vbox{
%	\begin{abstract}
%	This article describes the implementation of the language drivers for
%	the \packagename{listings} package.
%	\end{abstract}}
%
% \title{Language, Style and Format drivers\\ for \textsf{Listings}\\ {\large by Carsten Heinz and individual authors:}}
% \author{\InputIfFileExists{lstdrvrs.tmp}{}{}}
% \date{2015/06/04\enspace\enspace Version 1.6\ \box\abstractbox}
%
% \hypersetup{pdfsubject=Language definitions,pdfauthor=Jobst Hoffmann
%    <j.hoffmann-(at)-fh-aachen.de>}
%
% \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}
%
% \renewcommand*\lsthelper[4]{#1}
%
% \newif\ifmulticols
% \IfFileExists{multicol.sty}{\multicolstrue}{}
%
% \ifmulticols
% \addtocontents{toc}{\protect\begin{multicols}{2}}
% \fi
%
% \tableofcontents
%
%
% \section{Installation and configuration}
% \label{sec:installation}
%
% \begingroup
%    \begin{macrocode}
%% The listings package is copyright 1996--2004 Carsten Heinz, and
%% continued maintenance on the package is copyright 2006--2007 Brooks
%% Moses. From 2013 on the maintenance is done by Jobst Hoffmann.
%% The drivers are copyright 1997/1998/1999/2000/2001/2002/2003/2004/2006/
%% 2007/2013 any individual author listed 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.3 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 Jobst Hoffmann at <j.hoffmann@fh-aachen.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}}
}

\generate{
    \file{listings-acm.prf}{\from{lstdrvrs.dtx}{acm-prf}}
    \file{listings-bash.prf}{\from{lstdrvrs.dtx}{bash-prf}}
    \file{listings-fortran.prf}{\from{lstdrvrs.dtx}{fortran-prf}}
    \file{listings-lua.prf}{\from{lstdrvrs.dtx}{lua-prf}}
    \file{listings-python.prf}{\from{lstdrvrs.dtx}{python-prf}}
}


\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}[2015/06/04 1.6 listings configuration]
\def\lstlanguagefiles
    {lstlang0.sty,lstlang1.sty,lstlang2.sty,lstlang3.sty}
\lstset{defaultdialect=[R/3 6.10]ABAP,
        defaultdialect=[2005]Ada,
        defaultdialect=[68]Algol,
        defaultdialect=[gnu]Awk,
        defaultdialect=[ANSI]C,
        defaultdialect=[light]Caml,
        defaultdialect=[1985]Cobol,
        defaultdialect=[WinXP]command.com,
        defaultdialect=[ISO]C++,
        defaultdialect=[95]Fortran,
        defaultdialect=[5.2]Mathematica,
        defaultdialect=[OMG]OCL,
        defaultdialect=[Standard]Pascal,
        defaultdialect=[67]Simula,
        defaultdialect=[plain]TeX,
        defaultdialect=[97]VRML}
\lstalias[]{TclTk}[tk]{tcl}
%    \end{macrocode}
% And now some shortcuts for the ABAP versions (provided by Knut Lickert).
% I (Knut) think the leading R/2, R/3 is not necessary (The support for R/2
% is finished). The version number with letter is important for the
% runtime-system, but the programming language should be the same
% for each version.
%    \begin{macrocode}
\lstalias[6.1]{ABAP}[R/3 6.10]{ABAP}
\lstalias[3.1]{ABAP}[R/3 3.1C]{ABAP}
\lstalias[4.6]{ABAP}[R/3 4.6C]{ABAP}
%    \end{macrocode}
% \begingroup
%    \begin{macrocode}
%</config>
%    \end{macrocode}
% \endgroup
%
%    \begin{macrocode}
%<+lang1>\ProvidesFile{lstlang1.sty}
%<+lang2>\ProvidesFile{lstlang2.sty}
%<+lang3>\ProvidesFile{lstlang3.sty}
%<+acm-prf>\ProvidesFile{listings-acm.prf}
%<+bash-prf>\ProvidesFile{listings-bash.prf}
%<+fortran-prf>\ProvidesFile{listings-fortran.prf}
%<+lua-prf>\ProvidesFile{listings-lua.prf}
%<+python-prf>\ProvidesFile{listings-python.prf}
%<-config>    [2015/06/04 1.6 listings language file]
%    \end{macrocode}
%
%
% \section{Language drivers}
%
%
% \subsection{Abap}
%
% \lstthanks{Knut Lickert}{knut.lickert@gmx.de}{2000/08/01,2001/12/29,2002/04/11}
% 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
%%
%    \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}
\lst@definelanguage[R/3 6.10]{ABAP}[R/3 4.6C]{ABAP}%
  {morekeywords={try,endtry},%
  }[keywords,comments,strings]
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[R/3 4.6C]{ABAP}[R/3 3.1]{ABAP}%
  {morekeywords={method,ref,class,create,object,%
        methods,endmethod,private,protected,public,section,%
        catch,system-exceptions,endcatch,%
        },%
   moreprocnamekeys={class},%
   literate={->}{{$\rightarrow$}}1{=>}{{$\Rightarrow$}}1,%
  }[keywords,comments,strings,procnames]
%    \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,module},%
   morekeywords={*,add,after,alias,analyzer,and,append,appending,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,corresponding,cos,cp,cs,currency-conversion,%
        cursor,data,database,dataset,decimals,define,delete,deleting,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,fields,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,leading,left-justified,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,right-justified,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][commentstyle][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{ACM}
%
% ACM is the language of the Aspen Custom Modeler
% (\url{http://www.aspentech.com/products/aspen-custom-modeler.aspx}), the
% language definition was provided by \lstthanks{Stefan Pinnow}{Stefan
% Pinnow <Mo-Gul@gmx.net>}{2013/09/08}. It is intended for writing models.
% \lsthelper{Maximilian~Dammann}{maximilian.dammann@tu-clausthal.de}
% {2014/09/16}{missing keyword} pointed out the missing keyword ``Description''.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% ACM and ACMscript definition
%% (c) 2013 Stefan Pinnow
%%
\lst@definelanguage{ACM}{
  morekeywords={
    abs,After,acos,And,As,asin,atan,At,Call,Compatibility,Connect,cos,cosh,%
    Create,Delay,Description,Difference,Do,Else,ElseIf,End,EndFor,EndIf,%
    EndParallel,EndState,EndSwitch,EndText,EndWith,exp,External,Fixed,For,%
    ForEach,Free,Global,Hidden,If,Implementation,In,Initial,Input,InterSection,%
    IntegerSet,Invoke,Is,Language,Library,Link,Log10,LogE,Max,Min,Model,Of,%
    Once,Options,Output,Parallel,Parameter,Pause,Port,Print,Private,%
    Procedure,Product,Ramp,Repeat,Restart,Return,Round,Runs,Sigma,sin,sinh,%
    Size,SnapShot,sqr,sqrt,SRamp,State,Stream,StringSet,Structure,Switch,%
    SubRoutine,SymDiff,tan,tanh,Task,Text,Time,Then,Truncate,Union,Until,%
    Uses,Variable,Wait,When,With,WithIn,WorkSpace%
  },%
  sensitive=false,%
  morecomment=[l]{//},%
  morecomment=[s]{/*}{*/},%
  string=[b]{"},%
}[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \end{macrocode}
% \endgroup
%
% In addition to writing models there is a language ACMscript, which is
% similar to VBScript. According to Stefan Pinnow this language is used for
% writing scripts for the models.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{ACMscript}[]{VBScript}{%
  morekeywords={%
    ElseIf,False,In,Resume,True%
  },%
  deletekeywords={%
    Abs,Array,Clear,CreateObject,CStr,Err,ForReading,ForWriting,%
    OpenTextFile,Replace,WriteLine%
  }%
}[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \end{macrocode}
% \endgroup
%
% \begingroup
% Stefan Pinnow also supplied a definition of a style for printing ACM code:
%    \begin{macrocode}
%<*acm-prf>
%    \end{macrocode}
%    \begin{macrocode}
\usepackage[rgb, x11names]{xcolor}

\definecolor{Comments}{rgb}{0.00,0.50,0.00}
\definecolor{KeyWords}{rgb}{0.00,0.00,0.63}
\definecolor{Strings}{rgb}{0.84,0.00,0.00}

\lstdefinestyle{ACM}{%
  basicstyle=\scriptsize\ttfamily,%
  keywordstyle=\color{KeyWords},%
  showstringspaces=false,%
  identifierstyle=\color{black},%
  commentstyle=\color{Comments},%
  stringstyle=\color{Strings},%
  frame=shadowbox,%             % for ACM-Code scrartcl commented out
%   frame=l,%                   % line on the left side
  rulesepcolor=\color{black},%
  numbers=left,%                % left
  firstnumber=1,%
  stepnumber=5,%
  columns=fixed,%               % to prevent inserting spaces
  fontadjust=true,%
  basewidth=0.5em,%
  captionpos=t,%
  abovecaptionskip=\smallskipamount,% same amount as default
  belowcaptionskip=\smallskipamount,% in caption package
}%
%    \end{macrocode}
% This code is provided in the file |listings-acm.prf|, see section
% 2.4.1 (Preferences) of the \packagename{listings} documentation.
%    \begin{macrocode}
%</acm-prf>
%    \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
%%
\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
%%
%% Ada 2005 definition (c) 2006 Santiago Urue\~{n}a Pascual
%%                              <Santiago.Uruena@upm.es>
%%
\lst@definelanguage[2005]{Ada}[95]{Ada}%
  {morekeywords={interface,overriding,synchronized}}%
%    \end{macrocode}
%    \begin{macrocode}
\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{Michael~Franke}{-}{2006/05/13}.
% \begingroup
%    \begin{macrocode}
%<*lang3>
%%
%% Motorola 68K definition (c) 2006 Michael Franke
%%
\lst@definelanguage[Motorola68k]{Assembler}%
 {morekeywords={ABCD,ADD,%
ADDA,ADDI,ADDQ,ADDX,AND,ANDI,ASL,ASR,BCC,BLS,BCS,BLT,BEQ,BMI,BF,BNE,BGE,BPL,%
BGT,BT,BHI,BVC,BLE,BVS,BCHG,BCLR,BRA,BSET,BSR,BTST,CHK,CLR,CMP,CMPA,CMPI,CMPM,%
DBCC,DBLS,DBCS,DBLT,DBEQ,DBMI,DBF,DBNE,DBGE,DBPL,DBGT,DBT,DBHI,DBVC,DBLE,DBVS,DIVS,%
DIVU,EOR,EORI,EXG,EXT,ILLEGAL,JMP,JSR,LEA,LINK,LSL,LSR,MOVE,MOVEA,MOVEM,MOVEP,MOVEQ,%
MULS,MULU,NBCD,NEG,NEGX,NOP,NOT,OR,ORI,PEA,RESET,ROL,ROR,ROXL,ROXR,RTE,RTR,RTS,SBCD,%
SCC,SLS,SCS,SLT,SEQ,SMI,SF,SNE,SGE,SPL,SGT,ST,SHI,SVC,SLE,SVS,STOP,SUB,SUBA,SUBI,SUBQ,%
SUBX,SWAP,TAS,TRAP,TRAPV,TST,UNLK},%
   sensitive=false,%
   morecomment=[l]*,%
   morecomment=[l];%
   }[keywords,comments,strings]
%</lang3>
%    \end{macrocode}
% \endgroup
%
% Credits go to \lstthanks{Andrew~Zabolotny}{zap@cobra.ru}{2002/07/05}.
% \begingroup
%    \begin{macrocode}
%<*lang3>
%%
%% x86masm definition (c) 2002 Andrew Zabolotny
%%
\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];%
   }[keywords,comments,strings]
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Awk}
%
% Thanks to \lstthanks{Dr.~Christoph~Giess}{Ch.Giess@gmx.de}{2003/07/15} for
% providing these definitions.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%%
%% awk definitions (c) Christoph Giess
%%
\lst@definelanguage[gnu]{Awk}[POSIX]{Awk}%
  {morekeywords={and,asort,bindtextdomain,compl,dcgettext,gensub,%
      lshift,mktime,or,rshift,strftime,strtonum,systime,xor,extension}%
  }%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[POSIX]{Awk}%
  {keywords={BEGIN,END,close,getline,next,nextfile,print,printf,%
      system,fflush,atan2,cos,exp,int,log,rand,sin,sqrt,srand,gsub,%
      index,length,match,split,sprintf,strtonum,sub,substr,tolower,%
      toupper,if,while,do,for,break,continue,delete,exit,function,%
      return},%
   sensitive,%
   morecomment=[l]\#,%
   morecomment=[l]//,%
   morecomment=[s]{/*}{*/},%
   morestring=[b]"%
  }[keywords,comments,strings]%
%</lang1>
%    \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
%%
\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}
% Thanks to \lsthelper{Jonathan~de~Halleux}{dehalleux@pelikhan.com}
% {2002/12/27}{missing comma} for reporting a missing comma after
% \texttt{MoreSelectCharTable}, which was the cause of a problem
% reported by \lsthelper{Robert~Frank}{rf7@ukc.ac.uk}{2002/10/27}
% {indention with language={[Visual]Basic} in optional argument}.
% \lsthelper{Martina~Hansel}{Martina.Hansel@fhtw-berlin.de}{2003/05/29}
% {missing comma} also found the bug and the fix.
% \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
%%
%% 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
%%
\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},%
   moredelim=*[directive]\#,%
   morecomment=[l]//,%
   morecomment=[s]{/*}{*/},%
   morestring=[b]"%
  }[keywords,comments,strings,directives]%
%</lang2>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{C, C++, et al}
%
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
% \lstthanks{Michael Fiedler}{post@michael-fiedler.net}{2014/09/04}
% provided the following list of new introduced keywords for C++11.
%    \begin{macrocode}
\lst@definelanguage[11]{C++}[ISO]{C++}%
  {morekeywords={alignas,alignof,char16_t,char32_t,constexpr,%
      decltype,noexcept,nullptr,static_assert,thread_local},%
  }%
%    \end{macrocode}
% \lstthanks{Michael Piefel}{piefel@informatik.hu-berlin.de}{2001/11/21}
% suggested some more changes and added GNU C++.
% 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
%%
\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
%
%
% \lstthanks{J\"org~Viermann}{}{2004/07/17} provided the keywords for Handel-C.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Handel-C definition, refer http://www.celoxica.com
%%
\lst@definelanguage[Handel]{C}[ANSI]{C}
  {morekeywords={assert,chan,chanin,chanout,clock,delay,expr,external,%
      external_divide,family,ifselect,in,inline,interface,internal,%
      internal_divid,intwidth,let,macro,mpram,par,part,prialt,proc,ram,%
      releasesema,reset,rom,select,sema,set,seq,shared,signal,try,%
      reset,trysema,typeof,undefined,width,with,wom},%
  }%
%    \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]',%
   moredelim=*[directive]\#,%
   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
%%
\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,%
      as,volatile,stackalloc},% Kai K\"ohne
   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. \lsthelper{Tom~Hirschowitz}{tom.hirschowitz@inria.fr}
% {2003/05/27}{missing keywords: object, ref} added two keywords.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% (Objective) Caml definition (c) 1999 Patrick Cousot
%%
%% 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,%
      object,ref},% TH
  }%
%    \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]",%
   moredelim=*[directive]\#,%
   moredirectives={open,close,include}%
  }[keywords,comments,strings,directives]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Common Intermediate Language}
%
% This language definition for CIL (Common Intermediate Language, part of
% Microsoft's .NET interface) was provided by
% \lsthelper{Olaf~Conradi}{-}{2006/08/23}. \lsthelper{Akim
% Demaille}{akim@lrde.epita.fr}{2014/07/09}{Algol broken} pointed out that
% the support for Algol was broken, but that came from a long missing `@'
% in the following |lst@definelanguage|.
%
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{CIL}%
  {morekeywords=[1]{assembly,beforefieldinit,class,default,cdecl,cil,corflags,%
                    culture,custom,data,entrypoint,fastcall,field,file,%
                    hidebysig,hash,il,imagebase,locals,managed,marshall,%
                    maxstack,mresource,method,module,namespace,publickey,%
                    stdcall,subsystem,thiscall,unmanaged,vararg,ver,vtfixup,%
                   % types
                    bool,char,float32,float64,int,int8,int16,int32,%
                    int64,method,native,object,string,modopt,modreq,pinned,%
                    typedref,valuetype,unsigned,void,%
                   % defining types
                    abstract,ansi,auto,autochar,beforefieldinit,boxed,class,%
                    explicit,extends,implements,interface,famandassem,family,%
                    famorassem,inherits,nested,override,pack,private,property,%
                    public,rtspecialname,sealed,sequential,serializable,size,%
                    specialname,static,unicode,%
                   % postfix
                    algorithm,alignment,extern,init,from,nometadata,with},%
  morekeywords=[2]{add,and,arglist,beq,bge,bgt,ble,blt,bne,br,break,brfalse,%
                    brtrue,call,calli,ceq,cgt,ckfinite,clt,conv,cpblk,div,%
                    dup,endfilter,endfinally,initblk,jmp,ldarg,ldarga,ldc,%
                    ldftn,ldind,ldloc,ldloca,ldnull,leave,localloc,mul,neg,%
                    nop,not,or,pop,rem,ret,shl,shr,starg,stind,stloc,sub,%
                    switch,xor,%
                   % prefix
                    tail,unaligned,volatile,%
                   % postfix
                    un,s,ovf,%
                   % object
                    box,callvirt,castclass,cpobj,cctor,ctor,initobj,isinst,%
                    ldelem,ldelema,ldfld,ldflda,ldlen,ldobj,ldsfld,ldsflda,%
                    ldstr,ldtoken,ldvirtftn,mkrefany,newarr,newobj,refanytype,%
                    refanyval,rethrow,sizeof,stelem,stfld,stobj,stsfld,throw,%
                    unbox},%
  sensitive=true,%
  morecomment=[l]{//},%
  morestring=[b]"%
}[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \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{COMMAND.COM Batch Files}
%
% This definition for DOS and Windows batch files is from
% \lstthanks{Stephan Hennig}{-}{2006/10/11}.
%
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[WinXP]{command.com}%
  {morekeywords={assoc,at,attrib,bootcfg,break,cacls,call,cd,chcp,chdir,%
      chkdsk,chkntfs,cls,cmd,cmdextversion,color,comp,compact,convert,copy,%
      date,defined,del,dir,diskcomp,diskcopy,do,doskey,echo,else,endlocal,%
      erase,errorlevel,exist,exit,fc,find,findstr,for,format,ftype,goto,%
      graftabl,help,if,in,label,md,mkdir,mode,more,move,not,off,path,%
      pause,popd,print,prompt,pushd,rd,recover,ren,rename,replace,rmdir,%
      set,setlocal,shift,sort,start,subst,time,title,tree,type,ver,%
      verify,vol,xcopy},%
   sensitive=false,%
   alsoother={@},%
   alsoletter={\%~:-/},%
   morecomment=[l]{rem},%
   morecomment=[l]{reM},%
   morecomment=[l]{rEm},%
   morecomment=[l]{rEM},%
   morecomment=[l]{Rem},%
   morecomment=[l]{ReM},%
   morecomment=[l]{REm},%
   morecomment=[l]{REM},%
   morestring=[d]"%
}[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Comsol Multiphysics}
%
% Comsol Multiphysics (Prior to version 3.2 known as Femlab) can be used
% standalone or as an extension to MatLab.  This definition is due to
% \lstthanks{Martin~Heller}{-}{2006/05/10}.
%
% Unfortunately, there is a conflict in that Comsol is case-insensitive,
% whereas Matlab is case-sensitive; \textsf{listings} does not
% currently support different case-sensitivities in the same listing.
%
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Comsol}%
  {morekeywords={%
      adaption,arc1,arc2,arrayr,assemble,asseminit,beziercurve2,block2,%
      block3,bsplinecurve2,bsplinecurve3,bsplinesurf3,bypassplot,cardg,%
      ccoeffgroup,chamfer,checkgeom,circ1,circ2,coeff2cell,comsol,%
      cone2,cone3,Contents,createhexes,createprisms,createquads,csgbl2,%
      csgbl3,csgcmpbz,csgimplbz,csginitaux,csginitnr,csgproputil,%
      csgrbconv,csgunique3,csguniquep,csgversion,csgvvovl,curve2,%
      curve3,cylinder2,cylinder3,dat2str,defastget,display,drawgetobj,%
      drawreobj,drawsetobj,dst,duplicate,dxflayers,dxfread,dxfwrite,%
      econe2,econe3,eigloop,elcconstr,elcplbnd,elcplextr,elcplproj,%
      elcplscalar,elempty,elemreobj,eleqc,eleqw,elevate,elgeom,ellip1,%
      ellip2,ellipsoid2,ellipsoid3,ellipsoidgen_fl23,elmat,elovar,%
      elpconstr,elshape,elvar,elvarm,embed,extrude,face3,faceprim3,%
      fastsetop,fem2jxfem,femblocksu,femdiff,femeig,femexport,femgui,%
      femimport,femiter,femlab,femlin,femmesh,femmeshexp,femnlin,%
      femplot,femsfun,femsim,femsimlowlevel,femsimserver,femsol,%
      femsolver,femstate,femstruct,femtime,femwave,festyle,fieldnames,%
      fillet,fl1d,fl2d,fl3d,flaction,flafun,flappconvert,flappobj,%
      flaxisequal,flbase,flbinary,flc1hs,flc2hs,flcanpnt,flcell2draw,%
      flclear,flcolorbar,flcompact,flconeplot,flcontour2mesh,%
      flcontour2meshaux,flconvreact,flconvreact1d,flconvreact2d,%
      flconvreact3d,flcyl,fldc1hs,fldc2hs,fldegree,fldegreer3,%
      fldegreet3,fldimvarsget,fldisp,fldraw2cell,fldrawnow,fldsmhs,%
      fldsmsign,flevalmat,flexch,flexchprop,flfastgeom,flform,flgc,%
      flgcbo,flgdconv,flgeom2cellstr,flgeomadj,flgeomarcize,flgeomec,%
      flgeomed,flgeomepol,flgeomes,flgeomfc,flgeomfd,flgeomfdp,%
      flgeomff1,flgeomff2,flgeomfn,flgeomfs,flgeomgetlocalsys,%
      flgeominit,flgeominitprop,flgeomitransform,flgeomloft,flgeommesh,%
      flgeomnbs,flgeomnes,flgeomnmr,flgeomnv,flgeompsinv,flgeomrmsing,%
      flgeomrotp,flgeomsd,flgeomsdim,flgeomse,flgeomsf2,flgeomspm,%
      flgeomtransform,flgeomud,flgeomvtx,flgetdraw,flheat,flheat1d,%
      flheat2d,flheat3d,flhelmholtz,flhelmholtz1d,flhelmholtz2d,%
      flhelmholtz3d,flim2curve,flinterp1,fliscont,flismember,%
      flisnumeric,fljaction,fllaplace,fllaplace1d,fllaplace2d,%
      fllaplace3d,flload,flloadfl,flloadmatfile,flloadmfile,%
      fllobj2cellstr,flmakeevalstr,flmapsoljac,flmat2str,flmatch,%
      flmesh2spline,flmesh2splineaux,flml65setup,flngdof,flnull,%
      flnullorth,flpde,flpdeac,flpdec,flpdec1d,flpdec2d,flpdec3d,%
      flpdedc,flpdedc2d,flpdedc3d,flpdedf,flpdedf1d,flpdedf2d,%
      flpdedf3d,flpdees,flpdees2d,flpdees3d,flpdeg,flpdeg1d,flpdeg2d,%
      flpdeg3d,flpdeht,flpdeht1d,flpdeht2d,flpdeht3d,flpdems,flpdems2d,%
      flpdems3d,flpdens,flpdens2d,flpdens3d,flpdepn,flpdeps,flpdesm3d,%
      flpdew,flpdew1d,flpdew2d,flpdew3d,flpdewb,flpdewb1d,flpdewb2d,%
      flpdewb3d,flpdewc,flpdewc1d,flpdewc2d,flpdewc3d,flpdewe,%
      flpdewe3d,flpdewp,flpdewp2d,flpdewp3d,flplot,flpoisson,%
      flpoisson1d,flpoisson2d,flpoisson3d,flpric2,flpric3,flreobj,%
      flreport,flresolvepath,flsave,flschrodinger,flschrodinger1d,%
      flschrodinger2d,flschrodinger3d,flsde,flsdp,flsdt,flsetalpha,%
      flsetdraw,flsmhs,flsmsign,flspnull,fltherm_cond1,fltrg,flversion,%
      flversions,flverver,flwave,flwave1d,flwave2d,flwave3d,%
      flwriteghist,formstr,gdsread,gencyl2,gencyl3,genextrude,%
      genextrudeaux,geom,geom0,geom0get,geom1,geom1get,geom2,geom2get,%
      geom3,geom3get,geom3j2m,geom3m2j,geomaddlblmargin,geomanalyze,%
      geomarrayr,geomassign,geomcoerce,geomcomp,geomconnect,geomcopy,%
      geomcsg,geomdel,geomedit,geomexport,geomfile,geomget,%
      geomgetlabels,geomgetwrkpln,geomimport,geominfo,geominfoaux,%
      geomlblplot,geomload,geomnumparse,geomobject,geomparse,geomplot,%
      geomplot1,geomplot2,geomplot3,geomposition,geomproputil,%
      geomreconstruct,geomreobj,geomserver,geomspline,geomsurf,%
      geomupdate,get,getfemgeom,getisocurve,getjptr,getmesh,getsdim,%
      getvmatrixexch,handlesolnumstr,helix1,helix2,helix3,hexahedron2,%
      hexahedron3,histfrommat,idst,igesread,importplotdata,isempty,%
      isfield,isfunc,isscript,javaclass,jproputil,jptr2geom,jptrgeom1,%
      jptrgeom1_fl23,jptrgeom2,jptrgeom2_fl23,jptrgeom3,jptrgeom3_fl23,%
      keiter,line1,line2,loadobj,loft,matlabinterpdata,mesh2geom,%
      meshassign,meshcaseadd,meshcasedel,meshcaseutil,meshcheck,%
      meshembed,meshenrich,meshenrich1,meshenrich2,meshenrich3,%
      meshexport,meshextend,meshextrude,meshget,meshimport,meshinit,%
      meshintegrate,meshmap,meshoptim,meshparse,meshplot,meshplot1,%
      meshplot2,meshplot3,meshplotproputil,meshpoi,meshproputil,%
      meshptplot,meshqual,meshrefine,meshrevolve,meshsmooth,%
      meshsmooth2,meshsweep,meshvolume,minus,mirror,mkreflparams,%
      mmsolve,modetype,move,moveglobalfields,mphproputil,mtimes,%
      multiphysics,mypostinterp,notscript,onlyelsconstr,outassign,%
      paramgeom,pde2draw,pde2equ,pde2fem,pde2geom,pdeblxpd,plus,point1,%
      point2,point3,poisson,poly1,poly2,postanim,postapplysettings,%
      postarrow,postarrowbnd,postcolorbar,postcont,postcontdomind,%
      postcoord,postcopyprop,postcrossplot,postdistrprops,posteval,%
      postflow,postfnd,postgeomplot,postgetfem,postgetstylecolor,%
      postglobaleval,postglobalplot,postgp,postinit,postint,postinterp,%
      postiso,postlin,postmakecontcol,postmax,postmaxmin,postmin,%
      postmkcontbar,postmknormexpr,postmovie,postnewplot,%
      postoldmaxminprops,postpd2pm,postplot,postplotconstants,%
      postpm2pd,postprinc,postprincbnd,postprocgui,postproputil,%
      postslice,postsurf,posttet,posttitle,print2file,pyramid2,%
      pyramid3,rect1,rect2,restorefields,revolve,rmfield,rotate,%
      rotmatrix,scale,serialize,set,setmesh,sh2str,sharg_2_5,shbub,%
      shdisc,shdiv,shherm,shlag,shvec,simplecoerce,simreobj,slblocks,%
      solassign,solid0,solid1,solid2,solid3,solidprim3,solproputil,%
      solsize,solveraddcases,sphere2,sphere3,spiceimport,splineaux,%
      split,splittoprim,square1,square2,stlread,submode,submodes,%
      subsasgn,subsref,tangent,taucs,tetrahedron2,tetrahedron3,%
      tobsplines,torus2,torus3,transform,update,updateassoc,%
      updateassocinfo,updatefem,updateguistruct,updateobj,vrmlread,%
      xmeshinfo,xmeshinit},%
   sensitive=false,%
   morecomment=[l]\%,%
   morestring=[m]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{bash, csh, and sh}
%
% csh 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
%%
\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}
% Thanks to \lstthanks{Riccardo~Murri}{riccardo.murri@gmx.it}{2003/09/24}
% for the following two
% definitions. \lstthanks{Scott~Pakin}{scott@pakin.org}{2014/08/08} pointed
% out some missing keywords (|elif|, |in| for |sh|, |caller|, |compopt|,
% |coproc|, |dirs|, |help|, |mapfile|, |readarray| for |bash|) to the
% current maintainer. The |sh| list of keywords was checkead against the
% ``Manual of the Bourne Shell on Version 7'', found at
% \url{http://www.in-ulm.de/~mascheck/bourne/v7/}, last visited on
% 2014/09/06.
%    \begin{macrocode}
%%
%% bash,sh definition (c) 2003 Riccardo Murri <riccardo.murri@gmx.it>
%%
\lst@definelanguage{bash}[]{sh}%
  {morekeywords={alias,bg,bind,builtin,caller,command,compgen,compopt,%
      complete,coproc,declare,disown,dirs,enable,fc,fg,help,history,%
      jobs,let,local,logout,mapfile,printf,pushd,popd,readarray,select,%
      set,suspend,shopt,source,times,type,typeset,ulimit,unalias,wait},%
  }%
\lst@definelanguage{sh}%
  {morekeywords={awk,break,case,cat,cd,continue,do,done,echo,elif,else,%
      env,esac,eval,exec,exit,export,expr,false,fi,for,function,getopts,%
      hash,history,if,in,kill,login,newgrp,nice,nohup,ps,pwd,read,%
      readonly,return,set,sed,shift,test,then,times,trap,true,type,%
      ulimit,umask,unset,until,wait,while},%
   morecomment=[l]\#,%
   morestring=[d]"%
  }[keywords,comments,strings]%
%</lang1>
%    \end{macrocode}
% \endgroup
%
% \begingroup
% Jobst Hoffmann copied the definition of a style for printing Fortran code
% to a style for printing shell programs:
%    \begin{macrocode}
%<*bash-prf>
%    \end{macrocode}
%    \begin{macrocode}
\usepackage[rgb, x11names]{xcolor}

% common settings
\lstset{%
  frame=tlb,%      the frame is open on the right side
  resetmargins=false,%
  rulesepcolor=\color{black},%
  numbers=left,%                % left
  numberstyle=\tiny,%
  numbersep=5pt,%
  firstnumber=1,%
  stepnumber=5,%
  columns=fixed,%               % to prevent inserting spaces
  fontadjust=true,%
  keepspaces=true,%
  basewidth=0.5em,%
  captionpos=t,%
  abovecaptionskip=\smallskipamount,% same amount as default
  belowcaptionskip=\smallskipamount,% in caption package
}
% settings for colored printing
\lstdefinestyle{bash}{%
  backgroundcolor=\color{yellow!10},%
  basicstyle=\small\ttfamily,%
  identifierstyle=\color{black},%
  keywordstyle=\color{blue},%
  keywordstyle={[2]\color{cyan}},%
  keywordstyle={[3]\color{olive}},%
  stringstyle=\color{teal},%
  commentstyle=\itshape\color{orange},%
}%
% settings for back and white printing
\lstdefinestyle{bashbw}{%
  backgroundcolor={},%
  basicstyle=\small\ttfamily,%
  identifierstyle={},%
  keywordstyle=\bfseries,%
  stringstyle=\itshape,%
  commentstyle=\slshape,%
  rulesepcolor=\color{black},%
}%
%    \end{macrocode}
% This code is provided in the file |listings-bash.prf|, see section
% 2.4.1 (Preferences) of the \packagename{listings} documentation.
%    \begin{macrocode}
%</bash-prf>
%    \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{Erlang}
%
% Thanks to \lstthanks{Daniel~Gazard}{gazard_d@epita.fr}{2003/05/31}.
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Erlang definition (c) 2003 Daniel Gazard
%%
\lst@definelanguage{erlang}%
  {morekeywords={abs,after,and,apply,atom,atom_to_list,band,binary,%
      binary_to_list,binary_to_term,bor,bsl,bsr,bxor,case,catch,%
      date,div,element,erase,end,exit,export,float,float_to_list,%
      get,halt,hash,hd,if,info,import,integer,integer_to_list,%
      length,link,list,list_to_atom,list_to_float,list_to_integer,%
      list_to_tuple,module,node,nodes,now,of,or,pid,port,ports,%
      processes,put,receive,reference,register,registered,rem,%
      round,self,setelement,size,spawn,throw,time,tl,trace,trunc,%
      tuple,tuple_to_list,unlink,unregister,whereis,error,false,%
      infinity,nil,ok,true,undefined,when},%
   otherkeywords={->,!,[,],\{,\}},%
   morecomment=[l]\%,%
   morestring=[b]",%
   morestring=[b]'%
  }[keywords,comments,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
%%
\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}
% \label{sec: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}
% Another source for Fortran keywords is
% \url{http://fortranwiki.org/fortran/show/Keywords} where the keywords for
% Fortran 2003 and 2008 are taken from.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
% The current version of Fortran (Fortran 2008) is defined by ISO/IEC
% 1539-1:2010.  It contains nine new keywords, four of them consisting of
% two words: ^^A
% |ERROR STOP|, |SYNC ALL|, |SYNC IMAGES|, |SYNC MEMORY|, so
% the list of keywords contains the single parts |ALL|, |ERROR|, |IMAGES|,
% |MEMORY|, and |SYNC|.
%    \begin{macrocode}
\lst@definelanguage[08]{Fortran}[03]{Fortran}{%
  morekeywords={ALL, BLOCK, CODIMENSION, CONCURRENT, CONTIGUOUS, CRITICAL,%
    ERROR, LOCK, SUBMODULE, SYNC, UNLOCK},%
%    \end{macrocode}
% New procedures in Fortran 2008:
%    \begin{macrocode}
    morekeywords=[3]{ACOSH,ASINH,ATANH,ATOMIC_DEFINE,ATOMIC_REF,BESSEL_J0,%
      BESSEL_J1,BESSEL_JN,BESSEL_Y0,BESSEL_Y1,BESSEL_YN,BGE,BGT,BLE,BLT,%
      C_SIZEOF,COMPILER_OPTIONS,COMPILER_VERSION,DSHIFTL,DSHIFTR,ERF,ERFC,%
      ERFC_SCALED,EXECUTE_COMMAND_LINE,GAMMA,HYPOT,IALL,IANY,IMAGE_INDEX,%
      IPARITY,LCOBOUND,LEADZ,LOG_GAMMA,MASKL,MASKR,MERGE_BITS,NORM2,%
      NUM_IMAGES,PARITY,POPCNT,POPPAR,SHIFTA,SHIFTL,SHIFTR,STORAGE_SIZE,%
      THIS_IMAGE,TRAILZ,UCOBOUND}%
}%
%    \end{macrocode}
% Fortran 2003 introduces the following keywords:
%    \begin{macrocode}
\lst@definelanguage[03]{Fortran}[95]{Fortran}{%
  morekeywords={ABSTRACT, ASSOCIATE, ASYNCHRONOUS, BIND, CLASS, DEFERRED,%
    ENUM, ENUMERATOR, EXTENDS, FINAL, FLUSH, GENERIC, IMPORT,%
    NON_OVERRIDABLE, NOPASS, PASS, PROTECTED, VALUE, VOLATILE, WAIT},%
%    \end{macrocode}
% These are new options/specifiers:
%    \begin{macrocode}
    morekeywords=[2]{DECIMAL,ENCODING,IOMSG,ROUND},% corrected NML from NMT
%    \end{macrocode}
% And also some new procedures:
%    \begin{macrocode}
    morekeywords=[3]{C_ASSOCIATED,C_F_POINTER,C_F_PROCPOINTER,C_FUNLOC,%
    C_LOC,COMMAND_ARGUMENT_COUNT,EXTENDS_TYPE_OF,GET_COMMAND,GET_COMMAND_ARGUMENT,%
    GET_ENVIRONMENT_VARIABLE,IS_IOSTAT_END,MOVE_ALLOC,NEW_LINE,SAME_TYPE_AS,%
    SELECTED_CHAR_KIND}%
}%
%    \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={ALLOCATABLE,ALLOCATE,ASSIGNMENT,CASE,%
      CONTAINS,CYCLE,DEALLOCATE,DEFAULT,EXIT,INCLUDE,IN,NONE,%
      OUT,INTENT,INTERFACE,MODULE,NAMELIST,%
      NULLIFY,ONLY,OPERATOR,OPTIONAL,OUT,POINTER,PRIVATE,%
      PUBLIC,RECURSIVE,RESULT,SELECT,SEQUENCE,%
      TARGET,USE,WHERE,WHILE,BLOCKDATA,DOUBLEPRECISION,%
      ENDBLOCKDATA,ENDFILE,ENDFUNCTION,ENDINTERFACE,%
      ENDMODULE,ENDPROGRAM,ENDSELECT,ENDSUBROUTINE,ENDTYPE,ENDWHERE,%
      INOUT,SELECTCASE,%
%    \end{macrocode}
% Theses keys were missing from the 1.4 version of listings:
%    \begin{macrocode}
      ELEMENTAL, ELSEWHERE, FORALL, PURE},%
%    \end{macrocode}
% The list of option keywords/specifiers new in Fortran 90 and 95:
%    \begin{macrocode}
    morekeywords=[2]{ACTION,ADVANCE,DELIM,IOLENGTH,LEN,NAME,%
      NML,PAD,POSITION,READWRITE,SIZE,STAT},% corrected NML from NMT
%    \end{macrocode}
% and the list of intrinsic procedures new in Fortran 90 and 95:
%    \begin{macrocode}
    morekeywords=[3]{ADJUSTL,ADJUSTR,ALL,ALLOCATED,ANY,ASSOCIATED,BIT_SIZE,%
    BTEST,CEILING,COUNT,CPU_TIME,CSHIFT,DATE_AND_TIME,DIGITS,DOT_PRODUCT,%
    EOSHIFT,EPSILON,EXPONENT,FLOOR,FRACTION,HUGE,IACHAR,IAND,IBCLR,
    IBITS,IBSET,ICHAR,IEOR,IOR,ISHFT,ISHFTC,KIND,LBOUND,LEN_TRIM,% left out LOGICAL
    MATMUL,MAXEXPONENT,MAXLOC,MAXVAL,MERGE,MINEXPONENT,MINLOC,MINVAL,%
    MODULO,MVBITS,NEAREST,NOT,NULL,PACK,PRECISION,PRESENT,PRODUCT,%
    RADIX,RANDOM_NUMBER,RANDOM_SEED,RANGE,RANK,REPEAT,RESHAPE,RRSPACING,%
    SCALE,SCAN,SELECTED_INT_KIND,SELECTED_REAL_KIND,SET_EXPONENT,SHAPE,%
    SINH,SIZE,SPACING,SPREAD,SUM,SYSTEM_CLOCK,TINY,TRANSFER,TRANSPOSE,%
    TRIM,UBOUND,UNPACK,VERIFY},%
   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.  Also, note that Fortran 77 (and fixed-format source in later
% versions) allows space in keywords; thus, this list contains some of the
% more common variants (e.g., `GO TO' and `GOTO').
%    \begin{macrocode}
\lst@definelanguage[77]{Fortran}%
%    \end{macrocode}
% Jobst Hoffmann divided the list of keywords into two lists. The first
% list contains the statement keywords, the second list contains the option
% keywords/specifiers and values. This makes the different meanings of the
% keywords distinguishable.
%    \begin{macrocode}
  {morekeywords={ASSIGN,BACKSPACE,CALL,CHARACTER,%
      CLOSE,COMMON,COMPLEX,CONTINUE,DATA,DIMENSION,DO,DOUBLE,%
      ELSE,ELSEIF,END,ENDIF,ENDDO,ENTRY,EQUIVALENCE,EXTERNAL,%
      FILE,FORMAT,FUNCTION,GO,TO,GOTO,IF,IMPLICIT,%
      INQUIRE,INTEGER,INTRINSIC,LOGICAL,%
      OPEN,PARAMETER,PAUSE,PRECISION,PRINT,PROGRAM,READ,REAL,%
      RETURN,REWIND,STOP,SUBROUTINE,THEN,%
      WRITE,SAVE},%
    morekeywords=[2]{ACCESS,BLANK,BLOCK,DIRECT,EOF,ERR,EXIST,%
      FMT,FORM,FORMATTED,IOSTAT,NAMED,NEXTREC,NUMBER,OPENED,%
      REC,RECL,SEQUENTIAL,STATUS,TYPE,UNFORMATTED,UNIT},%
%    \end{macrocode}
% And here is another list: the list of intrinsic procedures (remember: all
% functions belong to the Fortran language specification!)
%    \begin{macrocode}
    morekeywords=[3]{INT,DBLE,CMPLX,ICHAR,CHAR,AINT,ANINT,% left out real
      NINT,ABS,MOD,SIGN,DIM,DPROD,MAX,MIN,AIMAG,CONJG,SQRT,EXP,LOG,%
      LOG10,SIN,COS,TAN,ASIN,ACOS,ATAN,ATAN2,SINH,COSH,TANH,LGE,LLE,LLT,%
      LEN,INDEX},%
%    \end{macrocode}
% And here is the last list: fortran operators:
%    \begin{macrocode}
    morekeywords=[4]{AND,EQ,EQV,FALSE,GE,GT,OR,LE,LT,NE,NEQV,NOT,TRUE},%
   sensitive=f,%% not Fortran-77 standard, but allowed in Fortran-95 %%
   morecomment=[f]*,%
   morecomment=[f]C,%
   morecomment=[f]c,%
   morestring=[d]",%% not Fortran-77 standard, but allowed in Fortran-95 %%
   morestring=[d]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
% \begingroup
% Jobst Hoffmann supplied a definition of a style for printing Fortran code:
%    \begin{macrocode}
%<*fortran-prf>
%    \end{macrocode}
%    \begin{macrocode}
\usepackage[rgb, x11names]{xcolor}

% common settings
\lstset{%
  frame=tlb,%      the frame is open on the right side
  resetmargins=false,%
  rulesepcolor=\color{black},%
  numbers=left,%                % left
  numberstyle=\tiny,%
  numbersep=5pt,%
  firstnumber=1,%
  stepnumber=5,%
  columns=fixed,%               % to prevent inserting spaces
  fontadjust=true,%
  keepspaces=true,%
  basewidth=0.5em,%
  captionpos=t,%
  abovecaptionskip=\smallskipamount,% same amount as default
  belowcaptionskip=\smallskipamount,% in caption package
}
% settings for colored printing
\lstdefinestyle{fortran}{%
  backgroundcolor=\color{yellow!10},%
  basicstyle=\small\ttfamily,%
  identifierstyle=\color{black},%
  keywordstyle=\color{blue},%
  keywordstyle={[2]\color{cyan}},%
  keywordstyle={[3]\color{olive}},%
  stringstyle=\color{teal},%
  commentstyle=\itshape\color{orange},%
}%
% settings for back and white printing
\lstdefinestyle{fortranbw}{%
  backgroundcolor={},%
  basicstyle=\small\ttfamily,%
  identifierstyle={},%
  keywordstyle=\bfseries,%
  stringstyle=\itshape,%
  commentstyle=\slshape,%
  rulesepcolor=\color{black},%
}%
%    \end{macrocode}
% This code is provided in the file |listings-fortran.prf|, see section
% 2.4.1 (Preferences) of the \packagename{listings} documentation.
%    \begin{macrocode}
%</fortran-prf>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{GAP---Groups, Algorithms, Programming}
%\label{sec:gap}
%
% GAP is a System for Computational Discrete Algebra, a description can be
% found at \url{http://www.gap-system.org/}. \lstthanks{Heiko
% Oberdiek}{heiko.oberdiek@googlemail.com}{2013/07/18} provided a
% language definition without knowing this language, so any error should be
% announced to the current maintainer of the \packagename{listings} package.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% GAP definition
%% (c) 2013 Heiko Oberdiek
%%
\lst@definelanguage{GAP}{%
  morekeywords={%
    Assert,Info,IsBound,QUIT,%
    TryNextMethod,Unbind,and,break,%
    continue,do,elif,%
    else,end,false,fi,for,%
    function,if,in,local,%
    mod,not,od,or,%
    quit,rec,repeat,return,%
    then,true,until,while%
  },%
  sensitive,%
  morecomment=[l]\#,%
  morestring=[b]",%
  morestring=[b]',%
}[keywords,comments,strings]
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Guarded Command Language (GCL)}
%
% As you can read below, \lstthanks{Mark~van~Eijk}{mark@luon.net}{2002/10/30}
% provided this language definition.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Guarded Command Language (GCL)  definition
%% (c) 2002 Mark van Eijk
%%
\lst@definelanguage{GCL}%
  {morekeywords={const,con,var,array,of,skip,if,fi,do,od,div,mod},%
   literate={|[}{\ensuremath{|\hskip -0.1em[}}2%
            {]|}{\ensuremath{]\hskip -0.1em|}}2%
	    {[]}{\ensuremath{[\hskip -0.1em]}}2%
	    {->}{\ensuremath{\rightarrow}~}2%
	    {==}{\ensuremath{\equiv}~}2%
	    {>=}{\ensuremath{\geq}~}2%
	    {<=}{\ensuremath{\leq}~}2%
	    {/\\}{\ensuremath{\land}~}2%
	    {\\/}{\ensuremath{\lor}~}2%
	    {!}{\ensuremath{\lnot}}1%
	    {!=}{\ensuremath{\neq}~}2%
	    {max}{\ensuremath{\uparrow}}1%
	    {min}{\ensuremath{\downarrow}}1,%
   sensitive=f,%
   morecomment=[s]{\{}{\}},%
   morestring=[d]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Gnuplot}
%
% Thanks to \lsthelper{Dr.~Christoph~Giess}{Ch.Giess@gmx.de}{2003/07/15}{} for
% providing this definition.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%%
%% gnuplot definition (c) Christoph Giess
%%
\lst@definelanguage{Gnuplot}%
  {keywords={abs,acos,acosh,arg,asin,asinh,atan,atan2,atanh,besj0,%
       besj1,besy0,besy1,ceil,cos,cosh,erf,erfc,exp,floor,gamma,ibeta,%
       inverf,igamma,imag,invnorm,int,lgamma,log,log10,norm,rand,real,%
       sgn,sin,sinh,sqrt,tan,tanh,column,tm_hour,tm_mday,tm_min,tm_mon,%
       tm_sec,tm_wday,tm_yday,tm_year,valid,cd,call,clear,exit,fit,%
       help,if,load,pause,plot,print,pwd,quit,replot,reread,reset,save,%
       set,show,shell,splot,test,update,angles,arrow,autoscale,border,%
       boxwidth,clabel,clip,cntrparam,contour,data,dgrid3d,dummy,%
       format,function,functions,grid,hidden3d,isosamples,key,keytitle,%
       label,logscale,mapping,offsets,output,parametric,pointsize,%
       polar,rrange,samples,size,style,surface,terminal,tics,time,%
       timefmt,title,trange,urange,variables,view,vrange,xdata,xlabel,%
       xmargin,xrange,xtics,mxtics,mytics,xdtics,xmtics,xzeroaxis,%
       ydata,ylabel,yrange,ytics,ydtics,ymtics,yzeroaxis,zdata,zero,%
       zeroaxis,zlabel,zrange,ztics,zdtics,zmtics,timefm,using,title,%
       with,index,every,thru,smooth},%
   sensitive,%
   comment=[l]\#,%
   morestring=[b]",%
   morestring=[b]',%
  }[keywords,comments,strings]%
%</lang2>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Hansl/Gretl}
%
% Thanks to \lstthanks{Ignacio
% D\'{i}az-Emparanza}{ignacio.diaz-emparanza@ehu.es}{2013/10/24} for providing
% the definition of hansl.  Hansl is the gretl scripting language (see
% \url{http://gretl.sourceforge.net}).
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% http://gretl.sourceforge.net/gretl-help/cmdref.html
%% (c) 2013 Ignacio D\'iaz-Emparanza
%%
\lst@definelanguage{hansl}{%
  % $-variables are internal functions in hansl
  keywordsprefix ={\$},
  morekeywords={ % hansl commands:
    add,adf,anova,append,ar,ar1,%
    arbond,arch,arima,biprobit,boxplot,break,%
    catch,chow,clear,coeffsum,coint,coint2,%
    corr,corrgm,cusum,data,dataset,debug,%
    delete,diff,difftest,discrete,dpanel,dummify,%
    duration,elif,else,end,endif,endloop,%
    eqnprint,equation,estimate,fcast,foreign,fractint,%
    freq,function,garch,genr,gmm,gnuplot,%
    graphpg,hausman,heckit,help,hsk,hurst,%
    if,include,info,intreg,join,kalman,%
    kpss,labels,lad,lags,ldiff,leverage,%
    levinlin,logistic,logit,logs,loop,mahal,%
    makepkg,markers,meantest,mle,modeltab,modprint,%
    modtest,mpols,negbin,nls,normtest,nulldata,%
    ols,omit,open,orthdev,outfile,panel,%
    pca,pergm,poisson,print,printf,probit,%
    pvalue,qlrtest,qqplot,quantreg,quit,rename,%
    reset,restrict,rmplot,run,runs,scatters,%
    sdiff,set,setinfo,setobs,setmiss,shell,%
    smpl,spearman,sprintf,square,sscanf,store,%
    summary,system,tabprint,textplot,tobit,tsls,%
    var,varlist,vartest,vecm,vif,wls,%
    xcorrgm,xtab,scalar,series,matrix,string},%
  morekeywords=[2]{ %  Functions
    abs,acos,acosh,aggregate,argname,%
    asin,asinh,atan,atanh,atof,%
    bessel,BFGSmax,bkfilt,boxcox,bwfilt,%
    cdemean,cdf,cdiv,ceil,cholesky,%
    chowlin,cmult,cnorm,colname,colnames,%
    cols,corr,corrgm,cos,cosh,%
    cov,critical,cum,deseas,det,%
    diag,diagcat,diff,digamma,dnorm,%
    dsort,dummify,eigengen,eigensym,eigsolve,%
    epochday,errmsg,exp,fcstats,fdjac,%
    fft,ffti,filter,firstobs,fixname,%
    floor,fracdiff,gammafun,getenv,getline,%
    ghk,gini,ginv,halton,hdprod,%
    hpfilt,I,imaxc,imaxr,imhof,%
    iminc,iminr,inbundle,infnorm,inlist,%
    int,inv,invcdf,invmills,invpd,%
    irf,irr,isconst,isnan,isnull,%
    isodate,iwishart,kdensity,kfilter,ksimul,%
    ksmooth,kurtosis,lags,lastobs,ldet,%
    ldiff,lincomb,ljungbox,lngamma,log,%
    log10,log2,loess,logistic,lower,%
    lrvar,max,maxc,maxr,mcorr,%
    mcov,mcovg,mean,meanc,meanr,%
    median,mexp,min,minc,minr,%
    missing,misszero,mlag,mnormal,mols,%
    monthlen,movavg,mpols,mrandgen,mread,%
    mreverse,mrls,mshape,msortby,muniform,%
    mwrite,mxtab,nadarwat,nelem,ngetenv,%
    nobs,normal,npv,NRmax,nullspace,%
    obs,obslabel,obsnum,ok,onenorm,%
    ones,orthdev,pdf,pergm,pmax,%
    pmean,pmin,pnobs,polroots,polyfit,%
    princomp,prodc,prodr,psd,psdroot,%
    pshrink,psum,pvalue,pxsum,qform,%
    qnorm,qrdecomp,quadtable,quantile,randgen,%
    randgen1,randint,rank,ranking,rcond,%
    readfile,regsub,remove,replace,resample,%
    round,rownames,rows,sd,sdc,%
    sdiff,selifc,selifr,seq,setnote,%
    simann,sin,sinh,skewness,sort,%
    sortby,sqrt,sscanf,sst,strlen,%
    strncmp,strsplit,strstr,strstrip,strsub,%
    sum,sumall,sumc,sumr,svd,%
    tan,tanh,toepsolv,tolower,toupper,%
    tr,transp,trimr,typestr,uniform,%
    uniq,unvech,upper,urcpval,values,%
    var,varname,varnum,varsimul,vec,%
    vech,weekday,wmean,wsd,wvar,%
    xmax,xmin,xpx,zeromiss,zeros,%
  },%
  sensitive=t,%
  morecomment=[l]{\#},%
  morecomment=[s]{/*}{*/},%
  morestring=[b]{"}}%
\lstalias{gretl}{hansl}
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \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
%%
\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. \lstthanks{Matthias~Bethke}{-}{2003/09/01} helped me out
% and extended the list.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{HTML}%
  {morekeywords={A,ABBR,ACRONYM,ADDRESS,APPLET,AREA,B,BASE,BASEFONT,%
      BDO,BIG,BLOCKQUOTE,BODY,BR,BUTTON,CAPTION,CENTER,CITE,CODE,COL,%
      COLGROUP,DD,DEL,DFN,DIR,DIV,DL,DOCTYPE,DT,EM,FIELDSET,FONT,FORM,%
      FRAME,FRAMESET,HEAD,HR,H1,H2,H3,H4,H5,H6,HTML,I,IFRAME,IMG,INPUT,%
      INS,ISINDEX,KBD,LABEL,LEGEND,LH,LI,LINK,LISTING,MAP,META,MENU,%
      NOFRAMES,NOSCRIPT,OBJECT,OPTGROUP,OPTION,P,PARAM,PLAINTEXT,PRE,%
      OL,Q,S,SAMP,SCRIPT,SELECT,SMALL,SPAN,STRIKE,STRING,STRONG,STYLE,%
      SUB,SUP,TABLE,TBODY,TD,TEXTAREA,TFOOT,TH,THEAD,TITLE,TR,TT,U,UL,%
      VAR,XMP,%
      accesskey,action,align,alink,alt,archive,axis,background,bgcolor,%
      border,cellpadding,cellspacing,charset,checked,cite,class,classid,%
      code,codebase,codetype,color,cols,colspan,content,coords,data,%
      datetime,defer,disabled,dir,event,error,for,frameborder,headers,%
      height,href,hreflang,hspace,http-equiv,id,ismap,label,lang,link,%
      longdesc,marginwidth,marginheight,maxlength,media,method,multiple,%
      name,nohref,noresize,noshade,nowrap,onblur,onchange,onclick,%
      ondblclick,onfocus,onkeydown,onkeypress,onkeyup,onload,onmousedown,%
      profile,readonly,onmousemove,onmouseout,onmouseover,onmouseup,%
      onselect,onunload,rel,rev,rows,rowspan,scheme,scope,scrolling,%
      selected,shape,size,src,standby,style,tabindex,text,title,type,%
      units,usemap,valign,value,valuetype,vlink,vspace,width,xmlns},%
   tag=**[s]<>,%
   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@tagmode\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
%%
\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{Inform}
%
% Thanks to \lstthanks{Jonathan~Sauer}{jonathan.sauer@gmx.de}{2003/11/10}
% for this language definition. \lsthelper{Ulrike Fischer}{-}{2004/04/21}
% {Bug in listings.sty} pointed out that |\lstdefinelanguage| should be
% |\lst@definelanguage|.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Inform definition (c) 2003 Jonathan Sauer
%%
\lst@definelanguage{inform}{%
    % Language keywords
    morekeywords={breakdo,else,false,for,has,hasnt,if,%
                in,indirect,jump,notin,nothing,NULL,objectloop,ofclass,%
                private,property,provides,return,rfalse,rtrue,self,string,%
                switch,to,true,until,while,with,%
                creature,held,multiexcept,multiheld,multiinside,noun,number,%
                scope,topic},%
    %
    % Inform functions
    morekeywords=[2]{box,child,children,font,give,inversion,metaclass,move,%
                new_line,parent,print,print_ret,read,remove,restore,sibling,%
                save,spaces,quit,style,bold,underline,reverse,roman remaining,%
                create,destroy,recreate,copy},%
    %
    % Inform definitions
    morekeywords=[3]{Attribute,Array,Class,Constant,Default,End,Endif,Extend,%
                Global,Ifdef,Iffalse,Ifndef,Ifnot,Iftrue,Include,Object,%
                Property,Verb,Release,Serial,Statusline},%
    %
    % Library attributes
    morekeywords=[4]{absent,animate,clothing,concealed,container,door,edible,%
                enterable,female,general,light,lockable locked,male,moved,%
                neuter,on,open,openable,pluralname,proper,scenery,scored,%
                static,supporter,switchable,talkable,transparent,visited,%
                workflag,worn},%
    %
    % Library properties
    morekeywords=[5]{n_to,s_to,e_to,w_to,ne_to,nw_to,se_to,sw_to,in_to,%
                out_to,u_to,d_to,add_to_scope,after,article,articles,before,%
                cant_go,capacity,daemon,describe,description,door_dir,door_to,%
                each_turn,found_in,grammar,initial,inside_description,invent,%
                life,list_together,name number,orders,parse_name,plural,%
                react_after,react_before,short_name,short_name_indef,time_left,%
                time_out,when_closed,when_open,when_on,when_off,%
                with_key},%
    %
    % Library routines
    morekeywords=[6]{Achieved,AfterRoutines,AllowPushDir,Banner,ChangePlayer,%
                CommonAncestor,DictionaryLookup,GetGNAOfObject,HasLightSource,%
                IndirectlyContains,IsSeeThrough,Locale,LoopOverScope,LTI_Insert,%
                MoveFloatingObjects,NextWord,NextWordStopped,NounDomain,%
                ObjectIsUntouchable OffersLight,ParseToken,PlaceInScope,PlayerTo,%
                PronounNotice,PronounValue,ScopeWithin,SetPronoun,SetTime,%
                StartDaemon,StartTimer,StopDaemon,StopTimer,TestScope,TryNumber,%
                UnsignedCompare,WordAddress,WordInProperty,WordLength,%
                WriteListFrom,YesOrNo},%
    %
    % Library,entry points
    morekeywords=[7]{AfterLife,AfterPrompt,Amusing,BeforeParsing,ChooseObjects,%
                DarkToDark,DeathMessage,GamePostRoutine GamePreRoutine,%
                Initialise,InScope,LookRoutine,NewRoom,ParseNoun,ParseNumber,%
                ParserError,PrintRank,PrintTaskName,PrintVerb,TimePasses,%
                UnknownVerb},%
    %
    % Library constants
    morekeywords=[8]{NEWLINE_BIT,INDENT_BIT,FULLINV_BIT,ENGLISH_BIT,RECURSE_BIT,%
                ALWAYS_BIT,TERSE_BIT,PARTINV_BIT,DEFART_BIT,WORKFLAG_BIT,%
                ISARE_BIT,CONCEAL_BIT},%
    %
    % Library,meta actions
    morekeywords=[9]{Pronouns,Quit,Restart,Restore,Save,Verify,ScriptOn,ScriptOff,%
                NotifyOn,NotifyOff,Places,Objects,Score,FullScore,Version,LMode1,%
                LMode2,Lmode3},%
    %
    % Library,main actions
    morekeywords=[10]{Close,Disrobe,Drop,Eat,Empty,EmptyT,Enter,Examine,Exit,GetOff,%
                Give,Go,GoIn,Insert,Inv,InvTall,InvWide,Lock,Look,Open,PutOn,Remove,%
                Search,Show,SwitchOff,SwitchOn,Take,Transfer,Unlock VagueGo,%
                Wear},%
    %
    % Library,stub actions
    morekeywords=[11]{Answer,Ask,AskFor,Attack,Blow,Burn,Buy,Climb,Consult,Cut,Dig,%
                Drink,Fill,Jump,JumpOver,Kiss,Listen,LookUnder,Mild,No,Pray,Pull,%
                Push,PushDir,Rub,Set,SetTo,Sing,Sleep,Smell,,Sleep,Smell,Sorry,%
                Squeeze,Strong,Swim,Swing,Taste,Tell,Think,ThrowAt,Tie,Touch,Turn,%
                Wait,Wake,WakeOther,Wave,WaveHands,Yes},%
    %
    otherkeywords={->,-->},%
    sensitive=false,%
    morestring=[d]{"},%
    morecomment=[l]{!}%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Java and other JVM based languages}
%
% \lstthanks{Robert~Wenner}{robert.wenner@gmx.de}{2003/03/27} sent in the
% first of the following two definitions.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% AspectJ definition (c) Robert Wenner
%%
\lst@definelanguage[AspectJ]{Java}[]{Java}%
  {morekeywords={%
      adviceexecution,after,args,around,aspect,aspectOf,before,%
      call,cflow,cflowbelow,%
% declare error,declare parents,declare precedence,
% declare soft,declare warning,
      execution,get,handler,if,initialization,issingleton,pointcut,%
      percflow,percflowbelow,perthis,pertarget,preinitialization,%
      privileged,proceed,returning,set,staticinitialization,strictfp,%
      target,this,thisEnclosingJoinPoint,thisJoinPoint,throwing,%
      within,withincode},%
   MoreSelectCharTable=%
     \lst@DefSaveDef{`.}\lst@umdot{\lst@umdot\global\let\lst@derefop\@empty}%
     \ifx\lst@derefinstalled\@empty\else
        \global\let\lst@derefinstalled\@empty
\lst@AddToHook{Output}%
{\lst@ifkeywords
    \ifx\lst@derefop\@empty
       \global\let\lst@derefop\relax
       \ifx\lst@thestyle\lst@gkeywords@sty
          \ifx\lst@currstyle\relax
             \let\lst@thestyle\lst@identifierstyle
          \else
             \let\lst@thestyle\lst@currstyle
          \fi
       \fi
    \fi
 \fi}
\lst@AddToHook{BOL}{\global\let\lst@derefop\relax}%
\lst@AddTo\lst@ProcessSpace{\global\let\lst@derefop\relax}%
     \fi
  }%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
% 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
%
% \lstthanks{Martine~Gautier}{Martine.Gautier@loria.fr}{2004/03/30} made the
% following contribution.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% ByteCodeJava definition (c) 2004 Martine Gautier
%%
\lst@definelanguage{JVMIS}%
  {morekeywords={aaload,astore,aconst_null,aload,aload_0,aload_1,%
      aload_2,aload_3,anewarray,areturn,arraylength,astore,astore_0,%
      astore_1,astore_2,astore_3,athrow,baload,bastore,bipush,caload,%
      castore,checkcast,d2f,d2i,d2l,dadd,daload,dastore,dcmpg,dcmpl,%
      dconst_0,dconst_1,ddiv,dload,dload_0,dload_1,dload_2,dload_3,%
      dmul,dneg,drem,dreturn,dstore,dstore_0,dstore_1,dstore_2,%
      dstore_3,dsub,dup,dup_x1,dup_x2,dup2,dup2_x1,dup2_x2,f2d,%
      f2i,f2l,fadd,faload,fastore,fcmpg,fcmpl,fconst_0,fconst_1,%
      fconst_2,fdiv,fload,fload_0,fload_1,fload_2,fload_3,fmul,%
      fneg,frem,freturn,fstore,fstore_0,fstore_1,fstore_2,fstore_3,%
      fsub,getfield,getstatic,goto,goto_w,i2b,i2c,i2d,i2f,i2l,i2s,%
      iadd,iaload,iand,iastore,iconst_0,iconst_1,iconst_2,iconst_3,%
      iconst_4,iconst_5,idiv,if_acmpeq,if_acmpne,if_icmpeq,if_icmpne,%
      if_icmplt,if_cmpge,if_cmpgt,if_cmple,ifeq,ifne,iflt,ifge,ifgt,%
      ifle,ifnonnull,ifnull,iinc,iload,iload_0,iload_1,iload_2,%
      iload_3,imul,ineg,instanceof,invokeinterface,invokespecial,%
      invokestatic,invokevirtual,ior,irem,ireturn,ishl,ishr,istore,%
      istore_0,istore_1,istore_2,istore_3,isub,iushr,ixor,jsr,jsr_w,%
      l2d,l2f,l2i,ladd,laload,land,lastore,lcmp,lconst_0,lconst_1,%
      ldc,ldc_w,ldc2_w,ldiv,lload,lload_0,lload_1,lload_2,lload_3,%
      lmul,lneg,lookupswitch,lor,lrem,lreturn,lshl,lshr,lstore,%
      lstore_0,lstore_1,lstore_2,lstore_3,lsub,lushr,lxor,%
      monitorenter,monitorexit,multianewarray,new,newarray,nop,pop,%
      pop2,putfield,putstatic,ret,return,saload,sastore,sipush,swap,%
      tableswitch,wide,limit,locals,stack},%
  }[keywords]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
%
% \subsubsection{Scala}
%
% \lstthanks{Bastian Germann}{bastian.germann@nordakademie.de}{2013/10/19}
% asked to include the Scala definition provided by Frank Teubler
% (2009). Here it is:
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Scala}%
  {morekeywords={abstract,case,catch,class,def,%
    do,else,extends,false,final,finally,%
    for,if,implicit,import,lazy,match,mixin,%
    new,null,object,override,package,%
    private,protected,requires,return,sealed,%
    super,this,trait,true,try,%
    type,val,var,while,with,yield},%+
%	otherkeywords={_,:,=,=>,<<:,<\%,>:,\#,@},%
	otherkeywords={=,=>,<-,<\%,<:,>:,\#,@},%
   sensitive,%
   morecomment=[l]//,%
   morecomment=[n]{/*}{*/},%
   morestring=[b]",%
   morestring=[b]',%
   morestring=[b]""",%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \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]',%
   morestring=[d]`%
  }[keywords,comments,strings]%
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \lsthelper{Herbert Voss}{Herbert.Voss@alumni.TU-Berlin.de}{2002/10/28}
% {[Fwd: Re: Probleme mit Paket listings bei ksh]} suggested to add the
% string delimiter |`|.
% \endgroup
%
%
% \subsection{Lingo}
%
% Thanks to \lstthanks{Mark Schade}{-}{2006/07/26} for this language definition.
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Lingo}
  {morekeywords={abort,after,and,before,do,down,halt,me,new,not,of,%
      on,or,otherwise,pass,put,result,return,set,tell,the,then,to,with,%
      repeat,while,case,if,else,true,false,global,property,\_global,\_key,%
      \_mouse,\_movie,\_player,\_sound,\_system,abbr,abbrev,abbreviated,abs,%
      actionsenabled,activateapplication,activatewindow,active3drenderer,%
      activecastlib,activewindow,actorlist,add,addat,addbackdrop,addcamera,%
      addchild,addmodifier,addoverlay,addprop,addtoworld,addvertex,alert,%
      alerthook,alignment,allowcustomcaching,allowgraphicmenu,allowsavelocal,%
      allowtransportcontrol,allowvolumecontrol,allowzooming,alphathreshold,%
      ambient,ambientcolor,ancestor,angle,anglebetween,animationenabled,%
      antialias,antialiasthreshold,append,applicationname,applicationpath,%
      appminimize,atan,attenuation,attributevalue,auto,autoblend,automask,%
      autotab,axisangle,back,backcolor,backdrop,backgroundcolor,backspace,%
      beep,beepon,beginrecording,beginsprite,beveldepth,beveltype,bgcolor,%
      bias,bitand,bitmap,bitmapsizes,bitnot,bitor,bitrate,bitspersample,%
      bitxor,blend,blendconstant,blendconstantlist,blendfactor,blendfunction,%
      blendfunctionlist,blendlevel,blendrange,blendsource,blendsourcelist,%
      blendtime,bone,bonesplayer,border,both,bottom,bottomcap,bottomradius,%
      bottomspacing,boundary,boundingsphere,box,boxdropshadow,boxtype,%
      breakconnection,breakloop,brightness,broadcastprops,browsername,%
      buffersize,build,buttonsenabled,buttonstyle,buttontype,bytesstreamed,%
      boolean,cachedocverify,cachesize,call,callancestor,camera,cameracount,%
      cameraposition,camerarotation,cancelidleload,castlib,castlibnum,%
      castmemberlist,center,centerregpoint,centerstage,changearea,channelcount,%
      char,characterset,charpostoloc,chars,charspacing,chartonum,%
      checkboxaccess,checkboxtype,checkmark,checknetmessages,child,chunksize,%
      clearatrender,clearcache,clearerror,clearframe,clearglobals,clearvalue,%
      clickloc,clickmode,clickon,clone,clonedeep,clonemodelfromcastmember,%
      clonemotionfromcastmember,close,closed,closewindow,closexlib,collision,%
      collisiondata,collisionnormal,color,world,colorbuffer,colorbufferdepth,%
      colordepth,colorlist,colorrange,colors,colorsteps,commanddown,comments,%
      compressed,connecttonetserver,constrainh,constraint,constrainv,,%
      continue,controldown,controller,copypixels,copyrightinfo,copyto,%
      copytoclipboard,cos,count,cpuhogticks,creaseangle,creases,[contains],%
      createfolder,createmask,creatematte,creationdate,creator,crop,cross,%
      crossproduct,cuepassed,cuepointnames,cuepointtimes,currentloopstate,%
      currentspritenum,currenttime,cursor,cursorsize,curve,cylinder,ate,day,%
      deactivateapplication,deactivatewindow,debug,debugplaybackenabled,%
      decaymode,defaultrect,defaultrectmode,delay,delete,deleteall,deleteat,%
      deletecamera,deletefolder,deleteframe,deletegroup,deletelight,%
      deletemodel,deletemodelresource,deletemotion,deleteone,deleteprop,%
      deleteshader,deletetexture,deletevertex,density,depth,depthbufferdepth,%
      desktoprectlist,diffuse,diffusecolor,diffuselightmap,%
      digitalvideotimescale,digitalvideotype,direction,directionalcolor,%
      directionalpreset,directtostage,disableimagingtransformation,displayface,%
      displaymode,distanceto,distribution,dither,done,doneparsing,dot,%
      dotproduct,doubleclick,downloadnetthing,drag,draw,drawrect,dropshadow,%
      duplicate,duplicateframe,duration,editable,editshortcutsenabled,%
      elapsedtime,emissive,emitter,empty,emulatemultibuttonmouse,enabled,%
      enablehotspot,end,endangle,endcolor,endframe,endrecording,endsprite,%
      endtime,enter,enterframe,environment,erase,error,eventpassmode,%
      exchange,exists,exit,exitframe,exitlock,exp,externalevent,%
      externalparamcount,externalparamname,externalparamvalue,extractalpha,%
      extrude3d,face,fadein,fadeout,fadeto,far,field,fieldofview,filename,%
      fill,fillcolor,fillcycles,filldirection,filled,fillmode,filloffset,%
      fillscale,findempty,findlabel,findpos,findposnear,finishidleload,%
      firstindent,fixedlinespace,fixedrate,fixstagesize,flashrect,flashtostage,%
      flat,fliph,flipv,float,floatp,floatprecision,flush,flushinputevents,%
      fog,folderchar,font,fontsize,fontstyle,forecolor,forget,frame,%
      framecount,framelabel,framepalette,framerate,frameready,framescript,%
      framesound1,framesound2,framestohms,frametempo,frametransition,freeblock,%
      freebytes,fromcastmember,fromimageobject,front,frontwindow,%
      generatenormals,getaprop,getat,getbehaviordescription,getbehaviortooltip,%
      getboneid,geterror,geterrorstring,gethardwareinfo,gethotspotrect,getlast,%
      getlatestnetid,getnetaddresscookie,getneterrorstring,getnetmessage,%
      getnetoutgoingbytes,getnettext,getnormalized,getnthfilenameinfolder,%
      getnumberwaitingnetmessages,getone,getpeerconnectionlist,getpixel,%
      getplaylist,getpos,getpref,getprop,getpropat,getpropertydescriptionlist,%
      getrendererservices,getstreamstatus,gettemppath,getworldtransform,globals,%
      glossmap,go,gotoframe,gotonetmovie,gotonetpage,gradienttype,gravity,%
      group,handler,handlers,height,heightvertices,high,highlightpercentage,%
      highlightstrength,hilite,hither,hittest,hmstoframes,hold,hotspot,html,%
      hyperlink,hyperlinkclicked,hyperlinkrange,hyperlinks,hyperlinkstate,%
      id3tags,identity,idle,idlehandlerperiod,idleloaddone,idleloadmode,%
      idleloadperiod,idleloadtag,idlereadchunksize,ilk,image,imagecompression,%
      imageenabled,imagequality,immovable,importfileinto,inflate,ink,inker,%
      inlineimeenabled,insertbackdrop,insertframe,insertoverlay,inside,%
      installmenu,instance,integer,integerp,interface,interpolate,%
      interpolateto,intersect,index,interval,inverse,invert,invertmask,%
      isbusy,isinworld,isoktoattach,ispastcuepoint,item,itemdelimiter,kerning,%
      kerningthreshold,key,keyboardfocussprite,keycode,keydown,keydownscript,%
      keyframeplayer,keypressed,keyup,keyupscript,label,labellist,last,%
      lastchannel,lastclick,lastevent,lastframe,lastkey,lastroll,left,%
      leftindent,length,lengthvertices,level,lifetime,light,line,linearlist,%
      linecolor,linecount,linedirection,lineheight,lineoffset,linepostolocv,%
      linesize,linkas,linked,list,listp,loaded,loadfile,loc,loch,locked,%
      locktranslation,loctocharpos,locv,locvtolinepos,locz,lod,log,long,%
      loop,loopcount,loopendtime,loopsremaining,loopstarttime,machinetype,%
      magnitude,map,mapImageToStage,mapmembertostage,mapstagetomember,margin,%
      marker,markerlist,mask,max,maxinteger,maxspeed,mci,media,mediaready,%
      member,membernum,members,memorysize,menu,mesh,meshdeform,milliseconds,%
      min,minspeed,modal,mode,model,modela,modelb,modelresource,%
      modelsunderloc,modelsunderray,modelunderloc,modified,modifiedby,%
      modifieddate,modifier,modifiers,month,mostrecentcuepoint,motion,%
      mousechar,mousedown,mousedownscript,mouseenter,mouseh,mouseitem,%
      mouseleave,mouselevel,mouseline,mouseloc,mousemember,mouseoverbutton,%
      mouseup,mouseupoutside,mouseupscript,mousev,mousewithin,mouseword,move,%
      moveablesprite,movetoback,movetofront,movevertex,movevertexhandle,%
      movewindow,movie,movieaboutinfo,moviecopyrightinfo,moviefilefreesize,%
      moviefilesize,moviefileversion,movieimagecompression,movieimagequality,%
      moviename,moviepath,movierate,movietime,moviextralist,mpeglayer,%
      multiply,multisound,name,near,nearfiltering,neighbor,netabort,netdone,%
      neterror,netlastmoddate,netmime,netpresent,netstatus,nettextresult,%
      netthrottleticks,newcamera,newcurve,newgroup,newlight,newmesh,newmodel,%
      newmodelresource,newmotion,newshader,newtexture,next,none,normalize,%
      normallist,normals,nothing,notify,nudge,number,numchannels,%
      numparticles,numsegments,numtochar,objectp,offset,open,openresfile,%
      openwindow,openxlib,optiondown,organizationname,originalfont,originh,%
      originmode,originpoint,originv,orthoheight,overlay,pageheight,palette,%
      palettemapping,paletteref,paletteindex,pan,paragraph,param,paramcount,%
      parent,parsestring,particle,pasteclipboardinto,path,pathname,%
      pathstrength,pattern,pause,pausedatstart,pausestate,percentplayed,%
      percentstreamed,period,perpendicularto,persistent,pi,picture,picturep,%
      plane,platform,play,playbackmode,playfile,playing,playlist,playnext,%
      playrate,point,pointat,pointatorientation,pointinhyperlink,%
      pointofcontact,pointtochar,pointtoitem,pointtoline,pointtoparagraph,%
      pointtoword,position,positionreset,posterframe,postnettext,power,%
      preferred3drenderer,preload,preloadbuffer,preloadeventabort,preloadmember,%
      preloadmode,preloadmovie,preloadnetthing,preloadram,preloadtime,%
      premultiply,prepareframe,preparemovie,prerotate,prescale,pretranslate,%
      previous,primitives,printfrom,productversion,projection,projectionangle,%
      propList,proxyserver,pttohotspotid,puppet,puppetpalette,puppetsound,%
      puppetsprite,puppettempo,puppettransition,purgepriority,%
      qtregisteraccesskey,qtunregisteraccesskey,quad,quality,queue,quit,quote,%
      radius,ramneeded,random,randomseed,randomvector,rateshift,rawnew,read,%
      readvalue,recordfont,rect,ref,reflectionmap,reflectivity,region,%
      registerforevent,registerscript,regpoint,regpointvertex,removebackdrop,%
      removefromworld,removelast,removemodifier,removeoverlay,rename,renderer,%
      rendererdevicelist,renderformat,renderstyle,resetworld,resizewindow,%
      resolution,resolve,resolvea,resolveb,resource,restart,resume,%
      reverttoworlddefaults,rewind,rgb,rgba4444,rgba5550,rgba5551,rgba5650,%
      rgba8880,rgba8888,right,rightindent,rightmousedown,rightmouseup,%
      rollover,romanlingo,rootlock,rootnode,rotate,rotation,rotationreset,%
      rtf,runmode,runpropertydialog,safeplayer,samplecount,samplerate,%
      samplesize,save,savedlocal,savemovie,scale,scalemode,score,scorecolor,%
      scoreselection,script,scriptexecutionstyle,scriptinstancelist,scriptlist,%
      scriptnum,scriptsenabled,scripttext,scripttype,scrollbyline,scrollbypage,%
      scrolltop,sds,searchcurrentfolder,searchpath,searchpaths,seconds,%
      selectedtext,selection,selend,selstart,sendallsprites,sendevent,%
      sendnetmessage,sendsprite,serialnumber,setalpha,setaprop,setat,%
      setcollisioncallback,setflashproperty,setnetbufferlimits,%
      setnetmessagehandler,setpixel,setplaylist,setpref,setprop,setscriptlist,%
      settrackenabled,setvariable,shader,shaderlist,shadowpercentage,%
      shadowstrength,shapetype,shiftdown,shininess,shockwave3d,short,%
      showglobals,showlocals,showprops,showresfile,showxlib,shutdown,%
      silhouettes,sin,size,sizerange,skew,sleep,smoothness,sort,sound,%
      soundbusy,soundchannel,sounddevice,sounddevicelist,soundenabled,%
      soundkeepdevice,soundlevel,soundmixmedia,source,sourcerect,space,%
      specular,specularcolor,specularlightmap,sphere,spotangle,spotdecay,%
      sprite,spritenum,spritespacetoworldspace,sqrt,stage,stagebottom,%
      stagecolor,stageleft,stageright,stagetoflash,stagetop,standard,%
      startangle,startframe,startmovie,starttime,starttimer,state,static,%
      status,stepframe,stilldown,stop,stopevent,stopmovie,stoptime,stream,%
      streammode,streamname,streamsize,streamstatus,string,stringp,%
      strokecolor,strokewidth,style,subdivision,sweep,swing,switchcolordepth,%
      symbol,symbolp,systemdate,tab,tabcount,tabs,tan,target,%
      tellstreamstatus,tension,text,texture,texturecoordinatelist,%
      texturecoordinates,texturelayer,texturelist,texturemember,texturemode,%
      texturemodelist,texturerenderformat,texturerepeat,texturerepeatlist,%
      texturetransform,texturetransformlist,texturetype,thumbnail,ticks,tilt,%
      time,timeout,timeouthandler,timeoutkeydown,timeoutlapsed,timeoutlength,%
      timeoutlist,timeoutmouse,timeoutplay,timeoutscript,timer,timescale,%
      title,titlevisible,toon,top,topcap,topradius,topspacing,trace,%
      traceload,tracelogfile,trackcount,trackenabled,tracknextkeytime,%
      tracknextsampletime,trackpreviouskeytime,trackprevioussampletime,%
      trackstarttime,trackstoptime,tracktext,tracktype,trails,transform,%
      transitiontype,translate,triggercallback,trimwhitespace,tunneldepth,%
      tweened,tweenmode,type,[transparent],union,unload,unloadmember,%
      unloadmovie,unregisterallevents,update,updateframe,updatelock,%
      updatemovieenabled,updatestage,url,usealpha,usediffusewithtexture,%
      usefastquads,usehypertextstyles,uselineoffset,userdata,username,value,%
      vector,version,vertex,vertexlist,vertices,video,videoforwindowspresent,%
      viewh,viewpoint,viewscale,viewv,visibility,visible,void,voidp,volume,%
      volumeinfo,wait,waitfornetconnection,warpmode,width,widthvertices,wind,%
      window,windowlist,windowpresent,windowtype,word,wordwrap,world,%
      worldposition,worldspacetospritespace,worldtransform,wraptransform,%
      wraptransformlist,write,writevalue,,xaxis,xtra,xtralist,xtras,,yaxis,%
      year,yon,zaxis,zoombox,zoomwindow,repeat,Conditional,Boolean,TypeDef,%
      Statement,Operator,String,Comment,Identifier,Special,x,y,z}
   sensitive=false,
   morecomment=[l]{--},
   morestring=[b]",
  }[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{LLVM}
%\label{sec:llvm}
%
% LLVM provides a collection of modular and reusable compiler and toolchain
% technologies, all further information can be found at its home page
% \url{http://llvm.org/}. \lstthanks{Scott Pakin}{scott@pakin.org}{2013/07/31} provided a
% language definition for the LLVM intermediate presentation according to
% \url{http://llvm.org/docs/}.\footnote{In this section `I' is Scott
% Pakin.} The language provides
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{LLVM}{%
  morekeywords={%
%    \end{macrocode}
% \begin{itemize}
% \item Instructions
%    \begin{macrocode}
    ret,br,switch,indirectbr,invoke,resume,unreachable,%
    add,fadd,sub,fsub,mul,fmul,udiv,sdiv,fdiv,urem,srem,frem,%
    shl,lshr,ashr,and,or,xor,%
    extractelement,insertelement,shufflevector,%
    extractvalue,insertvalue,%
    alloca,load,store,fence,cmpxchg,atomicrmw,getelementptr,%
    trunc,zext,sext,fptrunc,fpext,fptoui,fptosi,uitofp,sitofp,ptrtoint,%
    inttoptr,bitcast,to,%
    icmp,fcmp,phi,select,call,va_arg,landingpad,%
%    \end{macrocode}
% \item Atomic operations -- some duplication with the above
%    \begin{macrocode}
    xchg,add,sub,and,nand,or,xor,max,min,umax,umin,%
%    \end{macrocode}
% \item Comparisons
%    \begin{macrocode}
    eq,ne,ugt,uge,ult,ule,sgt,sge,slt,sle,%
    false,oeq,ogt,oge,olt,ole,one,ord,ueq,ugt,uge,ult,ule,une,uno,true,%
%    \end{macrocode}
% \item Linkage types
%    \begin{macrocode}
    private,linker_private,linker_private_weak,linker_private_weak_def_auto,%
    internal,available_externally,linkonce,common,weak,appending,extern_weak,%
    linkonce_odr,weak_odr,external,dllimport,dllexport,%
%    \end{macrocode}
% \item Function headers
%    \begin{macrocode}
    define,declare,%
%    \end{macrocode}
% \item Parameter attributes
%    \begin{macrocode}
    zeroext,signext,inreg,byval,sret,noalias,nocapture,next,%
%    \end{macrocode}
% \item Garbage collector names
%    \begin{macrocode}
    gc,%
%    \end{macrocode}
% \item Function attributes
%    \begin{macrocode}
    address_safety,alignstack,alwaysinline,nonlazybind,inlinehint,naked,%
    noimplicitfloat,noinline,noredzone,noreturn,nounwind,optsize,readnone,%
    readonly,returns_twice,ssp,sspreq,uwtable,%
%    \end{macrocode}
% \item Module-level inline assembly
%    \begin{macrocode}
    module,asm,%
%    \end{macrocode}
% \item Data layout
%    \begin{macrocode}
    target,datalayout,%
%    \end{macrocode}
% \item Inline assembler expressions
%    \begin{macrocode}
    sideeffect,alignstack,%
%    \end{macrocode}
% \item Other keywords -- I'm probably missing some here.
%    \begin{macrocode}
    nuw,nsw,exact,inbounds,unnamed_addr},%
  morekeywords=[2]{%
%    \end{macrocode}
% \item Types
%    \begin{macrocode}
    i1,i2,i4,i8,i16,i32,i64,i128,i256,i512,i1024,% <-- Most common integers
    half,float,double,x86_fp80,fp128,ppc_fp128,x86mmx,%
    void,label,metadata},%
  alsoletter=.,%
  sensitive=false,%
  morecomment=[l];,%
  morestring=[b]"%
}
%    \end{macrocode}
% \end{itemize}
%    \begin{macrocode}
%</lang3>
%    \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{Lua}
%
% \lstthanks{Stephan Hennig}{sh2d@arcor.de}{2013/06/14} contributed the Lua
% keywords.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
% We begin with the keywords for Lua 5.0:
%    \begin{macrocode}
%%
%% Lua definitions (c) 2013 Stephan Hennig
%%
\lst@definelanguage[5.0]{Lua}{%
%    \end{macrocode}
% To enable highlighting of library keywords, the dot needs to be a
% letter.
%    \begin{macrocode}
  alsoletter={.},%
%    \end{macrocode}
% The language definition knows
% \begin{itemize}
%   \item language keywords
%    \begin{macrocode}
  morekeywords=[1]{%
    and, break, do, else, elseif, end, false, for, function, if, in,%
    local, nil, not, or, repeat, return, then, true, until, while,%
  },%
%    \end{macrocode}
%   \item the standard library identifiers
%    \begin{macrocode}
  morekeywords=[2]{%
%    \end{macrocode}
%   \begin{itemize}
%     \item coming from the base library
%    \begin{macrocode}
    _G, _LOADED, _REQUIREDNAME, _VERSION, LUA_PATH,%
    assert, collectgarbage, dofile, error, gcinfo, getfenv,%
    getmetatable, ipairs, loadfile, loadlib, loadstring, newproxy,%
    next, pairs, pcall, print, rawequal, rawget, rawset, require,%
    setfenv, setmetatable, tonumber, tostring, type, unpack, xpcall,%
%    \end{macrocode}
%     \item coming from the coroutine library
%    \begin{macrocode}
    coroutine, coroutine.create, coroutine.resume,%
    coroutine.status, coroutine.wrap, coroutine.yield,%
%    \end{macrocode}
%     \item the debug library
%    \begin{macrocode}
    _TRACEBACK, debug, debug.debug, debug.gethook, debug.getinfo,%
    debug.getlocal, debug.getupvalue, debug.sethook, debug.setlocal,%
    debug.setupvalue,debug.traceback,%
%    \end{macrocode}
%     \item the io library
%    \begin{macrocode}
    io, io.close, io.flush, io.input, io.lines, io.open, io.output,%
    io.popen, io.read, io.stderr, io.stdin, io.stdout, io.tmpfile,%
    io.type, io.write,%
%    \end{macrocode}
%     \item the mathematical library
%    \begin{macrocode}
    __pow, math, math.abs, math.acos, math.asin, math.atan, math.atan2,%
    math.ceil, math.cos, math.deg, math.exp, math.floor, math.frexp,%
    math.ldexp, math.log, math.log10, math.max, math.min, math.mod,%
    math.pi, math.pow, math.rad, math.random, math.randomseed, math.sin,%
    math.sqrt, math.tan,%
%    \end{macrocode}
%     \item the os library
%    \begin{macrocode}
    os, os.clock, os.date, os.difftime, os.execute, os.exit, os.getenv,%
    os.remove, os.rename, os.setlocale, os.time, os.tmpname,%
%    \end{macrocode}
%     \item the string library
%    \begin{macrocode}
    string, string.byte, string.char, string.dump, string.find,%
    string.format, string.gfind, string.gsub, string.len, string.lower,%
    string.rep, string.sub, string.upper,%
%    \end{macrocode}
%     \item the table library
%    \begin{macrocode}
    table, table.concat, table.foreach, table.foreachi, table.getn,%
    table.insert, table.remove, table.setn, table.sort,%
  },%
%    \end{macrocode}
%   \end{itemize}
% \end{itemize}
% and some additional identifiers
%    \begin{macrocode}
  morekeywords=[2]{%
    _PROMPT, _PROMPT2, arg,%
  },%
%    \end{macrocode}
% These are the common language settings
%    \begin{macrocode}
  sensitive=true,%
  % single line comments
  morecomment=[l]{--},%
  % multi line comments
  morecomment=[s]{--[[}{]]},%
  % backslash escaped strings
  morestring=[b]",%
  morestring=[b]',%
  % multi line strings
  morestring=[s]{[[}{]]},%
}[keywords,comments,strings]%
%    \end{macrocode}
% \endgroup
% And here are the new definitions for Lua 5.1:
% \begingroup
%    \begin{macrocode}
\lst@definelanguage[5.1]{Lua}[5.0]{Lua}{%
%    \end{macrocode}
%  There are some deletions
%    \begin{macrocode}
  deletekeywords=[2]{%
%    \end{macrocode}
% concerning
% \begin{itemize}
% \item the base library
%    \begin{macrocode}
    _LOADED, _REQUIREDNAME, LUA_PATH, gcinfo, loadlib,%
%    \end{macrocode}
% \item the debug library
%    \begin{macrocode}
    _TRACEBACK,%
%    \end{macrocode}
% \item the mathematical library
%    \begin{macrocode}
    __pow, math.mod,%
%    \end{macrocode}
% \item the string library
%    \begin{macrocode}
    string.gfind,%
%    \end{macrocode}
% \item the table library
%    \begin{macrocode}
    table.foreach, table.foreachi, table.getn, table.setn,%
  },%
%    \end{macrocode}
% \end{itemize}
%  and some new identifiers in standard libraries like
%    \begin{macrocode}
  morekeywords=[2]{%
%    \end{macrocode}
% \begin{itemize}
% \item the base library
%    \begin{macrocode}
    load, select,%
%    \end{macrocode}
%   \item coroutine library
%    \begin{macrocode}
    coroutine.running,%
%    \end{macrocode}
%   \item debug library
%    \begin{macrocode}
    debug.getfenv, debug.getmetatable, debug.getregistry, debug.setfenv,%
    debug.setmetatable,%
%    \end{macrocode}
%   \item the mathematical library
%    \begin{macrocode}
    math.cosh, math.fmod, math.huge, math.modf, math.sinh, math.tanh,%
%    \end{macrocode}
%   \item the package library which itself is new in Lua 5.1
%    \begin{macrocode}
    module, package, package.config, package.cpath, package.loaded,%
    package.loaders, package.loadlib, package.path, package.preload,%
    package.seeall,%
%    \end{macrocode}
%   \item the string library and
%    \begin{macrocode}
    string.gmatch, string.match, string.reverse,%
%    \end{macrocode}
%   \item the table library
%    \begin{macrocode}
    table.maxn,%
  },%
%    \end{macrocode}
% \end{itemize}
% In Lua 5.1 long bracket comments were introduced also
%    \begin{macrocode}
  morecomment=[s]{--[=[}{]=]},%
  morecomment=[s]{--[==[}{]==]},%
  morecomment=[s]{--[===[}{]===]},%
  morecomment=[s]{--[====[}{]====]},%
  morecomment=[s]{--[=====[}{]=====]},%
  morecomment=[s]{--[======[}{]======]},%
  morecomment=[s]{--[=======[}{]=======]},%
  morecomment=[s]{--[========[}{]========]},%
  morecomment=[s]{--[=========[}{]=========]},%
  morecomment=[s]{--[==========[}{]==========]},%
%    \end{macrocode}
% as well as long bracket strings
%    \begin{macrocode}
  morestring=[s]{[=[}{]=]},%
  morestring=[s]{[==[}{]==]},%
  morestring=[s]{[===[}{]===]},%
  morestring=[s]{[====[}{]====]},%
  morestring=[s]{[=====[}{]=====]},%
  morestring=[s]{[======[}{]======]},%
  morestring=[s]{[=======[}{]=======]},%
  morestring=[s]{[========[}{]========]},%
  morestring=[s]{[=========[}{]=========]},%
  morestring=[s]{[==========[}{]==========]},%
}[keywords,comments,strings]%
%    \end{macrocode}
% \endgroup
%
% Lua 5.2 again has some changed features. These are
% \begingroup
%    \begin{macrocode}
\lst@definelanguage[5.2]{Lua}[5.1]{Lua}{%
%    \end{macrocode}
% \begin{itemize}
%   \item new language keywords
%    \begin{macrocode}
  morekeywords=[1]{%
    goto,%
  },%
%    \end{macrocode}
%   \item deleted identifiers from the standard libraries like
%    \begin{macrocode}
  deletekeywords=[2]{%
%    \end{macrocode}
%   \begin{itemize}
%     \item the base library
%    \begin{macrocode}
    getfenv, loadstring, module, newproxy, setfenv, unpack,%
%    \end{macrocode}
%     \item the debug library
%    \begin{macrocode}
    debug.getfenv, debug.setfenv,%
%    \end{macrocode}
%     \item the mathematical library
%    \begin{macrocode}
    math.log10,%
%    \end{macrocode}
%     \item the package library and
%    \begin{macrocode}
    package.loaders, package.seeall,%
%    \end{macrocode}
%     \item the table library
%    \begin{macrocode}
    table.maxn,%
  },%
%    \end{macrocode}
%   \end{itemize}
% \end{itemize}
% Again there are some new identifiers in the standard libraries
%    \begin{macrocode}
  morekeywords=[2]{%
%    \end{macrocode}
% like
% \begin{itemize}
% \item the base library
%    \begin{macrocode}
    rawlen,%
%    \end{macrocode}
% \item the bit library
%    \begin{macrocode}
    bit32, bit32.arshift, bit32.band, bit32.bnot, bit32.bor,%
    bit32.btest, bit32.bxor, bit32.extract, bit32.lrotate,%
    bit32.lshift, bit32.replace, bit32.rrotate, bit32.rshift,%
%    \end{macrocode}
%   \item the debug library
%    \begin{macrocode}
    debug.getuservalue, debug.setuservalue, debug.upvalueid,%
    debug.upvaluejoin,%
%    \end{macrocode}
%   \item the package library
%    \begin{macrocode}
    package.searchers, package.searchpath,%
%    \end{macrocode}
%   \item the table library
%    \begin{macrocode}
    table.pack, table.unpack,%
  },%
%    \end{macrocode}
%   \end{itemize}
% There is a new additional identifier
%    \begin{macrocode}
  morekeywords=[2]{%
    _ENV,%
  },%
%    \end{macrocode}
% and labels are also new in Lua 5.2
%    \begin{macrocode}
  moredelim=[s][keywordstyle3]{::}{::},%
}[keywords,comments,strings]%
%    \end{macrocode}
% \endgroup
%
% In January 2015 Lua 5.3 was released, \lstthanks{Stephan
% Hennig}{sh2d@posteo.net}{2015/03/28} again contributed the Lua
% keywords.
% \begingroup
%    \begin{macrocode}
\lst@definelanguage[5.3]{Lua}[5.2]{Lua}{%
%    \end{macrocode}
% \begin{itemize}
%   \item some libraries are deprecated, so the following identifiers
%   are deleted
%    \begin{macrocode}
  deletekeywords=[2]{%
%    \end{macrocode}
%   \begin{itemize}
%     \item the |bit32| library
%    \begin{macrocode}
    bit32, bit32.arshift, bit32.band, bit32.bnot, bit32.bor,%
    bit32.btest, bit32.bxor, bit32.extract, bit32.lrotate,%
    bit32.lshift, bit32.replace, bit32.rrotate, bit32.rshift,%
%    \end{macrocode}
%     \item the mathematical library
%    \begin{macrocode}
    math.atan2, math.cosh, math.frexp, math.ldexp, math.pow,%
    math.sinh, math.tanh,%
  },%
%    \end{macrocode}
%   \end{itemize}
% \end{itemize}
% Again there are some new identifiers in the standard libraries
%    \begin{macrocode}
  morekeywords=[2]{%
%    \end{macrocode}
% like
% \begin{itemize}
% \item the coroutine library
%    \begin{macrocode}
    coroutine.isyieldable,%
%    \end{macrocode}
%   \item the mathematical library
%    \begin{macrocode}
    math.maxinteger, math.mininteger, math.tointeger, math.type,%
    math.ult,%
%    \end{macrocode}
%   \item the string library
%    \begin{macrocode}
    string.pack, string.packsize, string.unpack,%
%    \end{macrocode}
%   \item the table library
%    \begin{macrocode}
    table.move,%
%    \end{macrocode}
%   \item the utf-8 library
%    \begin{macrocode}
    utf8, utf8.char, utf8.charpattern, utf8.codepoint, utf8.codes,%
    utf8.len, utf8.offset,%
  },%
}[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \end{macrocode}
% \endgroup
%
% \begingroup
% Stephan Hennig also supplied a definition of a style for printing Lua code:
%    \begin{macrocode}
%<*lua-prf>
%    \end{macrocode}
%    \begin{macrocode}
\usepackage[rgb, x11names]{xcolor}
\lstdefinestyle{Lua}{%
  language=[5.2]Lua,
  basicstyle=\ttfamily,
  columns=spaceflexible,
  keywordstyle=\bfseries\color{Blue4},% language keywords
  keywordstyle=[2]\bfseries\color{RoyalBlue3},% std. library identifiers
  keywordstyle=[3]\bfseries\color{Purple3},% labels
  stringstyle=\bfseries\color{Coral4},% strings
  commentstyle=\itshape\color{Green4},% comments
}
%    \end{macrocode}
% This code is provided in the file |listings-lua.prf|, see section
% 2.4.1 (Preferences) of the \packagename{listings} documentation.
%    \begin{macrocode}
%</lua-prf>
%    \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
%%
\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 for the 1.0 and 3.0 versions.
% \lstthanks{Oliver~Ruebenkoenig}{-}{2006/07/17} wrote a script to generate
% the lists for the 5.2 version.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage[5.2]{Mathematica}[3.0]{Mathematica}%%
  {morekeywords={Above,AbsoluteOptions,AbsoluteTiming,AccountingForm,%
      AccuracyGoal,Active,ActiveItem,AddOnHelpPath,%
      AdjustmentBox,AdjustmentBoxOptions,After,AiryAiPrime,%
      AlgebraicRulesData,Algebraics,Alias,AlignmentMarker,%
      AllowInlineCells,AllowScriptLevelChange,Analytic,AnimationCycleOffset,%
      AnimationCycleRepetitions,AnimationDirection,AnimationDisplayTime,ApartSquareFree,%
      AppellF1,ArgumentCountQ,ArrayDepth,ArrayPlot,%
      ArrayQ,ArrayRules,AspectRatioFixed,Assuming,%
      Assumptions,AutoDelete,AutoEvaluateEvents,AutoGeneratedPackage,%
      AutoIndent,AutoIndentSpacings,AutoItalicWords,AutoloadPath,%
      AutoOpenNotebooks,AutoOpenPalettes,AutoScroll,AutoSpacing,%
      AutoStyleOptions,Axis,BackgroundTasksSettings,Backsubstitution,%
      Backward,Baseline,Before,BeginDialogPacket,%
      BeginFrontEndInteractionPacket,Below,BezoutMatrix,BinaryFormat,%
      BinaryGet,BinaryRead,BinaryReadList,BinaryWrite,%
      BitAnd,BitNot,BitOr,BitXor,%
      Black,BlankForm,Blue,Boole,%
      Booleans,Bottom,Bounds,Box,%
      BoxBaselineShift,BoxData,BoxDimensions,BoxFormFormatTypes,%
      BoxFrame,BoxMargins,BoxRegion,Brown,%
      Buchberger,Button,ButtonBox,ButtonBoxOptions,%
      ButtonCell,ButtonContents,ButtonData,ButtonEvaluator,%
      ButtonExpandable,ButtonFrame,ButtonFunction,ButtonMargins,%
      ButtonMinHeight,ButtonNote,ButtonNotebook,ButtonSource,%
      ButtonStyle,ButtonStyleMenuListing,ByteOrdering,CallPacket,%
      CarmichaelLambda,Cell,CellAutoOverwrite,CellBaseline,%
      CellBoundingBox,CellBracketOptions,CellContents,CellDingbat,%
      CellEditDuplicate,CellElementsBoundingBox,CellElementSpacings,CellEvaluationDuplicate,%
      CellFrame,CellFrameColor,CellFrameLabelMargins,CellFrameLabels,%
      CellFrameMargins,CellGroup,CellGroupData,CellGrouping,%
      CellGroupingRules,CellHorizontalScrolling,CellLabel,CellLabelAutoDelete,%
      CellLabelMargins,CellLabelPositioning,CellMargins,CellObject,%
      CellOpen,CellPasswords,CellPrint,CellSize,%
      CellStyle,CellTags,CellularAutomaton,Center,%
      CharacterEncoding,CharacterEncodingsPath,CharacteristicPolynomial,CharacterRange,%
      CheckAll,CholeskyDecomposition,Clip,ClipboardNotebook,%
      Closed,ClosingAutoSave,CoefficientArrays,CoefficientDomain,%
      CofactorExpansion,ColonForm,ColorFunctionScaling,ColorRules,%
      ColorSelectorSettings,Column,ColumnAlignments,ColumnLines,%
      ColumnsEqual,ColumnSpacings,ColumnWidths,CommonDefaultFormatTypes,%
      CompileOptimizations,CompletionsListPacket,Complexes,ComplexityFunction,%
      Compose,ComposeSeries,ConfigurationPath,ConjugateTranspose,%
      Connect,ConsoleMessage,ConsoleMessagePacket,ConsolePrint,%
      ContentsBoundingBox,ContextToFileName,ContinuedFraction,ConversionOptions,%
      ConversionRules,ConvertToBitmapPacket,ConvertToPostScript,ConvertToPostScriptPacket,%
      Copyable,CoshIntegral,CounterAssignments,CounterBox,%
      CounterBoxOptions,CounterEvaluator,CounterFunction,CounterIncrements,%
      CounterStyle,CounterStyleMenuListing,CreatePalettePacket,Cross,%
      CurrentlySpeakingPacket,Cyan,CylindricalDecomposition,DampingFactor,%
      DataRange,Debug,DebugTag,Decimal,%
      DedekindEta,DefaultDuplicateCellStyle,DefaultFontProperties,DefaultFormatType,%
      DefaultFormatTypeForStyle,DefaultInlineFormatType,DefaultInputFormatType,
      DefaultNaturalLanguage,%
      DefaultNewCellStyle,DefaultNewInlineCellStyle,DefaultNotebook,DefaultOutputFormatType,%
      DefaultStyleDefinitions,DefaultTextFormatType,DefaultTextInlineFormatType,DefaultValues,%
      DefineExternal,DegreeLexicographic,DegreeReverseLexicographic,Deletable,%
      DeleteContents,DeletionWarning,DelimiterFlashTime,DelimiterMatching,%
      Delimiters,DependentVariables,DiacriticalPositioning,DialogLevel,%
      DifferenceOrder,DigitCharacter,DigitCount,DiracDelta,%
      Direction,DirectoryName,DisableConsolePrintPacket,DiscreteDelta,%
      DisplayAnimation,DisplayEndPacket,DisplayFlushImagePacket,DisplayForm,%
      DisplayPacket,DisplayRules,DisplaySetSizePacket,DisplayString,%
      DivisionFreeRowReduction,DOSTextFormat,DoubleExponential,DoublyInfinite,%
      Down,DragAndDrop,DrawHighlighted,DualLinearProgramming,%
      DumpGet,DumpSave,Edit,Editable,%
      EditButtonSettings,EditCellTagsSettings,EditDefinition,EditIn,%
      Element,EliminationOrder,EllipticExpPrime,EllipticNomeQ,%
      EllipticReducedHalfPeriods,EllipticThetaPrime,Empty,EnableConsolePrintPacket,%
      Encoding,EndAdd,EndDialogPacket,EndFrontEndInteractionPacket,%
      EndOfLine,EndOfString,Enter,EnterExpressionPacket,%
      EnterTextPacket,EqualColumns,EqualRows,EquatedTo,%
      Erfi,ErrorBox,ErrorBoxOptions,ErrorNorm,%
      ErrorPacket,ErrorsDialogSettings,Evaluatable,EvaluatePacket,%
      EvaluationCell,EvaluationCompletionAction,EvaluationMonitor,EvaluationNotebook,%
      Evaluator,EvaluatorNames,EventEvaluator,ExactNumberQ,%
      ExactRootIsolation,Except,ExcludedForms,Exists,%
      ExitDialog,ExponentPosition,ExponentStep,Export,%
      ExportAutoReplacements,ExportPacket,ExportString,ExpressionPacket,%
      ExpToTrig,Extension,ExternalCall,ExternalDataCharacterEncoding,%
      Extract,Fail,FEDisableConsolePrintPacket,FEEnableConsolePrintPacket,%
      Fibonacci,File,FileFormat,FileInformation,%
      FileName,FileNameDialogSettings,FindFit,FindInstance,%
      FindMaximum,FindSettings,FitAll,FlushPrintOutputPacket,%
      Font,FontColor,FontFamily,FontName,%
      FontPostScriptName,FontProperties,FontReencoding,FontSize,%
      FontSlant,FontSubstitutions,FontTracking,FontVariations,%
      FontWeight,ForAll,FormatRules,FormatTypeAutoConvert,%
      FormatValues,FormBox,FormBoxOptions,Forward,%
      ForwardBackward,FourierCosTransform,FourierParameters,FourierSinTransform,%
      FourierTransform,FractionalPart,FractionBox,FractionBoxOptions,%
      FractionLine,FrameBox,FrameBoxOptions,FresnelC,%
      FresnelS,FromContinuedFraction,FromDigits,FrontEndExecute,%
      FrontEndObject,FrontEndStackSize,FrontEndToken,FrontEndTokenExecute,%
      FrontEndVersion,Full,FullAxes,FullSimplify,%
      FunctionExpand,FunctionInterpolation,GaussKronrod,GaussPoints,%
      GenerateBitmapCaches,GenerateConditions,GeneratedCell,GeneratedParameters,%
      Generic,GetBoundingBoxSizePacket,GetContext,GetFileName,%
      GetFrontEndOptionsDataPacket,GetLinebreakInformationPacket,%
      GetMenusPacket,GetPageBreakInformationPacket,%
      Glaisher,GlobalPreferences,GlobalSession,Gradient,%
      GraphicsData,GraphicsGrouping,Gray,Green,%
      Grid,GridBaseline,GridBox,GridBoxOptions,%
      GridCreationSettings,GridDefaultElement,GridFrame,GridFrameMargins,%
      GroupPageBreakWithin,HarmonicNumber,Hash,HashTable,%
      HeadCompose,HelpBrowserLookup,HelpBrowserNotebook,HelpBrowserSettings,%
      HessenbergDecomposition,Hessian,HoldAllComplete,HoldComplete,%
      HoldPattern,Horizontal,HorizontalForm,HorizontalScrollPosition,%
      HTMLSave,Hypergeometric0F1Regularized,Hypergeometric1F1Regularized,%
      Hypergeometric2F1Regularized,%
      HypergeometricPFQ,HypergeometricPFQRegularized,HyperlinkCreationSettings,Hyphenation,%
      HyphenationOptions,IgnoreCase,ImageCache,ImageCacheValid,%
      ImageMargins,ImageOffset,ImageRangeCache,ImageRegion,%
      ImageResolution,ImageRotated,ImageSize,Import,%
      ImportAutoReplacements,ImportString,IncludeFileExtension,IncludeSingularTerm,%
      IndentingNewlineSpacings,IndentMaxFraction,IndexCreationOptions,Inequality,%
      InexactNumberQ,InexactNumbers,Inherited,InitializationCell,%
      InitializationCellEvaluation,InitializationCellWarning,%
      InlineCounterAssignments,InlineCounterIncrements,%
      InlineRules,InputAliases,InputAutoFormat,InputAutoReplacements,%
      InputGrouping,InputNamePacket,InputNotebook,InputPacket,%
      InputSettings,InputStringPacket,InputToBoxFormPacket,InputToInputForm,%
      InputToStandardForm,InsertionPointObject,IntegerExponent,IntegerPart,%
      Integers,Interactive,Interlaced,InterpolationOrder,%
      InterpolationPoints,InterpolationPrecision,InterpretationBox,%
      InterpretationBoxOptions,%
      InterpretTemplate,InterruptSettings,Interval,IntervalIntersection,%
      IntervalMemberQ,IntervalUnion,InverseBetaRegularized,InverseEllipticNomeQ,%
      InverseErf,InverseErfc,InverseFourierCosTransform,
      InverseFourierSinTransform,%
      InverseFourierTransform,InverseGammaRegularized,InverseJacobiCD,%
      InverseJacobiCN,%
      InverseJacobiCS,InverseJacobiDC,InverseJacobiDN,InverseJacobiDS,%
      InverseJacobiNC,InverseJacobiND,InverseJacobiNS,InverseJacobiSC,%
      InverseJacobiSD,InverseLaplaceTransform,InverseWeierstrassP,InverseZTransform,%
      Jacobian,JacobiCD,JacobiCN,JacobiCS,%
      JacobiDC,JacobiDN,JacobiDS,JacobiNC,%
      JacobiND,JacobiNS,JacobiSC,JacobiSD,%
      JordanDecomposition,K,Khinchin,KleinInvariantJ,%
      KroneckerDelta,Language,LanguageCategory,LaplaceTransform,%
      Larger,Launch,LayoutInformation,Left,%
      LetterCharacter,Lexicographic,LicenseID,LimitsPositioning,%
      LimitsPositioningTokens,LinearSolveFunction,LinebreakAdjustments,LineBreakWithin,%
      LineForm,LineIndent,LineSpacing,LineWrapParts,%
      LinkActivate,LinkClose,LinkConnect,LinkConnectedQ,%
      LinkCreate,LinkError,LinkFlush,LinkHost,%
      LinkInterrupt,LinkLaunch,LinkMode,LinkObject,%
      LinkOpen,LinkOptions,LinkPatterns,LinkProtocol,%
      LinkRead,LinkReadHeld,LinkReadyQ,Links,%
      LinkWrite,LinkWriteHeld,ListConvolve,ListCorrelate,%
      Listen,ListInterpolation,ListQ,LiteralSearch,%
      LongestMatch,LongForm,Loopback,LUBackSubstitution,%
      LUDecomposition,MachineID,MachineName,MachinePrecision,%
      MacintoshSystemPageSetup,Magenta,Magnification,MakeBoxes,%
      MakeExpression,MakeRules,Manual,MatchLocalNameQ,%
      MathematicaNotation,MathieuC,MathieuCharacteristicA,MathieuCharacteristicB,%
      MathieuCharacteristicExponent,MathieuCPrime,MathieuS,MathieuSPrime,%
      MathMLForm,MathMLText,MatrixRank,Maximize,%
      MaxIterations,MaxPlotPoints,MaxPoints,MaxRecursion,%
      MaxStepFraction,MaxSteps,MaxStepSize,Mean,%
      Median,MeijerG,MenuPacket,MessageOptions,%
      MessagePacket,MessagesNotebook,MetaCharacters,Method,%
      MethodOptions,Minimize,MinRecursion,MinSize,%
      Mode,ModularLambda,MonomialOrder,MonteCarlo,%
      Most,MousePointerNote,MultiDimensional,MultilaunchWarning,%
      MultilineFunction,MultiplicativeOrder,Multiplicity,Nand,%
      NeedCurrentFrontEndPackagePacket,NeedCurrentFrontEndSymbolsPacket,%
      NestedScriptRules,NestWhile,%
      NestWhileList,NevilleThetaC,NevilleThetaD,NevilleThetaN,%
      NevilleThetaS,Newton,Next,NHoldAll,%
      NHoldFirst,NHoldRest,NMaximize,NMinimize,%
      NonAssociative,NonPositive,Nor,Norm,%
      NormalGrouping,NormalSelection,NormFunction,Notebook,%
      NotebookApply,NotebookAutoSave,NotebookClose,NotebookConvert,%
      NotebookConvertSettings,NotebookCreate,NotebookCreateReturnObject,NotebookDefault,%
      NotebookDelete,NotebookDirectory,NotebookFind,NotebookFindReturnObject,%
      NotebookGet,NotebookGetLayoutInformationPacket,NotebookGetMisspellingsPacket,%
      NotebookInformation,%
      NotebookLocate,NotebookObject,NotebookOpen,NotebookOpenReturnObject,%
      NotebookPath,NotebookPrint,NotebookPut,NotebookPutReturnObject,%
      NotebookRead,NotebookResetGeneratedCells,Notebooks,NotebookSave,%
      NotebookSaveAs,NotebookSelection,NotebookSetupLayoutInformationPacket,%
      NotebooksMenu,%
      NotebookWrite,NotElement,NProductExtraFactors,NProductFactors,%
      NRoots,NSumExtraTerms,NSumTerms,NumberMarks,%
      NumberMultiplier,NumberString,NumericFunction,NumericQ,%
      NValues,Offset,OLEData,OneStepRowReduction,%
      Open,OpenFunctionInspectorPacket,OpenSpecialOptions,OptimizationLevel,%
      OptionInspectorSettings,OptionQ,OptionsPacket,OptionValueBox,%
      OptionValueBoxOptions,Orange,Ordering,Oscillatory,%
      OutputAutoOverwrite,OutputFormData,OutputGrouping,OutputMathEditExpression,%
      OutputNamePacket,OutputToOutputForm,OutputToStandardForm,Over,%
      Overflow,Overlaps,Overscript,OverscriptBox,%
      OverscriptBoxOptions,OwnValues,PadLeft,PadRight,%
      PageBreakAbove,PageBreakBelow,PageBreakWithin,PageFooterLines,%
      PageFooters,PageHeaderLines,PageHeaders,PalettePath,%
      PaperWidth,ParagraphIndent,ParagraphSpacing,ParameterVariables,%
      ParentConnect,ParentForm,Parenthesize,PasteBoxFormInlineCells,%
      Path,PatternTest,PeriodicInterpolation,Pick,%
      Piecewise,PiecewiseExpand,Pink,Pivoting,%
      PixelConstrained,Placeholder,Plain,Plot3Matrix,%
      PointForm,PolynomialForm,PolynomialReduce,Polynomials,%
      PowerModList,Precedence,PreferencesPath,PreserveStyleSheet,%
      Previous,PrimaryPlaceholder,Primes,PrincipalValue,%
      PrintAction,PrintingCopies,PrintingOptions,PrintingPageRange,%
      PrintingStartingPageNumber,PrintingStyleEnvironment,PrintPrecision,%
      PrivateCellOptions,%
      PrivateEvaluationOptions,PrivateFontOptions,PrivateNotebookOptions,PrivatePaths,%
      ProductLog,PromptForm,Purple,Quantile,%
      QuasiMonteCarlo,QuasiNewton,RadicalBox,RadicalBoxOptions,%
      RandomSeed,RationalFunctions,Rationals,RawData,%
      RawMedium,RealBlockForm,Reals,Reap,%
      Red,Refine,Refresh,RegularExpression,%
      Reinstall,Release,Removed,RenderingOptions,%
      RepeatedString,ReplaceList,Rescale,ResetMenusPacket,%
      Resolve,ResumePacket,ReturnExpressionPacket,ReturnInputFormPacket,%
      ReturnPacket,ReturnTextPacket,Right,Root,%
      RootReduce,RootSum,Row,RowAlignments,%
      RowBox,RowLines,RowMinHeight,RowsEqual,%
      RowSpacings,RSolve,RuleCondition,RuleForm,%
      RulerUnits,Saveable,SaveAutoDelete,ScreenRectangle,%
      ScreenStyleEnvironment,ScriptBaselineShifts,ScriptLevel,ScriptMinSize,%
      ScriptRules,ScriptSizeMultipliers,ScrollingOptions,ScrollPosition,%
      Second,SectionGrouping,Selectable,SelectedNotebook,%
      Selection,SelectionAnimate,SelectionCell,SelectionCellCreateCell,%
      SelectionCellDefaultStyle,SelectionCellParentStyle,SelectionCreateCell,%
      SelectionDuplicateCell,%
      SelectionEvaluate,SelectionEvaluateCreateCell,SelectionMove,SelectionSetStyle,%
      SelectionStrategy,SendFontInformationToKernel,SequenceHold,SequenceLimit,%
      SeriesCoefficient,SetBoxFormNamesPacket,SetEvaluationNotebook,%
      SetFileLoadingContext,%
      SetNotebookStatusLine,SetOptionsPacket,SetSelectedNotebook,%
      SetSpeechParametersPacket,%
      SetValue,ShortestMatch,ShowAutoStyles,ShowCellBracket,%
      ShowCellLabel,ShowCellTags,ShowClosedCellArea,ShowContents,%
      ShowCursorTracker,ShowGroupOpenCloseIcon,ShowPageBreaks,ShowSelection,%
      ShowShortBoxForm,ShowSpecialCharacters,ShowStringCharacters,%
      ShrinkWrapBoundingBox,%
      SingleLetterItalics,SingularityDepth,SingularValueDecomposition,%
      SingularValueList,%
      SinhIntegral,Smaller,Socket,SolveDelayed,%
      SoundAndGraphics,Sow,Space,SpaceForm,%
      SpanAdjustments,SpanCharacterRounding,SpanLineThickness,SpanMaxSize,%
      SpanMinSize,SpanningCharacters,SpanSymmetric,Sparse,%
      SparseArray,SpeakTextPacket,SpellingDictionaries,SpellingDictionariesPath,%
      SpellingOptions,SpellingSuggestionsPacket,Spherical,Split,%
      SqrtBox,SqrtBoxOptions,StandardDeviation,StandardForm,%
      StartingStepSize,StartOfLine,StartOfString,StartupSound,%
      StepMonitor,StieltjesGamma,StoppingTest,StringCases,%
      StringCount,StringExpression,StringFreeQ,StringQ,%
      StringReplaceList,StringReplacePart,StringSplit,StripBoxes,%
      StripWrapperBoxes,StructuredSelection,StruveH,StruveL,%
      StyleBox,StyleBoxAutoDelete,StyleBoxOptions,StyleData,%
      StyleDefinitions,StyleForm,StyleMenuListing,StyleNameDialogSettings,%
      StylePrint,StyleSheetPath,Subresultants,SubscriptBox,%
      SubscriptBoxOptions,Subsets,Subsuperscript,SubsuperscriptBox,%
      SubsuperscriptBoxOptions,SubtractFrom,SubValues,SugarCube,%
      SuperscriptBox,SuperscriptBoxOptions,SuspendPacket,SylvesterMatrix,%
      SymbolName,Syntax,SyntaxForm,SyntaxPacket,%
      SystemException,SystemHelpPath,SystemStub,Tab,%
      TabFilling,TabSpacings,TagBox,TagBoxOptions,%
      TaggingRules,TagStyle,TargetFunctions,TemporaryVariable,%
      TensorQ,TeXSave,TextAlignment,TextBoundingBox,%
      TextData,TextJustification,TextLine,TextPacket,%
      TextParagraph,TextRendering,TextStyle,ThisLink,%
      TimeConstraint,TimeVariable,TitleGrouping,ToBoxes,%
      ToColor,ToFileName,Toggle,ToggleFalse,%
      Tolerance,TooBig,Top,ToRadicals,%
      Total,Tr,TraceAction,TraceInternal,%
      TraceLevel,TraditionalForm,TraditionalFunctionNotation,TraditionalNotation,%
      TraditionalOrder,TransformationFunctions,TransparentColor,Trapezoidal,%
      TrigExpand,TrigFactor,TrigFactorList,TrigReduce,%
      TrigToExp,Tuples,UnAlias,Underflow,%
      Underoverscript,UnderoverscriptBox,UnderoverscriptBoxOptions,Underscript,%
      UnderscriptBox,UnderscriptBoxOptions,UndocumentedTestFEParserPacket,%
      UndocumentedTestGetSelectionPacket,%
      UnitStep,Up,URL,Using,%
      V2Get,Value,ValueBox,ValueBoxOptions,%
      ValueForm,Variance,Verbatim,Verbose,%
      VerboseConvertToPostScriptPacket,VerifyConvergence,VerifySolutions,Version,%
      VersionNumber,Vertical,VerticalForm,ViewPointSelectorSettings,%
      Visible,VisibleCell,WeierstrassHalfPeriods,WeierstrassInvariants,%
      WeierstrassSigma,WeierstrassZeta,White,Whitespace,%
      WhitespaceCharacter,WindowClickSelect,WindowElements,WindowFloating,%
      WindowFrame,WindowFrameElements,WindowMargins,WindowMovable,%
      WindowSize,WindowTitle,WindowToolbars,WindowWidth,%
      WordBoundary,WordCharacter,WynnDegree,XMLElement},%
   morendkeywords={$,$AddOnsDirectory,$AnimationDisplayFunction,%
      $AnimationFunction,%
      $Assumptions,$BaseDirectory,$BoxForms,$ByteOrdering,%
      $CharacterEncoding,$ConditionHold,$CurrentLink,$DefaultPath,%
      $ExportEncodings,$ExportFormats,$FormatType,$FrontEnd,%
      $HistoryLength,$HomeDirectory,$ImportEncodings,$ImportFormats,%
      $InitialDirectory,$InstallationDate,$InstallationDirectory,%
      $InterfaceEnvironment,%
      $LaunchDirectory,$LicenseExpirationDate,$LicenseID,$LicenseProcesses,%
      $LicenseServer,$MachineDomain,$MaxExtraPrecision,$MaxLicenseProcesses,%
      $MaxNumber,$MaxPiecewiseCases,$MaxPrecision,$MaxRootDegree,%
      $MinNumber,$MinPrecision,$NetworkLicense,$NumberMarks,%
      $Off,$OutputForms,$ParentLink,$ParentProcessID,%
      $PasswordFile,$PathnameSeparator,$PreferencesDirectory,$PrintForms,%
      $PrintLiteral,$ProcessID,$ProcessorType,$ProductInformation,%
      $ProgramName,$PSDirectDisplay,$RandomState,$RasterFunction,%
      $RootDirectory,$SetParentLink,$SoundDisplay,$SuppressInputFormHeads,%
      $SystemCharacterEncoding,$SystemID,$TemporaryPrefix,$TextStyle,%
      $TopDirectory,$TraceOff,$TraceOn,$TracePattern,%
      $TracePostAction,$TracePreAction,$UserAddOnsDirectory,$UserBaseDirectory,%
      $UserName,Constant,Flat,HoldAll,%
      HoldAllComplete,HoldFirst,HoldRest,Listable,%
      Locked,NHoldAll,NHoldFirst,NHoldRest,%
      NumericFunction,OneIdentity,Orderless,Protected,%
      ReadProtected,SequenceHold},%
  }%
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Mathematica definitions (c) 1999 Michael Wiese
%%
\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
%% Extended (c) 2001 Ralph Becket
%%
\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{MetaPost}
%
% \lstthanks{Uwe~Siart}{uwe.siart@ei.tum.de}{2003/03/28} provided the
% keywords for a previous version. The current language definition comes
% from \lstthanks{Brooks~Moses}{}{2004/08/07}.
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% MetaPost definition (c) 2004 Brooks Moses
%%   This definition is based on the language specifications
%%   contained in the _User's Manual for Metapost_, with the core
%%   language enhancements that are described in the _Drawing
%%   Graphs with MetaPost_ documentation.
%%
\lst@definelanguage{MetaPost}%
  {% keywords[1] = MetaPost primitives (not found in following tables)
   morekeywords={end,begingroup,endgroup,beginfig,endfig,def,vardef,%
      primary,secondary,tertiary,primarydef,secondarydef,tertiarydef,%
      expr,suffix,text,enddef,if,fi,else,elseif,for,forsuffixes,%
      forever,endfor,upto,downto,stop,until,tension,controls,on,off,%
      btex,etex,within,input},
   % keywords[2] = Operators (Tables 6-9 in MetaPost User's manual)
   morekeywords=[2]{abs,and,angle,arclength,arctime,ASCII,bbox,bluepart,%
      boolean,bot,ceiling,center,char,color,cosd,cutafter,cutbefore,%
      cycle,decimal,dir,direction,directionpoint,directiontime,div,%
      dotprod,floor,fontsize,greenpart,hex,infont,intersectionpoint,%
      intersectiontimes,inverse,known,length,lft,llcorner,lrcorner,%
      makepath,makepen,mexp,mlog,mod,normaldeviate,not,numeric,oct,%
      odd,or,pair,path,pen,penoffset,picture,point,postcontrol,%
      precontrol,redpart,reverse,rotated,round,rt,scaled,shifted,%
      sind,slanted,sqrt,str,string,subpath,substring,top,transform,%
      transformed,ulcorner,uniformdeviate,unitvector,unknown,%
      urcorner,whatever,xpart,xscaled,xxpart,xypart,ypart,yscaled,%
      yxpart,yypart,zscaled,of,reflectedabout,rotatedaround,ulft,urt,%
      llft,lrt,readfrom,write,stroked,filled,textual,clipped,bounded,%
      pathpart,penpart,dashpart,textpart,fontpart},%
   % keywords[3] = Commands (Table 10)
   morekeywords=[3]{addto,clip,cutdraw,draw,drawarrow,drawdblarrow,%
      fill,filldraw,interim,let,loggingall,newinternal,pickup,%
      save,setbounds,shipout,show,showdependencies,showtoken,%
      showvariable,special,tracingall,tracingnone,undraw,unfill,%
      unfilldraw,to,also,contour,doublepath,withcolor,withpen,%
      dashed,randomseed},%
   % keywords[4] = Function-Like Macros (Table 11)
   morekeywords=[4]{boxit,boxjoin,bpath,buildcycle,circleit,dashpattern,%
      decr,dotlabel,dotlabels,drawboxed,drawboxes,drawoptions,%
      drawunboxed,fixpos,fixsize,incr,interpath,label,labels,max,min,pic,%
      thelabel,z,image},%
   % keywords[5] = Internal and Predefined Variables (Tables 3, 4)
   morekeywords=[5]{ahangle,ahlength,bboxmargin,charcode,circmargin,%
      day,defaultdx,defaultdy,defaultpen,defaultscale,labeloffset,%
      linecap,linejoin,miterlimit,month,pausing,prologues,showstopping,%
      time,tracingcapsules,tracingchoices,tracingcommands,%
      tracingequations,tracinglostchars,tracingmacros,tracingonline,%
      tracingoutput,tracingrestores,tracingspecs,tracingstats,%
      tracingtitles,truecorners,warningcheck,year},
   morekeywords=[5]{background,currentpen,currentpicture,cuttings,%
      defaultfont},%
   % keywords[6] = Predefined Constants (Table 5)
   morekeywords=[6]{beveled,black,blue,bp,butt,cc,cm,dd,ditto,down,%
      epsilon,evenly,false,fullcircle,green,halfcircle,identity,%
      in,infinity,left,mitered,mm,nullpicture,origin,pc,pencircle,%
      pt,quartercircle,red,right,rounded,squared,true,unitsquare,%
      up,white,withdots},
   sensitive=false,%
   alsoother={0123456789$},%
   morecomment=[l]\%,%
   morestring=[mf]{input\ },%
   morestring=[b]"%
  }[keywords,comments,strings,mf]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Miranda}
%
% Thanks to \lstthanks{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
%%
%% 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{Mizar}
%
% As you can read below, \lstthanks{Adam~Grabowski}{adam@mizar.org}
% {2003/03/29} provided this language definition.
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Mizar definition (c) 2003 Adam Grabowski
%%
%% Mizar is freely available at URL www.mizar.org for the Linux x86,
%% Solaris x86, and Windows operating systems.
%%
\lst@definelanguage{Mizar}%
  {otherkeywords={->,(\#,\#),.=),\&},%
   morekeywords={vocabulary,constructors,$1,$1,$2,$3,$4,$5,$6,$7,$8,%
      @proof,according,aggregate,and,antonym,as,associativity,assume,%
      asymmetry,attr,be,begin,being,by,canceled,case,cases,cluster,%
      clusters,coherence,commutativity,compatibility,connectedness,%
      consider,consistency,constructors,contradiction,correctness,def,%
      deffunc,define,definition,definitions,defpred,end,environ,equals,%
      ex,exactly,existence,for,from,func,given,hence,hereby,holds,%
      idempotence,if,iff,implies,involutiveness,irreflexivity,is,it,%
      let,means,mode,non,not,notation,now,of,or,otherwise,over,per,%
      pred,prefix,projectivity,proof,provided,qua,reconsider,redefine,%
      reflexivity,requirements,reserve,scheme,schemes,section,selector,%
      set,st,struct,such,suppose,symmetry,synonym,take,that,the,then,%
      theorem,theorems,thesis,thus,to,transitivity,uniqueness,%
      vocabulary,where},%
   sensitive=t,%
   morecomment=[l]::%
  }[keywords,comments]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \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
%%
\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{MuPAD}
%
% This definition was provided by \lstthanks{Christopher~Creutzig}
% {ccr@mupad.de}{2002/10/15}. Again thanks to \lsthelper{Ulrike Fischer}
% {-}{2004/04/23}{Re: Bug in listings.sty} for pointing to a missing |@|
% in |\lstdefinelanguage|.
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{MuPAD}{%
   morekeywords={end,next,break,if,then,elif,else,end_if,case,end_case,%
      otherwise,for,from,to,step,downto,in,end_for,while,end_while,%
      repeat,until,end_repeat,or,and,not,xor,div,mod,union,minus,%
      intersect,subset,proc,begin,end_proc,domain,end_domain,category,%
      end_category,axiom,end_axiom,quit,delete,frame},%
   morekeywords=[2]{NIL,FAIL,TRUE,FALSE,UNKNOWN,I,RD_INF,RD_NINF,%
      RD_NAN,name,local,option,save,inherits,of,do},%
   otherkeywords={\%if,?,!,:=,<,>,=,<=,<>,>=,==>,<=>,::,..,...,->,%
      @,@@,\$},%
   sensitive=true,%
   morecomment=[l]{//},%
   morecomment=[n]{/*}{*/},%
   morestring=[b]",%
   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
%%
%% 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}
    morekeywords=[3]{Boolean,Integer,Real,String,Set,Sequence,Bag,%
       OclType,OclAny,OclExpression,Enumeration,Collection,},%
    sensitive=t,%
    morecomment=[l]--,%
    morestring=[d]'%
   }[keywords,comments,strings]%
%    \end{macrocode}
% After a bug report by \lsthelper{Martin~S\"u\ss kraut}{Edon.Myder@web.de}
% {2003/01/30}{morerdkeywords doesn't exist any more} \texttt{morerdkeywords}
% has been changed to the correct optional argument \texttt{[3]}.
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Octave}
%
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
% As you can read below the definition is due to \lstthanks{Ulrich~G.~Wortmann}
% {uliw@erdw.ethz.ch}{2002/02/18}{}.  Additions due to \lstthanks{Sebastian~%
% Schubert}{-}{2006/05/11}.
%    \begin{macrocode}
%%
%% Octave definition (c) 2001,2002 Ulrich G. Wortmann
%%
\lst@definelanguage{Octave}%
  {morekeywords={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,printf,case,switch,otherwise,%
      system,lsode,endfor,error,ones,oneplot,__gnuplot_set__,do,until},%
   sensitive=t,%
   morecomment=[l]\#,%
   morecomment=[l]\#\#,%
   morecomment=[l]\%,%
   morestring=[m]',%
   morestring=[m]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Oz}
%
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
% Thanks to \lstthanks{Andres~Becerra~Sandoval}{abecerra@univalle.edu.co}
% {2003/10/02} for providing this language definition.
%    \begin{macrocode}
%%
%% Oz definition (c) Andres Becerra Sandoval
%%
\lst@definelanguage{Oz}%
  {morekeywords={andthen,at,attr,case,catch,choice,class,%
      cond,declare,define,dis,div,else,elsecase,%
      elseif,end,export,fail,false,feat,finally,%
      from,fun,functor,if,import,in,local,%
      lock,meth,mod,not,of,or,orelse,%
      prepare,proc,prop,raise,require,self,skip,%
      then,thread,true,try,unit},%
   sensitive=true,%
   morecomment=[l]{\%},%
   morecomment=[s]{/*}{*/},%
   morestring=[b]",%
   morestring=[d]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \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,2002/04/16} sent me
% this language definition.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% PHP definition by Luca Balzerani
%%
\lst@definelanguage{PHP}%
  {morekeywords={%
  %--- core language
    <?,?>,::,break,case,continue,default,do,else,%
    elseif,for,foreach,if,include,require,phpinfo,%
    switch,while,false,FALSE,true,TRUE,%
  %--- apache functions
    apache_lookup_uri,apache_note,ascii2ebcdic,ebcdic2ascii,%
    virtual,apache_child_terminate,apache_setenv,%
  %--- array functions
    array,array_change_key_case,array_chunk,array_count_values,%
    array_filter,array_flip,array_fill,array_intersect,%
    array_keys,array_map,array_merge,array_merge_recursive,%
    array_pad,array_pop,array_push,array_rand,array_reverse,%
    array_shift,array_slice,array_splice,array_sum,array_unique,%
    array_values,array_walk,arsort,asort,compact,count,current,each,%
    extract,in_array,array_search,key,krsort,ksort,list,natsort,%
    next,pos,prev,range,reset,rsort,shuffle,sizeof,sort,uasort,%
    usort,%
  %--- aspell functions
    aspell_new,aspell_check,aspell_check_raw,aspell_suggest,%
  %--- bc functions
    bcadd,bccomp,bcdiv,bcmod,bcmul,bcpow,bcscale,bcsqrt,bcsub,%
  %--- bzip2 functions
    bzclose,bzcompress,bzdecompress,bzerrno,bzerror,bzerrstr,%
    bzopen,bzread,bzwrite,%
  %--- calendar functions
    JDToGregorian,GregorianToJD,JDToJulian,JulianToJD,JDToJewish,%
    JDToFrench,FrenchToJD,JDMonthName,JDDayOfWeek,easter_date,%
    unixtojd,jdtounix,cal_days_in_month,cal_to_jd,cal_from_jd,%
  %--- ccvs functions
    ccvs_init,ccvs_done,ccvs_new,ccvs_add,ccvs_delete,ccvs_auth,%
    ccvs_reverse,ccvs_sale,ccvs_void,ccvs_status,ccvs_count,%
    ccvs_report,ccvs_command,ccvs_textvalue,%
  %--- classobj functions
    call_user_method,call_user_method_array,class_exists,get_class,%
    get_class_vars,get_declared_classes,get_object_vars,%
    is_a,is_subclass_of,method_exists,%
  %--- com functions
    COM,VARIANT,com_load,com_invoke,com_propget,com_get,com_propput,%
    com_set,com_addref,com_release,com_isenum,com_load_typelib,%
  %--- cpdf functions
    cpdf_add_annotation,cpdf_add_outline,cpdf_arc,cpdf_begin_text,%
    cpdf_clip,cpdf_close,cpdf_closepath,cpdf_closepath_fill_stroke,%
    cpdf_continue_text,cpdf_curveto,cpdf_end_text,cpdf_fill,%
    cpdf_finalize,cpdf_finalize_page,%
    cpdf_import_jpeg,cpdf_lineto,cpdf_moveto,cpdf_newpath,cpdf_open,%
    cpdf_page_init,cpdf_place_inline_image,cpdf_rect,cpdf_restore,%
    cpdf_rmoveto,cpdf_rotate,cpdf_rotate_text,cpdf_save,%
    cpdf_scale,cpdf_set_char_spacing,cpdf_set_creator,%
    cpdf_set_font,cpdf_set_horiz_scaling,cpdf_set_keywords,%
    cpdf_set_page_animation,cpdf_set_subject,cpdf_set_text_matrix,%
    cpdf_set_text_rendering,cpdf_set_text_rise,cpdf_set_title,%
    cpdf_setdash,cpdf_setflat,cpdf_setgray,cpdf_setgray_fill,%
    cpdf_setlinecap,cpdf_setlinejoin,cpdf_setlinewidth,%
    cpdf_setrgbcolor,cpdf_setrgbcolor_fill,cpdf_setrgbcolor_stroke,%
    cpdf_show_xy,cpdf_stringwidth,cpdf_set_font_directories,%
    cpdf_set_viewer_preferences,cpdf_stroke,cpdf_text,%
    cpdf_set_action_url,%
  %--- crack functions
    crack_opendict,crack_closedict,crack_check,crack_getlastmessage,%
  %--- ctype functions
    ctype_alnum,ctype_alpha,ctype_cntrl,ctype_digit,ctype_lower,%
    ctype_print,ctype_punct,ctype_space,ctype_upper,ctype_xdigit,%
  %--- curl functions
    curl_init,curl_setopt,curl_exec,curl_close,curl_version,%
    curl_error,curl_getinfo,%
  %--- cybercash functions
    cybercash_encr,cybercash_decr,cybercash_base64_encode,%
  %--- cybermut functions
    cybermut_creerformulairecm,cybermut_testmac,%
  %--- cyrus functions
    cyrus_connect,cyrus_authenticate,cyrus_bind,cyrus_unbind,%
    cyrus_close,%
  %--- datetime functions
    checkdate,date,getdate,gettimeofday,gmdate,gmmktime,gmstrftime,%
    microtime,mktime,strftime,time,strtotime,%
  %--- dbase functions
    dbase_create,dbase_open,dbase_close,dbase_pack,dbase_add_record,%
    dbase_delete_record,dbase_get_record,%
    dbase_numfields,dbase_numrecords,%
  %--- dba functions
    dba_close,dba_delete,dba_exists,dba_fetch,dba_firstkey,%
    dba_nextkey,dba_popen,dba_open,dba_optimize,dba_replace,%
  %--- dbm functions
    dbmopen,dbmclose,dbmexists,dbmfetch,dbminsert,dbmreplace,%
    dbmfirstkey,dbmnextkey,dblist,%
  %--- dbx functions
    dbx_close,dbx_connect,dbx_error,dbx_query,dbx_sort,dbx_compare,%
  %--- dio functions
    dio_open,dio_read,dio_write,dio_truncate,dio_stat,dio_seek,%
    dio_close,%
  %--- dir functions
    chroot,chdir,dir,closedir,getcwd,opendir,readdir,rewinddir,%
  %--- dotnet functions
    dotnet_load,%
  %--- errorfunc functions
    error_log,error_reporting,restore_error_handler,%
    trigger_error,user_error,%
  %--- exec functions
    escapeshellarg,escapeshellcmd,exec,passthru,system,shell_exec,%
  %--- fbsql functions
    fbsql_affected_rows,fbsql_autocommit,fbsql_change_user,%
    fbsql_commit,fbsql_connect,fbsql_create_db,fbsql_create_blob,%
    fbsql_database_password,fbsql_data_seek,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_name,fbsql_field_len,%
    fbsql_field_table,fbsql_field_type,fbsql_free_result,%
    fbsql_list_dbs,fbsql_list_fields,fbsql_list_tables,%
    fbsql_num_fields,fbsql_num_rows,fbsql_pconnect,fbsql_query,%
    fbsql_read_clob,fbsql_result,fbsql_rollback,fbsql_set_lob_mode,%
    fbsql_start_db,fbsql_stop_db,fbsql_tablename,fbsql_warnings,%
    fbsql_get_autostart_info,fbsql_hostname,fbsql_password,%
    fbsql_username,%
  %--- fdf functions
    fdf_open,fdf_close,fdf_create,fdf_save,fdf_get_value,%
    fdf_next_field_name,fdf_set_ap,fdf_set_status,fdf_get_status,%
    fdf_get_file,fdf_set_flags,fdf_set_opt,%
    fdf_set_javascript_action,fdf_set_encoding,fdf_add_template,%
  %--- filepro functions
    filepro,filepro_fieldname,filepro_fieldtype,filepro_fieldwidth,%
    filepro_fieldcount,filepro_rowcount,%
  %--- filesystem functions
    basename,chgrp,chmod,chown,clearstatcache,copy,delete,dirname,%
    diskfreespace,disk_total_space,fclose,feof,fflush,fgetc,fgetcsv,%
    fgetss,file_get_contents,file,file_exists,fileatime,filectime,%
    fileinode,filemtime,fileowner,fileperms,filesize,filetype,flock,%
    fopen,fpassthru,fputs,fread,fscanf,fseek,fstat,ftell,ftruncate,%
    set_file_buffer,is_dir,is_executable,is_file,is_link,%
    is_writable,is_writeable,is_uploaded_file,link,linkinfo,mkdir,%
    parse_ini_file,pathinfo,pclose,popen,readfile,readlink,rename,%
    rmdir,stat,lstat,realpath,symlink,tempnam,tmpfile,touch,umask,%
  %--- fribidi functions
    fribidi_log2vis,%
  %--- ftp functions
    ftp_connect,ftp_login,ftp_pwd,ftp_cdup,ftp_chdir,ftp_mkdir,%
    ftp_nlist,ftp_rawlist,ftp_systype,ftp_pasv,ftp_get,ftp_fget,%
    ftp_fput,ftp_size,ftp_mdtm,ftp_rename,ftp_delete,ftp_site,%
    ftp_quit,ftp_exec,ftp_set_option,ftp_get_option,%
  %--- funchand functions
    call_user_func_array,call_user_func,create_function,%
    func_get_args,func_num_args,function_exists,%
    register_shutdown_function,register_tick_function,%
  %--- gettext functions
    bindtextdomain,bind_textdomain_codeset,dcgettext,dcngettext,%
    dngettext,gettext,ngettext,textdomain,%
  %--- gmp functions
    gmp_init,gmp_intval,gmp_strval,gmp_add,gmp_sub,gmp_mul,%
    gmp_div_r,gmp_div_qr,gmp_div,gmp_mod,gmp_divexact,gmp_cmp,%
    gmp_com,gmp_abs,gmp_sign,gmp_fact,gmp_sqrt,gmp_sqrtrm,%
    gmp_pow,gmp_powm,gmp_prob_prime,gmp_gcd,gmp_gcdext,gmp_invert,%
    gmp_jacobi,gmp_random,gmp_and,gmp_or,gmp_xor,gmp_setbit,%
    gmp_scan0,gmp_scan1,gmp_popcount,gmp_hamdist,%
  %--- http functions
    header,headers_sent,setcookie,%
  %--- hw functions
    hw_Array2Objrec,hw_Children,hw_ChildrenObj,hw_Close,hw_Connect,%
    hw_Deleteobject,hw_DocByAnchor,hw_DocByAnchorObj,%
    hw_Document_BodyTag,hw_Document_Content,hw_Document_SetContent,%
    hw_ErrorMsg,hw_EditText,hw_Error,hw_Free_Document,hw_GetParents,%
    hw_GetChildColl,hw_GetChildCollObj,hw_GetRemote,%
    hw_GetSrcByDestObj,hw_GetObject,hw_GetAndLock,hw_GetText,%
    hw_GetObjectByQueryObj,hw_GetObjectByQueryColl,%
    hw_GetChildDocColl,hw_GetChildDocCollObj,hw_GetAnchors,%
    hw_Mv,hw_Identify,hw_InCollections,hw_Info,hw_InsColl,hw_InsDoc,%
    hw_InsertObject,hw_mapid,hw_Modifyobject,hw_New_Document,%
    hw_Output_Document,hw_pConnect,hw_PipeDocument,hw_Root,%
    hw_Who,hw_getusername,hw_stat,hw_setlinkroot,hw_connection_info,%
    hw_insertanchors,hw_getrellink,hw_changeobject,%
  %--- ibase functions
    ibase_connect,ibase_pconnect,ibase_close,ibase_query,%
    ibase_fetch_row,ibase_fetch_object,ibase_field_info,%
    ibase_free_result,ibase_prepare,ibase_execute,ibase_trans,%
    ibase_rollback,ibase_timefmt,ibase_num_fields,ibase_blob_add,%
    ibase_blob_close,ibase_blob_create,ibase_blob_echo,%
    ibase_blob_import,ibase_blob_info,ibase_blob_open,%
  %--- icap functions
    icap_open,icap_close,icap_fetch_event,icap_list_events,%
    icap_delete_event,icap_snooze,icap_list_alarms,%
    icap_rename_calendar,icap_delete_calendar,icap_reopen,%
  %--- iconv functions
    iconv,iconv_get_encoding,iconv_set_encoding,ob_iconv_handler,%
  %--- ifx functions
    ifx_connect,ifx_pconnect,ifx_close,ifx_query,ifx_prepare,ifx_do,%
    ifx_errormsg,ifx_affected_rows,ifx_getsqlca,ifx_fetch_row,%
    ifx_fieldtypes,ifx_fieldproperties,ifx_num_fields,ifx_num_rows,%
    ifx_create_char,ifx_free_char,ifx_update_char,ifx_get_char,%
    ifx_copy_blob,ifx_free_blob,ifx_get_blob,ifx_update_blob,%
    ifx_textasvarchar,ifx_byteasvarchar,ifx_nullformat,%
    ifxus_free_slob,ifxus_close_slob,ifxus_open_slob,%
    ifxus_seek_slob,ifxus_read_slob,ifxus_write_slob,%
  %--- iisfunc functions
    iis_get_server_by_path,iis_get_server_by_comment,iis_add_server,%
    iis_set_dir_security,iis_get_dir_security,iis_set_server_rights,%
    iis_set_script_map,iis_get_script_map,iis_set_app_settings,%
    iis_stop_server,iis_stop_service,iis_start_service,%
  %--- image functions
    exif_imagetype,exif_read_data,exif_thumbnail,getimagesize,%
    imagealphablending,imagearc,imagefilledarc,imageellipse,%
    imagechar,imagecharup,imagecolorallocate,imagecolordeallocate,%
    imagecolorclosest,imagecolorclosestalpha,imagecolorclosestthwb,%
    imagecolorexactalpha,imagecolorresolve,imagecolorresolvealpha,%
    imagecolorset,imagecolorsforindex,imagecolorstotal,%
    imagecopy,imagecopymerge,imagecopymergegray,imagecopyresized,%
    imagecreate,imagecreatetruecolor,imagetruecolortopalette,%
    imagecreatefromgd2,imagecreatefromgd2part,imagecreatefromgif,%
    imagecreatefrompng,imagecreatefromwbmp,imagecreatefromstring,%
    imagecreatefromxpm,imagedashedline,imagedestroy,imagefill,%
    imagefilledrectangle,imagefilltoborder,imagefontheight,%
    imagegd,imagegd2,imagegif,imagepng,imagejpeg,imagewbmp,%
    imageline,imageloadfont,imagepalettecopy,imagepolygon,%
    imagepsencodefont,imagepsfreefont,imagepsloadfont,%
    imagepsslantfont,imagepstext,imagerectangle,imagesetpixel,%
    imagesetstyle,imagesettile,imagesetthickness,imagestring,%
    imagesx,imagesy,imagettfbbox,imageftbbox,imagettftext,%
    imagetypes,jpeg2wbmp,png2wbmp,iptcembed,read_exif_data,%
  %--- imap functions
    imap_8bit,imap_alerts,imap_append,imap_base64,imap_binary,%
    imap_bodystruct,imap_check,imap_clearflag_full,imap_close,%
    imap_delete,imap_deletemailbox,imap_errors,imap_expunge,%
    imap_fetchbody,imap_fetchheader,imap_fetchstructure,%
    imap_getmailboxes,imap_getsubscribed,imap_header,%
    imap_headers,imap_last_error,imap_listmailbox,%
    imap_mail,imap_mail_compose,imap_mail_copy,imap_mail_move,%
    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_setacl,imap_set_quota,imap_setflag_full,%
    imap_status,imap_subscribe,imap_uid,imap_undelete,%
    imap_utf7_decode,imap_utf7_encode,imap_utf8,imap_thread,%
  %--- info functions
    assert,assert_options,extension_loaded,dl,getenv,get_cfg_var,%
    get_defined_constants,get_extension_funcs,getmygid,%
    get_loaded_extensions,get_magic_quotes_gpc,%
    getlastmod,getmyinode,getmypid,getmyuid,get_required_files,%
    ini_alter,ini_get,ini_get_all,ini_restore,ini_set,phpcredits,%
    phpversion,php_logo_guid,php_sapi_name,php_uname,putenv,%
    set_time_limit,version_compare,zend_logo_guid,zend_version,%
  %--- ircg functions
    ircg_pconnect,ircg_fetch_error_msg,ircg_set_current,ircg_join,%
    ircg_msg,ircg_notice,ircg_nick,ircg_topic,ircg_channel_mode,%
    ircg_whois,ircg_kick,ircg_ignore_add,ircg_ignore_del,%
    ircg_is_conn_alive,ircg_lookup_format_messages,%
    ircg_set_on_die,ircg_set_file,ircg_get_username,%
    ircg_nickname_unescape,%
  %--- java functions
    java_last_exception_clear,java_last_exception_get,%
  %--- ldap functions
    ldap_add,ldap_bind,ldap_close,ldap_compare,ldap_connect,%
    ldap_delete,ldap_dn2ufn,ldap_err2str,ldap_errno,ldap_error,%
    ldap_first_attribute,ldap_first_entry,ldap_free_result,%
    ldap_get_dn,ldap_get_entries,ldap_get_option,ldap_get_values,%
    ldap_list,ldap_modify,ldap_mod_add,ldap_mod_del,%
    ldap_next_attribute,ldap_next_entry,ldap_read,ldap_rename,%
    ldap_set_option,ldap_unbind,ldap_8859_to_t61,%
    ldap_next_reference,ldap_parse_reference,ldap_parse_result,%
    ldap_sort,ldap_start_tls,ldap_t61_to_8859,%
  %--- mail functions
    mail,ezmlm_hash,%
  %--- math functions
    abs,acos,acosh,asin,asinh,atan,atanh,atan2,base_convert,bindec,%
    cos,cosh,decbin,dechex,decoct,deg2rad,exp,expm1,floor,%
    hexdec,hypot,is_finite,is_infinite,is_nan,lcg_value,log,log10,%
    max,min,mt_rand,mt_srand,mt_getrandmax,number_format,octdec,pi,%
    rad2deg,rand,round,sin,sinh,sqrt,srand,tan,tanh,%
  %--- mbstring functions
    mb_language,mb_parse_str,mb_internal_encoding,mb_http_input,%
    mb_detect_order,mb_substitute_character,mb_output_handler,%
    mb_strlen,mb_strpos,mb_strrpos,mb_substr,mb_strcut,mb_strwidth,%
    mb_convert_encoding,mb_detect_encoding,mb_convert_kana,%
    mb_decode_mimeheader,mb_convert_variables,%
    mb_decode_numericentity,mb_send_mail,mb_get_info,%
    mb_ereg,mb_eregi,mb_ereg_replace,mb_eregi_replace,mb_split,%
    mb_ereg_search,mb_ereg_search_pos,mb_ereg_search_regs,%
    mb_ereg_search_getregs,mb_ereg_search_getpos,%
  %--- mcal functions
    mcal_open,mcal_popen,mcal_reopen,mcal_close,%
    mcal_rename_calendar,mcal_delete_calendar,mcal_fetch_event,%
    mcal_append_event,mcal_store_event,mcal_delete_event,%
    mcal_list_alarms,mcal_event_init,mcal_event_set_category,%
    mcal_event_set_description,mcal_event_set_start,%
    mcal_event_set_alarm,mcal_event_set_class,mcal_is_leap_year,%
    mcal_date_valid,mcal_time_valid,mcal_day_of_week,%
    mcal_date_compare,mcal_next_recurrence,%
    mcal_event_set_recur_daily,mcal_event_set_recur_weekly,%
    mcal_event_set_recur_monthly_wday,mcal_event_set_recur_yearly,%
    mcal_event_add_attribute,mcal_expunge,mcal_week_of_year,%
  %--- mcrypt functions
    mcrypt_get_cipher_name,mcrypt_get_block_size,%
    mcrypt_create_iv,mcrypt_cbc,mcrypt_cfb,mcrypt_ecb,mcrypt_ofb,%
    mcrypt_list_modes,mcrypt_get_iv_size,mcrypt_encrypt,%
    mcrypt_module_open,mcrypt_module_close,mcrypt_generic_deinit,%
    mcrypt_generic,mdecrypt_generic,mcrypt_generic_end,%
    mcrypt_enc_is_block_algorithm_mode,%
    mcrypt_enc_is_block_mode,mcrypt_enc_get_block_size,%
    mcrypt_enc_get_supported_key_sizes,mcrypt_enc_get_iv_size,%
    mcrypt_enc_get_modes_name,mcrypt_module_self_test,%
    mcrypt_module_is_block_algorithm,mcrypt_module_is_block_mode,%
    mcrypt_module_get_algo_key_size,%
  %--- mhash functions
    mhash_get_hash_name,mhash_get_block_size,mhash_count,mhash,%
  %--- misc functions
    connection_aborted,connection_status,connection_timeout,%
    define,defined,die,eval,exit,get_browser,highlight_file,%
    ignore_user_abort,iptcparse,leak,pack,show_source,sleep,uniqid,%
    usleep,%
  %--- mnogosearch functions
    udm_add_search_limit,udm_alloc_agent,udm_api_version,%
    udm_cat_list,udm_clear_search_limits,udm_errno,udm_error,%
    udm_free_agent,udm_free_ispell_data,udm_free_res,%
    udm_get_res_field,udm_get_res_param,udm_load_ispell_data,%
    udm_check_charset,udm_check_stored,udm_close_stored,udm_crc32,%
  %--- msession functions
    msession_connect,msession_disconnect,msession_count,%
    msession_destroy,msession_lock,msession_unlock,msession_set,%
    msession_uniq,msession_randstr,msession_find,msession_list,%
    msession_set_array,msession_listvar,msession_timeout,%
    msession_getdata,msession_setdata,msession_plugin,%
  %--- msql functions
    msql,msql_affected_rows,msql_close,msql_connect,msql_create_db,%
    msql_data_seek,msql_dbname,msql_drop_db,msql_dropdb,msql_error,%
    msql_fetch_field,msql_fetch_object,msql_fetch_row,%
    msql_field_seek,msql_fieldtable,msql_fieldtype,msql_fieldflags,%
    msql_free_result,msql_freeresult,msql_list_fields,%
    msql_list_dbs,msql_listdbs,msql_list_tables,msql_listtables,%
    msql_num_rows,msql_numfields,msql_numrows,msql_pconnect,%
    msql_regcase,msql_result,msql_select_db,msql_selectdb,%
  %--- mssql functions
    mssql_close,mssql_connect,mssql_data_seek,mssql_fetch_array,%
    mssql_fetch_object,mssql_fetch_row,mssql_field_length,%
    mssql_field_seek,mssql_field_type,mssql_free_result,%
    mssql_min_error_severity,mssql_min_message_severity,%
    mssql_num_fields,mssql_num_rows,mssql_pconnect,mssql_query,%
    mssql_select_db,mssql_bind,mssql_execute,mssql_fetch_assoc,%
    mssql_guid_string,mssql_init,mssql_rows_affected,%
  %--- muscat functions
    muscat_setup,muscat_setup_net,muscat_give,muscat_get,%
  %--- mysql functions
    mysql_affected_rows,mysql_change_user,mysql_character_set_name,%
    mysql_connect,mysql_create_db,mysql_data_seek,mysql_db_name,%
    mysql_drop_db,mysql_errno,mysql_error,mysql_escape_string,%
    mysql_fetch_assoc,mysql_fetch_field,mysql_fetch_lengths,%
    mysql_fetch_row,mysql_field_flags,mysql_field_name,%
    mysql_field_seek,mysql_field_table,mysql_field_type,%
    mysql_info,mysql_insert_id,mysql_list_dbs,mysql_list_fields,%
    mysql_list_tables,mysql_num_fields,mysql_num_rows,%
    mysql_ping,mysql_query,mysql_unbuffered_query,%
    mysql_result,mysql_select_db,mysql_tablename,mysql_thread_id,%
    mysql_get_host_info,mysql_get_proto_info,mysql_get_server_info,%
  %--- network functions
    checkdnsrr,closelog,debugger_off,debugger_on,%
    fsockopen,gethostbyaddr,gethostbyname,gethostbynamel,getmxrr,%
    getprotobynumber,getservbyname,getservbyport,ip2long,long2ip,%
    pfsockopen,socket_get_status,socket_set_blocking,%
    syslog,%
  %--- nis functions
    yp_get_default_domain,yp_order,yp_master,yp_match,yp_first,%
    yp_errno,yp_err_string,yp_all,yp_cat,%
  %--- oci8 functions
    OCIDefineByName,OCIBindByName,OCILogon,OCIPLogon,OCINLogon,%
    OCIExecute,OCICommit,OCIRollback,OCINewDescriptor,OCIRowCount,%
    OCIResult,OCIFetch,OCIFetchInto,OCIFetchStatement,%
    OCIColumnName,OCIColumnSize,OCIColumnType,OCIServerVersion,%
    OCINewCursor,OCIFreeStatement,OCIFreeCursor,OCIFreeDesc,%
    OCIError,OCIInternalDebug,OCICancel,OCISetPrefetch,%
    OCISaveLobFile,OCISaveLob,OCILoadLob,OCIColumnScale,%
    OCIColumnTypeRaw,OCINewCollection,OCIFreeCollection,%
    OCICollAppend,OCICollAssignElem,OCICollGetElem,OCICollMax,%
    OCICollTrim,%
  %--- oracle functions
    Ora_Bind,Ora_Close,Ora_ColumnName,Ora_ColumnSize,Ora_ColumnType,%
    Ora_CommitOff,Ora_CommitOn,Ora_Do,Ora_Error,Ora_ErrorCode,%
    Ora_Fetch,Ora_Fetch_Into,Ora_GetColumn,Ora_Logoff,Ora_Logon,%
    Ora_Numcols,Ora_Numrows,Ora_Open,Ora_Parse,Ora_Rollback,%
  %--- outcontrol functions
    flush,ob_start,ob_get_contents,ob_get_length,ob_get_level,%
    ob_flush,ob_clean,ob_end_flush,ob_end_clean,ob_implicit_flush,%
  %--- ovrimos functions
    ovrimos_connect,ovrimos_close,ovrimos_longreadlen,%
    ovrimos_execute,ovrimos_cursor,ovrimos_exec,ovrimos_fetch_into,%
    ovrimos_result,ovrimos_result_all,ovrimos_num_rows,%
    ovrimos_field_name,ovrimos_field_type,ovrimos_field_len,%
    ovrimos_free_result,ovrimos_commit,ovrimos_rollback,%
  %--- pcntl functions
    pcntl_fork,pcntl_signal,pcntl_waitpid,pcntl_wexitstatus,%
    pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,%
    pcntl_exec,%
  %--- pcre functions
    preg_match,preg_match_all,preg_replace,preg_replace_callback,%
    preg_quote,preg_grep,Pattern Modifiers,Pattern Syntax,%
  %--- pdf functions
    pdf_add_annotation,pdf_add_bookmark,pdf_add_launchlink,%
    pdf_add_note,pdf_add_outline,pdf_add_pdflink,pdf_add_thumbnail,%
    pdf_arc,pdf_arcn,pdf_attach_file,pdf_begin_page,%
    pdf_begin_template,pdf_circle,pdf_clip,pdf_close,pdf_closepath,%
    pdf_closepath_stroke,pdf_close_image,pdf_close_pdi,%
    pdf_concat,pdf_continue_text,pdf_curveto,pdf_delete,%
    pdf_endpath,pdf_end_pattern,pdf_end_template,pdf_fill,%
    pdf_findfont,pdf_get_buffer,pdf_get_font,pdf_get_fontname,%
    pdf_get_image_height,pdf_get_image_width,pdf_get_parameter,%
    pdf_get_pdi_value,pdf_get_majorversion,pdf_get_minorversion,%
    pdf_initgraphics,pdf_lineto,pdf_makespotcolor,pdf_moveto,%
    pdf_open,pdf_open_CCITT,pdf_open_file,pdf_open_gif,%
    pdf_open_image_file,pdf_open_jpeg,pdf_open_memory_image,%
    pdf_open_pdi_page,pdf_open_png,pdf_open_tiff,pdf_place_image,%
    pdf_rect,pdf_restore,pdf_rotate,pdf_save,pdf_scale,pdf_setcolor,%
    pdf_setflat,pdf_setfont,pdf_setgray,pdf_setgray_fill,%
    pdf_setlinecap,pdf_setlinejoin,pdf_setlinewidth,pdf_setmatrix,%
    pdf_setpolydash,pdf_setrgbcolor,pdf_setrgbcolor_fill,%
    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_author,pdf_set_info_creator,pdf_set_info_keywords,%
    pdf_set_info_title,pdf_set_leading,pdf_set_parameter,%
    pdf_set_text_rendering,pdf_set_text_rise,pdf_set_text_matrix,%
    pdf_set_word_spacing,pdf_show,pdf_show_boxed,pdf_show_xy,%
    pdf_stringwidth,pdf_stroke,pdf_translate,%
  %--- pfpro functions
    pfpro_init,pfpro_cleanup,pfpro_process,pfpro_process_raw,%
  %--- pgsql functions
    pg_close,pg_affected_rows,pg_connect,pg_dbname,pg_end_copy,%
    pg_query,pg_fetch_array,pg_fetch_object,pg_fetch_row,%
    pg_field_name,pg_field_num,pg_field_prtlen,pg_field_size,%
    pg_free_result,pg_last_oid,pg_host,pg_last_notice,pg_lo_close,%
    pg_lo_export,pg_lo_import,pg_lo_open,pg_lo_read,pg_lo_seek,%
    pg_lo_read_all,pg_lo_unlink,pg_lo_write,pg_num_fields,%
    pg_options,pg_pconnect,pg_port,pg_put_line,pg_fetch_result,%
    pg_client_encoding,pg_trace,pg_tty,pg_untrace,pg_get_result,%
    pg_send_query,pg_cancel_query,pg_connection_busy,%
    pg_connection_status,pg_copy_from,pg_copy_to,pg_escape_bytea,%
    pg_result_error,%
  %--- posix functions
    posix_kill,posix_getpid,posix_getppid,posix_getuid,%
    posix_getgid,posix_getegid,posix_setuid,posix_seteuid,%
    posix_setegid,posix_getgroups,posix_getlogin,posix_getpgrp,%
    posix_setpgid,posix_getpgid,posix_getsid,posix_uname,%
    posix_ctermid,posix_ttyname,posix_isatty,posix_getcwd,%
    posix_getgrnam,posix_getgrgid,posix_getpwnam,posix_getpwuid,%
  %--- printer functions
    printer_open,printer_abort,printer_close,printer_write,%
    printer_set_option,printer_get_option,printer_create_dc,%
    printer_start_doc,printer_end_doc,printer_start_page,%
    printer_create_pen,printer_delete_pen,printer_select_pen,%
    printer_delete_brush,printer_select_brush,printer_create_font,%
    printer_select_font,printer_logical_fontheight,%
    printer_draw_rectangle,printer_draw_elipse,printer_draw_text,%
    printer_draw_chord,printer_draw_pie,printer_draw_bmp,%
  %--- pspell functions
    pspell_add_to_personal,pspell_add_to_session,pspell_check,%
    pspell_config_create,pspell_config_ignore,pspell_config_mode,%
    pspell_config_repl,pspell_config_runtogether,%
    pspell_new,pspell_new_config,pspell_new_personal,%
    pspell_store_replacement,pspell_suggest,%
  %--- qtdom functions
    qdom_tree,qdom_error,%
  %--- readline functions
    readline,readline_add_history,readline_clear_history,%
    readline_info,readline_list_history,readline_read_history,%
  %--- recode functions
    recode_string,recode,recode_file,%
  %--- regex functions
    ereg,ereg_replace,eregi,eregi_replace,split,spliti,sql_regcase,%
  %--- sem functions
    sem_get,sem_acquire,sem_release,sem_remove,shm_attach,%
    shm_remove,shm_put_var,shm_get_var,shm_remove_var,ftok,%
  %--- sesam functions
    sesam_connect,sesam_disconnect,sesam_settransaction,%
    sesam_rollback,sesam_execimm,sesam_query,sesam_num_fields,%
    sesam_diagnostic,sesam_fetch_result,sesam_affected_rows,%
    sesam_field_array,sesam_fetch_row,sesam_fetch_array,%
    sesam_free_result,%
  %--- session functions
    session_start,session_destroy,session_name,session_module_name,%
    session_id,session_register,session_unregister,session_unset,%
    session_get_cookie_params,session_set_cookie_params,%
    session_encode,session_set_save_handler,session_cache_limiter,%
    session_write_close,%
  %--- shmop functions
    shmop_open,shmop_read,shmop_write,shmop_size,shmop_delete,%
  %--- snmp functions
    snmpget,snmpset,snmpwalk,snmpwalkoid,snmp_get_quick_print,%
    snmprealwalk,%
  %--- strings functions
    addcslashes,addslashes,bin2hex,chop,chr,chunk_split,%
    count_chars,crc32,crypt,echo,explode,get_html_translation_table,%
    hebrev,hebrevc,htmlentities,htmlspecialchars,implode,join,%
    localeconv,ltrim,md5,md5_file,metaphone,nl_langinfo,nl2br,ord,%
    print,printf,quoted_printable_decode,quotemeta,str_rot13,rtrim,%
    setlocale,similar_text,soundex,sprintf,strncasecmp,strcasecmp,%
    strcmp,strcoll,strcspn,strip_tags,stripcslashes,stripslashes,%
    strlen,strnatcmp,strnatcasecmp,strncmp,str_pad,strpos,strrchr,%
    strrev,strrpos,strspn,strstr,strtok,strtolower,strtoupper,%
    strtr,substr,substr_count,substr_replace,trim,ucfirst,ucwords,%
    vsprintf,wordwrap,%
  %--- swf functions
    swf_openfile,swf_closefile,swf_labelframe,swf_showframe,%
    swf_getframe,swf_mulcolor,swf_addcolor,swf_placeobject,%
    swf_removeobject,swf_nextid,swf_startdoaction,%
    swf_actiongeturl,swf_actionnextframe,swf_actionprevframe,%
    swf_actionstop,swf_actiontogglequality,swf_actionwaitforframe,%
    swf_actiongotolabel,swf_enddoaction,swf_defineline,%
    swf_definepoly,swf_startshape,swf_shapelinesolid,%
    swf_shapefillsolid,swf_shapefillbitmapclip,%
    swf_shapemoveto,swf_shapelineto,swf_shapecurveto,%
    swf_shapearc,swf_endshape,swf_definefont,swf_setfont,%
    swf_fontslant,swf_fonttracking,swf_getfontinfo,swf_definetext,%
    swf_definebitmap,swf_getbitmapinfo,swf_startsymbol,%
    swf_startbutton,swf_addbuttonrecord,swf_oncondition,%
    swf_viewport,swf_ortho,swf_ortho2,swf_perspective,swf_polarview,%
    swf_pushmatrix,swf_popmatrix,swf_scale,swf_translate,swf_rotate,%
  %--- sybase functions
    sybase_affected_rows,sybase_close,sybase_connect,%
    sybase_fetch_array,sybase_fetch_field,sybase_fetch_object,%
    sybase_field_seek,sybase_free_result,sybase_get_last_message,%
    sybase_min_error_severity,sybase_min_message_severity,%
    sybase_num_fields,sybase_num_rows,sybase_pconnect,sybase_query,%
    sybase_select_db,%
  %--- uodbc functions
    odbc_autocommit,odbc_binmode,odbc_close,odbc_close_all,%
    odbc_connect,odbc_cursor,odbc_do,odbc_error,odbc_errormsg,%
    odbc_execute,odbc_fetch_into,odbc_fetch_row,odbc_fetch_array,%
    odbc_fetch_object,odbc_field_name,odbc_field_num,%
    odbc_field_len,odbc_field_precision,odbc_field_scale,%
    odbc_longreadlen,odbc_num_fields,odbc_pconnect,odbc_prepare,%
    odbc_result,odbc_result_all,odbc_rollback,odbc_setoption,%
    odbc_tableprivileges,odbc_columns,odbc_columnprivileges,%
    odbc_primarykeys,odbc_foreignkeys,odbc_procedures,%
    odbc_specialcolumns,odbc_statistics,%
  %--- url functions
    base64_decode,base64_encode,parse_url,rawurldecode,rawurlencode,%
    urlencode,%
  %--- var functions
    doubleval,empty,floatval,gettype,get_defined_vars,%
    import_request_variables,intval,is_array,is_bool,is_double,%
    is_int,is_integer,is_long,is_null,is_numeric,is_object,is_real,%
    is_scalar,is_string,isset,print_r,serialize,settype,strval,%
    unset,var_dump,var_export,is_callable,%
  %--- vpopmail functions
    vpopmail_add_domain,vpopmail_del_domain,%
    vpopmail_add_domain_ex,vpopmail_del_domain_ex,%
    vpopmail_add_user,vpopmail_del_user,vpopmail_passwd,%
    vpopmail_auth_user,vpopmail_alias_add,vpopmail_alias_del,%
    vpopmail_alias_get,vpopmail_alias_get_all,vpopmail_error,%
  %--- w32api functions
    w32api_set_call_method,w32api_register_function,%
    w32api_deftype,w32api_init_dtype,%
  %--- wddx functions
    wddx_serialize_value,wddx_serialize_vars,wddx_packet_start,%
    wddx_add_vars,wddx_deserialize,%
  %--- xml functions
    xml_parser_create,xml_set_object,xml_set_element_handler,%
    xml_set_processing_instruction_handler,xml_set_default_handler,%
    xml_set_notation_decl_handler,%
    xml_parse,xml_get_error_code,xml_error_string,%
    xml_get_current_column_number,xml_get_current_byte_index,%
    xml_parser_free,xml_parser_set_option,xml_parser_get_option,%
    utf8_encode,xml_parser_create_ns,%
    xml_set_start_namespace_decl_handler,%
  %--- xslt functions
    xslt_set_log,xslt_create,xslt_errno,xslt_error,xslt_free,%
    xslt_set_sax_handler,xslt_set_scheme_handler,%
    xslt_set_base,xslt_set_encoding,xslt_set_sax_handlers,%
  %--- yaz functions
    yaz_addinfo,yaz_close,yaz_connect,yaz_errno,yaz_error,yaz_hits,%
    yaz_database,yaz_range,yaz_record,yaz_search,yaz_present,%
    yaz_scan,yaz_scan_result,yaz_ccl_conf,yaz_ccl_parse,%
    yaz_wait,yaz_sort,%
  %--- zip functions
    zip_close,zip_entry_close,zip_entry_compressedsize,%
    zip_entry_filesize,zip_entry_name,zip_entry_open,zip_entry_read,%
    zip_read,%
  %--- zlib functions
    gzclose,gzeof,gzfile,gzgetc,gzgets,gzgetss,gzopen,gzpassthru,%
    gzread,gzrewind,gzseek,gztell,gzwrite,readgzfile,gzcompress,%
    gzdeflate,gzinflate,gzencode,},%
   sensitive,%
   morecomment=[l]\#,%
   morecomment=[l]//,%
   morecomment=[s]{/*}{*/},%
   morestring=[b]",%
   morestring=[b]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Plasm}
%
% \lstthanks{Alessio~Pace}{}{2004/09/01} provided the following definition.
%
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Plasm}%
  {sensitive=false,%
   morekeywords={aa,abs,ac,acolor,acos,actor,al,alias,align,and,%
      animation,animation,appearance,apply,ar,arc,as,asin,assoc,atan,%
      axialcamera,axialcameras,basehermite,bbox,bbox,bernstein,%
      bernsteinbasis,bezier,beziercurve,beziermanifold,bezierstripe,%
      beziersurface,bigger,biggest,bilinearsurface,binormal,%
      biquadraticsurface,black,blend,blue,bottom,box,brown,bspize,%
      bspline,bsplinebasis,c,cabinet,camera,cart,case,cat,catch,ceil,%
      centeredcameras,centralcavalier,char,charseq,choose,circle,%
      circumference,class,cmap,color,comp,computecoords,cone,%
      conicalsurface,cons,control,convexcoords,convexhull,coonspatch,%
      copy,cos,cosh,crease,crosspolytope,cube,cubiccardinal,%
      cubiccardinalbasis,cubichermite,cubicubspline,cubicubsplinebasis,%
      cuboid,curl,curvature,curve2cspath,curve2mapvect,cyan,cylinder,%
      cylindricalsurface,d,deboor,def,depol,depth_sort,depth_test,%
      derbernstein,derbernsteinbase,derbezier,determinant,difference,%
      differencepr,dim,dimetric,dirproject,displaygraph,displaynubspline,%
      displaynurbspline,distl,distr,div,divergence,dodecahedron,dot,down,%
      dp,drawedges,drawforks,drawtree,ds,dsphere,dump,dumprep,ellipse,%
      embed,end,eq,ex,exp,explode,export,extract_bodies,extract_polygons,%
      extract_wires,extrude,extrusion,fact,false,feature,ff,fillcolor,%
      filter,finitecone,first,flash,flashani,floor,fontcolor,fontheight,%
      fontspacing,fontwidth,fractalsimplex,frame,frame,frameflash,fromto,%
      gausscurvature,ge,grad,gradient,gradmap,gray,green,gt,help,hermite,%
      hermitebasis,hermitesurface,hexahedron,icosahedron,id,idnt,if,in,%
      inarcs,innerprod,inset,insl,insr,intersection,intersectionpr,%
      intervals,intmax,intmin,intsto,inv,isa,isanimpol,isbool,ischar,%
      isclosedshape,iscloseto,isempty,iseven,isfun,isfunvect,isge,isgt,%
      isint,isintneg,isinto,isintpos,isle,islt,ismat,ismatof,isnat,%
      isnull,isnum,isnumneg,isnumpos,isodd,isometric,isorthoshape,ispair,%
      ispoint,ispointseq,ispol,ispoldim,ispolytope,ispurepol,isreal,%
      isrealneg,isrealpos,isrealvect,isseq,isseqof,isshape,issimplex,%
      issqrmat,isstring,isvect,iszero,jacobian,join,joints,k,last,le,%
      left,leftcavalier,len,less,lesseq,lex,lift,light,linecolor,%
      linesize,list,ln,load,loadlib,loop,lt,lxmy,magenta,map,mapshapes,%
      markersize,mat,matdotprod,material,mathom,max,mean,meanpoint,med,%
      merge,mesh,min,minkowski,mirror,mixedprod,mk,mkframe,mkpol,%
      mkvector,mkversork,mod,model,move,mul,multextrude,mxby,mxmy,mxty,%
      myfont,n,nat2string,neq,ngon,norm2,normalmap,not,nu_grid,nubspline,%
      nubsplineknots,nurbspline,nurbsplineknots,octahedron,offset,%
      onepoint,open,optimize,or,orange,ord,ortho,orthoproject,orthox,%
      orthoy,orthoz,outarcs,outerloop,outerwarp,pairdiff,parallel,%
      pascaltriangle,pdiff,pdifference,permutahedron,permutations,%
      perspective,perspective,pi,pivotop,plane,planemapping,pmap,%
      points2shape,polar,polyline,polymarker,polypoint,power,powerset,%
      presort,principalnormal,print,prism,profileprodsurface,%
      progressivesum,project,projection,purple,pyramid,q,quadarray,%
      quadmesh,quote,r,raise,range,rationalbezier,rationalblend,%
      rationalbspline,rationalize,red,rev,reverse,rgbacolor,right,%
      rightcavalier,ring,rn,rotatedtext,rotationalsurface,rotn,rtail,%
      ruledsurface,rxmy,s,save,scalarmatprod,scalarvectprod,schlegel2d,%
      schlegel3d,sdifference,sdifferencepr,segment,sel,setand,setdiff,%
      setfontcolor,setor,setxor,sex,shape_0,shape_1,shape2points,%
      shape2pol,shapeclosed,shapecomb,shapediff,shapedist,%
      shapeinbetweening,shapeinf,shapejoin,shapelen,shapenorm,%
      shapenormal,shapeprod,shaperot,shapesum,shapesup,shapezero,shift,%
      showprop,sign,signal,simplex,simplexpile,sin,sinh,size,skeleton,%
      skew,smaller,smallest,solidifier,solidify,sort,sphere,spline,%
      splinesampling,splitcells,splitpols,sqr,sqrt,star,string,%
      stringtokens,struct,sub,svg,sweep,t,tail,tan,tangent,tanh,%
      tensorprodsurface,tetrahedron,text,texture,textwithattributes,%
      thinsolid,threepoints,time,tmax,tmin,top,torus,torusmap,trace,%
      trans,tree,trianglefan,trianglestripe,trimetric,true,truncone,tt,%
      tube,twopoints,uk,ukpol,ukpolf,union,unionpr,unitvect,unprune,up,%
      vect2dtoangle,vect2mat,vectdiff,vectnorm,vectprod,vectsum,view,%
      viewmodel,viewmodel,vrml,warp,warp,where,white,with,xcavalier,xor,%
      xquadarray,xx,ycavalier,yellow},%
   moredirectives={loadlib},%
   otherkeywords={-,+,*,**,/,~,|,..,^,\&,\&\&,\#,\#\#},%
   morecomment=[s]{\%}{\%},%
   morestring=[b]',%
   literate={~}{{$\sim$}}{1} {^}{$\wedge$}{1},%
  }[keywords,directives,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \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{PostScript}
%
% Herbert Voss provided the following definition, written by
% \lstthanks{Christophe~Jorssen}{}{2004/09/17} provided the following definition.
%
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% PostScript language definition (c) 2005 Christophe Jorssen.
%%
\lst@definelanguage{PostScript}{%
  morekeywords={abs,add,aload,anchorsearch,and,arc,arcn,arct,arcto,array,ashow,
    astore,atan,awidthshow,begin,bind,bitshift,bytesavailable,cachestatus,
    ceiling,charpath,clear,cleartomark,cleardictstack,clip,clippath,closefile,
    closepath,colorimage,concat,concatmatrix,condition,copy,copypage,cos,count,
    countdictstack,countexecstack,counttomark,cshow,currentblackgeneration,
    currentcacheparams,currentcmykcolor,currentcolor,currentcolorrendering,
    currentcolorscreen,currentcolorspace,currentcolortransfer,currentcontext,
    currentdash,currentdevparams,currentdict,currentfile,currentflat,currentfont,
    currentglobal,currentgray,currentgstate,currenthalftone,currenthalftonephase,
    currenthsbcolor,currentlinecap,currentlinejoin,currentlinewidth,currentmatrix,
    currentmiterlimit,currentobjectformat,currentpacking,currentpagedevice,
    currentpoint,currentrgbcolor,currentscreen,currentshared,currentstrokeadjust,
    currentsystemparams,currenttransfer,currentundercolorremoval,currentuserparams,
    curveto,cvi,cvlit,cvn,cvr,cvrs,cvs,cvx,def,defaultmatrix,definefont,
    defineresource,defineusername,defineuserobject,deletefile,detach,deviceinfo,
    dict,dictstack,div,dtransform,dup,
    echo,eexec,end,eoclip,eofill,eoviewclip,eq,erasepage,errordict,exch,exec,
    execform,execstack,execuserobject,executeonly,executive,exit,
    exp,false,file,filenameforall,fileposition,fill,filter,findencoding,findfont,
    findresource,flattenpath,floor,flush,flushfile,FontDirectory,for,forall,fork,ge,
    get,getinterval,globaldict,GlobalFontDirectory,glyphshow,grestore,grestoreall,
    gsave,gstate,gt,identmatrix,idiv,idtransform,if,ifelse,image,
    imagemask,index,ineofill,infill,initclip,initgraphics,initmatrix,initviewclip,
    instroke,internaldict,inueofill,inufill,inustroke,
    invertmatrix,ISOLatin1Encoding,itransform,join,kshow,
    known,languagelevel,le,length,lineto,ln,load,lock,log,loop,lt,
    makefont,makepattern,mark,matrix,maxlength,mod,monitor,moveto,mul,ne,neg,
    newpath,noaccess,not,notify,null,nulldevice,or,packedarray,
    pathbbox,pathforall,pop,print,printobject,product,prompt,pstack,put,putinterval,
    quit,rand,rcurveto,read,readhexstring,readline,readonly,readstring,
    realtime,rectclip,rectfill,rectstroke,rectviewclip,renamefile,repeat,resetfile,
    resourceforall,resourcestatus,restore,reversepath,revision,rlineto,rmoveto,roll,
    rootfont,rotate,round,rrand,run,save,scale,scalefont,scheck,search,selectfont,
    serialnumber,setbbox,setblackgeneration,setcachedevice,setcachedevice2,
    setcachelimit,setcacheparams,setcharwidth,setcmykcolor,setcolor,
    setcolorrendering,setcolorscreen,setcolorspace,setcolortransfer,setdash,
    setdevparams,setfileposition,setflat,setfont,setglobal,setgray,setgstate,
    sethalftone,sethalftonephase,sethsbcolor,setlinecap,setlinejoin,setlinewidth,
    setmatrix,setmiterlimit,setobjectformat,setoverprint,setpacking,setpagedevice,
    setpattern,setrgbcolor,setscreen,setshared,setstrokeadjust,setsystemparams,
    settransfer,setucacheparams,setundercolorremoval,setuserparams,setvmthreshold,
    shareddict,show,showpage,sin,sqrt,srand,stack,
    StandardEncoding,start,startjob,status,statusdict,stop,stopped,store,string,
    stringwidth,stroke,strokepath,sub,systemdict,transform,
    translate,true,truncate,type,token,uappend,ucache,ucachestatus,
    ueofill,ufill,undef,
    upath,userdict,UserObjects,
    usertime,ustroke,ustrokepath,version,viewclip,viewclippath,vmreclaim,
    vmstatus,wait,wcheck,where,widthshow,write,writehexstring,writeobject,
    writestring,wtranslation,xcheck,xor,xshow,xyshow,yield,yshow},
  sensitive,
  morecomment=[l]\%}[keywords,comments]
%    \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
%%
\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},%
   moredelim=*[directive]\#,%
   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
%%
\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{Promela}
%
% Thanks to \lstthanks{William~Thimbleby}{-}{1997/11/24}{Promela} for this
% language definition.
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Promela definition (c) 2004 William Thimbleby
%%
\lst@definelanguage{Promela}
  {morekeywords={active,assert,atomic,bit,bool,break,byte,chan,d_step,%
      Dproctype,do,else,empty,enabled,fi,full,goto,hidden,if,init,int,%
      len,mtype,nempty,never,nfull,od,of,pcvalue,printf,priority,%
      proctype,provided,run,short,skip,timeout,typedef,unless,unsigned,%
      xr,xs,true,false,inline,eval},%
   moredirectives={define,ifdef,ifndef,if,if,else,endif,undef,include},%
   moredelim=*[directive]\#,%
   morecomment=[s]{/*}{*/},%
   morestring=[b]"%
  }[keywords,comments,strings,directives]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{PSTricks}
%
% PSTricks is a \TeX\ macro package bundle.
% \lstthanks{Herbert~Voss}{}{2004/09/17} provided the following definition.
%
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% PSTricks definition (c) 2006 Herbert Voss
%%
\lst@definelanguage{PSTricks}%
  {morekeywords={%
    begin,end,definecolor,multido,%
    KillGlue,DontKillGlue,pslbrace,bsrbrace,psscalebox,psset,pstVerb,pstverb,%
    pst@def,,psframebox,psclip,endclip,endpspicture,psframe,
%%    pspicture,%
    multirput,multips,Rput,rput,uput,cput,lput,%
    newrgbcolor,newgray,newcmykcolor,
%%
%% pstricks-add
    psStep,psgraph,psbrace,psPrintValue,
%%
%% pst-plot
    psvlabel,pshlabel,psplot,psline,pscustom,pscurve,psccurve,%
    readdata,savedata,fileplot,dataplot,listplot,%
    psecurce,psgraph,parametricplot,%
    psellipse,psaxes,ncline,nccurve,psbezier,parabola,%
    qdisk,qline,clipbox,endpsclip,%
    psgrid,pscircle,pscirclebox,psdiabox,pstribox,%
    newpsfontdot,psdot,psdots,%
    pspolygon,psdiamond,psoval,pstriangle,%
    psarc,psarcn,psellipticarc,psellipticarcn,pswedge,psellipticwedge,
    pcline,pcdiag,pcdiagg,pccurve,pccurve,pcecurve,%
    scalebox,scaleboxto,psmathboxtrue,everypsbox,psverbboxtrue,overlaybox,%
    psoverlay,putoverlaybox,%
    newpsstyle,newpsobject,%
    moveto,newpath,closepath,stroke,fill,gsave,grestore,msave,mrestore,translate,scale,%
    swapaxes,rotate,openshadow,closedshadow,movepath,lineto,rlineto,curveto,rcurveto,%
    code,dim,coor,rcoor,file,arrows,setcolor,%
    rotateleft,rotateright,rotatedown,%
%%
%% pst-node
    nput,naput,nbput,ncput,%
    ncarc,ncbox,ncangle,ncangles,ncloop,ncdiag,ncdiagg,ncarcbox,ncbar,%
    cnodeput,nccircle,%
    pnode,rnode,Rnode,Cnode,cnode,fnode,%
    circlenode,ovalnode,trinode,dianode,%
    psmatrix,endpsmatrix,psspan,%
%%
%% pst-tree
    pstree,Tcircle,TCircle,Ttri,Tn,TC,Tc,Tfan,TR,Tr,Tdia,Toval,Tdot,Tp,Tf,%
    skiplevel,skiplevels,endskiplevels,tspace,tlput,%
%%
%% pst-text
    pscharpath,pstextpath,
%%
%% pst-barcode
    psbarcode,
%%
%% pst-coil
    psboxfill,pscoil,psCoil,pszigzag,nccoil,
    psshadow,pstilt,psTilt,ThreeDput,
%%
%% pst-gr3d
    PstGridThreeDNodeProcessor,%
%%
%% pst-vue3d
    PstGridThreeD,
    AxesThreeD,LineThreeD,DieThreeD,FrameThreeD,SphereCircleThreeD,SphereMeridienThreeD,
    QuadrillageThreeD,TetraedreThreeD,PyramideThreeD,ConeThreeD,CylindreThreeD,
    DodecahedronThreeD,ConeThreeD,SphereThreeD,SphereInverseThreeD,DemiSphereThreeD,
    SphereCreuseThreeD,SphereCircledThreeD,PortionSphereThreeD,pNodeThreeD,CubeThreeD,%
%%
%% pst-3dplot
    pstThreeDCoor,pstThreeDDot,pstThreeDTriangle,pstThreeDCircle,pstPlanePut,%
    pstThreeDBox,pstThreeDEllipse,pstThreeDLine,pstThreeDPut,%
    pstThreeDNode,pstThreeDSquare,psplotThreeD,parametricplotThreeD,fileplotThreeD,%
    dataplotThreeD,pstScalePoints,%
%%
%% pst-circ
    resistor,battery,Ucc,Icc,capacitor,coil,diode,Zener,LED,lamp,switch,wire,tension,
    circledipole,multidipole,OA,transistor,Tswitch,potentiometer,transformer,
    optoCoupler,logic,
%%
%% pst-eucl
    pstTriangle,pstMediatorAB,pstInterLL,pstMiddleAB,pstProjection,pstCircleOA,pstLineAB,%
%%
%% pst-func
    psBessel,psPolynomial,psFourier,psGaussI,psGauss,psSi,pssi,psCi,psci,%
%%
%% pst-infixplot
    psPlot,
%%
%% pst-ob3d
    PstDie,PstCube,
%%
%% pst-poly
    PstPolygon,pspolygonbox,
%%
%% pst-bar
    psbarchart,readpsbardata,psbarscale,newpsbarstyle,%
%%
%% pst-lens
    PstLens,%
%%
%% pst-geo
    WorldMap,WorldMapII,WorldMapThreeD,WorldMapThreeDII,pnodeMap,MapPut,%
%%
%% pst-autoseg
    asr,firstnode,merge,massoc,labelmerge,%
%%
%% gastex
    node,imark,fmark,rmark,drawqbpedge,drawedge,drawloop,%
%%
%% pst-labo
    Distillation,Ballon,
%%
%% pst-optic
    lens,Transform,%
%%
%% pst-light3d
    PstLightThreeDText,%
%%
%% calendrier
    Calendrier,%
%%
%% pst-osci
    Oscillo%
  },%
   sensitive,%
   alsoother={0123456789$_},%
   morecomment=[l]\% %
  }[keywords,comments]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \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.
% \lstthanks{Stephen Kelly}{-}{2007/01/14} reported some problems that indicated
% that the comment definitions needed to be moved after the string definitions
% to work correctly.
%
% In August 2013
% \lstthanks{Alexis~Dimitriadis}{A.Dimitriadis@uu.nl}{2013/08/15} reworked
% the definition by supplying the builtins.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Python definition (c) 1998 Michael Weber
%% Additional definitions (2013) Alexis Dimitriadis
%%
\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},%
%    \end{macrocode}
% Python has a long list of builtin-in functions
% (\url{http://docs.python.org/2/library/functions.html}) and it is a good
% idea to make them visible in printed code
%    \begin{macrocode}
  % Built-ins
   morekeywords=[2]{abs,all,any,basestring,bin,bool,bytearray,callable,chr,
     classmethod,cmp,compile,complex,delattr,dict,dir,divmod,enumerate,eval,
     execfile,file,filter,float,format,frozenset,getattr,globals,hasattr,hash,
     help,hex,id,input,int,isinstance,issubclass,iter,len,list,locals,long,map,
     max,memoryview,min,next,object,oct,open,ord,pow,property,range,raw_input,
     reduce,reload,repr,reversed,round,set,setattr,slice,sorted,staticmethod,str,
     sum,super,tuple,type,unichr,unicode,vars,xrange,zip,apply,buffer,coerce,
     intern},
   sensitive=true,%
   morecomment=[l]\#,%
   morestring=[b]',%
   morestring=[b]",%
%    \end{macrocode}
% According to PEP (Python Enhancement Proposals) comment should be
% distinguished from documentation strings, so we define
%    \begin{macrocode}
   morecomment=[s]{'''}{'''},% used for documentation text (mulitiline strings)
   morecomment=[s]{"""}{"""},% added by Philipp Matthias Hahn
%    \end{macrocode}
% \lsthelper{J\"urgen Dietel}{j.dietel@rz.rwth-aachen}{2015/05/05}{} provided
% an example with a wrong representation of documentation strings, so the
% two lines above got changed from |morestring| $\rightarrow$ |morecomment|.
%
% Python now supports so called \emph{raw strings} and also Unicode
% strings. Here is the definition of these strings:
%    \begin{macrocode}
   morestring=[s]{r'}{'},% `raw' strings
   morestring=[s]{r"}{"},%
   morestring=[s]{r'''}{'''},%
   morestring=[s]{r"""}{"""},%
   morestring=[s]{u'}{'},% unicode strings
   morestring=[s]{u"}{"},%
   morestring=[s]{u'''}{'''},%
   morestring=[s]{u"""}{"""}%
  }%
%    \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
%
%
% \begingroup
% Alexis Dimitriadis also proposes the following configuration for printing
% Python code which simulates colorizing the code as it's done by the IDLE
% GUI:
%    \begin{macrocode}
%<*python-prf>
%    \end{macrocode}
%    \begin{macrocode}
\usepackage{xcolor}
\usepackage{textcomp}

%% Actual colors from idlelib/config-highlight.def --> corrected to ``web-safe''
%% strings  = #00aa00 / 0,170,0      (a darker green)
%% builtins = #900090 / 144,0,144    (purple-ish)
%% keywords = #FF7700 / 255,119,0    (quite close to plain `orange')
%\definecolor{IDLEorange}{RGB}{255,119,0} % pretty close to real orange
%\definecolor{IDLEpurple}{RGB}{144,0,144}
%\definecolor{IDLEgreen}{RGB}{0,170,0}
%\definecolor{IDLEred}{RGB}{221,0,0}
%% Corrected to ``web-safe''
%\definecolor{orange2}{RGB}{255,102,0}
\definecolor{purple2}{RGB}{153,0,153} % there's actually no standard purple
\definecolor{green2}{RGB}{0,153,0} % a darker green
%\definecolor{red2}{RGB}{221,0,0}

% Except for green and purple, the other colors are pretty good in standard
% hue
\lstdefinestyle{python-idle-code}{%
  language=Python,                   % the language
  basicstyle=\normalsize\ttfamily,   % size of the fonts for the code
  % Color settings to match IDLE style
  keywordstyle=\color{orange},       % core keywords
  keywordstyle={[2]\color{purple2}}, % built-ins
  stringstyle=\color{green2},
  commentstyle=\color{red},
  upquote=true,                      % requires textcomp
}
% Unimplemented IDLE syntax: function/class names being defined should be
% blue
%    \end{macrocode}
% This code is provided in the file |listings-python.prf|, see section
% 2.4.1 (Preferences) of the \packagename{listings} documentation.
%    \begin{macrocode}
%</python-prf>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Rexx}
%
% \lstthanks{Patrick~TJ~McPhee}{ptjm@interlog.com}{2003/10/24} provided this
% definition.
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% classic rexx listings definition
%% by Patrick TJ McPhee <ptjm@interlog.com>
%%
\lst@definelanguage{Rexx}
  {morekeywords={address,arg,call,do,drop,else,end,exit,if,iterate,%
                 interpret,leave,nop,numeric,options,otherwise,parse,%
                 procedure,pull,push,queue,return,say,signal,then,to,%
                 trace,when},%
   sensitive=false,%
   morecomment=[n]{/*}{*/},%
   morestring=[d]{'},%
   morestring=[d]{"},%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang2>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Reduce}
%
% was provided by \lstthanks{Geraint~Paul~Bevan}{geraint@users.sf.net}
% {2002/10/31}.
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Reduce definition (c) 2002 Geraint Paul Bevan
%%
\lst@definelanguage{Reduce}%
  {morekeywords={%
%% reserved identifiers
	abs,acos,acosh,acot,acoth,acsc,acsch,%
	adjprec,algebraic,algint,allbranch,allfac,and,%
	antisymmetric,append,arglength,array,asec,asech,%
	asin,asinh,atan,atan2,atanh,begin,bfspace,bye,%
	card_no,ceiling,clear,clearrules,coeff,coeffn,%
	cofactor,combineexpt,combinelogs,comment,comp,%
	complex,conj,cons,cont,cos,cosh,cot,coth,cramer,%
	cref,csc,csch,decompose,define,defn,deg,demo,den,%
	depend,det,df,difference,dilog,display,div,do,e,%
	echo,ed,editdef,ei,end,eps,eq,equal,erf,errcont,%
	evallhseqp,eval_mode,even,evenp,exp,expandlogs,%
	expr,expt,ezgcd,factor,factorial,factorize,fexpr,%
	first,fix,fixp,floor,for,forall,foreach,fort,%
	fort_width,freeof,fullroots,g,gcd,geq,go,goto,%
	greaterp,high_pow,hypot,i,if,ifactor,impart,in,%
	index,infinity,infix,input,int,integer,interpol,%
	intstr,k,korder,lambda,lcm,lcof,length,leq,lessp,%
	let,lhs,linear,linelength,lisp,list,listargp,%
	listargs,ln,load,load_package,log,log10,logb,%
	low_pow,lterm,macro,mainvar,mass,mat,match,%
	mateigen,matrix,max,mcd,member,memq,min,minus,mkid,%
	modular,msg,mshell,multiplicities,nat,neq,nero,%
	nextprime,nil,nodepend,noncom,nonzero,nosplit,%
	nospur,nullspace,num,numberp,odd,off,on,operator,%
	or,order,ordp,out,output,part,pause,period,pf,pi,%
	plus,precedence,precise,precision,pret,pri,primep,%
	print_precision,procedure,product,quit,quotient,%
	random,random_new_seed,rank,rat,ratarg,rational,%
	rationalize,ratpri,real,rederr,reduct,remainder,%
	remfac,remind,repart,repeat,rest,resultant,retry,%
	return,reverse,revpri,rhs,rlisp88,%
	root_multiplicity,round,roundall,roundbf,rounded,%
	saveas,savestructr,scalar,sec,sech,second,set,%
	setmod,setq,share,showrules,showtime,shut,sign,sin,%
	sinh,smacro,solve,solvesingular,spur,sqrt,structr,%
	sub,sum,symbolic,symmetric,t,tan,tanh,third,time,%
	times,tp,tra,trace,trfac,trigform,trint,until,%
	varname,vecdim,vector,weight,when,where,while,%
	write,ws,wtlevel,%
%% identifiers with spaces
%%	for all,for each,go to,such that,%
	},%
  sensitive=false,%
  morecomment=[l]\%,%
  morecomment=[s]{COMMENT}{;},%
  morecomment=[s]{COMMENT}{$},%
  morestring="%
 }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{RSL}
%
% Thanks go to \lstthanks{Brian~Christensen}{}{2004/02/15}.
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% RSL definition (c) 2004 Brian Christensen
%%
\lst@definelanguage{RSL}%
  {morekeywords={Bool,Char,devt_relation,Int,Nat,Real,Text,Unit,abs,any,%
      as,axiom,card,case,channel,chaos,class,do,dom,elems,else,elsif,end,%
      extend,false,for,hd,hide,if,in,inds,initialise,int,len,let,local,%
      object,of,out,post,pre,read,real,rng,scheme,skip,stop,swap,%
      test_case,theory,then,tl,true,type,until,use,value,variable,while,%
      with,write},%
literate=%
{<}{$<$}{1}%
{>}{$>$}{1}%
{[}{$[$}{1}%%
{]}{$]$}{1}%%
{^}{{\mbox{$\widehat{\;}$}}}{1}%%
{'}{{\raisebox{1ex}[1ex][0ex]{\protect\scriptsize$\prime$}}}{1}%%
{||}{{\mbox{$\parallel$}}}{2}%%
{|-}{$\vdash$}{1}%%
{|=|}{{\mbox{$\lceil\!\rceil\!\!\!\!\!\!\;\lfloor\!\rfloor$}}}{1}%%
{**}{$\uparrow$}{1}%
{/\\}{$\wedge$}{1}%%
{inter}{$\cap$}{1}%%
{-\\}{$\lambda$}{1}%%
{->}{$\rightarrow$}{1}%%
{-m->}{{\mbox{$\rightarrow \hspace{-2.5\lst@width} _{m}\;$}}}{1}%
{-~m->}{{\mbox{$\stackrel{\sim}{\mbox{$\rightarrow\hspace{-2.5\lst@width} _{m}\;$}}$}}}{1}%
{-~->}{{\mbox{$\stackrel{\sim}{\rightarrow}$}}}{1}%%
{-set}{\bf{-set}}{4}%%
{-list}{{$^{\ast}$}}{1}%%
{-inflist}{$^\omega$}{1}%
{-infset}{{\mbox{{\bf -infset}}}}{7}%
{\#}{$\circ$}{1}%
{:-}{{\raisebox{.4ex}{\tiny $\bullet$}}}{1}%%
{=}{$=$}{1}%%
{==}{$==$}{2}%%
{=>}{$\Rightarrow$}{1}%%
{\ is\protect\^^M}{{$\;\equiv$}}{2}%
{\ is\ }{{$\equiv$}}{3}%%
{\ isin\protect\^^M}{$\;\in$}{2}%%
{~}{$\sim$}{1}%%
{~=}{$\neq$}{1}%%
{~isin}{$\notin$}{1}%%
{+>}{$\mapsto$}{1}%%
{++}{}{1}%
{|^|}{{\mbox{$\lceil\!\rceil$}}}{1}%%
{\\/}{$\vee$}{1}%%
{exists}{$\exists$}{1}%%
{union}{$\cup$}{1}%%
{>=}{$\geq$}{1}%%
{><}{$\times$}{1}%%
{>>}{$\supset$}{1}%
{>>=}{$\supseteq$}{1}%%
{<=}{$\leq$}{1}%%
{<<}{$\subset$}{1}%
{<.}{$\langle$}{1}%%
{<<=}{$\subseteq$}{1}%%
{<->}{$\leftrightarrow$}{1}%%
{[=}{$\sqsubseteq$}{1}%%
{\{=}{$\preceq$}{1}%%
{\ all\protect\^^M}{$\forall$}{2}%%
{\ all\ }{$\forall$}{3}%%
{!!}{$\dagger$}{1}%%
{always}{$\Box$}{1}%%
{.>}{$\rangle$}{1}%%
{`alpha}{$\alpha$}{1}%
{`beta}{$\beta$}{1}%
{`gamma}{$\gamma$}{1}%
{`delta}{$\delta$}{1}%
{`epsilon}{$\epsilon$}{1}%
{`zeta}{$\zeta$}{1}%
{`eta}{$\eta$}{1}%
{`theta}{$\theta$}{1}%
{`iota}{$\iota$}{1}%
{`kappa}{$\kappa$}{1}%
{`mu}{$\mu$}{1}%
{`nu}{$\nu$}{1}%
{`xi}{$\xi$}{1}%
{`pi}{$\pi$}{1}%
{`rho}{$\rho$}{1}%
{`sigma}{$\sigma$}{1}%
{`tau}{$\tau$}{1}%
{`upsilon}{$\upsilon$}{1}%
{`phi}{$\phi$}{1}%
{`chi}{$\chi$}{1}%
{`psi}{$\psi$}{1}%
{`omega}{$\omega$}{1}%
{`Gamma}{$\Gamma$}{1}%
{`Delta}{$\Delta$}{1}%
{`Theta}{$\Theta$}{1}%
{`Lambda}{$\Lambda$}{1}%
{`Xi}{$\Xi$}{1}%
{`Pi}{$\Pi$}{1}%
{`Sigma}{$\Sigma$}{1}%
{`Upsilon}{$\Upsilon$}{1}%
{`Phi}{$\Phi$}{1}%
{`Psi}{$\Psi$}{1}%
{`Omega}{$\Omega$}{1},%
   sensitive=true,%
   morecomment=[l]{--},%
   morecomment=[s]{/*}{*/}%
  }[keywords,comments]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Ruby}
%
% \lstthanks{Christian~Kaiser}{chk@combit.net}{2003/02/05} provided the initial
% definition. \lstthanks{Xavier~Noria}{fxn@hashref.com}{2004/01/11} replaced
% the keywords with the keywords from the at the time of writing current
% stable Ruby version.  An erroneous string delimiter was removed following
% a bug reported on comp.text.tex on 2006/09/01.
%
% Ruby supports string delimiters of the form \verb|%q!...!|, where \verb|!|
% can be any character, or can be matched braces or parentheses or brackets.
% The included string definitions include most of the common variants, but are
% of course not comprehensive.
%
% \begingroup
%    \begin{macrocode}
%<*lang2>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Ruby}%
  {morekeywords={__FILE__,__LINE__,BEGIN,END,alias,and,begin,break,%
      case,class,def,defined?,do,else,elsif,end,ensure,false,for,%
      if,in,module,next,nil,not,or,redo,rescue,retry,return,self,%
      super,then,true,undef,unless,until,when,while,yield},%
   sensitive=true,%
   morecomment=[l]\#,%
   morecomment=[l]\#\#,%
   morecomment=[s]{=BEGIN}{=END},%
   morestring=[b]',%
   morestring=[b]",%
   morestring=[s]{\%q/}{/},%
   morestring=[s]{\%q!}{!},%
   morestring=[s]{\%q\{}{\}},%
   morestring=[s]{\%q(}{)},%
   morestring=[s]{\%q[}{]},%
   morestring=[s]{\%q-}{-},%
   morestring=[s]{\%Q/}{/},%
   morestring=[s]{\%Q!}{!},%
   morestring=[s]{\%Q\{}{\}},%
   morestring=[s]{\%Q(}{)},%
   morestring=[s]{\%Q[}{]},%
   morestring=[s]{\%Q-}{-}%
  }[keywords,comments,strings]%
%    \begin{macrocode}
%</lang2>
%    \end{macrocode}
% \endgroup
%
%
% \subsection{Scilab}
%
% Thanks go to \lstthanks{Jean-Philippe~Grivet}{grivet@cnrs-orleans.fr}
% {2003/06/02}.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Scilab definition (c) 2002,2003 Jean-Philippe Grivet
%%
\lst@definelanguage{Scilab}%
  {morekeywords={abcd,abinv,abort,abs,acoshm,acosh,acosm,acos,addcolor,%
      addf,addinter,addmenu,add_edge,add_node,adj2sp,adj_lists,aff2ab,%
      amell,analpf,analyze,ans,apropos,arc_graph,arc_number,argn,arhnk,%
      arl2,arma2p,armac,armax1,armax,arma,arsimul,artest,articul,ascii,%
      asinhm,asinh,asinm,asin,atanhm,atanh,atanm,atan,augment,auread,%
      auwrite,balanc,balreal,bandwr,basename,bdiag,besseli,besselj,%
      besselk,bessely,best_match,bezout,bifish,bilin,binomial,black,%
      bloc2exp,bloc2ss,bode,bool2s,boolean,boucle,break,bstap,buttmag,%
      bvode,cainv,calerf,calfrq,call,canon,casc,case,ccontrg,cdfbet,%
      cdfbin,cdfchi,cdfchn,cdffnc,cdff,cdfgam,cdfnbn,cdfnor,cdfpoi,%
      cdft,ceil,center,cepstrum,chaintest,chain_struct,champ1,champ,%
      chart,chdir,cheb1mag,cheb2mag,check_graph,check_io,chepol,chfact,%
      chol,chsolve,circuit,classmarkov,clean,clearfun,clearglobal,%
      clear,close,cls2dls,cmb_lin,cmndred,cmoment,code2str,coeff,coffg,%
      coff,colcompr,colcomp,colinout,colormap,colregul,companion,comp,%
      cond,conj,connex,contour2di,contour2d,contourf,contour,%
      contract_edge,contrss,contr,cont_frm,cont_mat,convex_hull,convol,%
      convstr,con_nodes,copfac,copy,correl,corr,coshm,cosh,cosm,cos,%
      cotg,cothm,coth,covar,csim,cspect,ctr_gram,cumprod,cumsum,%
      curblock,cycle_basis,czt,c_link,dasrt,dassl,datafit,date,dbphi,%
      dcf,ddp,debug,dec2hex,deff,definedfields,degree,delbpt,%
      delete_arcs,delete_nodes,delete,delip,delmenu,demos,denom,%
      derivative,derivat,des2ss,des2tf,determ,detr,det,dft,dhinf,%
      dhnorm,diag,diary,diff,diophant,dirname,dispbpt,dispfiles,disp,%
      dlgamma,double,dragrect,drawaxis,drawlater,drawnow,draw,driver,%
      dscr,dsearch,dsimul,dtsi,dt_ility,duplicate,edge_number,%
      edit_curv,edit_graph_menus,edit_graph,edit,eigenmarkov,ell1mag,%
      elseif,else,emptystr,endfunction,end,eqfir,eqiir,equil1,equil,%
      ereduc,erfcx,erfc,erf,errbar,errcatch,errclear,error,eval3dp,%
      eval3d,eval,evans,evstr,excel2sci,execstr,exec,exists,exit,expm,%
      exp,external,eye,fac3d,factors,faurre,fchamp,fcontour2d,fcontour,%
      fec,feedback,feval,ffilt,fftshift,fft,fgrayplot,figure,fileinfo,%
      file,filter,findm,findobj,findx0BD,find_freq,find_path,find,%
      findABCD,findAC,findBD,findBDK,findR,fit_dat,fix,floor,flts,foo,%
      formatman,format,fort,for,fourplan,fplot2d,fplot3d1,fplot3d,%
      fprintf,fprintfMat,frep2tf,freq,freson,frexp,frfit,frmag,fscanf,%
      fscanfMat,fsfirlin,fsolve,fspecg,fstabst,fstair,ftest,ftuneq,%
      fullrfk,fullrf,full,fun2string,funcprot,functions,function,%
      funptr,fusee,gainplot,gamitg,gammaln,gamma,gcare,gcd,gcf,%
      genfac3d,genlib,genmarkov,gen_net,geom3d,geomean,getblocklabel,%
      getcolor,getcurblock,getcwd,getdate,getd,getenv,getfield,getfont,%
      getf,getio,getlinestyle,getmark,getpid,getscicosvars,getsymbol,%
      getvalue,getversion,get_function_path,get,gfare,gfrancis,girth,%
      givens,glever,glist,global,glue,gpeche,graduate,grand,%
      graphics_entities,graph_2_mat,graph_center,graph_complement,%
      graph_diameter,graph_power,graph_simp,graph_sum,graph_union,%
      graph-list,graycolormap,grayplot,graypolarplot,grep,group,%
      gr_menu,gschur,gsort,gspec,gstacksize,gtild,g_margin,h2norm,halt,%
      hamilton,hankelsv,hank,harmean,havewindow,help,hermit,hess,%
      hex2dec,hilb,hinf,hist3d,histplot,horner,host,hotcolormap,%
      householder,hrmt,htrianr,hypermat,h_cl,h_inf_st,h_inf,h_norm,%
      iconvert,icon_edit,ieee,if,iirgroup,iirlp,iir,ilib_build,%
      ilib_compile,ilib_for_link,ilib_gen_gateway,ilib_gen_loader,%
      ilib_gen_Make,imag,impl,imrep2ss,imult,im_inv,inistate,input,%
      int16,int2d,int32,int3d,int8,intc,intdec,integrate,interpln,%
      interp,intersci,intersect,intg,intl,intppty,intsplin,inttrap,%
      inttype,int,invr,invsyslin,inv_coeff,inv,iqr,isdef,isdir,isequal,%
      iserror,isglobal,isinf,isnan,isoview,isreal,is_connex,jmat,%
      justify,kalm,karmarkar,kernel,keyboard,knapsack,kpure,krac2,%
      kroneck,kron,lasterror,lattn,lattp,lcf,lcmdiag,lcm,ldivf,ldiv,%
      leastsq,legends,length,leqr,levin,lev,lex_sort,lft,lgfft,library,%
      lib,lin2mu,lincos,lindquist,lines,line_graph,linfn,linf,link,%
      linmeq,linpro,linsolve,linspace,lin,listfiles,list,lmisolver,%
      lmitool,loadmatfile,loadplots,loadwave,load_graph,load,locate,%
      log10,log1p,log2,logm,logspace,log,lotest,lqe,lqg2stan,lqg_ltr,%
      lqg,lqr,lsq,lsslist,lstcat,lstsize,ltitr,ludel,lufact,luget,%
      lusolve,lu,lyap,macglov,macr2lst,macrovar,macro,mad,make_graph,%
      make_index,manedit,man,mapsound,markp2ss,matfile2sci,matrix,%
      mat_2_graph,maxi,max_cap_path,max_clique,max_flow,max,mclearerr,%
      mclose,meanf,mean,median,meof,mese,mesh2d,mfft,mfile2sci,mgeti,%
      mgetl,mgetstr,mget,milk_drop,mine,mini,minreal,minss,%
      min_lcost_cflow,min_lcost_flow1,min_lcost_flow2,min_qcost_flow,%
      min_weight_tree,min,mlist,mode,modulo,moment,mopen,move,%
      mps2linpro,mputl,mputstr,mput,mrfit,msd,mseek,mtell,mtlb_load,%
      mtlb_mode,mtlb_save,mtlb_sparse,mu2lin,mulf,mvvacov,m_circle,%
      names,nand2mean,nanmax,nanmeanf,nanmean,nanmedian,nanmin,%
      nanstdev,nansum,narsimul,ndims,nearfloat,nehari,neighbors,%
      netclose,netwindows,netwindow,newest,newfun,nextpow2,nf3d,nfreq,%
      nlev,nnz,nodes_2_path,nodes_degrees,node_number,noisegen,norm,%
      null,numdiff,numer,nyquist,obscont1,obscont,observer,obsvss,%
      obsv_mat,obs_gram,odedc,odedi,odeoptions,ode_discrete,ode_root,%
      ode,oldload,oldsave,ones,optim,orth,param3d1,param3d,%
      paramfplot2d,parrot,part,pathconvert,path_2_nodes,pause,pbig,%
      pdiv,pen2ea,pencan,penlaur,perctl,perfect_match,pertrans,pfss,%
      phasemag,phc,pinv,pipe_network,playsnd,plot2d1,plot2d2,plot2d3,%
      plot2d4,plot2d,plot3d1,plot3d2,plot3d3,plot3d,plotframe,%
      plotprofile,plot_graph,plot,plzr,pmodulo,pol2des,pol2str,pol2tex,%
      polarplot,polar,polfact,poly,portr3d,portrait,power,ppol,prbs_a,%
      predecessors,predef,printf,printing,print,prod,profile,projsl,%
      projspec,proj,psmall,pspect,pvm_addhosts,pvm_barrier,pvm_bcast,%
      pvm_bufinfo,pvm_config,pvm_delhosts,pvm_error,pvm_exit,%
      pvm_f772sci,pvm_getinst,pvm_gettid,pvm_get_timer,pvm_gsize,%
      pvm_halt,pvm_joingroup,pvm_kill,pvm_lvgroup,pvm_mytid,pvm_parent,%
      pvm_probe,pvm_recv,pvm_reduce,pvm_sci2f77,pvm_send,pvm_set_timer,%
      pvm_spawn_independent,pvm_spawn,pvm_start,pvm_tasks,%
      pvm_tidtohost,pvm,pwd,p_margin,qassign,qr,quapro,quart,quaskro,%
      quit,randpencil,rand,range,rankqr,rank,rat,rcond,rdivf,read4b,%
      readb,readc_,readmps,read,real,recur,reglin,regress,remezb,remez,%
      repfreq,replot,residu,resume,return,riccati,riccsl,ricc,ric_desc,%
      rlist,roots,rotate,round,routh_t,rowcompr,rowcomp,rowinout,%
      rowregul,rowshuff,rpem,rref,rtitr,rubberbox,salesman,savewave,%
      save_graph,save,scaling,scanf,schur,sci2exp,sci2for,sci2map,%
      sciargs,scicosim,scicos,scifunc_block,sd2sci,secto3d,select,%
      semidef,sensi,setbpt,seteventhandler,setfield,setmenu,%
      setscicosvars,set,sfact,sgrid,shortest_path,showprofile,%
      show_arcs,show_graph,show_nodes,sident,signm,sign,simp_mode,simp,%
      sincd,sinc,sinc,sinhm,sinh,sinm,sin,size,sm2des,sm2ss,smooth,%
      solve,sorder,sort,sound,sp2adj,spaninter,spanplus,spantwo,sparse,%
      spchol,spcompack,specfact,spec,speye,spget,splin,split_edge,%
      spones,sprand,sprintf,spzeros,sqroot,sqrtm,sqrt,squarewave,%
      square,srfaur,srkf,ss2des,ss2ss,ss2tf,sscanf,sskf,ssprint,ssrand,%
      stabil,stacksize,standard_define,standard_draw,standard_input,%
      standard_origin,standard_output,startup,stdevf,stdev,steadycos,%
      str2code,strange,strcat,strindex,strings,string,stripblanks,%
      strong_connex,strong_con_nodes,strsubst,st_deviation,st_ility,%
      subf,subgraph,subplot,successors,sum,supernode,sva,svd,svplot,%
      sylm,sylv,sysconv,sysdiag,sysfact,syslin,syssize,systems,system,%
      systmat,tabul,tangent,tanhm,tanh,tanm,tan,tdinit,testmatrix,%
      texprint,tf2des,tf2ss,then,thrownan,timer,time_id,titlepage,%
      tk_getdir,tk_getfile,tlist,toeplitz,tokenpos,tokens,trace,%
      translatepaths,trans_closure,trans,trfmod,trianfml,tril,trimmean,%
      trisolve,triu,trzeros,typename,typeof,type,uicontrol,uimenu,%
      uint16,uint32,uint8,ui_observer,ulink,unglue,union,unique,unix_g,%
      unix_s,unix_w,unix_x,unix,unobs,unsetmenu,user,varargin,%
      varargout,variancef,variance,varn,warning,wavread,wavwrite,%
      wcenter,wfir,what,whereami,whereis,where,while,whos,who_user,who,%
      wiener,wigner,window,winsid,with_gtk,with_pvm,with_texmacs,%
      with_tk,writb,write4b,write,xarcs,xarc,xarrows,xaxis,xbasc,%
      xbasimp,xbasr,xchange,xclear,xclea,xclick,xclip,xdel,xend,xfarcs,%
      xfarc,xfpolys,xfpoly,xfrect,xgetech,xgetfile,xgetmouse,xget,%
      xgraduate,xgrid,xinfo,xinit,xlfont,xload,xname,xnumb,xpause,%
      xpolys,xpoly,xrects,xrect,xrpoly,xs2fig,xs2gif,xs2ppm,xs2ps,%
      xsave,xsegs,select,xsetech,xsetm,xset,xstringb,xstringl,xstring,%
      xtape,xtitle,x_choices,x_choose,x_dialog,x_matrix,x_mdialog,%
      x_message_modeless,x_message,yulewalk,zeropen,zeros,zgrid,zpbutt,%
      zpch1,zpch2,zpell,mfprintf,mfscanf,mprintf,mscanf,msprintf,%
      msscanf,mucomp,%
      ABSBLK_f,AFFICH_f,ANDLOG_f,ANIMXY_f,BIGSOM_f,CLINDUMMY_f,CLKIN_f,%
      CLKINV_f,CLKOUT_f,CLKOUTV_f,CLKSOM_f,CLKSOMV_f,CLKSPLIT_f,%
      CLOCK_f,CLR_f,CLSS_f,CONST_f,COSBLK_f,CURV_f,DELAY_f,DELAYV_f,%
      DEMUX_f,DLR_f,DLRADAPT_f,DLSS_f,EVENTSCOPE_f,EVTDLY_f,EVTGEN_f,%
      EXPBLK_f,G_make,GAIN_f,GAINBLK_f,GENERAL_f,GENERIC_f,GENSIN_f,%
      GENSQR_f,HALT_f,IFTHEL_f,IN_f,INTEGRAL_f,INTRP2BLK_f,INTRPLBLK_f,%
      INVBLK_f,LOGBLK_f,LOOKUP_f,Matplot1,Matplot,MAX_f,MCLOCK_f,%
      MFCLCK_f,MIN_f,MUX_f,NDcost,NEGTOPOS_f,OUT_f,POSTONEG_f,POWBLK_f,%
      PROD_f,QUANT_f,RAND_f,READC_f,REGISTER_f,RELAY_f,RFILE_f,%
      ScilabEval,Sfgrayplot,Sgrayplot,SAMPLEHOLD_f,SAT_f,SAWTOOTH_f,%
      SCOPE_f,SCOPXY_f,SELECT_f,SINBLK_f,SOM_f,SPLIT_f,STOP_f,SUPER_f,%
      TANBLK_f,TCLSS_f,TEXT_f,TIME_f,TK_EvalFile,TK_EvalStr,TK_GetVar,%
      TK_SetVar,TRASH_f,WFILE_f,WRITEC_f,ZCROSS_f,%
      \%asn,\%helps,\%k,\%sn},%
   alsoletter=\%,% chmod
   sensitive,%
   morecomment=[l]//,%
   morestring=[b]",%
   morestring=[m]'%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \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
%%
\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{SPARQL}
%
% This definition for the SPARQL query language (SPARQL Protocol and RDF
% Query Language, \url{http://www.w3.org/TR/rdf-sparql-query/}) was provided
% by \lstthanks{Christoph~Kiefer}{-}{2006/10/24}.
%
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% SPARQL definition (c) 2006 Christoph Kiefer
%%
\lst@definelanguage{SPARQL}%
  {morekeywords={BASE,PREFIX,SELECT,DISTINCT,CONSTRUCT,DESCRIBE,ASK,%
        FROM,NAMED,WHERE,ORDER,BY,ASC,DESC,LIMIT,OFFSET,OPTIONAL,%
        GRAPH,UNION,FILTER,a,STR,LANG,LANGMATCHES,DATATYPE,BOUND,%
        isIRI,isURI,isBLANK,isLITERAL,REGEX,true,false},%
   sensitive=false,%
   morecomment=[l]\#,%
   morestring=[d]',%
   morestring=[d]"%
  }[keywords,comments,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, ditto \lsthelper{Torsten~Flatter}{Thorsten.Flatter@T-Systems.de}
% {2002/10/15}{missing keywords}, \lsthelper{Robert~Frank}{rf7@ukc.ac.uk}
% {2002/11/19}{missing keywords} and \lsthelper{Dirk~Jesko}
% {jesko@iti.cs.uni-magdeburg.de}{2003/06/03}{extended SQL definition}.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% SQL definition (c) 1998 Christian Haul
%%                (c) 2002 Neil Conway
%%                (c) 2002 Robert Frank
%%                (c) 2003 Dirk Jesko
%%
\lst@definelanguage{SQL}%
  {morekeywords={ABSOLUTE,ACTION,ADD,ALLOCATE,ALTER,ARE,AS,ASSERTION,%
      AT,BETWEEN,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,%
      CATALOG,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,DAY,DEALLOCATE,%
      DEC,DEFERRABLE,DEFERED,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,%
      DISCONNECT,DOMAIN,DROP,ELSE,END,EXEC,EXCEPT,EXCEPTION,EXECUTE,%
      EXTERNAL,EXTRACT,FALSE,FIRST,FOREIGN,FROM,FULL,GET,GLOBAL,%
      GRAPHIC,HAVING,HOUR,IDENTITY,IMMEDIATE,INDEX,INITIALLY,INNER,%
      INPUT,INSENSITIVE,INSERT,INTO,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,SPACE,SQLSTATE,SUBSTRING,SYSTEM_USER,%
      TABLE,TEMPORARY,THEN,TIMEZONE_HOUR,%
      TIMEZONE_MINUTE,TRAILING,TRANSACTION,TRANSLATE,TRANSLATION,TRIM,%
      TRUE,UNIQUE,UNKNOWN,UPPER,USAGE,USING,VALUE,VALUES,%
      VARGRAPHIC,VARYING,WHEN,WHERE,WRITE,YEAR,ZONE,%
      AND,ASC,avg,CHECK,COMMIT,count,DECODE,DESC,DISTINCT,GROUP,IN,% FF
      LIKE,NUMBER,ROLLBACK,SUBSTR,sum,VARCHAR2,% FF
      MIN,MAX,UNION,UPDATE,% RF
      ALL,ANY,CUBE,CUBE,DEFAULT,DELETE,EXISTS,GRANT,OR,RECURSIVE,% DJ
      ROLE,ROLLUP,SET,SOME,TRIGGER,VIEW},% DJ
   morendkeywords={BIT,BLOB,CHAR,CHARACTER,CLOB,DATE,DECIMAL,FLOAT,% DJ
      INT,INTEGER,NUMERIC,SMALLINT,TIME,TIMESTAMP,VARCHAR},% moved here
   sensitive=false,% DJ
   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
%%
\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]",%
   morecomment=[f]\#,%
   morecomment=[l]{;\#},%
   morecomment=[l]{[\#},%
   morecomment=[l]{\{\#}%
  }[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}
% \lsthelper{Herbert Voss}{Herbert.Voss@FU-Berlin.DE}{2013-12-12}{typo} pointed
% to a typo: the \TeX{} primitive is |lineskiplimit| instead of
% |lineskiplimits|.
%    \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,lineskiplimit,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$_},%$ to make Emacs fontlocking happy
   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
%%
\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{Verilog}
%
% Thanks to \lstthanks{Cameron H. G. Wright}{c.h.g.wright@ieee.org}{2003/04/30}
% for providing the definition. After a bug report by \lsthelper{George
% M.~Georgiou}{georgiou@csci.csusb.edu}{2004/02/05}{directives not detected} I
% changed the declaration of directives to use normal keywords.
% \begingroup
%    \begin{macrocode}
%<*lang3>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% Verilog definition (c) 2003 Cameron H. G. Wright <c.h.g.wright@ieee.org>
%%   Based on the IEEE 1364-2001 Verilog HDL standard
%%   Ref: S. Palnitkar, "Verilog HDL: A Guide to Digital Design and Synthesis,"
%%        Prentice Hall, 2003. ISBN: 0-13-044911-3
%%
\lst@definelanguage{Verilog}%
  {morekeywords={% reserved keywords
      always,and,assign,automatic,begin,buf,bufif0,bufif1,case,casex,%
      casez,cell,cmos,config,deassign,default,defparam,design,disable,%
      edge,else,end,endcase,endconfig,endfunction,endgenerate,%
      endmodule,endprimitive,endspecify,endtable,endtask,event,for,%
      force,forever,fork,function,generate,genvar,highz0,highz1,if,%
      ifnone,incdir,include,initial,inout,input,instance,integer,join,%
      large,liblist,library,localparam,macromodule,medium,module,nand,%
      negedge,nmos,nor,noshowcancelled,not,notif0,notif1,or,output,%
      parameter,pmos,posedge,primitive,pull0,pull1,pulldown,pullup,%
      pulsestyle_onevent,pulsestyle_ondetect,rcmos,real,realtime,reg,%
      release,repeat,rnmos,rpmos,rtran,rtranif0,rtranif1,scalared,%
      showcancelled,signed,small,specify,specparam,strong0,strong1,%
      supply0,supply1,table,task,time,tran,tranif0,tranif1,tri,tri0,%
      tri1,triand,trior,trireg,unsigned,use,vectored,wait,wand,weak0,%
      weak1,while,wire,wor,xnor,xor},%
   morekeywords=[2]{% system tasks and functions
      $bitstoreal,$countdrivers,$display,$fclose,$fdisplay,$fmonitor,%
      $fopen,$fstrobe,$fwrite,$finish,$getpattern,$history,$incsave,%
      $input,$itor,$key,$list,$log,$monitor,$monitoroff,$monitoron,%
      $nokey},%
   morekeywords=[3]{% compiler directives
      `accelerate,`autoexpand_vectornets,`celldefine,`default_nettype,%
      `define,`else,`elsif,`endcelldefine,`endif,`endprotect,%
      `endprotected,`expand_vectornets,`ifdef,`ifndef,`include,%
      `no_accelerate,`noexpand_vectornets,`noremove_gatenames,%
      `nounconnected_drive,`protect,`protected,`remove_gatenames,%
      `remove_netnames,`resetall,`timescale,`unconnected_drive},%
   alsoletter=\`,%
   sensitive,%
   morecomment=[s]{/*}{*/},%
   morecomment=[l]//,% nonstandard
   morestring=[b]"%
  }[keywords,comments,strings]%
%    \end{macrocode}
%    \begin{macrocode}
%</lang3>
%    \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 and \lsthelper{Arnaud~Tisserand}
% {2003/02/17}{missing keywords: disconnect, elif, with} added three
% keywords.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
%%
%% VHDL definition (c) 1997 Kai Wollenweber
%%
\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,%
      DISCONNECT,ELIF,WITH},% Arnaud Tisserand
   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
%%
\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 et al}
%
% \lstthanks{Bernhard~Walle}{bernhard@bwalle.de}{2003/11/22} provided the
% following two definitions.
% \begingroup
%    \begin{macrocode}
%<*lang1>
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{XSLT}[]{XML}%
  {morekeywords={%
     % main elements
     xsl:stylesheet,xsl:transform,%
     % childs of the main element
     xsl:apply-imports,xsl:attribute-set,xsl:decimal-format,xsl:import,%
     xsl:include,xsl:key,xsl:namespace-alias,xsl:output,xsl:param,%
     xsl:preserve-space,xsl:strip-space,xsl:template,xsl:variable,%
     % 21 directives
     xsl:apply-imports,xsl:apply-templates,xsl:attribute,%
     xsl:call-template,xsl:choose,xsl:comment,xsl:copy,xsl:copy-of,%
     xsl:element,xsl:fallback,xsl:for-each,xsl:if,xsl:message,%
     xsl:number,xsl:otherwise,xsl:processing-instruction,xsl:text,%
     xsl:value-of,xsl:variable,xsl:when,xsl:with-param},%
   alsodigit={-},%
  }%
%    \end{macrocode}
%    \begin{macrocode}
\lst@definelanguage{Ant}[]{XML}%
  {morekeywords={%
     project,target,patternset,include,exclude,excludesfile,includesfile,filterset,%
     filter,filtersfile,libfileset,custom,classpath,fileset,none,depend,mapper,%
     filename,not,date,contains,selector,depth,or,and,present,majority,size,dirset,%
     filelist,pathelement,path,param,filterreader,extension,filterchain,linecontainsregexp,%
     regexp,classconstants,headfilter,tabstospaces,striplinebreaks,tailfilter,stripjavacomments,%
     expandproperties,linecontains,replacetokens,token,striplinecomments,comment,prefixlines,%
     classfileset,rootfileset,root,description,xmlcatalog,entity,dtd,substitution,%
     extensionSet,propertyfile,entry,vsscheckin,sql,transaction,cvspass,csc,%
     dirname,wlrun,wlclasspath,p4label,replaceregexp,get,jjtree,sleep,jarlib,%
     dependset,targetfileset,srcfileset,srcfilelist,targetfilelist,zip,zipgroupfileset,zipfileset,%
     patch,jspc,webapp,style,test,arg,jvmarg,sysproperty,testlet,env,tstamp,%
     format,unwar,vsshistory,icontract,cvschangelog,user,p4submit,ccmcheckin,%
     p4change,bzip2,vssadd,javadoc,bottom,source,doctitle,header,excludepackage,bootclasspath,%
     doclet,taglet,packageset,sourcepath,link,footer,package,group,title,tag,%
     translate,signjar,vajload,vajproject,jarlib,extensionset,WsdlToDotnet,buildnumber,%
     jpcovmerge,tomcat,ejbjar,weblogictoplink,jboss,borland,weblogic,iplanet,jonas,%
     support,websphere,wasclasspath,war,manifest,attribute,section,metainf,lib,%
     classes,webinf,rename,sequential,serverdeploy,generic,property,move,%
     copydir,cccheckin,wljspc,fixcrlf,sosget,pathconvert,map,record,p4sync,exec,%
     p4edit,maudit,rulespath,searchpath,antlr,netrexxc,jpcovreport,reference,filters,%
     coveragepath,execon,targetfile,srcfile,ccmcheckout,ant,xmlvalidate,xslt,%
     iplanet,ccmcheckintask,gzip,native2ascii,starteam,ear,archives,input,%
     rmic,extdirs,compilerarg,checksum,mail,bcc,message,cc,to,from,loadfile,vsscheckout,%
     stylebook,soscheckin,mimemail,stlabel,gunzip,concat,cab,touch,parallel,splash,%
     antcall,cccheckout,typedef,p4have,xmlproperty,copy,tomcat,antstructure,ccmcreatetask,%
     rpm,delete,replace,replacefilter,replacetoken,replacevalue,mmetrics,waitfor,isfalse,%
     equals,available,filepath,os,filesmatch,istrue,isset,socket,http,uptodate,srcfiles,%
     untar,loadproperties,echoproperties,vajexport,stcheckout,bunzip2,copyfile,vsscreate,%
     ejbc,unjar,tomcat,wsdltodotnet,mkdir,condition,cvs,commandline,marker,argument,%
     tempfile,junitreport,report,taskdef,echo,ccupdate,java,renameext,vsslabel,basename,%
     javadoc2,vsscp,tar,tarfileset,tomcat,vajimport,setproxy,wlstop,p4counter,ilasm,%
     soscheckout,apply,ccuncheckout,jarlib,location,url,cvstagdiff,jlink,mergefiles,%
     addfiles,javacc,pvcs,pvcsproject,jarlib,options,depends,chmod,jar,sound,fail,%
     success,mparse,blgenclient,genkey,dname,javah,class,ccmreconfigure,unzip,javac,%
     src,p4add,soslabel,jpcoverage,triggers,method,vssget,deltree,ddcreator},
   deletekeywords={default},%
  }
%    \end{macrocode}
%    \begin{macrocode}
%</lang1>
%    \end{macrocode}
% \endgroup
%
% 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=:,%
   tag=**[s]<>,%
   morestring=[d]",% ??? doubled
   morestring=[d]',% ??? doubled
   MoreSelectCharTable=%
      \lst@CArgX--\relax\lst@DefDelimB{}{}%
          {\ifnum\lst@mode=\lst@tagmode\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@tagmode
               \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
%
%
% \ifmulticols
% \addtocontents{toc}{\protect\end{multicols}}
% \fi
%
%^^A \setcounter{IndexColumns}{2}
%^^A \PrintIndex
%
%
% \Finale
%
\endinput
