...
1<lexer>
2 <config>
3 <name>Fish</name>
4 <alias>fish</alias>
5 <alias>fishshell</alias>
6 <filename>*.fish</filename>
7 <filename>*.load</filename>
8 <mime_type>application/x-fish</mime_type>
9 </config>
10 <rules>
11 <state name="paren">
12 <rule pattern="\)">
13 <token type="Keyword"/>
14 <pop depth="1"/>
15 </rule>
16 <rule>
17 <include state="root"/>
18 </rule>
19 </state>
20 <state name="math">
21 <rule pattern="\)\)">
22 <token type="Keyword"/>
23 <pop depth="1"/>
24 </rule>
25 <rule pattern="[-+*/%^|&]|\*\*|\|\|">
26 <token type="Operator"/>
27 </rule>
28 <rule pattern="\d+#\d+">
29 <token type="LiteralNumber"/>
30 </rule>
31 <rule pattern="\d+#(?! )">
32 <token type="LiteralNumber"/>
33 </rule>
34 <rule pattern="\d+">
35 <token type="LiteralNumber"/>
36 </rule>
37 <rule>
38 <include state="root"/>
39 </rule>
40 </state>
41 <state name="root">
42 <rule>
43 <include state="basic"/>
44 </rule>
45 <rule>
46 <include state="interp"/>
47 </rule>
48 <rule>
49 <include state="data"/>
50 </rule>
51 </state>
52 <state name="interp">
53 <rule pattern="\$\(\(">
54 <token type="Keyword"/>
55 <push state="math"/>
56 </rule>
57 <rule pattern="\(">
58 <token type="Keyword"/>
59 <push state="paren"/>
60 </rule>
61 <rule pattern="\$#?(\w+|.)">
62 <token type="NameVariable"/>
63 </rule>
64 </state>
65 <state name="basic">
66 <rule pattern="(?<=(?:^|\A|;|&&|\|\||\||\b(continue|function|return|switch|begin|while|break|count|false|block|echo|case|true|else|exit|test|set|cdh|and|pwd|for|end|not|if|cd|or)\b)\s*)(continue|function|return|switch|begin|while|break|count|false|block|test|case|true|echo|exit|else|set|cdh|and|pwd|for|end|not|if|cd|or)(?=;?\b)">
67 <token type="Keyword"/>
68 </rule>
69 <rule pattern="(?<=for\s+\S+\s+)in\b">
70 <token type="Keyword"/>
71 </rule>
72 <rule pattern="\b(fish_update_completions|fish_command_not_found|fish_breakpoint_prompt|fish_status_to_signal|fish_right_prompt|fish_is_root_user|fish_mode_prompt|fish_vcs_prompt|fish_key_reader|fish_svn_prompt|fish_git_prompt|fish_hg_prompt|fish_greeting|fish_add_path|commandline|fish_prompt|fish_indent|fish_config|fish_pager|breakpoint|fish_title|prompt_pwd|functions|set_color|realpath|funcsave|contains|complete|argparse|fish_opt|history|builtin|getopts|suspend|command|mimedb|printf|ulimit|disown|string|source|funced|status|random|isatty|fishd|prevd|vared|umask|nextd|alias|pushd|emit|jobs|popd|help|psub|wait|fish|read|time|exec|eval|math|trap|type|dirs|dirh|abbr|kill|bind|hash|open|fc|bg|fg)\s*\b(?!\.)">
73 <token type="NameBuiltin"/>
74 </rule>
75 <rule pattern="#!.*\n">
76 <token type="CommentHashbang"/>
77 </rule>
78 <rule pattern="#.*\n">
79 <token type="Comment"/>
80 </rule>
81 <rule pattern="\\[\w\W]">
82 <token type="LiteralStringEscape"/>
83 </rule>
84 <rule pattern="(\b\w+)(\s*)(=)">
85 <bygroups>
86 <token type="NameVariable"/>
87 <token type="Text"/>
88 <token type="Operator"/>
89 </bygroups>
90 </rule>
91 <rule pattern="[\[\]()={}]">
92 <token type="Operator"/>
93 </rule>
94 <rule pattern="(?<=\[[^\]]+)\.\.|-(?=[^\[]+\])">
95 <token type="Operator"/>
96 </rule>
97 <rule pattern="<<-?\s*(\'?)\\?(\w+)[\w\W]+?\2">
98 <token type="LiteralString"/>
99 </rule>
100 <rule pattern="(?<=set\s+(?:--?[^\d\W][\w-]*\s+)?)\w+">
101 <token type="NameVariable"/>
102 </rule>
103 <rule pattern="(?<=for\s+)\w[\w-]*(?=\s+in)">
104 <token type="NameVariable"/>
105 </rule>
106 <rule pattern="(?<=function\s+)\w(?:[^\n])*?(?= *[-\n])">
107 <token type="NameFunction"/>
108 </rule>
109 <rule pattern="(?<=(?:^|\b(?:and|or|sudo)\b|;|\|\||&&|\||\(|(?:\b\w+\s*=\S+\s)) *)\w[\w-]*">
110 <token type="NameFunction"/>
111 </rule>
112 </state>
113 <state name="data">
114 <rule pattern="(?s)\$?"(\\\\|\\[0-7]+|\\.|[^"\\$])*"">
115 <token type="LiteralStringDouble"/>
116 </rule>
117 <rule pattern=""">
118 <token type="LiteralStringDouble"/>
119 <push state="string"/>
120 </rule>
121 <rule pattern="(?s)\$'(\\\\|\\[0-7]+|\\.|[^'\\])*'">
122 <token type="LiteralStringSingle"/>
123 </rule>
124 <rule pattern="(?s)'.*?'">
125 <token type="LiteralStringSingle"/>
126 </rule>
127 <rule pattern=";">
128 <token type="Punctuation"/>
129 </rule>
130 <rule pattern="&&|\|\||&|\||\^|<|>">
131 <token type="Operator"/>
132 </rule>
133 <rule pattern="\s+">
134 <token type="Text"/>
135 </rule>
136 <rule pattern="\b\d+\b">
137 <token type="LiteralNumber"/>
138 </rule>
139 <rule pattern="(?<=\s+)--?[^\d][\w-]*">
140 <token type="NameAttribute"/>
141 </rule>
142 <rule pattern=".+?">
143 <token type="Text"/>
144 </rule>
145 </state>
146 <state name="string">
147 <rule pattern=""">
148 <token type="LiteralStringDouble"/>
149 <pop depth="1"/>
150 </rule>
151 <rule pattern="(?s)(\\\\|\\[0-7]+|\\.|[^"\\$])+">
152 <token type="LiteralStringDouble"/>
153 </rule>
154 <rule>
155 <include state="interp"/>
156 </rule>
157 </state>
158 </rules>
159</lexer>
View as plain text