1. <lexer>
    
  2.   <config>
    
  3.     <name>LLVM</name>
    
  4.     <alias>llvm</alias>
    
  5.     <filename>*.ll</filename>
    
  6.     <mime_type>text/x-llvm</mime_type>
    
  7.   </config>
    
  8.   <rules>
    
  9.     <state name="root">
    
  10.       <rule>
    
  11.         <include state="whitespace"/>
    
  12.       </rule>
    
  13.       <rule pattern="([-a-zA-Z$._][\w\-$.]*|&#34;[^&#34;]*?&#34;)\s*:">
    
  14.         <token type="NameLabel"/>
    
  15.       </rule>
    
  16.       <rule>
    
  17.         <include state="keyword"/>
    
  18.       </rule>
    
  19.       <rule pattern="%([-a-zA-Z$._][\w\-$.]*|&#34;[^&#34;]*?&#34;)">
    
  20.         <token type="NameVariable"/>
    
  21.       </rule>
    
  22.       <rule pattern="@([-a-zA-Z$._][\w\-$.]*|&#34;[^&#34;]*?&#34;)">
    
  23.         <token type="NameVariableGlobal"/>
    
  24.       </rule>
    
  25.       <rule pattern="%\d+">
    
  26.         <token type="NameVariableAnonymous"/>
    
  27.       </rule>
    
  28.       <rule pattern="@\d+">
    
  29.         <token type="NameVariableGlobal"/>
    
  30.       </rule>
    
  31.       <rule pattern="#\d+">
    
  32.         <token type="NameVariableGlobal"/>
    
  33.       </rule>
    
  34.       <rule pattern="!([-a-zA-Z$._][\w\-$.]*|&#34;[^&#34;]*?&#34;)">
    
  35.         <token type="NameVariable"/>
    
  36.       </rule>
    
  37.       <rule pattern="!\d+">
    
  38.         <token type="NameVariableAnonymous"/>
    
  39.       </rule>
    
  40.       <rule pattern="c?&#34;[^&#34;]*?&#34;">
    
  41.         <token type="LiteralString"/>
    
  42.       </rule>
    
  43.       <rule pattern="0[xX][a-fA-F0-9]+">
    
  44.         <token type="LiteralNumber"/>
    
  45.       </rule>
    
  46.       <rule pattern="-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?">
    
  47.         <token type="LiteralNumber"/>
    
  48.       </rule>
    
  49.       <rule pattern="[=&lt;&gt;{}\[\]()*.,!]|x\b">
    
  50.         <token type="Punctuation"/>
    
  51.       </rule>
    
  52.     </state>
    
  53.     <state name="whitespace">
    
  54.       <rule pattern="(\n|\s)+">
    
  55.         <token type="Text"/>
    
  56.       </rule>
    
  57.       <rule pattern=";.*?\n">
    
  58.         <token type="Comment"/>
    
  59.       </rule>
    
  60.     </state>
    
  61.     <state name="keyword">
    
  62.       <rule pattern="(inaccessiblemem_or_argmemonly|dereferenceable_or_null|externally_initialized|available_externally|linker_private_weak|inaccessiblememonly|local_unnamed_addr|sanitize_address|x86_vectorcallcc|noimplicitfloat|sanitize_thread|source_filename|sanitize_memory|preserve_mostcc|dereferenceable|arm_aapcs_vfpcc|zeroinitializer|extractelement|linker_private|cxx_fast_tlscc|x86_64_win64cc|intel_ocl_bicc|x86_fastcallcc|preserve_allcc|x86_thiscallcc|x86_stdcallcc|amdgpu_kernel|x86_64_sysvcc|addrspacecast|getelementptr|returns_twice|insertelement|shufflevector|msp430_intrcc|extractvalue|linkonce_odr|inteldialect|alwaysinline|blockaddress|noduplicates|thread_local|singlethread|localdynamic|unnamed_addr|avr_signalcc|unreachable|personality|arm_aapcscc|webkit_jscc|catchswitch|initialexec|insertvalue|noduplicate|nonlazybind|extern_weak|spir_kernel|attributes|sideeffect|cleanuppad|cleanupret|inlinehint|convergent|argmemonly|exactmatch|datalayout|landingpad|arm_apcscc|indirectbr|swifterror|ptx_device|ptx_kernel|x86_intrcc|avr_intrcc|alignstack|norecurse|amdgpu_vs|writeonly|localexec|amdgpu_ps|monotonic|amdgpu_gs|amdgpu_cs|allocsize|atomicrmw|swiftself|unordered|sspstrong|nocapture|addrspace|getresult|safestack|appending|noredzone|dllimport|dllexport|nobuiltin|jumptable|protected|spir_func|inbounds|musttail|external|volatile|inalloca|prologue|hhvm_ccc|noinline|readonly|readnone|linkonce|internal|catchret|samesize|returned|ptrtoint|inttoptr|noreturn|constant|nounwind|catchpad|anyregcc|weak_odr|distinct|release|optnone|uwtable|declare|optsize|swiftcc|noalias|private|minsize|default|fptrunc|zeroext|bitcast|nonnull|acq_rel|acquire|signext|builtin|cmpxchg|cleanup|section|largest|deplibs|seq_cst|common|hhvmcc|fptosi|opaque|triple|fptoui|target|filter|comdat|sitofp|module|switch|prefix|fastcc|coldcc|atomic|va_arg|notail|hidden|caller|global|invoke|define|sspreq|within|unwind|alloca|malloc|resume|select|uitofp|store|trunc|naked|byval|fence|fpext|begin|alias|exact|ghccc|ifunc|catch|undef|false|inreg|align|xchg|none|type|sext|call|null|cold|fcmp|icmp|tail|srem|free|load|nand|ashr|lshr|nnan|from|nest|frem|true|sret|urem|fdiv|zext|sdiv|udiv|ninf|arcp|fmul|fast|umax|fsub|umin|weak|fadd|ret|oeq|asm|add|dbg|sub|ccc|one|mul|olt|any|uge|nsz|ule|shl|ogt|ssp|and|sgt|nsw|nuw|min|max|sle|xor|sge|ult|phi|end|ole|une|ueq|uno|ord|oge|slt|ugt|eq|ne|to|gc|cc|or|br|c|x)\b">
    
  63.         <token type="Keyword"/>
    
  64.       </rule>
    
  65.       <rule pattern="(ppc_fp128|metadata|x86_fp80|double|label|fp128|float|token|void|half)">
    
  66.         <token type="KeywordType"/>
    
  67.       </rule>
    
  68.       <rule pattern="i[1-9]\d*">
    
  69.         <token type="Keyword"/>
    
  70.       </rule>
    
  71.     </state>
    
  72.   </rules>
    
  73. </lexer>