Skip to content

Commit 113cd0e

Browse files
authored
Add Arturo lexer (#1232)
This is a port of `pygments.lexers.arturo` from Pygments.
1 parent 4498d71 commit 113cd0e

3 files changed

Lines changed: 2713 additions & 0 deletions

File tree

lexers/embedded/arturo.xml

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
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="\&#x27;(?:\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="&quot;"><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="(\-&gt;|==&gt;|\||::|@|\#|\$|\&amp;|!|!!|\./)"><token type="NameDecorator"/></rule>
49+
<rule pattern="(&lt;:|:&gt;|:&lt;|&gt;:|&lt;\\|&lt;&gt;|&lt;|&gt;|ø|∞|\+|\-|\*|\~|=|\^|%|/|//|==&gt;|&lt;=&gt;|&lt;==&gt;|=&gt;&gt;|&lt;&lt;=&gt;&gt;|&lt;&lt;==&gt;&gt;|\-\-&gt;|&lt;\-&gt;|&lt;\-\-&gt;|=\||\|=|\-:|:\-|_|\.|\.\.|\\)"><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="\|\|\&gt;"><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|\\&quot;)"><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="\&lt;\|\|"><token type="LiteralStringInterpol"/><push state="inside-template"/></rule>
69+
<rule pattern="&quot;"><token type="LiteralStringDouble"/><pop depth="1"/></rule>
70+
<rule pattern="[^|&quot;]+"><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="\&lt;\|\|"><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="\&lt;\|\|"><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="\&lt;\|\|"><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="\&lt;\|\|"><token type="LiteralStringInterpol"/><push state="inside-template"/></rule>
97+
<rule pattern="\:\}"><token type="LiteralStringDouble"/><pop depth="1"/></rule>
98+
<rule pattern="[^|&lt;:]+"><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="\&lt;\|\|"><token type="LiteralStringInterpol"/><push state="inside-template"/></rule>
104+
<rule pattern="\}"><token type="LiteralStringSingle"/><pop depth="1"/></rule>
105+
<rule pattern="[^|&lt;}]+"><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="\&lt;\|\|"><token type="LiteralStringInterpol"/><push state="inside-template"/></rule>
111+
<rule pattern="\Z"><token type="LiteralStringSingle"/><pop depth="1"/></rule>
112+
<rule pattern="[^|&lt;]+"><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

Comments
 (0)