1<?xml version="1.0" ?>
 2<lexer>
 3  <config>
 4    <name>Sed</name>
 5    <alias>sed</alias>
 6    <alias>gsed</alias>
 7    <alias>ssed</alias>
 8    <filename>*.sed</filename>
 9    <filename>*.[gs]sed</filename>
10    <mime_type>text/x-sed</mime_type>
11  </config>
12  <rules>
13    <state name="root">
14      <rule pattern="\s+">
15        <token type="TextWhitespace" />
16      </rule>
17      <rule pattern="#.*$">
18        <token type="CommentSingle" />
19      </rule>
20      <rule pattern="[0-9]+">
21        <token type="LiteralNumberInteger" />
22      </rule>
23      <rule pattern="\$">
24        <token type="Operator" />
25      </rule>
26      <rule pattern="[{};,!]">
27        <token type="Punctuation" />
28      </rule>
29      <rule pattern="[dDFgGhHlnNpPqQxz=]">
30        <token type="Keyword" />
31      </rule>
32      <rule pattern="([berRtTvwW:])([^;\n]*)">
33        <bygroups>
34          <token type="Keyword" />
35          <token type="LiteralStringSingle" />
36        </bygroups>
37      </rule>
38      <rule pattern="([aci])((?:.*?\\\n)*(?:.*?[^\\]$))">
39        <bygroups>
40          <token type="Keyword" />
41          <token type="LiteralStringDouble" />
42        </bygroups>
43      </rule>
44      <rule pattern="([qQ])([0-9]*)">
45        <bygroups>
46          <token type="Keyword" />
47          <token type="LiteralNumberInteger" />
48        </bygroups>
49      </rule>
50      <rule pattern="(/)((?:(?:\\[^\n]|[^\\])*?\\\n)*?(?:\\.|[^\\])*?)(/)">
51        <bygroups>
52          <token type="Punctuation" />
53          <token type="LiteralStringRegex" />
54          <token type="Punctuation" />
55        </bygroups>
56      </rule>
57      <rule pattern="(\\(.))((?:(?:\\[^\n]|[^\\])*?\\\n)*?(?:\\.|[^\\])*?)(\2)">
58        <bygroups>
59          <token type="Punctuation" />
60          <token type="Text" />
61          <token type="LiteralStringRegex" />
62          <token type="Punctuation" />
63        </bygroups>
64      </rule>
65      <rule
66        pattern="(y)(.)((?:(?:\\[^\n]|[^\\])*?\\\n)*?(?:\\.|[^\\])*?)(\2)((?:(?:\\[^\n]|[^\\])*?\\\n)*?(?:\\.|[^\\])*?)(\2)"
67      >
68        <bygroups>
69          <token type="Keyword" />
70          <token type="Punctuation" />
71          <token type="LiteralStringSingle" />
72          <token type="Punctuation" />
73          <token type="LiteralStringSingle" />
74          <token type="Punctuation" />
75        </bygroups>
76      </rule>
77      <rule
78        pattern="(s)(.)((?:(?:\\[^\n]|[^\\])*?\\\n)*?(?:\\.|[^\\])*?)(\2)((?:(?:\\[^\n]|[^\\])*?\\\n)*?(?:\\.|[^\\])*?)(\2)((?:[gpeIiMm]|[0-9])*)"
79      >
80        <bygroups>
81          <token type="Keyword" />
82          <token type="Punctuation" />
83          <token type="LiteralStringRegex" />
84          <token type="Punctuation" />
85          <token type="LiteralStringSingle" />
86          <token type="Punctuation" />
87          <token type="Keyword" />
88        </bygroups>
89      </rule>
90    </state>
91  </rules>
92</lexer>