postscript.xml

 1<lexer>
 2  <config>
 3    <name>PostScript</name>
 4    <alias>postscript</alias>
 5    <alias>postscr</alias>
 6    <filename>*.ps</filename>
 7    <filename>*.eps</filename>
 8    <mime_type>application/postscript</mime_type>
 9  </config>
10  <rules>
11    <state name="root">
12      <rule pattern="^%!.+\n">
13        <token type="CommentPreproc"/>
14      </rule>
15      <rule pattern="%%.*\n">
16        <token type="CommentSpecial"/>
17      </rule>
18      <rule pattern="(^%.*\n){2,}">
19        <token type="CommentMultiline"/>
20      </rule>
21      <rule pattern="%.*\n">
22        <token type="CommentSingle"/>
23      </rule>
24      <rule pattern="\(">
25        <token type="LiteralString"/>
26        <push state="stringliteral"/>
27      </rule>
28      <rule pattern="[{}&lt;&gt;\[\]]">
29        <token type="Punctuation"/>
30      </rule>
31      <rule pattern="&lt;[0-9A-Fa-f]+&gt;(?=[()&lt;&gt;\[\]{}/%\s])">
32        <token type="LiteralNumberHex"/>
33      </rule>
34      <rule pattern="[0-9]+\#(\-|\+)?([0-9]+\.?|[0-9]*\.[0-9]+|[0-9]+\.[0-9]*)((e|E)[0-9]+)?(?=[()&lt;&gt;\[\]{}/%\s])">
35        <token type="LiteralNumberOct"/>
36      </rule>
37      <rule pattern="(\-|\+)?([0-9]+\.?|[0-9]*\.[0-9]+|[0-9]+\.[0-9]*)((e|E)[0-9]+)?(?=[()&lt;&gt;\[\]{}/%\s])">
38        <token type="LiteralNumberFloat"/>
39      </rule>
40      <rule pattern="(\-|\+)?[0-9]+(?=[()&lt;&gt;\[\]{}/%\s])">
41        <token type="LiteralNumberInteger"/>
42      </rule>
43      <rule pattern="\/[^()&lt;&gt;\[\]{}/%\s]+(?=[()&lt;&gt;\[\]{}/%\s])">
44        <token type="NameVariable"/>
45      </rule>
46      <rule pattern="[^()&lt;&gt;\[\]{}/%\s]+(?=[()&lt;&gt;\[\]{}/%\s])">
47        <token type="NameFunction"/>
48      </rule>
49      <rule pattern="(false|true)(?=[()&lt;&gt;\[\]{}/%\s])">
50        <token type="KeywordConstant"/>
51      </rule>
52      <rule pattern="(eq|ne|g[et]|l[et]|and|or|not|if(?:else)?|for(?:all)?)(?=[()&lt;&gt;\[\]{}/%\s])">
53        <token type="KeywordReserved"/>
54      </rule>
55      <rule pattern="(dictstackoverflow|undefinedfilename|currentlinewidth|undefinedresult|currentmatrix|defaultmatrix|invertmatrix|concatmatrix|currentpoint|setlinewidth|syntaxerror|idtransform|identmatrix|setrgbcolor|stringwidth|setlinejoin|getinterval|itransform|strokepath|pathforall|rangecheck|setlinecap|dtransform|transform|translate|setmatrix|typecheck|undefined|scalefont|closepath|findfont|showpage|rcurveto|grestore|truncate|pathbbox|charpath|rlineto|rmoveto|ceiling|newpath|setdash|setfont|restore|curveto|setgray|stroke|pstack|matrix|length|lineto|repeat|rotate|moveto|shfill|concat|gsave|aload|scale|array|round|stack|index|begin|print|floor|exch|quit|clip|copy|bind|loop|idiv|fill|show|roll|exit|load|dict|save|arcn|sqrt|exec|rand|atan|end|div|abs|run|def|cvs|exp|cvi|sin|cos|get|dup|mod|put|sub|pop|add|neg|mul|arc|log|ln|gt)(?=[()&lt;&gt;\[\]{}/%\s])">
56        <token type="NameBuiltin"/>
57      </rule>
58      <rule pattern="\s+">
59        <token type="Text"/>
60      </rule>
61    </state>
62    <state name="stringliteral">
63      <rule pattern="[^()\\]+">
64        <token type="LiteralString"/>
65      </rule>
66      <rule pattern="\\">
67        <token type="LiteralStringEscape"/>
68        <push state="escape"/>
69      </rule>
70      <rule pattern="\(">
71        <token type="LiteralString"/>
72        <push/>
73      </rule>
74      <rule pattern="\)">
75        <token type="LiteralString"/>
76        <pop depth="1"/>
77      </rule>
78    </state>
79    <state name="escape">
80      <rule pattern="[0-8]{3}|n|r|t|b|f|\\|\(|\)">
81        <token type="LiteralStringEscape"/>
82        <pop depth="1"/>
83      </rule>
84      <rule>
85        <pop depth="1"/>
86      </rule>
87    </state>
88  </rules>
89</lexer>