1. <lexer>
    
  2.   <config>
    
  3.     <name>PkgConfig</name>
    
  4.     <alias>pkgconfig</alias>
    
  5.     <filename>*.pc</filename>
    
  6.   </config>
    
  7.   <rules>
    
  8.     <state name="curly">
    
  9.       <rule pattern="\}">
    
  10.         <token type="LiteralStringInterpol"/>
    
  11.         <pop depth="1"/>
    
  12.       </rule>
    
  13.       <rule pattern="\w+">
    
  14.         <token type="NameAttribute"/>
    
  15.       </rule>
    
  16.     </state>
    
  17.     <state name="spvalue">
    
  18.       <rule>
    
  19.         <include state="interp"/>
    
  20.       </rule>
    
  21.       <rule pattern="#.*$">
    
  22.         <token type="CommentSingle"/>
    
  23.         <pop depth="1"/>
    
  24.       </rule>
    
  25.       <rule pattern="\n">
    
  26.         <token type="Text"/>
    
  27.         <pop depth="1"/>
    
  28.       </rule>
    
  29.       <rule pattern="[^${}#\n]+">
    
  30.         <token type="Text"/>
    
  31.       </rule>
    
  32.       <rule pattern=".">
    
  33.         <token type="Text"/>
    
  34.       </rule>
    
  35.     </state>
    
  36.     <state name="root">
    
  37.       <rule pattern="#.*$">
    
  38.         <token type="CommentSingle"/>
    
  39.       </rule>
    
  40.       <rule pattern="^(\w+)(=)">
    
  41.         <bygroups>
    
  42.           <token type="NameAttribute"/>
    
  43.           <token type="Operator"/>
    
  44.         </bygroups>
    
  45.       </rule>
    
  46.       <rule pattern="^([\w.]+)(:)">
    
  47.         <bygroups>
    
  48.           <token type="NameTag"/>
    
  49.           <token type="Punctuation"/>
    
  50.         </bygroups>
    
  51.         <push state="spvalue"/>
    
  52.       </rule>
    
  53.       <rule>
    
  54.         <include state="interp"/>
    
  55.       </rule>
    
  56.       <rule pattern="[^${}#=:\n.]+">
    
  57.         <token type="Text"/>
    
  58.       </rule>
    
  59.       <rule pattern=".">
    
  60.         <token type="Text"/>
    
  61.       </rule>
    
  62.     </state>
    
  63.     <state name="interp">
    
  64.       <rule pattern="\$\$">
    
  65.         <token type="Text"/>
    
  66.       </rule>
    
  67.       <rule pattern="\$\{">
    
  68.         <token type="LiteralStringInterpol"/>
    
  69.         <push state="curly"/>
    
  70.       </rule>
    
  71.     </state>
    
  72.   </rules>
    
  73. </lexer>