1<lexer>
  2  <config>
  3    <name>Nu</name>
  4    <alias>nu</alias>
  5    <filename>*.nu</filename>
  6    <mime_type>text/plain</mime_type>
  7  </config>
  8  <rules>
  9    <state name="root">
 10      <rule><include state="basic" /></rule>
 11      <rule><include state="data" /></rule>
 12    </state>
 13    <state name="basic">
 14      <rule
 15        pattern="\b(alias|all|ansi|ansi gradient|ansi link|ansi strip|any|append|ast|attr category|attr deprecated|attr example|attr search-terms|banner|bits|bits and|bits not|bits or|bits rol|bits ror|bits shl|bits shr|bits xor|break|bytes|bytes add|bytes at|bytes build|bytes collect|bytes ends-with|bytes index-of|bytes length|bytes remove|bytes replace|bytes reverse|bytes split|bytes starts-with|cal|cd|char|chunk-by|chunks|clear|collect|columns|commandline|commandline edit|commandline get-cursor|commandline set-cursor|compact|complete|config|config env|config flatten|config nu|config reset|config use-colors|const|continue|cp|date|date format|date from-human|date humanize|date list-timezone|date now|date to-timezone|debug|debug env|debug info|debug profile|decode|decode base32|decode base32hex|decode base64|decode hex|def|default|describe|detect columns|do|drop|drop column|drop nth|du|each|each while|echo|encode|encode base32|encode base32hex|encode base64|encode hex|enumerate|error make|every|exec|exit|explain|explore|export|export alias|export const|export def|export extern|export module|export use|export-env|extern|fill|filter|find|first|flatten|for|format|format bits|format date|format duration|format filesize|format number|format pattern|from|from csv|from json|from msgpack|from msgpackz|from nuon|from ods|from ssv|from toml|from tsv|from url|from xlsx|from xml|from yaml|from yml|generate|get|glob|grid|group-by|hash|hash md5|hash sha256|headers|help|help aliases|help commands|help escapes|help externs|help modules|help operators|help pipe-and-redirect|hide|hide-env|histogram|history|history import|history session|http|http delete|http get|http head|http options|http patch|http post|http put|if|ignore|input|input list|input listen|insert|inspect|interleave|into|into binary|into bool|into cell-path|into datetime|into duration|into filesize|into float|into glob|into int|into record|into sqlite|into string|into value|is-admin|is-empty|is-not-empty|is-terminal|items|job|job flush|job id|job kill|job list|job recv|job send|job spawn|job tag|job unfreeze|join|keybindings|keybindings default|keybindings list|keybindings listen|kill|last|length|let|let-env|lines|load-env|loop|ls|match|math|math abs|math arccos|math arccosh|math arcsin|math arcsinh|math arctan|math arctanh|math avg|math ceil|math cos|math cosh|math exp|math floor|math ln|math log|math max|math median|math min|math mode|math product|math round|math sin|math sinh|math sqrt|math stddev|math sum|math tan|math tanh|math variance|merge|merge deep|metadata|metadata access|metadata set|mkdir|mktemp|module|move|mut|mv|nu-check|nu-highlight|open|overlay|overlay hide|overlay list|overlay new|overlay use|panic|par-each|parse|path|path basename|path dirname|path exists|path expand|path join|path parse|path relative-to|path self|path split|path type|plugin|plugin add|plugin list|plugin rm|plugin stop|plugin use|port|prepend|print|ps|pwd|query db|random|random binary|random bool|random chars|random dice|random float|random int|random uuid|reduce|reject|rename|return|reverse|rm|roll|roll down|roll left|roll right|roll up|rotate|run-external|save|schema|scope|scope aliases|scope commands|scope engine-stats|scope externs|scope modules|scope variables|select|seq|seq char|seq date|shuffle|skip|skip until|skip while|sleep|slice|sort|sort-by|source|source-env|split|split cell-path|split chars|split column|split list|split row|split words|start|stor|stor create|stor delete|stor export|stor import|stor insert|stor open|stor reset|stor update|str|str camel-case|str capitalize|str contains|str distance|str downcase|str ends-with|str expand|str index-of|str join|str kebab-case|str length|str pascal-case|str replace|str reverse|str screaming-snake-case|str snake-case|str starts-with|str stats|str substring|str title-case|str trim|str upcase|sys|sys cpu|sys disks|sys host|sys mem|sys net|sys temp|sys users|table|take|take until|take while|tee|term|term query|term size|timeit|to|to csv|to html|to json|to md|to msgpack|to msgpackz|to nuon|to text|to toml|to tsv|to xml|to yaml|to yml|touch|transpose|try|tutor|ulimit|uname|uniq|uniq-by|update|update cells|upsert|url|url build-query|url decode|url encode|url join|url parse|url split-query|use|values|version|version check|view|view blocks|view files|view ir|view source|view span|watch|where|which|while|whoami|window|with-env|wrap|zip)(\s*)\b"
 16      ><bygroups><token type="Keyword" /><token
 17            type="TextWhitespace"
 18          /></bygroups></rule>
 19      <rule pattern="\A#!.+\n"><token type="CommentHashbang" /></rule>
 20      <rule pattern="#.*\n"><token type="CommentSingle" /></rule>
 21      <rule pattern="\\[\w\W]"><token type="LiteralStringEscape" /></rule>
 22      <rule pattern="(\b\w+)(\s*)(\+?=)"><bygroups><token
 23            type="NameVariable"
 24          /><token type="TextWhitespace" /><token
 25            type="Operator"
 26          /></bygroups></rule>
 27      <rule pattern="[\[\]{}()=]"><token type="Operator" /></rule>
 28      <rule pattern="&lt;&lt;&lt;"><token type="Operator" /></rule>
 29      <rule pattern="&lt;&lt;-?\s*(\&#x27;?)\\?(\w+)[\w\W]+?\2"><token
 30          type="LiteralString"
 31        /></rule>
 32      <rule pattern="&amp;&amp;|\|\|"><token type="Operator" /></rule>
 33      <rule pattern="\$[a-zA-Z_]\w*"><token type="NameVariable" /></rule>
 34    </state>
 35    <state name="data">
 36      <rule pattern="\$&quot;"><token type="LiteralStringDouble" /><push
 37          state="interpolated_string"
 38        /></rule>
 39      <rule pattern="(?s)&quot;(\\.|[^&quot;\\])*&quot;"><token
 40          type="LiteralStringDouble"
 41        /></rule>
 42      <rule pattern="&quot;"><token type="LiteralStringDouble" /><push
 43          state="string"
 44        /></rule>
 45      <rule pattern="(?s)\$&#x27;(\\\\|\\[0-7]+|\\.|[^&#x27;\\])*&#x27;"><token
 46          type="LiteralStringSingle"
 47        /></rule>
 48      <rule pattern="(?s)&#x27;.*?&#x27;"><token
 49          type="LiteralStringSingle"
 50        /></rule>
 51      <rule pattern=";"><token type="Punctuation" /></rule>
 52      <rule pattern="&amp;"><token type="Punctuation" /></rule>
 53      <rule pattern="\|"><token type="Punctuation" /></rule>
 54      <rule pattern="\s+"><token type="TextWhitespace" /></rule>
 55      <rule pattern="\d+\b"><token type="LiteralNumber" /></rule>
 56      <rule pattern="[^=\s\[\]{}()$&quot;\&#x27;`\\&lt;&amp;|;]+"><token
 57          type="Text"
 58        /></rule>
 59      <rule pattern="&lt;"><token type="Text" /></rule>
 60    </state>
 61    <state name="string">
 62      <rule pattern="&quot;"><token type="LiteralStringDouble" /><pop
 63          depth="1"
 64        /></rule>
 65      <rule pattern="(?s)(\\\\|\\[0-7]+|\\.|[^&quot;\\$])+"><token
 66          type="LiteralStringDouble"
 67        /></rule>
 68    </state>
 69    <state name="interpolated_string">
 70      <rule pattern="&quot;"><token type="LiteralStringDouble" /><pop
 71          depth="1"
 72        /></rule>
 73      <rule pattern="\("><token type="LiteralStringInterpol" /><push
 74          state="interpolation"
 75        /></rule>
 76      <rule pattern="(?s)(\\\\|\\[0-7]+|\\.|[^&quot;\\(])+"><token
 77          type="LiteralStringDouble"
 78        /></rule>
 79    </state>
 80    <state name="interpolation">
 81      <rule pattern="\)"><token type="LiteralStringInterpol" /><pop
 82          depth="1"
 83        /></rule>
 84      <rule><include state="root" /></rule>
 85    </state>
 86    <state name="curly">
 87      <rule pattern="\}"><token type="LiteralStringInterpol" /><pop
 88          depth="1"
 89        /></rule>
 90      <rule pattern=":-"><token type="Keyword" /></rule>
 91      <rule pattern="\w+"><token type="NameVariable" /></rule>
 92      <rule pattern="[^}:&quot;\&#x27;`$\\]+"><token
 93          type="Punctuation"
 94        /></rule>
 95      <rule pattern=":"><token type="Punctuation" /></rule>
 96      <rule><include state="root" /></rule>
 97    </state>
 98    <state name="paren">
 99      <rule pattern="\)"><token type="Keyword" /><pop depth="1" /></rule>
100      <rule><include state="root" /></rule>
101    </state>
102    <state name="math">
103      <rule pattern="\)\)"><token type="Keyword" /><pop depth="1" /></rule>
104      <rule pattern="\*\*|\|\||&lt;&lt;|&gt;&gt;|[-+*/%^|&amp;&lt;&gt;]"><token
105          type="Operator"
106        /></rule>
107      <rule pattern="\d+#[\da-zA-Z]+"><token type="LiteralNumber" /></rule>
108      <rule pattern="\d+#(?! )"><token type="LiteralNumber" /></rule>
109      <rule pattern="0[xX][\da-fA-F]+"><token type="LiteralNumber" /></rule>
110      <rule pattern="\d+"><token type="LiteralNumber" /></rule>
111      <rule pattern="[a-zA-Z_]\w*"><token type="NameVariable" /></rule>
112      <rule><include state="root" /></rule>
113    </state>
114    <state name="backticks">
115      <rule pattern="`"><token type="LiteralStringBacktick" /><pop
116          depth="1"
117        /></rule>
118      <rule><include state="root" /></rule>
119    </state>
120  </rules>
121</lexer>