<lexer>
  <config>
    <name>Angular2</name>
    <alias>ng2</alias>
  </config>
  <rules>
    <state name="attr">
      <rule pattern="&#34;.*?&#34;">
        <token type="LiteralString" />
        <pop depth="1" />
      </rule>
      <rule pattern="&#39;.*?&#39;">
        <token type="LiteralString" />
        <pop depth="1" />
      </rule>
      <rule pattern="[^\s&gt;]+">
        <token type="LiteralString" />
        <pop depth="1" />
      </rule>
    </state>
    <state name="root">
      <rule pattern="[^{([*#]+">
        <token type="Other" />
      </rule>
      <rule pattern="(\{\{)(\s*)">
        <bygroups>
          <token type="CommentPreproc" />
          <token type="Text" />
        </bygroups>
        <push state="ngExpression" />
      </rule>
      <rule pattern="([([]+)([\w:.-]+)([\])]+)(\s*)(=)(\s*)">
        <bygroups>
          <token type="Punctuation" />
          <token type="NameAttribute" />
          <token type="Punctuation" />
          <token type="Text" />
          <token type="Operator" />
          <token type="Text" />
        </bygroups>
        <push state="attr" />
      </rule>
      <rule pattern="([([]+)([\w:.-]+)([\])]+)(\s*)">
        <bygroups>
          <token type="Punctuation" />
          <token type="NameAttribute" />
          <token type="Punctuation" />
          <token type="TextWhitespace" />
        </bygroups>
      </rule>
      <rule pattern="([*#])([\w:.-]+)(\s*)(=)(\s*)">
        <bygroups>
          <token type="Punctuation" />
          <token type="NameAttribute" />
          <token type="Punctuation" />
          <token type="Operator" />
          <token type="TextWhitespace" />
        </bygroups>
        <push state="attr" />
      </rule>
      <rule pattern="([*#])([\w:.-]+)(\s*)">
        <bygroups>
          <token type="Punctuation" />
          <token type="NameAttribute" />
          <token type="Punctuation" />
        </bygroups>
      </rule>
    </state>
    <state name="ngExpression">
      <rule pattern="\s+(\|\s+)?">
        <token type="Text" />
      </rule>
      <rule pattern="\}\}">
        <token type="CommentPreproc" />
        <pop depth="1" />
      </rule>
      <rule pattern=":?(true|false)">
        <token type="LiteralStringBoolean" />
      </rule>
      <rule pattern=":?&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
        <token type="LiteralStringDouble" />
      </rule>
      <rule pattern=":?&#39;(\\\\|\\&#39;|[^&#39;])*&#39;">
        <token type="LiteralStringSingle" />
      </rule>
      <rule pattern="[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|0[xX][0-9a-fA-F]+[Ll]?">
        <token type="LiteralNumber" />
      </rule>
      <rule pattern="[a-zA-Z][\w-]*(\(.*\))?">
        <token type="NameVariable" />
      </rule>
      <rule pattern="\.[\w-]+(\(.*\))?">
        <token type="NameVariable" />
      </rule>
      <rule pattern="(\?)(\s*)([^}\s]+)(\s*)(:)(\s*)([^}\s]+)(\s*)">
        <bygroups>
          <token type="Operator" />
          <token type="Text" />
          <token type="LiteralString" />
          <token type="Text" />
          <token type="Operator" />
          <token type="Text" />
          <token type="LiteralString" />
          <token type="Text" />
        </bygroups>
      </rule>
    </state>
  </rules>
</lexer>
