go_template.xml

  1<lexer>
  2  <config>
  3    <name>Go Template</name>
  4    <alias>go-template</alias>
  5    <filename>*.gotmpl</filename>
  6    <filename>*.go.tmpl</filename>
  7  </config>
  8  <rules>
  9    <state name="template">
 10      <rule pattern="[-]?}}">
 11        <token type="CommentPreproc"/>
 12        <pop depth="1"/>
 13      </rule>
 14      <rule pattern="(?=}})">
 15        <token type="CommentPreproc"/>
 16        <pop depth="1"/>
 17      </rule>
 18      <rule pattern="\(">
 19        <token type="Operator"/>
 20        <push state="subexpression"/>
 21      </rule>
 22      <rule pattern="&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
 23        <token type="LiteralString"/>
 24      </rule>
 25      <rule>
 26        <include state="expression"/>
 27      </rule>
 28    </state>
 29    <state name="subexpression">
 30      <rule pattern="\)">
 31        <token type="Operator"/>
 32        <pop depth="1"/>
 33      </rule>
 34      <rule>
 35        <include state="expression"/>
 36      </rule>
 37    </state>
 38    <state name="expression">
 39      <rule pattern="\s+">
 40        <token type="TextWhitespace"/>
 41      </rule>
 42      <rule pattern="\(">
 43        <token type="Operator"/>
 44        <push state="subexpression"/>
 45      </rule>
 46      <rule pattern="(range|if|else|while|with|template|end|true|false|nil|and|call|html|index|js|len|not|or|print|printf|println|urlquery|eq|ne|lt|le|gt|ge|block|break|continue|define|slice)\b">
 47        <token type="Keyword"/>
 48      </rule>
 49      <rule pattern="\||:?=|,">
 50        <token type="Operator"/>
 51      </rule>
 52      <rule pattern="[$]?[^\W\d]\w*">
 53        <token type="NameOther"/>
 54      </rule>
 55      <rule pattern="\$|[$]?\.(?:[^\W\d]\w*)?">
 56        <token type="NameAttribute"/>
 57      </rule>
 58      <rule pattern="&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
 59        <token type="LiteralString"/>
 60      </rule>
 61      <rule pattern="-?\d+i">
 62        <token type="LiteralNumber"/>
 63      </rule>
 64      <rule pattern="-?\d+\.\d*([Ee][-+]\d+)?i">
 65        <token type="LiteralNumber"/>
 66      </rule>
 67      <rule pattern="\.\d+([Ee][-+]\d+)?i">
 68        <token type="LiteralNumber"/>
 69      </rule>
 70      <rule pattern="-?\d+[Ee][-+]\d+i">
 71        <token type="LiteralNumber"/>
 72      </rule>
 73      <rule pattern="-?\d+(\.\d+[eE][+\-]?\d+|\.\d*|[eE][+\-]?\d+)">
 74        <token type="LiteralNumberFloat"/>
 75      </rule>
 76      <rule pattern="-?\.\d+([eE][+\-]?\d+)?">
 77        <token type="LiteralNumberFloat"/>
 78      </rule>
 79      <rule pattern="-?0[0-7]+">
 80        <token type="LiteralNumberOct"/>
 81      </rule>
 82      <rule pattern="-?0[xX][0-9a-fA-F]+">
 83        <token type="LiteralNumberHex"/>
 84      </rule>
 85      <rule pattern="-?0b[01_]+">
 86        <token type="LiteralNumberBin"/>
 87      </rule>
 88      <rule pattern="-?(0|[1-9][0-9]*)">
 89        <token type="LiteralNumberInteger"/>
 90      </rule>
 91      <rule pattern="&#39;(\\[&#39;&#34;\\abfnrtv]|\\x[0-9a-fA-F]{2}|\\[0-7]{1,3}|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|[^\\])&#39;">
 92        <token type="LiteralStringChar"/>
 93      </rule>
 94      <rule pattern="`[^`]*`">
 95        <token type="LiteralString"/>
 96      </rule>
 97    </state>
 98    <state name="root">
 99      <rule pattern="{{(- )?/\*(.|\n)*?\*/( -)?}}">
100        <token type="CommentMultiline"/>
101      </rule>
102      <rule pattern="{{[-]?">
103        <token type="CommentPreproc"/>
104        <push state="template"/>
105      </rule>
106      <rule pattern="[^{]+">
107        <token type="Other"/>
108      </rule>
109      <rule pattern="{">
110        <token type="Other"/>
111      </rule>
112    </state>
113  </rules>
114</lexer>