|
| 1 | +<lexer> |
| 2 | + <config> |
| 3 | + <name>Ring</name> |
| 4 | + <alias>ring</alias> |
| 5 | + <filename>*.ring</filename> |
| 6 | + <filename>*.rh</filename> |
| 7 | + <filename>*.rform</filename> |
| 8 | + <mime_type>text/x-ring</mime_type> |
| 9 | + <case_insensitive>true</case_insensitive> |
| 10 | + </config> |
| 11 | + <rules> |
| 12 | + <state name="root"> |
| 13 | + <rule pattern="\s+"><token type="Text"/></rule> |
| 14 | + <rule pattern="//.*?\n"><token type="CommentSingle"/></rule> |
| 15 | + <rule pattern="#.*?\n"><token type="CommentSingle"/></rule> |
| 16 | + <rule pattern="/\*"><token type="CommentMultiline"/><push state="comment"/></rule> |
| 17 | + <rule pattern="^\s*(changeringkeyword|changeringoperator|disablehashcomments|enablehashcomments|loadsyntax)\b"><token type="CommentPreproc"/></rule> |
| 18 | + <rule pattern=":[a-zA-Z_@$][\w@$]*"><token type="LiteralStringSymbol"/></rule> |
| 19 | + <rule pattern="""><token type="LiteralStringDouble"/><push state="string-double"/></rule> |
| 20 | + <rule pattern="'"><token type="LiteralStringSingle"/><push state="string-single"/></rule> |
| 21 | + <rule pattern="`"><token type="LiteralStringBacktick"/><push state="string-backtick"/></rule> |
| 22 | + <rule pattern="(\bclass)(\s+)(\w+)"><bygroups><token type="KeywordDeclaration"/><token type="Text"/><token type="NameClass"/></bygroups></rule> |
| 23 | + <rule pattern="(\bfrom)(\s+)(\w+)"><bygroups><token type="KeywordDeclaration"/><token type="Text"/><token type="NameClass"/></bygroups></rule> |
| 24 | + <rule pattern="(\bfunc|def|function)(\s+)(\w+)"><bygroups><token type="KeywordDeclaration"/><token type="Text"/><token type="NameFunction"/></bygroups></rule> |
| 25 | + <rule pattern="(\bpackage|import)(\s+)([a-zA-Z_@$][\w@$.]*)"><bygroups><token type="KeywordNamespace"/><token type="Text"/><token type="NameNamespace"/></bygroups></rule> |
| 26 | + <rule pattern="(\bnew)(\s+)(\w+)"><bygroups><token type="KeywordPseudo"/><token type="Text"/><token type="NameClass"/></bygroups></rule> |
| 27 | + <rule pattern="\b(if|but|elseif|else|other|ok|endif|end|switch|on|case|off|endswitch|for|in|to|step|next|endfor|foreach|while|endwhile|do|again|return|bye|exit|break|loop|continue|call)\b"><token type="Keyword"/></rule> |
| 28 | + <rule pattern="\b(try|catch|done|endtry)\b"><token type="Keyword"/></rule> |
| 29 | + <rule pattern="\b(class|endclass|from|func|def|function|endfunc|endfunction|package|endpackage|private)\b"><token type="KeywordDeclaration"/></rule> |
| 30 | + <rule pattern="\b(load|import)\b"><token type="KeywordNamespace"/></rule> |
| 31 | + <rule pattern="\b(new|self|this|super)\b"><token type="KeywordPseudo"/></rule> |
| 32 | + <rule pattern="\b(see|put|give|get)\b"><token type="Keyword"/></rule> |
| 33 | + <rule pattern="\b(true|false|nl|null|tab|cr|sysargv|ccatcherror|ringoptionalfunctions)\b"><token type="NameBuiltinPseudo"/></rule> |
| 34 | + <rule pattern="\b(and|or|not)\b"><token type="OperatorWord"/></rule> |
| 35 | + <rule pattern="\b(acos|add|addattribute|adddays|addmethod|ascii|asin|assert|atan|atan2|attributes|binarysearch|bytes2double|bytes2float|bytes2int|callgarbagecollector|callgc|ceil|cfunctions|char|chdir|checkoverflow|classes|classname|clearerr|clock|clockspersecond|closelib|copy|cos|cosh|currentdir|date|dec|decimals|del|diffdays|dir|direxists|double2bytes|eval|exefilename|exefolder|exp|fabs|fclose|feof|ferror|fexists|fflush|fgetc|fgetpos|fgets|filename|find|float2bytes|floor|fopen|fputc|fputs|fread|freopen|fseek|fsetpos|ftell|functions|fwrite|getarch|getattribute|getchar|getfilesize|getnumber|getpathtype|getpointer|getptr|getstring|globals|hex|hex2str|importpackage|input|insert|int2bytes|intvalue|isalnum|isalpha|isandroid|isattribute|iscfunction|isclass|iscntrl|isdigit|isfreebsd|isfunction|isglobal|isgraph|islinux|islist|islocal|islower|ismacosx|ismethod|ismsdos|isnull|isnumber|isobject|ispackage|ispackageclass|ispointer|isprint|isprivateattribute|isprivatemethod|ispunct|isspace|isstring|isunix|isupper|iswindows|iswindows64|isxdigit|left|len|lines|list|list2str|loadlib|locals|log|log10|lower|max|memcpy|memorycopy|mergemethods|methods|min|murmur3hash|newlist|nofprocessors|nothing|nullpointer|nullptr|number|obj2ptr|object2pointer|objectid|optionalfunc|packageclasses|packagename|packages|parentclassname|perror|pointer2object|pointer2string|pointercompare|pow|prevfilename|print|print2str|ptr2obj|ptr2str|ptrcmp|puts|raise|random|randomize|read|ref|reference|refcount|remove|rename|reverse|rewind|right|ring_give|ring_see|ring_state_delete|ring_state_filetokens|ring_state_findvar|ring_state_init|ring_state_main|ring_state_mainfile|ring_state_new|ring_state_newvar|ring_state_resume|ring_state_runcode|ring_state_runcodeatins|ring_state_runfile|ring_state_runobjectfile|ring_state_scannererror|ring_state_setvar|ring_state_stringtokens|ringvm_callfunc|ringvm_calllist|ringvm_cfunctionslist|ringvm_classeslist|ringvm_codelist|ringvm_evalinscope|ringvm_fileslist|ringvm_functionslist|ringvm_genarray|ringvm_give|ringvm_hideerrormsg|ringvm_info|ringvm_ismempool|ringvm_memorylist|ringvm_packageslist|ringvm_passerror|ringvm_runcode|ringvm_scopescount|ringvm_see|ringvm_settrace|ringvm_tracedata|ringvm_traceevent|ringvm_tracefunc|setattribute|setpointer|setptr|shutdown|sin|sinh|sort|space|sqrt|srandom|str2hex|str2hexcstyle|str2list|strcmp|string|substr|swap|sysget|sysset|syssleep|system|sysunset|tan|tanh|tempfile|tempname|time|timelist|trim|type|ungetc|unsigned|upper|uptime|variablepointer|varptr|version|windowsnl|write)\b(?=\s*\()"><token type="NameBuiltin"/></rule> |
| 36 | + <rule pattern="0x[a-f0-9_]+"><token type="LiteralNumberHex"/></rule> |
| 37 | + <rule pattern="0b[01_]+"><token type="LiteralNumberBin"/></rule> |
| 38 | + <rule pattern="0o[0-7_]+"><token type="LiteralNumberOct"/></rule> |
| 39 | + <rule pattern="[0-9]+(?:_[0-9]+)*\.[0-9]*(?:_[0-9]+)*([eE][-+]?[0-9]+)?"><token type="LiteralNumberFloat"/></rule> |
| 40 | + <rule pattern="[0-9]+(?:_[0-9]+)*"><token type="LiteralNumberInteger"/></rule> |
| 41 | + <rule pattern="(\+\+|\-\-|\*\*|\^\^|!=|<=|>=|<<|>>|&&|\|\|)"><token type="Operator"/></rule> |
| 42 | + <rule pattern="(\+=|-=|\*=|/=|%=|<<=|>>=|&=|\|=|\^=)"><token type="Operator"/></rule> |
| 43 | + <rule pattern="[-+/*%=<>&|!~.:^?]"><token type="Operator"/></rule> |
| 44 | + <rule pattern="[\[\](){},;]"><token type="Punctuation"/></rule> |
| 45 | + <rule pattern="[a-zA-Z_@$][\w@$]*"><token type="Name"/></rule> |
| 46 | + </state> |
| 47 | + <state name="comment"> |
| 48 | + <rule pattern="[^*/]+"><token type="CommentMultiline"/></rule> |
| 49 | + <rule pattern="/\*"><token type="CommentMultiline"/><push/></rule> |
| 50 | + <rule pattern="\*/"><token type="CommentMultiline"/><pop depth="1"/></rule> |
| 51 | + <rule pattern="[*/]"><token type="CommentMultiline"/></rule> |
| 52 | + </state> |
| 53 | + <state name="string-double"> |
| 54 | + <rule pattern="[^"#]+"><token type="LiteralStringDouble"/></rule> |
| 55 | + <rule pattern="#\{"><token type="LiteralStringInterpol"/><push state="interpolation"/></rule> |
| 56 | + <rule pattern="""><token type="LiteralStringDouble"/><pop depth="1"/></rule> |
| 57 | + </state> |
| 58 | + <state name="string-single"> |
| 59 | + <rule pattern="[^'#]+"><token type="LiteralStringSingle"/></rule> |
| 60 | + <rule pattern="#\{"><token type="LiteralStringInterpol"/><push state="interpolation"/></rule> |
| 61 | + <rule pattern="'"><token type="LiteralStringSingle"/><pop depth="1"/></rule> |
| 62 | + </state> |
| 63 | + <state name="string-backtick"> |
| 64 | + <rule pattern="[^`#]+"><token type="LiteralStringBacktick"/></rule> |
| 65 | + <rule pattern="#\{"><token type="LiteralStringInterpol"/><push state="interpolation"/></rule> |
| 66 | + <rule pattern="`"><token type="LiteralStringBacktick"/><pop depth="1"/></rule> |
| 67 | + </state> |
| 68 | + <state name="interpolation"> |
| 69 | + <rule pattern="\}"><token type="LiteralStringInterpol"/><pop depth="1"/></rule> |
| 70 | + <rule><include state="root"/></rule> |
| 71 | + </state> |
| 72 | + </rules> |
| 73 | +</lexer> |
| 74 | + |
0 commit comments