1. <lexer>
    
  2.   <config>
    
  3.     <name>Gnuplot</name>
    
  4.     <alias>gnuplot</alias>
    
  5.     <filename>*.plot</filename>
    
  6.     <filename>*.plt</filename>
    
  7.     <mime_type>text/x-gnuplot</mime_type>
    
  8.   </config>
    
  9.   <rules>
    
  10.     <state name="whitespace">
    
  11.       <rule pattern="#">
    
  12.         <token type="Comment"/>
    
  13.         <push state="comment"/>
    
  14.       </rule>
    
  15.       <rule pattern="[ \t\v\f]+">
    
  16.         <token type="Text"/>
    
  17.       </rule>
    
  18.     </state>
    
  19.     <state name="save">
    
  20.       <rule pattern="functions\b|function\b|functio\b|functi\b|funct\b|func\b|fun\b|fu\b|f\b|set\b|se\b|s\b|terminal\b|termina\b|termin\b|termi\b|term\b|ter\b|te\b|t\b|variables\b|variable\b|variabl\b|variab\b|varia\b|vari\b|var\b|va\b|v\b">
    
  21.         <token type="NameBuiltin"/>
    
  22.       </rule>
    
  23.       <rule>
    
  24.         <include state="genericargs"/>
    
  25.       </rule>
    
  26.     </state>
    
  27.     <state name="pause">
    
  28.       <rule pattern="(mouse|any|button1|button2|button3)\b">
    
  29.         <token type="NameBuiltin"/>
    
  30.       </rule>
    
  31.       <rule pattern="keypress\b|keypres\b|keypre\b|keypr\b|keyp\b|key\b">
    
  32.         <token type="NameBuiltin"/>
    
  33.       </rule>
    
  34.       <rule>
    
  35.         <include state="genericargs"/>
    
  36.       </rule>
    
  37.     </state>
    
  38.     <state name="plot">
    
  39.       <rule pattern="axes\b|axe\b|ax\b|axis\b|axi\b|binary\b|binar\b|bina\b|bin\b|every\b|ever\b|eve\b|ev\b|index\b|inde\b|ind\b|in\b|i\b|matrix\b|matri\b|matr\b|mat\b|smooth\b|smoot\b|smoo\b|smo\b|sm\b|s\b|thru\b|title\b|titl\b|tit\b|ti\b|t\b|notitle\b|notitl\b|notit\b|noti\b|not\b|using\b|usin\b|usi\b|us\b|u\b|with\b|wit\b|wi\b|w\b">
    
  40.         <token type="NameBuiltin"/>
    
  41.       </rule>
    
  42.       <rule>
    
  43.         <include state="genericargs"/>
    
  44.       </rule>
    
  45.     </state>
    
  46.     <state name="if">
    
  47.       <rule pattern="\)">
    
  48.         <token type="Punctuation"/>
    
  49.         <pop depth="1"/>
    
  50.       </rule>
    
  51.       <rule>
    
  52.         <include state="genericargs"/>
    
  53.       </rule>
    
  54.     </state>
    
  55.     <state name="genericargs">
    
  56.       <rule>
    
  57.         <include state="noargs"/>
    
  58.       </rule>
    
  59.       <rule pattern="&#34;">
    
  60.         <token type="LiteralString"/>
    
  61.         <push state="dqstring"/>
    
  62.       </rule>
    
  63.       <rule pattern="&#39;">
    
  64.         <token type="LiteralString"/>
    
  65.         <push state="sqstring"/>
    
  66.       </rule>
    
  67.       <rule pattern="(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+">
    
  68.         <token type="LiteralNumberFloat"/>
    
  69.       </rule>
    
  70.       <rule pattern="(\d+\.\d*|\.\d+)">
    
  71.         <token type="LiteralNumberFloat"/>
    
  72.       </rule>
    
  73.       <rule pattern="-?\d+">
    
  74.         <token type="LiteralNumberInteger"/>
    
  75.       </rule>
    
  76.       <rule pattern="[,.~!%^&amp;*+=|?:&lt;&gt;/-]">
    
  77.         <token type="Operator"/>
    
  78.       </rule>
    
  79.       <rule pattern="[{}()\[\]]">
    
  80.         <token type="Punctuation"/>
    
  81.       </rule>
    
  82.       <rule pattern="(eq|ne)\b">
    
  83.         <token type="OperatorWord"/>
    
  84.       </rule>
    
  85.       <rule pattern="([a-zA-Z_]\w*)(\s*)(\()">
    
  86.         <bygroups>
    
  87.           <token type="NameFunction"/>
    
  88.           <token type="Text"/>
    
  89.           <token type="Punctuation"/>
    
  90.         </bygroups>
    
  91.       </rule>
    
  92.       <rule pattern="[a-zA-Z_]\w*">
    
  93.         <token type="Name"/>
    
  94.       </rule>
    
  95.       <rule pattern="@[a-zA-Z_]\w*">
    
  96.         <token type="NameConstant"/>
    
  97.       </rule>
    
  98.       <rule pattern="\\\n">
    
  99.         <token type="Text"/>
    
  100.       </rule>
    
  101.     </state>
    
  102.     <state name="comment">
    
  103.       <rule pattern="[^\\\n]">
    
  104.         <token type="Comment"/>
    
  105.       </rule>
    
  106.       <rule pattern="\\\n">
    
  107.         <token type="Comment"/>
    
  108.       </rule>
    
  109.       <rule pattern="\\">
    
  110.         <token type="Comment"/>
    
  111.       </rule>
    
  112.       <rule>
    
  113.         <pop depth="1"/>
    
  114.       </rule>
    
  115.     </state>
    
  116.     <state name="root">
    
  117.       <rule>
    
  118.         <include state="whitespace"/>
    
  119.       </rule>
    
  120.       <rule pattern="bind\b|bin\b|bi\b">
    
  121.         <token type="Keyword"/>
    
  122.         <push state="bind"/>
    
  123.       </rule>
    
  124.       <rule pattern="exit\b|exi\b|ex\b|quit\b|qui\b|qu\b|q\b">
    
  125.         <token type="Keyword"/>
    
  126.         <push state="quit"/>
    
  127.       </rule>
    
  128.       <rule pattern="fit\b|fi\b|f\b">
    
  129.         <token type="Keyword"/>
    
  130.         <push state="fit"/>
    
  131.       </rule>
    
  132.       <rule pattern="(if)(\s*)(\()">
    
  133.         <bygroups>
    
  134.           <token type="Keyword"/>
    
  135.           <token type="Text"/>
    
  136.           <token type="Punctuation"/>
    
  137.         </bygroups>
    
  138.         <push state="if"/>
    
  139.       </rule>
    
  140.       <rule pattern="else\b">
    
  141.         <token type="Keyword"/>
    
  142.       </rule>
    
  143.       <rule pattern="pause\b|paus\b|pau\b|pa\b">
    
  144.         <token type="Keyword"/>
    
  145.         <push state="pause"/>
    
  146.       </rule>
    
  147.       <rule pattern="plot\b|plo\b|pl\b|p\b|replot\b|replo\b|repl\b|rep\b|splot\b|splo\b|spl\b|sp\b">
    
  148.         <token type="Keyword"/>
    
  149.         <push state="plot"/>
    
  150.       </rule>
    
  151.       <rule pattern="save\b|sav\b|sa\b">
    
  152.         <token type="Keyword"/>
    
  153.         <push state="save"/>
    
  154.       </rule>
    
  155.       <rule pattern="set\b|se\b">
    
  156.         <token type="Keyword"/>
    
  157.         <push state="genericargs" state="optionarg"/>
    
  158.       </rule>
    
  159.       <rule pattern="show\b|sho\b|sh\b|unset\b|unse\b|uns\b">
    
  160.         <token type="Keyword"/>
    
  161.         <push state="noargs" state="optionarg"/>
    
  162.       </rule>
    
  163.       <rule pattern="lower\b|lowe\b|low\b|raise\b|rais\b|rai\b|ra\b|call\b|cal\b|ca\b|cd\b|clear\b|clea\b|cle\b|cl\b|help\b|hel\b|he\b|h\b|\?\b|history\b|histor\b|histo\b|hist\b|his\b|hi\b|load\b|loa\b|lo\b|l\b|print\b|prin\b|pri\b|pr\b|pwd\b|reread\b|rerea\b|rere\b|rer\b|re\b|reset\b|rese\b|res\b|screendump\b|screendum\b|screendu\b|screend\b|screen\b|scree\b|scre\b|scr\b|shell\b|shel\b|she\b|system\b|syste\b|syst\b|sys\b|sy\b|update\b|updat\b|upda\b|upd\b|up\b">
    
  164.         <token type="Keyword"/>
    
  165.         <push state="genericargs"/>
    
  166.       </rule>
    
  167.       <rule pattern="pwd\b|reread\b|rerea\b|rere\b|rer\b|re\b|reset\b|rese\b|res\b|screendump\b|screendum\b|screendu\b|screend\b|screen\b|scree\b|scre\b|scr\b|shell\b|shel\b|she\b|test\b">
    
  168.         <token type="Keyword"/>
    
  169.         <push state="noargs"/>
    
  170.       </rule>
    
  171.       <rule pattern="([a-zA-Z_]\w*)(\s*)(=)">
    
  172.         <bygroups>
    
  173.           <token type="NameVariable"/>
    
  174.           <token type="Text"/>
    
  175.           <token type="Operator"/>
    
  176.         </bygroups>
    
  177.         <push state="genericargs"/>
    
  178.       </rule>
    
  179.       <rule pattern="([a-zA-Z_]\w*)(\s*\(.*?\)\s*)(=)">
    
  180.         <bygroups>
    
  181.           <token type="NameFunction"/>
    
  182.           <token type="Text"/>
    
  183.           <token type="Operator"/>
    
  184.         </bygroups>
    
  185.         <push state="genericargs"/>
    
  186.       </rule>
    
  187.       <rule pattern="@[a-zA-Z_]\w*">
    
  188.         <token type="NameConstant"/>
    
  189.       </rule>
    
  190.       <rule pattern=";">
    
  191.         <token type="Keyword"/>
    
  192.       </rule>
    
  193.     </state>
    
  194.     <state name="dqstring">
    
  195.       <rule pattern="&#34;">
    
  196.         <token type="LiteralString"/>
    
  197.         <pop depth="1"/>
    
  198.       </rule>
    
  199.       <rule pattern="\\([\\abfnrtv&#34;\&#39;]|x[a-fA-F0-9]{2,4}|[0-7]{1,3})">
    
  200.         <token type="LiteralStringEscape"/>
    
  201.       </rule>
    
  202.       <rule pattern="[^\\&#34;\n]+">
    
  203.         <token type="LiteralString"/>
    
  204.       </rule>
    
  205.       <rule pattern="\\\n">
    
  206.         <token type="LiteralString"/>
    
  207.       </rule>
    
  208.       <rule pattern="\\">
    
  209.         <token type="LiteralString"/>
    
  210.       </rule>
    
  211.       <rule pattern="\n">
    
  212.         <token type="LiteralString"/>
    
  213.         <pop depth="1"/>
    
  214.       </rule>
    
  215.     </state>
    
  216.     <state name="optionarg">
    
  217.       <rule>
    
  218.         <include state="whitespace"/>
    
  219.       </rule>
    
  220.       <rule pattern="all\b|al\b|a\b|angles\b|angle\b|angl\b|ang\b|an\b|arrow\b|arro\b|arr\b|ar\b|autoscale\b|autoscal\b|autosca\b|autosc\b|autos\b|auto\b|aut\b|au\b|bars\b|bar\b|ba\b|b\b|border\b|borde\b|bord\b|bor\b|boxwidth\b|boxwidt\b|boxwid\b|boxwi\b|boxw\b|box\b|clabel\b|clabe\b|clab\b|cla\b|cl\b|clip\b|cli\b|cl\b|c\b|cntrparam\b|cntrpara\b|cntrpar\b|cntrpa\b|cntrp\b|cntr\b|cnt\b|cn\b|contour\b|contou\b|conto\b|cont\b|con\b|co\b|data\b|dat\b|da\b|datafile\b|datafil\b|datafi\b|dataf\b|data\b|dgrid3d\b|dgrid3\b|dgrid\b|dgri\b|dgr\b|dg\b|dummy\b|dumm\b|dum\b|du\b|encoding\b|encodin\b|encodi\b|encod\b|enco\b|enc\b|decimalsign\b|decimalsig\b|decimalsi\b|decimals\b|decimal\b|decima\b|decim\b|deci\b|dec\b|fit\b|fontpath\b|fontpat\b|fontpa\b|fontp\b|font\b|format\b|forma\b|form\b|for\b|fo\b|function\b|functio\b|functi\b|funct\b|func\b|fun\b|fu\b|functions\b|function\b|functio\b|functi\b|funct\b|func\b|fun\b|fu\b|grid\b|gri\b|gr\b|g\b|hidden3d\b|hidden3\b|hidden\b|hidde\b|hidd\b|hid\b|historysize\b|historysiz\b|historysi\b|historys\b|history\b|histor\b|histo\b|hist\b|his\b|isosamples\b|isosample\b|isosampl\b|isosamp\b|isosam\b|isosa\b|isos\b|iso\b|is\b|key\b|ke\b|k\b|keytitle\b|keytitl\b|keytit\b|keyti\b|keyt\b|label\b|labe\b|lab\b|la\b|linestyle\b|linestyl\b|linesty\b|linest\b|lines\b|line\b|lin\b|li\b|ls\b|loadpath\b|loadpat\b|loadpa\b|loadp\b|load\b|loa\b|locale\b|local\b|loca\b|loc\b|logscale\b|logscal\b|logsca\b|logsc\b|logs\b|log\b|macros\b|macro\b|macr\b|mac\b|mapping\b|mappin\b|mappi\b|mapp\b|map\b|mapping3d\b|mapping3\b|mapping\b|mappin\b|mappi\b|mapp\b|map\b|margin\b|margi\b|marg\b|mar\b|lmargin\b|lmargi\b|lmarg\b|lmar\b|rmargin\b|rmargi\b|rmarg\b|rmar\b|tmargin\b|tmargi\b|tmarg\b|tmar\b|bmargin\b|bmargi\b|bmarg\b|bmar\b|mouse\b|mous\b|mou\b|mo\b|multiplot\b|multiplo\b|multipl\b|multip\b|multi\b|mxtics\b|mxtic\b|mxti\b|mxt\b|nomxtics\b|nomxtic\b|nomxti\b|nomxt\b|mx2tics\b|mx2tic\b|mx2ti\b|mx2t\b|nomx2tics\b|nomx2tic\b|nomx2ti\b|nomx2t\b|mytics\b|mytic\b|myti\b|myt\b|nomytics\b|nomytic\b|nomyti\b|nomyt\b|my2tics\b|my2tic\b|my2ti\b|my2t\b|nomy2tics\b|nomy2tic\b|nomy2ti\b|nomy2t\b|mztics\b|mztic\b|mzti\b|mzt\b|nomztics\b|nomztic\b|nomzti\b|nomzt\b|mcbtics\b|mcbtic\b|mcbti\b|mcbt\b|nomcbtics\b|nomcbtic\b|nomcbti\b|nomcbt\b|offsets\b|offset\b|offse\b|offs\b|off\b|of\b|origin\b|origi\b|orig\b|ori\b|or\b|output\b|outpu\b|outp\b|out\b|ou\b|o\b|parametric\b|parametri\b|parametr\b|paramet\b|parame\b|param\b|para\b|par\b|pa\b|pm3d\b|pm3\b|pm\b|palette\b|palett\b|palet\b|pale\b|pal\b|colorbox\b|colorbo\b|colorb\b|plot\b|plo\b|pl\b|p\b|pointsize\b|pointsiz\b|pointsi\b|points\b|point\b|poin\b|poi\b|polar\b|pola\b|pol\b|print\b|prin\b|pri\b|pr\b|object\b|objec\b|obje\b|obj\b|samples\b|sample\b|sampl\b|samp\b|sam\b|sa\b|size\b|siz\b|si\b|style\b|styl\b|sty\b|st\b|surface\b|surfac\b|surfa\b|surf\b|sur\b|su\b|table\b|terminal\b|termina\b|termin\b|termi\b|term\b|ter\b|te\b|t\b|termoptions\b|termoption\b|termoptio\b|termopti\b|termopt\b|termop\b|termo\b|tics\b|tic\b|ti\b|ticscale\b|ticscal\b|ticsca\b|ticsc\b|ticslevel\b|ticsleve\b|ticslev\b|ticsle\b|ticsl\b|timefmt\b|timefm\b|timef\b|timestamp\b|timestam\b|timesta\b|timest\b|times\b|time\b|tim\b|title\b|titl\b|tit\b|variables\b|variable\b|variabl\b|variab\b|varia\b|vari\b|var\b|va\b|v\b|version\b|versio\b|versi\b|vers\b|ver\b|ve\b|view\b|vie\b|vi\b|xyplane\b|xyplan\b|xypla\b|xypl\b|xyp\b|xdata\b|xdat\b|xda\b|x2data\b|x2dat\b|x2da\b|ydata\b|ydat\b|yda\b|y2data\b|y2dat\b|y2da\b|zdata\b|zdat\b|zda\b|cbdata\b|cbdat\b|cbda\b|xlabel\b|xlabe\b|xlab\b|xla\b|xl\b|x2label\b|x2labe\b|x2lab\b|x2la\b|x2l\b|ylabel\b|ylabe\b|ylab\b|yla\b|yl\b|y2label\b|y2labe\b|y2lab\b|y2la\b|y2l\b|zlabel\b|zlabe\b|zlab\b|zla\b|zl\b|cblabel\b|cblabe\b|cblab\b|cbla\b|cbl\b|xtics\b|xtic\b|xti\b|noxtics\b|noxtic\b|noxti\b|x2tics\b|x2tic\b|x2ti\b|nox2tics\b|nox2tic\b|nox2ti\b|ytics\b|ytic\b|yti\b|noytics\b|noytic\b|noyti\b|y2tics\b|y2tic\b|y2ti\b|noy2tics\b|noy2tic\b|noy2ti\b|ztics\b|ztic\b|zti\b|noztics\b|noztic\b|nozti\b|cbtics\b|cbtic\b|cbti\b|nocbtics\b|nocbtic\b|nocbti\b|xdtics\b|xdtic\b|xdti\b|noxdtics\b|noxdtic\b|noxdti\b|x2dtics\b|x2dtic\b|x2dti\b|nox2dtics\b|nox2dtic\b|nox2dti\b|ydtics\b|ydtic\b|ydti\b|noydtics\b|noydtic\b|noydti\b|y2dtics\b|y2dtic\b|y2dti\b|noy2dtics\b|noy2dtic\b|noy2dti\b|zdtics\b|zdtic\b|zdti\b|nozdtics\b|nozdtic\b|nozdti\b|cbdtics\b|cbdtic\b|cbdti\b|nocbdtics\b|nocbdtic\b|nocbdti\b|xmtics\b|xmtic\b|xmti\b|noxmtics\b|noxmtic\b|noxmti\b|x2mtics\b|x2mtic\b|x2mti\b|nox2mtics\b|nox2mtic\b|nox2mti\b|ymtics\b|ymtic\b|ymti\b|noymtics\b|noymtic\b|noymti\b|y2mtics\b|y2mtic\b|y2mti\b|noy2mtics\b|noy2mtic\b|noy2mti\b|zmtics\b|zmtic\b|zmti\b|nozmtics\b|nozmtic\b|nozmti\b|cbmtics\b|cbmtic\b|cbmti\b|nocbmtics\b|nocbmtic\b|nocbmti\b|xrange\b|xrang\b|xran\b|xra\b|xr\b|x2range\b|x2rang\b|x2ran\b|x2ra\b|x2r\b|yrange\b|yrang\b|yran\b|yra\b|yr\b|y2range\b|y2rang\b|y2ran\b|y2ra\b|y2r\b|zrange\b|zrang\b|zran\b|zra\b|zr\b|cbrange\b|cbrang\b|cbran\b|cbra\b|cbr\b|rrange\b|rrang\b|rran\b|rra\b|rr\b|trange\b|trang\b|tran\b|tra\b|tr\b|urange\b|urang\b|uran\b|ura\b|ur\b|vrange\b|vrang\b|vran\b|vra\b|vr\b|xzeroaxis\b|xzeroaxi\b|xzeroax\b|xzeroa\b|x2zeroaxis\b|x2zeroaxi\b|x2zeroax\b|x2zeroa\b|yzeroaxis\b|yzeroaxi\b|yzeroax\b|yzeroa\b|y2zeroaxis\b|y2zeroaxi\b|y2zeroax\b|y2zeroa\b|zzeroaxis\b|zzeroaxi\b|zzeroax\b|zzeroa\b|zeroaxis\b|zeroaxi\b|zeroax\b|zeroa\b|zero\b|zer\b|ze\b|z\b">
    
  221.         <token type="NameBuiltin"/>
    
  222.         <pop depth="1"/>
    
  223.       </rule>
    
  224.     </state>
    
  225.     <state name="bind">
    
  226.       <rule pattern="!">
    
  227.         <token type="Keyword"/>
    
  228.         <pop depth="1"/>
    
  229.       </rule>
    
  230.       <rule pattern="allwindows\b|allwindow\b|allwindo\b|allwind\b|allwin\b|allwi\b|allw\b|all\b">
    
  231.         <token type="NameBuiltin"/>
    
  232.       </rule>
    
  233.       <rule>
    
  234.         <include state="genericargs"/>
    
  235.       </rule>
    
  236.     </state>
    
  237.     <state name="fit">
    
  238.       <rule pattern="via\b">
    
  239.         <token type="NameBuiltin"/>
    
  240.       </rule>
    
  241.       <rule>
    
  242.         <include state="plot"/>
    
  243.       </rule>
    
  244.     </state>
    
  245.     <state name="noargs">
    
  246.       <rule>
    
  247.         <include state="whitespace"/>
    
  248.       </rule>
    
  249.       <rule pattern=";">
    
  250.         <token type="Punctuation"/>
    
  251.         <pop depth="1"/>
    
  252.       </rule>
    
  253.       <rule pattern="\n">
    
  254.         <token type="Text"/>
    
  255.         <pop depth="1"/>
    
  256.       </rule>
    
  257.     </state>
    
  258.     <state name="sqstring">
    
  259.       <rule pattern="&#39;&#39;">
    
  260.         <token type="LiteralString"/>
    
  261.       </rule>
    
  262.       <rule pattern="&#39;">
    
  263.         <token type="LiteralString"/>
    
  264.         <pop depth="1"/>
    
  265.       </rule>
    
  266.       <rule pattern="[^\\&#39;\n]+">
    
  267.         <token type="LiteralString"/>
    
  268.       </rule>
    
  269.       <rule pattern="\\\n">
    
  270.         <token type="LiteralString"/>
    
  271.       </rule>
    
  272.       <rule pattern="\\">
    
  273.         <token type="LiteralString"/>
    
  274.       </rule>
    
  275.       <rule pattern="\n">
    
  276.         <token type="LiteralString"/>
    
  277.         <pop depth="1"/>
    
  278.       </rule>
    
  279.     </state>
    
  280.     <state name="quit">
    
  281.       <rule pattern="gnuplot\b">
    
  282.         <token type="Keyword"/>
    
  283.       </rule>
    
  284.       <rule>
    
  285.         <include state="noargs"/>
    
  286.       </rule>
    
  287.     </state>
    
  288.   </rules>
    
  289. </lexer>