|
| 1 | + |
| 2 | +<lexer> |
| 3 | + <config> |
| 4 | + <name>Arturo</name> |
| 5 | + <alias>arturo</alias> |
| 6 | + <alias>art</alias> |
| 7 | + <filename>*.art</filename> |
| 8 | + </config> |
| 9 | + <rules> |
| 10 | + <state name="root"> |
| 11 | + <rule pattern=";.*?$"><token type="CommentSingle"/></rule> |
| 12 | + <rule pattern="^((\s#!)|(#!)).*?$"><token type="CommentHashbang"/></rule> |
| 13 | + <rule pattern="(false|true|maybe)\b"><token type="NameConstant"/></rule> |
| 14 | + <rule pattern="\b(this|init)\b\??:?"><token type="NameBuiltinPseudo"/></rule> |
| 15 | + <rule pattern="`.`"><token type="LiteralStringChar"/></rule> |
| 16 | + <rule pattern="\\\w+\b\??:?"><token type="NameProperty"/></rule> |
| 17 | + <rule pattern="#\w+"><token type="NameConstant"/></rule> |
| 18 | + <rule pattern="\b[0-9]+\.[0-9]+"><token type="LiteralNumberFloat"/></rule> |
| 19 | + <rule pattern="\b[0-9]+"><token type="LiteralNumberInteger"/></rule> |
| 20 | + <rule pattern="\w+\b\??:"><token type="NameLabel"/></rule> |
| 21 | + <rule pattern="\'(?:\w+\b\??:?)"><token type="KeywordDeclaration"/></rule> |
| 22 | + <rule pattern="\:\w+"><token type="KeywordType"/></rule> |
| 23 | + <rule pattern="\.\w+\??:?"><token type="NameAttribute"/></rule> |
| 24 | + <rule pattern="(\()(.*?)(\)\?)"><bygroups><token type="Punctuation"/><usingself state="root"/><token type="Punctuation"/></bygroups></rule> |
| 25 | + <rule pattern="""><token type="LiteralStringDouble"/><push state="inside-simple-string"/></rule> |
| 26 | + <rule pattern="»"><token type="LiteralStringSingle"/><push state="inside-smart-string"/></rule> |
| 27 | + <rule pattern="«««"><token type="LiteralStringDouble"/><push state="inside-safe-string"/></rule> |
| 28 | + <rule pattern="\{\/"><token type="LiteralStringSingle"/><push state="inside-regex-string"/></rule> |
| 29 | + <rule pattern="\{\:"><token type="LiteralStringDouble"/><push state="inside-curly-verb-string"/></rule> |
| 30 | + <rule pattern="(\{)(\!)(\w+)(\s|\n)([\w\W]*?)(^\})"> |
| 31 | + <usingbygroup> |
| 32 | + <sublexer_name_group>3</sublexer_name_group> |
| 33 | + <code_group>5</code_group> |
| 34 | + <emitters> |
| 35 | + <token type="LiteralStringDouble"/> |
| 36 | + <token type="LiteralStringInterpol"/> |
| 37 | + <token type="LiteralStringInterpol"/> |
| 38 | + <token type="TextWhitespace"/> |
| 39 | + <token type="LiteralString"/> |
| 40 | + <token type="LiteralStringDouble"/> |
| 41 | + </emitters> |
| 42 | + </usingbygroup> |
| 43 | + </rule> |
| 44 | + <rule pattern="\{"><token type="LiteralStringSingle"/><push state="inside-curly-string"/></rule> |
| 45 | + <rule pattern="\-{3,}"><token type="LiteralStringSingle"/><push state="inside-eof-string"/></rule> |
| 46 | + <rule><include state="builtin-functions"/></rule> |
| 47 | + <rule pattern="[()[\],]"><token type="Punctuation"/></rule> |
| 48 | + <rule pattern="(\->|==>|\||::|@|\#|\$|\&|!|!!|\./)"><token type="NameDecorator"/></rule> |
| 49 | + <rule pattern="(<:|:>|:<|>:|<\\|<>|<|>|ø|∞|\+|\-|\*|\~|=|\^|%|/|//|==>|<=>|<==>|=>>|<<=>>|<<==>>|\-\->|<\->|<\-\->|=\||\|=|\-:|:\-|_|\.|\.\.|\\)"><token type="Operator"/></rule> |
| 50 | + <rule pattern="\b\w+"><token type="Name"/></rule> |
| 51 | + <rule pattern="\s+"><token type="TextWhitespace"/></rule> |
| 52 | + <rule pattern=".+$"><token type="Error"/></rule> |
| 53 | + </state> |
| 54 | + <state name="inside-interpol"> |
| 55 | + <rule pattern="\|"><token type="LiteralStringInterpol"/><pop depth="1"/></rule> |
| 56 | + <rule pattern="[^|]+"><usingself state="root"/></rule> |
| 57 | + </state> |
| 58 | + <state name="inside-template"> |
| 59 | + <rule pattern="\|\|\>"><token type="LiteralStringInterpol"/><pop depth="1"/></rule> |
| 60 | + <rule pattern="[^|]+"><usingself state="root"/></rule> |
| 61 | + </state> |
| 62 | + <state name="string-escape"> |
| 63 | + <rule pattern="(\\\\|\\n|\\t|\\")"><token type="LiteralStringEscape"/></rule> |
| 64 | + </state> |
| 65 | + <state name="inside-simple-string"> |
| 66 | + <rule><include state="string-escape"/></rule> |
| 67 | + <rule pattern="\|"><token type="LiteralStringInterpol"/><push state="inside-interpol"/></rule> |
| 68 | + <rule pattern="\<\|\|"><token type="LiteralStringInterpol"/><push state="inside-template"/></rule> |
| 69 | + <rule pattern="""><token type="LiteralStringDouble"/><pop depth="1"/></rule> |
| 70 | + <rule pattern="[^|"]+"><token type="LiteralString"/></rule> |
| 71 | + </state> |
| 72 | + <state name="inside-smart-string"> |
| 73 | + <rule><include state="string-escape"/></rule> |
| 74 | + <rule pattern="\|"><token type="LiteralStringInterpol"/><push state="inside-interpol"/></rule> |
| 75 | + <rule pattern="\<\|\|"><token type="LiteralStringInterpol"/><push state="inside-template"/></rule> |
| 76 | + <rule pattern="\n"><token type="LiteralStringSingle"/><pop depth="1"/></rule> |
| 77 | + <rule pattern="[^|\n]+"><token type="LiteralString"/></rule> |
| 78 | + </state> |
| 79 | + <state name="inside-safe-string"> |
| 80 | + <rule><include state="string-escape"/></rule> |
| 81 | + <rule pattern="\|"><token type="LiteralStringInterpol"/><push state="inside-interpol"/></rule> |
| 82 | + <rule pattern="\<\|\|"><token type="LiteralStringInterpol"/><push state="inside-template"/></rule> |
| 83 | + <rule pattern="»»»"><token type="LiteralStringDouble"/><pop depth="1"/></rule> |
| 84 | + <rule pattern="[^|»]+"><token type="LiteralString"/></rule> |
| 85 | + </state> |
| 86 | + <state name="inside-regex-string"> |
| 87 | + <rule pattern="\\[sSwWdDbBZApPxucItnvfr0]+"><token type="LiteralStringEscape"/></rule> |
| 88 | + <rule pattern="\|"><token type="LiteralStringInterpol"/><push state="inside-interpol"/></rule> |
| 89 | + <rule pattern="\<\|\|"><token type="LiteralStringInterpol"/><push state="inside-template"/></rule> |
| 90 | + <rule pattern="\/\}"><token type="LiteralStringSingle"/><pop depth="1"/></rule> |
| 91 | + <rule pattern="[^|\/]+"><token type="LiteralStringRegex"/></rule> |
| 92 | + </state> |
| 93 | + <state name="inside-curly-verb-string"> |
| 94 | + <rule><include state="string-escape"/></rule> |
| 95 | + <rule pattern="\|"><token type="LiteralStringInterpol"/><push state="inside-interpol"/></rule> |
| 96 | + <rule pattern="\<\|\|"><token type="LiteralStringInterpol"/><push state="inside-template"/></rule> |
| 97 | + <rule pattern="\:\}"><token type="LiteralStringDouble"/><pop depth="1"/></rule> |
| 98 | + <rule pattern="[^|<:]+"><token type="LiteralString"/></rule> |
| 99 | + </state> |
| 100 | + <state name="inside-curly-string"> |
| 101 | + <rule><include state="string-escape"/></rule> |
| 102 | + <rule pattern="\|"><token type="LiteralStringInterpol"/><push state="inside-interpol"/></rule> |
| 103 | + <rule pattern="\<\|\|"><token type="LiteralStringInterpol"/><push state="inside-template"/></rule> |
| 104 | + <rule pattern="\}"><token type="LiteralStringSingle"/><pop depth="1"/></rule> |
| 105 | + <rule pattern="[^|<}]+"><token type="LiteralString"/></rule> |
| 106 | + </state> |
| 107 | + <state name="inside-eof-string"> |
| 108 | + <rule><include state="string-escape"/></rule> |
| 109 | + <rule pattern="\|"><token type="LiteralStringInterpol"/><push state="inside-interpol"/></rule> |
| 110 | + <rule pattern="\<\|\|"><token type="LiteralStringInterpol"/><push state="inside-template"/></rule> |
| 111 | + <rule pattern="\Z"><token type="LiteralStringSingle"/><pop depth="1"/></rule> |
| 112 | + <rule pattern="[^|<]+"><token type="LiteralString"/></rule> |
| 113 | + </state> |
| 114 | + <state name="builtin-functions"> |
| 115 | + <rule pattern="\b(all|and|any|ascii|attr|attribute|attributeLabel|binary|blockchar|contains|database|date|dictionary|empty|equal|even|every|exists|false|floatin|function|greater|greaterOrEqual|if|in|inline|integer|is|key|label|leap|less|lessOrEqual|literal|logical|lower|nand|negative|nor|not|notEqual|null|numeric|odd|or|path|pathLabel|positive|prefix|prime|set|some|sorted|standalone|string|subset|suffix|superset|ymbol|true|try|type|unless|upper|when|whitespace|word|xnor|xor|zero)\b\?"><token type="NameBuiltin"/></rule> |
| 116 | + <rule pattern="\b(abs|acos|acosh|acsec|acsech|actan|actanh|add|after|alphabet|and|angle|append|arg|args|arity|array|as|asec|asech|asin|asinh|atan|atan2|atanh|attr|attrs|average|before|benchmark|blend|break|builtins1|builtins2|call|capitalize|case|ceil|chop|chunk|clear|close|cluster|color|combine|conj|continue|copy|cos|cosh|couple|csec|csech|ctan|ctanh|cursor|darken|dec|decode|decouple|define|delete|desaturate|deviation|dictionary|difference|digest|digits|div|do|download|drop|dup|e|else|empty|encode|ensure|env|epsilon|escape|execute|exit|exp|extend|extract|factors|false|fdiv|filter|first|flatten|floor|fold|from|function|gamma|gcd|get|goto|hash|help|hypot|if|in|inc|indent|index|infinity|info|input|insert|inspect|intersection|invert|join|keys|kurtosis|last|let|levenshtein|lighten|list|ln|log|loop|lower|mail|map|match|max|maybe|median|min|mod|module|mul|nand|neg|new|nor|normalize|not|now|null|open|or|outdent|pad|panic|path|pause|permissions|permutate|pi|pop|pow|powerset|powmod|prefix|print|prints|process|product|query|random|range|read|relative|remove|rename|render|repeat|replace|request|return|reverse|round|sample|saturate|script|sec|sech|select|serve|set|shl|shr|shuffle|sin|sinh|size|skewness|slice|sort|split|sqrt|squeeze|stack|strip|sub|suffix|sum|switch|symbols|symlink|sys|take|tan|tanh|terminal|to|true|truncate|try|type|union|unique|unless|until|unzip|upper|values|var|variance|volume|webview|while|with|wordwrap|write|xnor|xor|zip)\b"><token type="NameBuiltin"/></rule> |
| 117 | + </state> |
| 118 | + </rules> |
| 119 | +</lexer> |
0 commit comments