1<lexer>
  2  <config>
  3    <name>Angular2</name>
  4    <alias>ng2</alias>
  5  </config>
  6  <rules>
  7    <state name="attr">
  8      <rule pattern="&#34;.*?&#34;">
  9        <token type="LiteralString" />
 10        <pop depth="1" />
 11      </rule>
 12      <rule pattern="&#39;.*?&#39;">
 13        <token type="LiteralString" />
 14        <pop depth="1" />
 15      </rule>
 16      <rule pattern="[^\s&gt;]+">
 17        <token type="LiteralString" />
 18        <pop depth="1" />
 19      </rule>
 20    </state>
 21    <state name="root">
 22      <rule pattern="[^{([*#]+">
 23        <token type="Other" />
 24      </rule>
 25      <rule pattern="(\{\{)(\s*)">
 26        <bygroups>
 27          <token type="CommentPreproc" />
 28          <token type="Text" />
 29        </bygroups>
 30        <push state="ngExpression" />
 31      </rule>
 32      <rule pattern="([([]+)([\w:.-]+)([\])]+)(\s*)(=)(\s*)">
 33        <bygroups>
 34          <token type="Punctuation" />
 35          <token type="NameAttribute" />
 36          <token type="Punctuation" />
 37          <token type="Text" />
 38          <token type="Operator" />
 39          <token type="Text" />
 40        </bygroups>
 41        <push state="attr" />
 42      </rule>
 43      <rule pattern="([([]+)([\w:.-]+)([\])]+)(\s*)">
 44        <bygroups>
 45          <token type="Punctuation" />
 46          <token type="NameAttribute" />
 47          <token type="Punctuation" />
 48          <token type="TextWhitespace" />
 49        </bygroups>
 50      </rule>
 51      <rule pattern="([*#])([\w:.-]+)(\s*)(=)(\s*)">
 52        <bygroups>
 53          <token type="Punctuation" />
 54          <token type="NameAttribute" />
 55          <token type="Punctuation" />
 56          <token type="Operator" />
 57          <token type="TextWhitespace" />
 58        </bygroups>
 59        <push state="attr" />
 60      </rule>
 61      <rule pattern="([*#])([\w:.-]+)(\s*)">
 62        <bygroups>
 63          <token type="Punctuation" />
 64          <token type="NameAttribute" />
 65          <token type="Punctuation" />
 66        </bygroups>
 67      </rule>
 68    </state>
 69    <state name="ngExpression">
 70      <rule pattern="\s+(\|\s+)?">
 71        <token type="Text" />
 72      </rule>
 73      <rule pattern="\}\}">
 74        <token type="CommentPreproc" />
 75        <pop depth="1" />
 76      </rule>
 77      <rule pattern=":?(true|false)">
 78        <token type="LiteralStringBoolean" />
 79      </rule>
 80      <rule pattern=":?&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
 81        <token type="LiteralStringDouble" />
 82      </rule>
 83      <rule pattern=":?&#39;(\\\\|\\&#39;|[^&#39;])*&#39;">
 84        <token type="LiteralStringSingle" />
 85      </rule>
 86      <rule pattern="[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|0[xX][0-9a-fA-F]+[Ll]?">
 87        <token type="LiteralNumber" />
 88      </rule>
 89      <rule pattern="[a-zA-Z][\w-]*(\(.*\))?">
 90        <token type="NameVariable" />
 91      </rule>
 92      <rule pattern="\.[\w-]+(\(.*\))?">
 93        <token type="NameVariable" />
 94      </rule>
 95      <rule pattern="(\?)(\s*)([^}\s]+)(\s*)(:)(\s*)([^}\s]+)(\s*)">
 96        <bygroups>
 97          <token type="Operator" />
 98          <token type="Text" />
 99          <token type="LiteralString" />
100          <token type="Text" />
101          <token type="Operator" />
102          <token type="Text" />
103          <token type="LiteralString" />
104          <token type="Text" />
105        </bygroups>
106      </rule>
107    </state>
108  </rules>
109</lexer>