1. <lexer>
    
  2.   <config>
    
  3.     <name>Org Mode</name>
    
  4.     <alias>org</alias>
    
  5.     <alias>orgmode</alias>
    
  6.     <filename>*.org</filename>
    
  7.     <mime_type>text/org</mime_type>
    
  8.   </config>
    
  9.   <rules>
    
  10.     <state name="root">
    
  11.       <rule pattern="^# .*$">
    
  12.         <token type="Comment"/>
    
  13.       </rule>
    
  14.       <rule pattern="^(\*)( COMMENT)( .*)$">
    
  15.         <bygroups>
    
  16.           <token type="GenericHeading"/>
    
  17.           <token type="NameEntity"/>
    
  18.           <token type="GenericStrong"/>
    
  19.         </bygroups>
    
  20.       </rule>
    
  21.       <rule pattern="^(\*\*+)( COMMENT)( .*)$">
    
  22.         <bygroups>
    
  23.           <token type="GenericSubheading"/>
    
  24.           <token type="NameEntity"/>
    
  25.           <token type="Text"/>
    
  26.         </bygroups>
    
  27.       </rule>
    
  28.       <rule pattern="^(\*)( DONE)( .*)$">
    
  29.         <bygroups>
    
  30.           <token type="GenericHeading"/>
    
  31.           <token type="LiteralStringRegex"/>
    
  32.           <token type="GenericStrong"/>
    
  33.         </bygroups>
    
  34.       </rule>
    
  35.       <rule pattern="^(\*\*+)( DONE)( .*)$">
    
  36.         <bygroups>
    
  37.           <token type="GenericSubheading"/>
    
  38.           <token type="LiteralStringRegex"/>
    
  39.           <token type="Text"/>
    
  40.         </bygroups>
    
  41.       </rule>
    
  42.       <rule pattern="^(\*)( TODO)( .*)$">
    
  43.         <bygroups>
    
  44.           <token type="GenericHeading"/>
    
  45.           <token type="Error"/>
    
  46.           <token type="GenericStrong"/>
    
  47.         </bygroups>
    
  48.       </rule>
    
  49.       <rule pattern="^(\*\*+)( TODO)( .*)$">
    
  50.         <bygroups>
    
  51.           <token type="GenericSubheading"/>
    
  52.           <token type="Error"/>
    
  53.           <token type="Text"/>
    
  54.         </bygroups>
    
  55.       </rule>
    
  56.       <rule pattern="^(\*)( .+?)( :[a-zA-Z0-9_@:]+:)$">
    
  57.         <bygroups>
    
  58.           <token type="GenericHeading"/>
    
  59.           <token type="GenericStrong"/>
    
  60.           <token type="GenericEmph"/>
    
  61.         </bygroups>
    
  62.       </rule>
    
  63.       <rule pattern="^(\*)( .+)$">
    
  64.         <bygroups>
    
  65.           <token type="GenericHeading"/>
    
  66.           <token type="GenericStrong"/>
    
  67.         </bygroups>
    
  68.       </rule>
    
  69.       <rule pattern="^(\*\*+)( .+?)( :[a-zA-Z0-9_@:]+:)$">
    
  70.         <bygroups>
    
  71.           <token type="GenericSubheading"/>
    
  72.           <token type="Text"/>
    
  73.           <token type="GenericEmph"/>
    
  74.         </bygroups>
    
  75.       </rule>
    
  76.       <rule pattern="^(\*\*+)( .+)$">
    
  77.         <bygroups>
    
  78.           <token type="GenericSubheading"/>
    
  79.           <token type="Text"/>
    
  80.         </bygroups>
    
  81.       </rule>
    
  82.       <rule pattern="^( *)([+-] )(\[[ X]\])( .+)$">
    
  83.         <bygroups>
    
  84.           <token type="Text"/>
    
  85.           <token type="Keyword"/>
    
  86.           <token type="Keyword"/>
    
  87.           <usingself state="inline"/>
    
  88.         </bygroups>
    
  89.       </rule>
    
  90.       <rule pattern="^( +)(\* )(\[[ X]\])( .+)$">
    
  91.         <bygroups>
    
  92.           <token type="Text"/>
    
  93.           <token type="Keyword"/>
    
  94.           <token type="Keyword"/>
    
  95.           <usingself state="inline"/>
    
  96.         </bygroups>
    
  97.       </rule>
    
  98.       <rule pattern="^( *)([+-] )([^ \n]+ ::)( .+)$">
    
  99.         <bygroups>
    
  100.           <token type="Text"/>
    
  101.           <token type="Keyword"/>
    
  102.           <token type="Keyword"/>
    
  103.           <usingself state="inline"/>
    
  104.         </bygroups>
    
  105.       </rule>
    
  106.       <rule pattern="^( +)(\* )([^ \n]+ ::)( .+)$">
    
  107.         <bygroups>
    
  108.           <token type="Text"/>
    
  109.           <token type="Keyword"/>
    
  110.           <token type="Keyword"/>
    
  111.           <usingself state="inline"/>
    
  112.         </bygroups>
    
  113.       </rule>
    
  114.       <rule pattern="^( *)([+-] )(.+)$">
    
  115.         <bygroups>
    
  116.           <token type="Text"/>
    
  117.           <token type="Keyword"/>
    
  118.           <usingself state="inline"/>
    
  119.         </bygroups>
    
  120.       </rule>
    
  121.       <rule pattern="^( +)(\* )(.+)$">
    
  122.         <bygroups>
    
  123.           <token type="Text"/>
    
  124.           <token type="Keyword"/>
    
  125.           <usingself state="inline"/>
    
  126.         </bygroups>
    
  127.       </rule>
    
  128.       <rule pattern="^( *)([0-9]+[.)])( \[@[0-9]+\])( .+)$">
    
  129.         <bygroups>
    
  130.           <token type="Text"/>
    
  131.           <token type="Keyword"/>
    
  132.           <token type="GenericEmph"/>
    
  133.           <usingself state="inline"/>
    
  134.         </bygroups>
    
  135.       </rule>
    
  136.       <rule pattern="^( *)([0-9]+[.)])( .+)$">
    
  137.         <bygroups>
    
  138.           <token type="Text"/>
    
  139.           <token type="Keyword"/>
    
  140.           <usingself state="inline"/>
    
  141.         </bygroups>
    
  142.       </rule>
    
  143.       <rule pattern="(?i)^( *#\+begin: )([^ ]+)([\w\W]*?\n)([\w\W]*?)(^ *#\+end: *$)">
    
  144.         <bygroups>
    
  145.           <token type="Comment"/>
    
  146.           <token type="CommentSpecial"/>
    
  147.           <token type="Comment"/>
    
  148.           <usingself state="inline"/>
    
  149.           <token type="Comment"/>
    
  150.         </bygroups>
    
  151.       </rule>
    
  152.       <rule pattern="(?i)^( *#\+begin_comment *\n)([\w\W]*?)(^ *#\+end_comment *$)">
    
  153.         <bygroups>
    
  154.           <token type="Comment"/>
    
  155.           <token type="Comment"/>
    
  156.           <token type="Comment"/>
    
  157.         </bygroups>
    
  158.       </rule>
    
  159.       <rule pattern="(?i)^( *#\+begin_src )([^ \n]+)(.*?\n)([\w\W]*?)(^ *#\+end_src *$)">
    
  160.         <usingbygroup>
    
  161.           <sublexer_name_group>2</sublexer_name_group>
    
  162.           <code_group>4</code_group>
    
  163.           <emitters>
    
  164.             <token type="Comment"/>
    
  165.             <token type="CommentSpecial"/>
    
  166.             <token type="Comment"/>
    
  167.             <token type="Text"/>
    
  168.             <token type="Comment"/>
    
  169.           </emitters>
    
  170.         </usingbygroup>
    
  171.       </rule>
    
  172.       <rule pattern="(?i)^( *#\+begin_export )(\w+)( *\n)([\w\W]*?)(^ *#\+end_export *$)">
    
  173.         <usingbygroup>
    
  174.           <sublexer_name_group>2</sublexer_name_group>
    
  175.           <code_group>4</code_group>
    
  176.           <emitters>
    
  177.             <token type="Comment"/>
    
  178.             <token type="CommentSpecial"/>
    
  179.             <token type="Text"/>
    
  180.             <token type="Text"/>
    
  181.             <token type="Comment"/>
    
  182.           </emitters>
    
  183.         </usingbygroup>
    
  184.       </rule>
    
  185.       <rule pattern="(?i)^( *#\+begin_)(\w+)( *\n)([\w\W]*?)(^ *#\+end_\2)( *$)">
    
  186.         <bygroups>
    
  187.           <token type="Comment"/>
    
  188.           <token type="Comment"/>
    
  189.           <token type="Text"/>
    
  190.           <token type="Text"/>
    
  191.           <token type="Comment"/>
    
  192.           <token type="Text"/>
    
  193.         </bygroups>
    
  194.       </rule>
    
  195.       <rule pattern="^(#\+\w+)(:.*)$">
    
  196.         <bygroups>
    
  197.           <token type="CommentSpecial"/>
    
  198.           <token type="Comment"/>
    
  199.         </bygroups>
    
  200.       </rule>
    
  201.       <rule pattern="(?i)^( *:\w+: *\n)([\w\W]*?)(^ *:end: *$)">
    
  202.         <bygroups>
    
  203.           <token type="Comment"/>
    
  204.           <token type="CommentSpecial"/>
    
  205.           <token type="Comment"/>
    
  206.         </bygroups>
    
  207.       </rule>
    
  208.       <rule pattern="^(.*)(\\\\)$">
    
  209.         <bygroups>
    
  210.           <usingself state="inline"/>
    
  211.           <token type="Operator"/>
    
  212.         </bygroups>
    
  213.       </rule>
    
  214.       <rule pattern="(?i)^( *(?:DEADLINE|SCHEDULED): )(&lt;[^&lt;&gt;]+?&gt; *)$">
    
  215.         <bygroups>
    
  216.           <token type="Comment"/>
    
  217.           <token type="CommentSpecial"/>
    
  218.         </bygroups>
    
  219.       </rule>
    
  220.       <rule pattern="(?i)^( *CLOSED: )(\[[^][]+?\] *)$">
    
  221.         <bygroups>
    
  222.           <token type="Comment"/>
    
  223.           <token type="CommentSpecial"/>
    
  224.         </bygroups>
    
  225.       </rule>
    
  226.       <rule>
    
  227.         <include state="inline"/>
    
  228.       </rule>
    
  229.     </state>
    
  230.     <state name="inline">
    
  231.       <rule pattern="(\s)*(\*[^ \n*][^*]+?[^ \n*]\*)((?=\W|\n|$))">
    
  232.         <bygroups>
    
  233.           <token type="Text"/>
    
  234.           <token type="GenericStrong"/>
    
  235.           <token type="Text"/>
    
  236.         </bygroups>
    
  237.       </rule>
    
  238.       <rule pattern="(\s)*(/[^/]+?/)((?=\W|\n|$))">
    
  239.         <bygroups>
    
  240.           <token type="Text"/>
    
  241.           <token type="GenericEmph"/>
    
  242.           <token type="Text"/>
    
  243.         </bygroups>
    
  244.       </rule>
    
  245.       <rule pattern="(\s)*(=[^\n=]+?=)((?=\W|\n|$))">
    
  246.         <bygroups>
    
  247.           <token type="Text"/>
    
  248.           <token type="NameClass"/>
    
  249.           <token type="Text"/>
    
  250.         </bygroups>
    
  251.       </rule>
    
  252.       <rule pattern="(\s)*(~[^\n~]+?~)((?=\W|\n|$))">
    
  253.         <bygroups>
    
  254.           <token type="Text"/>
    
  255.           <token type="NameClass"/>
    
  256.           <token type="Text"/>
    
  257.         </bygroups>
    
  258.       </rule>
    
  259.       <rule pattern="(\s)*(\+[^+]+?\+)((?=\W|\n|$))">
    
  260.         <bygroups>
    
  261.           <token type="Text"/>
    
  262.           <token type="GenericDeleted"/>
    
  263.           <token type="Text"/>
    
  264.         </bygroups>
    
  265.       </rule>
    
  266.       <rule pattern="(\s)*(_[^_]+?_)((?=\W|\n|$))">
    
  267.         <bygroups>
    
  268.           <token type="Text"/>
    
  269.           <token type="GenericUnderline"/>
    
  270.           <token type="Text"/>
    
  271.         </bygroups>
    
  272.       </rule>
    
  273.       <rule pattern="(&lt;)([^&lt;&gt;]+?)(&gt;)">
    
  274.         <bygroups>
    
  275.           <token type="Text"/>
    
  276.           <token type="LiteralString"/>
    
  277.           <token type="Text"/>
    
  278.         </bygroups>
    
  279.       </rule>
    
  280.       <rule pattern="[{]{3}[^}]+[}]{3}">
    
  281.         <token type="NameBuiltin"/>
    
  282.       </rule>
    
  283.       <rule pattern="([^[])(\[fn:)([^]]+?)(\])([^]])">
    
  284.         <bygroups>
    
  285.           <token type="Text"/>
    
  286.           <token type="NameBuiltinPseudo"/>
    
  287.           <token type="LiteralString"/>
    
  288.           <token type="NameBuiltinPseudo"/>
    
  289.           <token type="Text"/>
    
  290.         </bygroups>
    
  291.       </rule>
    
  292.       <rule pattern="(\[\[)([^][]+?)(\]\[)([^][]+)(\]\])">
    
  293.         <bygroups>
    
  294.           <token type="Text"/>
    
  295.           <token type="NameAttribute"/>
    
  296.           <token type="Text"/>
    
  297.           <token type="NameTag"/>
    
  298.           <token type="Text"/>
    
  299.         </bygroups>
    
  300.       </rule>
    
  301.       <rule pattern="(\[\[)([^][]+?)(\]\])">
    
  302.         <bygroups>
    
  303.           <token type="Text"/>
    
  304.           <token type="NameAttribute"/>
    
  305.           <token type="Text"/>
    
  306.         </bygroups>
    
  307.       </rule>
    
  308.       <rule pattern="(&lt;&lt;)([^&lt;&gt;]+?)(&gt;&gt;)">
    
  309.         <bygroups>
    
  310.           <token type="Text"/>
    
  311.           <token type="NameAttribute"/>
    
  312.           <token type="Text"/>
    
  313.         </bygroups>
    
  314.       </rule>
    
  315.       <rule pattern="^( *)(\|[ -].*?[ -]\|)$">
    
  316.         <bygroups>
    
  317.           <token type="Text"/>
    
  318.           <token type="LiteralString"/>
    
  319.         </bygroups>
    
  320.       </rule>
    
  321.       <rule pattern="\n">
    
  322.         <token type="Text"/>
    
  323.       </rule>
    
  324.       <rule pattern=".">
    
  325.         <token type="Text"/>
    
  326.       </rule>
    
  327.     </state>
    
  328.   </rules>
    
  329. </lexer>