<lexer> <config> <name>Ruby</name> <alias>rb</alias> <alias>ruby</alias> <alias>duby</alias> <filename>*.rb</filename> <filename>*.rbw</filename> <filename>Rakefile</filename> <filename>*.rake</filename> <filename>*.gemspec</filename> <filename>*.rbx</filename> <filename>*.duby</filename> <filename>Gemfile</filename> <filename>Vagrantfile</filename> <mime_type>text/x-ruby</mime_type> <mime_type>application/x-ruby</mime_type> <dot_all>true</dot_all> </config> <rules> <state name="simple-sym"> <rule> <include state="string-intp-escaped"/> </rule> <rule pattern="[^\\"#]+"> <token type="LiteralStringSymbol"/> </rule> <rule pattern="[\\#]"> <token type="LiteralStringSymbol"/> </rule> <rule pattern="""> <token type="LiteralStringSymbol"/> <pop depth="1"/> </rule> </state> <state name="interpolated-regex"> <rule> <include state="string-intp"/> </rule> <rule pattern="[\\#]"> <token type="LiteralStringRegex"/> </rule> <rule pattern="[^\\#]+"> <token type="LiteralStringRegex"/> </rule> </state> <state name="strings"> <rule pattern="\:@{0,2}[a-zA-Z_]\w*[!?]?"> <token type="LiteralStringSymbol"/> </rule> <rule pattern="\:@{0,2}(===|\[\]=|<=>|\*\*|==|>=|\+@|<>|>>|<<|-@|\[\]|~|`|\^|\||&|<|%|/|>|\+|-|\*)"> <token type="LiteralStringSymbol"/> </rule> <rule pattern=":'(\\\\|\\'|[^'])*'"> <token type="LiteralStringSymbol"/> </rule> <rule pattern="'(\\\\|\\'|[^'])*'"> <token type="LiteralStringSingle"/> </rule> <rule pattern=":""> <token type="LiteralStringSymbol"/> <push state="simple-sym"/> </rule> <rule pattern="([a-zA-Z_]\w*)(:)(?!:)"> <bygroups> <token type="LiteralStringSymbol"/> <token type="Punctuation"/> </bygroups> </rule> <rule pattern="""> <token type="LiteralStringDouble"/> <push state="simple-string"/> </rule> <rule pattern="(?<!\.)`"> <token type="LiteralStringBacktick"/> <push state="simple-backtick"/> </rule> <rule pattern="%[QWx]?\{"> <token type="LiteralStringOther"/> <push state="cb-intp-string"/> </rule> <rule pattern="%[qsw]\{"> <token type="LiteralStringOther"/> <push state="cb-string"/> </rule> <rule pattern="%r\{"> <token type="LiteralStringRegex"/> <push state="cb-regex"/> </rule> <rule pattern="%[QWx]?\["> <token type="LiteralStringOther"/> <push state="sb-intp-string"/> </rule> <rule pattern="%[qsw]\["> <token type="LiteralStringOther"/> <push state="sb-string"/> </rule> <rule pattern="%r\["> <token type="LiteralStringRegex"/> <push state="sb-regex"/> </rule> <rule pattern="%[QWx]?\("> <token type="LiteralStringOther"/> <push state="pa-intp-string"/> </rule> <rule pattern="%[qsw]\("> <token type="LiteralStringOther"/> <push state="pa-string"/> </rule> <rule pattern="%r\("> <token type="LiteralStringRegex"/> <push state="pa-regex"/> </rule> <rule pattern="%[QWx]?<"> <token type="LiteralStringOther"/> <push state="ab-intp-string"/> </rule> <rule pattern="%[qsw]<"> <token type="LiteralStringOther"/> <push state="ab-string"/> </rule> <rule pattern="%r<"> <token type="LiteralStringRegex"/> <push state="ab-regex"/> </rule> <rule pattern="(%r([\W_]))((?:\\\2|(?!\2).)*)(\2[mixounse]*)"> <token type="LiteralString"/> </rule> <rule pattern="%[qsw]([\W_])((?:\\\1|(?!\1).)*)\1"> <token type="LiteralStringOther"/> </rule> <rule pattern="(%[QWx]([\W_]))((?:\\\2|(?!\2).)*)(\2)"> <token type="LiteralString"/> </rule> <rule pattern="(?<=[-+/*%=<>&!^|~,(])(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)"> <bygroups> <token type="Text"/> <token type="LiteralStringOther"/> <token type="None"/> </bygroups> </rule> <rule pattern="^(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)"> <bygroups> <token type="Text"/> <token type="LiteralStringOther"/> <token type="None"/> </bygroups> </rule> <rule pattern="(%([^a-zA-Z0-9\s]))((?:\\\2|(?!\2).)*)(\2)"> <token type="LiteralString"/> </rule> </state> <state name="simple-backtick"> <rule> <include state="string-intp-escaped"/> </rule> <rule pattern="[^\\`#]+"> <token type="LiteralStringBacktick"/> </rule> <rule pattern="[\\#]"> <token type="LiteralStringBacktick"/> </rule> <rule pattern="`"> <token type="LiteralStringBacktick"/> <pop depth="1"/> </rule> </state> <state name="ab-regex"> <rule pattern="\\[\\<>]"> <token type="LiteralStringRegex"/> </rule> <rule pattern="<"> <token type="LiteralStringRegex"/> <push/> </rule> <rule pattern=">[mixounse]*"> <token type="LiteralStringRegex"/> <pop depth="1"/> </rule> <rule> <include state="string-intp"/> </rule> <rule pattern="[\\#<>]"> <token type="LiteralStringRegex"/> </rule> <rule pattern="[^\\#<>]+"> <token type="LiteralStringRegex"/> </rule> </state> <state name="cb-regex"> <rule pattern="\\[\\{}]"> <token type="LiteralStringRegex"/> </rule> <rule pattern="\{"> <token type="LiteralStringRegex"/> <push/> </rule> <rule pattern="\}[mixounse]*"> <token type="LiteralStringRegex"/> <pop depth="1"/> </rule> <rule> <include state="string-intp"/> </rule> <rule pattern="[\\#{}]"> <token type="LiteralStringRegex"/> </rule> <rule pattern="[^\\#{}]+"> <token type="LiteralStringRegex"/> </rule> </state> <state name="end-part"> <rule pattern=".+"> <token type="CommentPreproc"/> <pop depth="1"/> </rule> </state> <state name="string-intp"> <rule pattern="#\{"> <token type="LiteralStringInterpol"/> <push state="in-intp"/> </rule> <rule pattern="#@@?[a-zA-Z_]\w*"> <token type="LiteralStringInterpol"/> </rule> <rule pattern="#\$[a-zA-Z_]\w*"> <token type="LiteralStringInterpol"/> </rule> </state> <state name="interpolated-string"> <rule> <include state="string-intp"/> </rule> <rule pattern="[\\#]"> <token type="LiteralStringOther"/> </rule> <rule pattern="[^\\#]+"> <token type="LiteralStringOther"/> </rule> </state> <state name="classname"> <rule pattern="\("> <token type="Punctuation"/> <push state="defexpr"/> </rule> <rule pattern="<<"> <token type="Operator"/> <pop depth="1"/> </rule> <rule pattern="[A-Z_]\w*"> <token type="NameClass"/> <pop depth="1"/> </rule> <rule> <pop depth="1"/> </rule> </state> <state name="cb-intp-string"> <rule pattern="\\[\\{}]"> <token type="LiteralStringOther"/> </rule> <rule pattern="\{"> <token type="LiteralStringOther"/> <push/> </rule> <rule pattern="\}"> <token type="LiteralStringOther"/> <pop depth="1"/> </rule> <rule> <include state="string-intp-escaped"/> </rule> <rule pattern="[\\#{}]"> <token type="LiteralStringOther"/> </rule> <rule pattern="[^\\#{}]+"> <token type="LiteralStringOther"/> </rule> </state> <state name="root"> <rule pattern="\A#!.+?$"> <token type="CommentHashbang"/> </rule> <rule pattern="#.*?$"> <token type="CommentSingle"/> </rule> <rule pattern="=begin\s.*?\n=end.*?$"> <token type="CommentMultiline"/> </rule> <rule pattern="(defined\?|return|ensure|rescue|unless|undef|until|break|begin|elsif|super|alias|while|retry|BEGIN|raise|yield|redo|next|case|when|then|else|end|for|END|do|if|in)\b"> <token type="Keyword"/> </rule> <rule pattern="(module)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)"> <bygroups> <token type="Keyword"/> <token type="Text"/> <token type="NameNamespace"/> </bygroups> </rule> <rule pattern="(def)(\s+)"> <bygroups> <token type="Keyword"/> <token type="Text"/> </bygroups> <push state="funcname"/> </rule> <rule pattern="def(?=[*%&^`~+-/\[<>=])"> <token type="Keyword"/> <push state="funcname"/> </rule> <rule pattern="(class)(\s+)"> <bygroups> <token type="Keyword"/> <token type="Text"/> </bygroups> <push state="classname"/> </rule> <rule pattern="(module_function|attr_accessor|attr_reader|attr_writer|initialize|protected|include|private|extend|public|raise|false|catch|throw|attr|loop|true|new|nil)\b"> <token type="KeywordPseudo"/> </rule> <rule pattern="(not|and|or)\b"> <token type="OperatorWord"/> </rule> <rule pattern="(protected_method_defined|private_method_defined|public_method_defined|method_defined|const_defined|block_given|instance_of|respond_to|iterator|autoload|kind_of|tainted|include|frozen|equal|is_a|nil|eql)\?"> <token type="NameBuiltin"/> </rule> <rule pattern="(chomp|chop|exit|gsub|sub)!"> <token type="NameBuiltin"/> </rule> <rule pattern="(?<!\.)(protected_instance_methods|private_instance_methods|public_instance_methods|instance_variable_set|instance_variable_get|private_class_method|public_class_method|instance_variables|protected_methods|singleton_methods|included_modules|instance_methods|global_variables|private_methods|local_variables|instance_method|class_variables|public_methods|const_defined\?|set_trace_func|method_missing|const_missing|instance_eval|module_eval|untrace_var|class_eval|trace_var|const_get|readlines|ancestors|constants|const_set|object_id|readline|autoload|__send__|untaint|methods|display|Integer|sprintf|inspect|require|syscall|at_exit|binding|extend|printf|lambda|__id__|String|callcc|method|select|format|system|freeze|caller|raise|Float|print|throw|taint|clone|srand|Array|abort|split|catch|chomp|sleep|open|puts|putc|fork|fail|trap|exit|scan|getc|self|send|eval|gets|exec|gsub|proc|load|loop|chop|warn|hash|test|name|to_a|rand|to_s|sub|dup|id|p)\b"> <token type="NameBuiltin"/> </rule> <rule pattern="__(FILE|LINE)__\b"> <token type="NameBuiltinPseudo"/> </rule> <rule pattern="(?<!\w)(<<-?)(["`\']?)([a-zA-Z_]\w*)(\2)(.*?\n)"> <token type="LiteralString"/> </rule> <rule pattern="(<<-?)("|\')()(\2)(.*?\n)"> <token type="LiteralString"/> </rule> <rule pattern="__END__"> <token type="CommentPreproc"/> <push state="end-part"/> </rule> <rule pattern="(?:^|(?<=[=<>~!:])|(?<=(?:\s|;)when\s)|(?<=(?:\s|;)or\s)|(?<=(?:\s|;)and\s)|(?<=\.index\s)|(?<=\.scan\s)|(?<=\.sub\s)|(?<=\.sub!\s)|(?<=\.gsub\s)|(?<=\.gsub!\s)|(?<=\.match\s)|(?<=(?:\s|;)if\s)|(?<=(?:\s|;)elsif\s)|(?<=^when\s)|(?<=^index\s)|(?<=^scan\s)|(?<=^sub\s)|(?<=^gsub\s)|(?<=^sub!\s)|(?<=^gsub!\s)|(?<=^match\s)|(?<=^if\s)|(?<=^elsif\s))(\s*)(/)"> <bygroups> <token type="Text"/> <token type="LiteralStringRegex"/> </bygroups> <push state="multiline-regex"/> </rule> <rule pattern="(?<=\(|,|\[)/"> <token type="LiteralStringRegex"/> <push state="multiline-regex"/> </rule> <rule pattern="(\s+)(/)(?![\s=])"> <bygroups> <token type="Text"/> <token type="LiteralStringRegex"/> </bygroups> <push state="multiline-regex"/> </rule> <rule pattern="(0_?[0-7]+(?:_[0-7]+)*)(\s*)([/?])?"> <bygroups> <token type="LiteralNumberOct"/> <token type="Text"/> <token type="Operator"/> </bygroups> </rule> <rule pattern="(0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*)(\s*)([/?])?"> <bygroups> <token type="LiteralNumberHex"/> <token type="Text"/> <token type="Operator"/> </bygroups> </rule> <rule pattern="(0b[01]+(?:_[01]+)*)(\s*)([/?])?"> <bygroups> <token type="LiteralNumberBin"/> <token type="Text"/> <token type="Operator"/> </bygroups> </rule> <rule pattern="([\d]+(?:[_e]\d+)*)(\s*)([/?])?"> <bygroups> <token type="LiteralNumberInteger"/> <token type="Text"/> <token type="Operator"/> </bygroups> </rule> <rule pattern="@@[a-zA-Z_]\w*"> <token type="NameVariableClass"/> </rule> <rule pattern="@[a-zA-Z_]\w*"> <token type="NameVariableInstance"/> </rule> <rule pattern="\$\w+"> <token type="NameVariableGlobal"/> </rule> <rule pattern="\$[!@&`\'+~=/\\,;.<>_*$?:"^-]"> <token type="NameVariableGlobal"/> </rule> <rule pattern="\$-[0adFiIlpvw]"> <token type="NameVariableGlobal"/> </rule> <rule pattern="::"> <token type="Operator"/> </rule> <rule> <include state="strings"/> </rule> <rule pattern="\?(\\[MC]-)*(\\([\\abefnrstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})|\S)(?!\w)"> <token type="LiteralStringChar"/> </rule> <rule pattern="[A-Z]\w+"> <token type="NameConstant"/> </rule> <rule pattern="(\.|::)(===|\[\]=|<=>|\*\*|==|>=|\+@|<>|>>|<<|-@|\[\]|~|`|\^|\||&|<|%|/|>|\+|-|\*)"> <bygroups> <token type="Operator"/> <token type="NameOperator"/> </bygroups> </rule> <rule pattern="(\.|::)([a-zA-Z_]\w*[!?]?|[*%&^`~+\-/\[<>=])"> <bygroups> <token type="Operator"/> <token type="Name"/> </bygroups> </rule> <rule pattern="[a-zA-Z_]\w*[!?]?"> <token type="Name"/> </rule> <rule pattern="(\[|\]|\*\*|<<?|>>?|>=|<=|<=>|=~|={3}|!~|&&?|\|\||\.{1,3})"> <token type="Operator"/> </rule> <rule pattern="[-+/*%=<>&!^|~]=?"> <token type="Operator"/> </rule> <rule pattern="[(){};,/?:\\]"> <token type="Punctuation"/> </rule> <rule pattern="\s+"> <token type="Text"/> </rule> </state> <state name="defexpr"> <rule pattern="(\))(\.|::)?"> <bygroups> <token type="Punctuation"/> <token type="Operator"/> </bygroups> <pop depth="1"/> </rule> <rule pattern="\("> <token type="Operator"/> <push/> </rule> <rule> <include state="root"/> </rule> </state> <state name="in-intp"> <rule pattern="\{"> <token type="LiteralStringInterpol"/> <push/> </rule> <rule pattern="\}"> <token type="LiteralStringInterpol"/> <pop depth="1"/> </rule> <rule> <include state="root"/> </rule> </state> <state name="multiline-regex"> <rule> <include state="string-intp"/> </rule> <rule pattern="\\\\"> <token type="LiteralStringRegex"/> </rule> <rule pattern="\\/"> <token type="LiteralStringRegex"/> </rule> <rule pattern="[\\#]"> <token type="LiteralStringRegex"/> </rule> <rule pattern="[^\\/#]+"> <token type="LiteralStringRegex"/> </rule> <rule pattern="/[mixounse]*"> <token type="LiteralStringRegex"/> <pop depth="1"/> </rule> </state> <state name="cb-string"> <rule pattern="\\[\\{}]"> <token type="LiteralStringOther"/> </rule> <rule pattern="\{"> <token type="LiteralStringOther"/> <push/> </rule> <rule pattern="\}"> <token type="LiteralStringOther"/> <pop depth="1"/> </rule> <rule pattern="[\\#{}]"> <token type="LiteralStringOther"/> </rule> <rule pattern="[^\\#{}]+"> <token type="LiteralStringOther"/> </rule> </state> <state name="funcname"> <rule pattern="\("> <token type="Punctuation"/> <push state="defexpr"/> </rule> <rule pattern="(?:([a-zA-Z_]\w*)(\.))?([a-zA-Z_]\w*[!?]?|\*\*?|[-+]@?|[/%&|^`~]|\[\]=?|<<|>>|<=?>|>=?|===?)"> <bygroups> <token type="NameClass"/> <token type="Operator"/> <token type="NameFunction"/> </bygroups> <pop depth="1"/> </rule> <rule> <pop depth="1"/> </rule> </state> <state name="sb-intp-string"> <rule pattern="\\[\\\[\]]"> <token type="LiteralStringOther"/> </rule> <rule pattern="\["> <token type="LiteralStringOther"/> <push/> </rule> <rule pattern="\]"> <token type="LiteralStringOther"/> <pop depth="1"/> </rule> <rule> <include state="string-intp-escaped"/> </rule> <rule pattern="[\\#\[\]]"> <token type="LiteralStringOther"/> </rule> <rule pattern="[^\\#\[\]]+"> <token type="LiteralStringOther"/> </rule> </state> <state name="pa-string"> <rule pattern="\\[\\()]"> <token type="LiteralStringOther"/> </rule> <rule pattern="\("> <token type="LiteralStringOther"/> <push/> </rule> <rule pattern="\)"> <token type="LiteralStringOther"/> <pop depth="1"/> </rule> <rule pattern="[\\#()]"> <token type="LiteralStringOther"/> </rule> <rule pattern="[^\\#()]+"> <token type="LiteralStringOther"/> </rule> </state> <state name="string-intp-escaped"> <rule> <include state="string-intp"/> </rule> <rule pattern="\\([\\abefnrstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})"> <token type="LiteralStringEscape"/> </rule> </state> <state name="simple-string"> <rule> <include state="string-intp-escaped"/> </rule> <rule pattern="[^\\"#]+"> <token type="LiteralStringDouble"/> </rule> <rule pattern="[\\#]"> <token type="LiteralStringDouble"/> </rule> <rule pattern="""> <token type="LiteralStringDouble"/> <pop depth="1"/> </rule> </state> <state name="pa-intp-string"> <rule pattern="\\[\\()]"> <token type="LiteralStringOther"/> </rule> <rule pattern="\("> <token type="LiteralStringOther"/> <push/> </rule> <rule pattern="\)"> <token type="LiteralStringOther"/> <pop depth="1"/> </rule> <rule> <include state="string-intp-escaped"/> </rule> <rule pattern="[\\#()]"> <token type="LiteralStringOther"/> </rule> <rule pattern="[^\\#()]+"> <token type="LiteralStringOther"/> </rule> </state> <state name="ab-string"> <rule pattern="\\[\\<>]"> <token type="LiteralStringOther"/> </rule> <rule pattern="<"> <token type="LiteralStringOther"/> <push/> </rule> <rule pattern=">"> <token type="LiteralStringOther"/> <pop depth="1"/> </rule> <rule pattern="[\\#<>]"> <token type="LiteralStringOther"/> </rule> <rule pattern="[^\\#<>]+"> <token type="LiteralStringOther"/> </rule> </state> <state name="sb-regex"> <rule pattern="\\[\\\[\]]"> <token type="LiteralStringRegex"/> </rule> <rule pattern="\["> <token type="LiteralStringRegex"/> <push/> </rule> <rule pattern="\][mixounse]*"> <token type="LiteralStringRegex"/> <pop depth="1"/> </rule> <rule> <include state="string-intp"/> </rule> <rule pattern="[\\#\[\]]"> <token type="LiteralStringRegex"/> </rule> <rule pattern="[^\\#\[\]]+"> <token type="LiteralStringRegex"/> </rule> </state> <state name="pa-regex"> <rule pattern="\\[\\()]"> <token type="LiteralStringRegex"/> </rule> <rule pattern="\("> <token type="LiteralStringRegex"/> <push/> </rule> <rule pattern="\)[mixounse]*"> <token type="LiteralStringRegex"/> <pop depth="1"/> </rule> <rule> <include state="string-intp"/> </rule> <rule pattern="[\\#()]"> <token type="LiteralStringRegex"/> </rule> <rule pattern="[^\\#()]+"> <token type="LiteralStringRegex"/> </rule> </state> <state name="sb-string"> <rule pattern="\\[\\\[\]]"> <token type="LiteralStringOther"/> </rule> <rule pattern="\["> <token type="LiteralStringOther"/> <push/> </rule> <rule pattern="\]"> <token type="LiteralStringOther"/> <pop depth="1"/> </rule> <rule pattern="[\\#\[\]]"> <token type="LiteralStringOther"/> </rule> <rule pattern="[^\\#\[\]]+"> <token type="LiteralStringOther"/> </rule> </state> <state name="ab-intp-string"> <rule pattern="\\[\\<>]"> <token type="LiteralStringOther"/> </rule> <rule pattern="<"> <token type="LiteralStringOther"/> <push/> </rule> <rule pattern=">"> <token type="LiteralStringOther"/> <pop depth="1"/> </rule> <rule> <include state="string-intp-escaped"/> </rule> <rule pattern="[\\#<>]"> <token type="LiteralStringOther"/> </rule> <rule pattern="[^\\#<>]+"> <token type="LiteralStringOther"/> </rule> </state> </rules> </lexer>