'# Examples taken from http://crystal-lang.org/docs/' Comment.Single '\n' Text.Whitespace '# Copyright 2012-2018 Manas Technology Solutions.' Comment.Single '\n' Text.Whitespace '# Updated on May 17th, 2018 by @faustinoaq.' Comment.Single '\n\n' Text.Whitespace 'require' Keyword ' ' Text.Whitespace '"' Literal.String.Double 'http/server' Literal.String.Double '"' Literal.String.Double '\n\n' Text.Whitespace 'server' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'HTTP' Name '::' Operator 'Server' Name '.' Operator 'new' Name '(' Punctuation '8080' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'context' Name '|' Operator '\n ' Text.Whitespace 'context' Name '.' Operator 'response' Name '.' Operator 'content_type' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'text/plain' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace 'context' Name '.' Operator 'response' Name '.' Operator 'print' Name ' ' Text.Whitespace '"' Literal.String.Double 'Hello world! The time is ' Literal.String.Double '#{' Literal.String.Interpol 'Time' Name '.' Operator 'now' Name '}' Literal.String.Interpol '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Listening on http://0.0.0.0:8080' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'server' Name '.' Operator 'listen' Name '\n\n' Text.Whitespace 'module' Keyword ' ' Text.Whitespace 'HTTP' Name.Namespace '\n ' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'RequestHandler' Name.Class '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'NumericValue' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Float32' Name ' ' Text.Whitespace '|' Operator ' ' Text.Whitespace 'Float64' Name ' ' Text.Whitespace '|' Operator ' ' Text.Whitespace 'Int32' Name ' ' Text.Whitespace '|' Operator ' ' Text.Whitespace 'Int64' Name '\n\n' Text.Whitespace 'enum' Keyword ' ' Text.Whitespace 'Time::' Name.Namespace 'DayOfWeek' Name.Class '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Greeting' Name.Class '\n ' Text.Whitespace 'class_property' Name.Builtin.Pseudo ' ' Text.Whitespace 'global_greeting' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'Hello world' Literal.String.Double '"' Literal.String.Double '\n\n ' Text.Whitespace '@@default_greeting' Name.Variable.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'Hello world' Literal.String.Double '"' Literal.String.Double '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation '@custom_greeting' Name.Variable.Instance ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'nil' Keyword.Constant ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'print_greeting' Name.Function '\n ' Text.Whitespace 'greeting' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '@custom_greeting' Name.Variable.Instance ' ' Text.Whitespace '||' Operator ' ' Text.Whitespace '@@default_greeting' Name.Variable.Class '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'greeting' Name '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'LUCKY_NUMBERS' Name.Constant ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '[' Operator '3' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '7' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '11' Literal.Number.Integer ']' Operator '\n' Text.Whitespace 'DOCUMENTATION_URL' Name.Constant ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'http://crystal-lang.org/docs' Literal.String.Double '"' Literal.String.Double '\n\n' Text.Whitespace 'module' Keyword ' ' Text.Whitespace 'Scorecard' Name.Namespace '\n ' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Parser' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'parse' Name.Function '(' Punctuation 'score_text' Name ')' Punctuation '\n ' Text.Whitespace 'begin' Keyword '\n ' Text.Whitespace 'score_text' Name '.' Operator 'scan' Name '(' Punctuation 'SCORE_PATTERN' Name.Constant ')' Punctuation ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'match' Name '|' Operator '\n ' Text.Whitespace 'handle_match' Name '(' Punctuation 'match' Name ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'rescue' Keyword ' ' Text.Whitespace 'err' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'ParseError' Name '\n ' Text.Whitespace '# handle error ...' Comment.Single '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'module' Keyword ' ' Text.Whitespace 'Money' Name.Namespace '\n ' Text.Whitespace 'CURRENCIES' Name.Constant ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '{' Punctuation '\n ' Text.Whitespace '"' Literal.String.Double 'EUR' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '1.0' Literal.Number.Float ',' Punctuation '\n ' Text.Whitespace '"' Literal.String.Double 'ARS' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '10.55' Literal.Number.Float ',' Punctuation '\n ' Text.Whitespace '"' Literal.String.Double 'USD' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '1.12' Literal.Number.Float ',' Punctuation '\n ' Text.Whitespace '"' Literal.String.Double 'JPY' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '134.15' Literal.Number.Float ',' Punctuation '\n ' Text.Whitespace '}' Punctuation '\n\n ' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Amount' Name.Class '\n ' Text.Whitespace 'getter' Name.Builtin.Pseudo ' ' Text.Whitespace ':currency' Literal.String.Symbol ',' Punctuation ' ' Text.Whitespace ':value' Literal.String.Symbol '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation '@currency' Name.Variable.Instance ',' Punctuation ' ' Text.Whitespace '@value' Name.Variable.Instance ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'CurrencyConversion' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation '@amount' Name.Variable.Instance ',' Punctuation ' ' Text.Whitespace '@target_currency' Name.Variable.Instance ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'amount' Name.Function '\n ' Text.Whitespace '# implement conversion ...' Comment.Single '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'i' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n' Text.Whitespace 'while' Keyword ' ' Text.Whitespace 'i' Name ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace '10' Literal.Number.Integer '\n ' Text.Whitespace 'proc' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '-' Operator '>' Operator '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ')' Punctuation ' ' Text.Whitespace 'do' Keyword '\n ' Text.Whitespace 'spawn' Name.Builtin.Pseudo ' ' Text.Whitespace 'do' Keyword '\n ' Text.Whitespace 'puts' Name.Builtin '(' Punctuation 'x' Name ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'proc' Name '.' Operator 'call' Name '(' Punctuation 'i' Name ')' Punctuation '\n ' Text.Whitespace 'i' Name ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'Fiber' Name '.' Operator 'yield' Name '\n\n' Text.Whitespace '# A buffered channel of capacity 2' Comment.Single '\n' Text.Whitespace 'channel' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Channel' Name '(' Punctuation 'Int32' Name ')' Punctuation '.' Operator 'new' Name '(' Punctuation '2' Literal.Number.Integer ')' Punctuation '\n\n' Text.Whitespace 'spawn' Name.Builtin.Pseudo ' ' Text.Whitespace 'do' Keyword '\n ' Text.Whitespace 'channel' Name '.' Operator 'send' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '\n ' Text.Whitespace 'channel' Name '.' Operator 'send' Name '(' Punctuation '2' Literal.Number.Integer ')' Punctuation '\n ' Text.Whitespace 'channel' Name '.' Operator 'send' Name '(' Punctuation '3' Literal.Number.Integer ')' Punctuation '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '3' Literal.Number.Integer '.' Operator 'times' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'i' Name '|' Operator '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'channel' Name '.' Operator 'receive' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'MyDictionary' Name.Class '(' Punctuation 'K' Name ',' Punctuation ' ' Text.Whitespace 'V' Name ')' Punctuation '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'MyBox' Name '.' Operator 'new' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# :: MyBox(Int32)' Comment.Single '\n' Text.Whitespace 'MyBox' Name '.' Operator 'new' Name '(' Punctuation '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double ')' Punctuation ' ' Text.Whitespace '# :: MyBox(String)' Comment.Single '\n\n' Text.Whitespace 'module' Keyword ' ' Text.Whitespace 'Moo' Name.Namespace '(' Punctuation 'T' Name ')' Punctuation '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 't' Name.Function '\n ' Text.Whitespace 'T' Name '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Foo' Name.Class '(' Punctuation 'U' Name.Class ')' Punctuation '\n ' Text.Whitespace 'include' Keyword ' ' Text.Whitespace 'Moo' Name '(' Punctuation 'U' Name ')' Punctuation '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation '@value' Name.Variable.Instance ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'U' Name ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Foo' Name '.' Operator 'new' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '\n' Text.Whitespace 'foo' Name '.' Operator 't' Name ' ' Text.Whitespace '# Int32' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Parent' Name.Class '(' Punctuation 'T' Name.Class ')' Punctuation '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Int32Child' Name.Class ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'Parent' Name '(' Punctuation 'Int32' Name ')' Punctuation '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'GenericChild' Name.Class '(' Punctuation 'T' Name.Class ')' Punctuation ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'Parent' Name '(' Punctuation 'T' Name ')' Punctuation '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'ptr' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'pointerof' Keyword.Pseudo '(' Punctuation 'a' Name ')' Punctuation '\n' Text.Whitespace 'ptr' Name '[' Operator '100_000' Literal.Number.Integer ']' Operator ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer ' ' Text.Whitespace '# undefined behaviour, probably a segmentation fault' Comment.Single '\n\n' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'Int32OrString' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Int32' Name ' ' Text.Whitespace '|' Operator ' ' Text.Whitespace 'String' Name '\n\n' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'Int32OrNil' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Int32?' Name '\n\n' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'Int32OrNil_' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Int32' Name ' ' Text.Whitespace '|' Operator ' ' Text.Whitespace '::' Operator 'Nil' Name '\n\n' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'Int32Ptr' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Int32' Name '*' Operator '\n\n' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'Int32Ptr_' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Pointer' Name '(' Punctuation 'Int32' Name ')' Punctuation '\n\n' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'Int32_8' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Int32' Name '[' Operator '8' Literal.Number.Integer ']' Operator '\n\n' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'Int32_8_' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'StaticArray' Name '(' Punctuation 'Int32' Name ',' Punctuation ' ' Text.Whitespace '8' Literal.Number.Integer ')' Punctuation '\n\n' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'Int32StringTuple' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '{' Punctuation 'Int32' Name ',' Punctuation ' ' Text.Whitespace 'String' Name '}' Punctuation '\n\n' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'Int32StringTuple_' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Tuple' Name '(' Punctuation 'Int32' Name ',' Punctuation ' ' Text.Whitespace 'String' Name ')' Punctuation '\n\n' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'Int32ToString' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Int32' Name ' ' Text.Whitespace '-' Operator '>' Operator ' ' Text.Whitespace 'String' Name '\n\n' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'Int32ToString_' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Proc' Name '(' Punctuation 'Int32' Name ',' Punctuation ' ' Text.Whitespace 'String' Name ')' Punctuation '\n\n' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'ProcThatReturnsInt32' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '-' Operator '>' Operator ' ' Text.Whitespace 'Int32' Name '\n\n' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'Int32AndCharToString' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Int32' Name ',' Punctuation ' ' Text.Whitespace 'Char' Name ' ' Text.Whitespace '-' Operator '>' Operator ' ' Text.Whitespace 'String' Name '\n\n' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'ComplexProc' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '(' Punctuation 'Int32' Name ' ' Text.Whitespace '-' Operator '>' Operator ' ' Text.Whitespace 'Int32' Name ')' Punctuation ' ' Text.Whitespace '-' Operator '>' Operator ' ' Text.Whitespace 'String' Name '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ')' Punctuation '\n ' Text.Whitespace '"' Literal.String.Double 'instance' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name '.' Operator 'class' Name ')' Punctuation '\n ' Text.Whitespace '"' Literal.String.Double 'class' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '# "instance"' Comment.Single '\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace 'Int32' Name ' ' Text.Whitespace '# "class"' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Parent' Name.Class '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Child1' Name.Class ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'Parent' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Child2' Name.Class ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'Parent' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'ary' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '[' Operator ']' Operator ' ' Text.Whitespace 'of' Keyword ' ' Text.Whitespace 'Parent' Name '.' Operator 'class' Name '\n' Text.Whitespace 'ary' Name ' ' Text.Whitespace '<<' Operator ' ' Text.Whitespace 'Child1' Name '\n' Text.Whitespace 'ary' Name ' ' Text.Whitespace '<<' Operator ' ' Text.Whitespace 'Child2' Name '\n\n' Text.Whitespace '# Same as not specifying a restriction, not very useful' Comment.Single '\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace '_' Name ')' Punctuation '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# A bit more useful: any two arguments Proc that returns an Int32:' Comment.Single '\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace '_' Name ',' Punctuation ' ' Text.Whitespace '_' Name ' ' Text.Whitespace '-' Operator '>' Operator ' ' Text.Whitespace 'Int32' Name ')' Punctuation '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# alias SameAsInt32 = typeof(2)' Comment.Single '\n' Text.Whitespace '# alias Int32OrString_ = typeof(1, "a")' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation 'name' Name ')' Punctuation '\n ' Text.Whitespace '@name' Name.Variable.Instance ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'name' Name '\n ' Text.Whitespace '@age' Name.Variable.Instance ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'name' Name.Function '\n ' Text.Whitespace '@name' Name.Variable.Instance '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'age' Name.Function '\n ' Text.Whitespace '@age' Name.Variable.Instance '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'john' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'peter' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'Peter' Literal.String.Double '"' Literal.String.Double '\n\n' Text.Whitespace 'john' Name '.' Operator 'name' Name ' ' Text.Whitespace '# => "John"' Comment.Single '\n' Text.Whitespace 'john' Name '.' Operator 'age' Name ' ' Text.Whitespace '# => 0' Comment.Single '\n\n' Text.Whitespace 'peter' Name '.' Operator 'name' Name ' ' Text.Whitespace '# => "Peter"' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'self' Name.Class '.' Operator 'new' Name.Function '(' Punctuation 'name' Name ')' Punctuation '\n ' Text.Whitespace 'instance' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'allocate' Name '\n ' Text.Whitespace 'instance' Name '.' Operator 'initialize' Name '(' Punctuation 'name' Name ')' Punctuation '\n ' Text.Whitespace 'instance' Name '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'a' Name '.is_a?' Keyword.Pseudo '(' Punctuation 'String' Name ')' Punctuation '\n ' Text.Whitespace '# here a is a String' Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'b' Name '.is_a?' Keyword.Pseudo '(' Punctuation 'Number' Name ')' Punctuation '\n ' Text.Whitespace '# here b is a Number' Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'some_condition' Name ' ' Text.Whitespace '?' Punctuation ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace '# a : Int32 | String' Comment.Single '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'a' Name '.is_a?' Keyword.Pseudo '(' Punctuation 'Number' Name ')' Punctuation '\n ' Text.Whitespace '# a : Int32' Comment.Single '\n' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace '# a : String' Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'a' Name '.is_a?' Keyword.Pseudo '(' Punctuation 'String' Name ')' Punctuation ' ' Text.Whitespace '&&' Operator ' ' Text.Whitespace 'b' Name '.is_a?' Keyword.Pseudo '(' Punctuation 'Number' Name ')' Punctuation '\n ' Text.Whitespace '# here a is a String and b is a Number' Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'a' Name '.' Operator '+' Name.Operator '(' Punctuation 'b' Name ')' Punctuation '\n\n' Text.Whitespace 'struct' Keyword ' ' Text.Whitespace 'Vector2' Name.Class '\n ' Text.Whitespace 'getter' Name.Builtin.Pseudo ' ' Text.Whitespace 'x' Name ',' Punctuation ' ' Text.Whitespace 'y' Name '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation '@x' Name.Variable.Instance ',' Punctuation ' ' Text.Whitespace '@y' Name.Variable.Instance ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace '+' Name.Function '(' Punctuation 'other' Name ')' Punctuation '\n ' Text.Whitespace 'Vector2' Name '.' Operator 'new' Name '(' Punctuation 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'other' Name '.' Operator 'x' Name ',' Punctuation ' ' Text.Whitespace 'y' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'other' Name '.' Operator 'y' Name ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'v1' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Vector2' Name '.' Operator 'new' Name '(' Punctuation '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ')' Punctuation '\n' Text.Whitespace 'v2' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Vector2' Name '.' Operator 'new' Name '(' Punctuation '3' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '4' Literal.Number.Integer ')' Punctuation '\n' Text.Whitespace 'v1' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'v2' Name ' ' Text.Whitespace '# => Vector2(@x=4, @y=6)' Comment.Single '\n\n' Text.Whitespace 'struct' Keyword ' ' Text.Whitespace 'Vector2' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace '-' Name.Function '\n ' Text.Whitespace 'Vector2' Name '.' Operator 'new' Name '(' Punctuation '-' Operator 'x' Name ',' Punctuation ' ' Text.Whitespace '-' Operator 'y' Name ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'v1' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Vector2' Name '.' Operator 'new' Name '(' Punctuation '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ')' Punctuation '\n' Text.Whitespace '-' Operator 'v1' Name ' ' Text.Whitespace '# => Vector2(@x=-1, @y=-2)' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'MyArray' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace '[]' Name.Function '(' Punctuation 'index' Name ')' Punctuation '\n ' Text.Whitespace '# ...' Comment.Single '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace '[]' Name.Function '(' Punctuation 'index1' Name ',' Punctuation ' ' Text.Whitespace 'index2' Name ',' Punctuation ' ' Text.Whitespace 'index3' Name ')' Punctuation '\n ' Text.Whitespace '# ...' Comment.Single '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace '[]=' Name.Function '(' Punctuation 'index' Name ',' Punctuation ' ' Text.Whitespace 'value' Name ')' Punctuation '\n ' Text.Whitespace '# ...' Comment.Single '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'array' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'MyArray' Name '.' Operator 'new' Name '\n\n' Text.Whitespace 'array' Name '[' Operator '1' Literal.Number.Integer ']' Operator ' ' Text.Whitespace '# invokes the first method' Comment.Single '\n' Text.Whitespace 'array' Name '[' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ']' Operator ' ' Text.Whitespace '# invokes the second method' Comment.Single '\n' Text.Whitespace 'array' Name '[' Operator '1' Literal.Number.Integer ']' Operator ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer ' ' Text.Whitespace '# invokes the third method' Comment.Single '\n\n' Text.Whitespace 'array' Name '.' Operator '[]' Name.Operator '(' Punctuation '1' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# invokes the first method' Comment.Single '\n' Text.Whitespace 'array' Name '.' Operator '[]' Name.Operator '(' Punctuation '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# invokes the second method' Comment.Single '\n' Text.Whitespace 'array' Name '.' Operator '[]=' Name.Operator '(' Punctuation '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# invokes the third method' Comment.Single '\n\n' Text.Whitespace 'raise' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'OH NO!' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'raise' Name.Builtin ' ' Text.Whitespace 'Exception' Name '.' Operator 'new' Name '(' Punctuation '"' Literal.String.Double 'Some error' Literal.String.Double '"' Literal.String.Double ')' Punctuation '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'MyException' Name.Class ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'Exception' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'begin' Keyword '\n ' Text.Whitespace 'raise' Name.Builtin ' ' Text.Whitespace 'MyException' Name '.' Operator 'new' Name '(' Punctuation '"' Literal.String.Double 'OH NO!' Literal.String.Double '"' Literal.String.Double ')' Punctuation '\n' Text.Whitespace 'rescue' Keyword ' ' Text.Whitespace 'ex' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'MyException' Name '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Rescued MyException: ' Literal.String.Double '#{' Literal.String.Interpol 'ex' Name '.' Operator 'message' Name '}' Literal.String.Interpol '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'begin' Keyword '\n ' Text.Whitespace '# ...' Comment.Single '\n' Text.Whitespace 'rescue' Keyword ' ' Text.Whitespace 'ex' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'MyException' Name ' ' Text.Whitespace '|' Operator ' ' Text.Whitespace 'MyOtherException' Name '\n ' Text.Whitespace '# only MyException or MyOtherException' Comment.Single '\n' Text.Whitespace 'rescue' Keyword '\n ' Text.Whitespace '# any other kind of exception' Comment.Single '\n' Text.Whitespace 'ensure' Keyword '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Cleanup...' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'some_method' Name.Function '\n ' Text.Whitespace 'something_dangerous' Name '\n' Text.Whitespace 'rescue' Keyword '\n ' Text.Whitespace '# execute if an exception is raised' Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'array' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '[' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ']' Operator '\n' Text.Whitespace 'array' Name '[' Operator '4' Literal.Number.Integer ']' Operator ' ' Text.Whitespace '# raises because of IndexError' Comment.Single '\n' Text.Whitespace 'array' Name '[' Operator '4' Literal.Number.Integer ']?' Operator ' ' Text.Whitespace '# returns nil because of index out of bounds' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'some_proc' Name.Function '(' Punctuation '&' Operator 'block' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ' ' Text.Whitespace '-' Operator '>' Operator ' ' Text.Whitespace 'Int32' Name ')' Punctuation '\n ' Text.Whitespace 'block' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n' Text.Whitespace 'proc' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '-' Operator '>' Operator '(' Punctuation 'i' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ')' Punctuation ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace 'i' Name ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace 'proc' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'some_proc' Name '(' Punctuation '&' Operator 'proc' Name ')' Punctuation '\n' Text.Whitespace 'proc' Name '.' Operator 'call' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# => 1' Comment.Single '\n' Text.Whitespace 'proc' Name '.' Operator 'call' Name '(' Punctuation '10' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# => 11' Comment.Single '\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '# => 11' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'add' Name.Function '(' Punctuation 'x' Name ',' Punctuation ' ' Text.Whitespace 'y' Name ')' Punctuation '\n ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'y' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'adder' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '-' Operator '>' Operator 'add' Name '(' Punctuation 'Int32' Name ',' Punctuation ' ' Text.Whitespace 'Int32' Name ')' Punctuation '\n' Text.Whitespace 'adder' Name '.' Operator 'call' Name '(' Punctuation '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# => 3' Comment.Single '\n\n' Text.Whitespace 'module' Keyword ' ' Text.Whitespace 'Curses' Name.Namespace '\n ' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Window' Name.Class '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'Curses' Name '::' Operator 'Window' Name '.' Operator 'new' Name '\n\n' Text.Whitespace 'module' Keyword ' ' Text.Whitespace 'ItemsSize' Name.Namespace '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'size' Name.Function '\n ' Text.Whitespace 'items' Name '.' Operator 'size' Name '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Items' Name.Class '\n ' Text.Whitespace 'include' Keyword ' ' Text.Whitespace 'ItemsSize' Name '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'items' Name.Function '\n ' Text.Whitespace '[' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ']' Operator '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'items' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Items' Name '.' Operator 'new' Name '\n' Text.Whitespace 'items' Name '.' Operator 'size' Name ' ' Text.Whitespace '# => 3' Comment.Single '\n\n' Text.Whitespace 'module' Keyword ' ' Text.Whitespace 'Base64' Name.Namespace '\n ' Text.Whitespace 'extend' Keyword ' ' Text.Whitespace 'self' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'encode64' Name.Function '(' Punctuation 'string' Name ')' Punctuation '\n ' Text.Whitespace '# ...' Comment.Single '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'decode64' Name.Function '(' Punctuation 'string' Name ')' Punctuation '\n ' Text.Whitespace '# ...' Comment.Single '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'Base64' Name '.' Operator 'encode64' Name ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# => "aGVsbG8="' Comment.Single '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'some_condition' Name '\n ' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'a_as_int' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'a' Name '.as' Keyword.Pseudo '(' Punctuation 'Int32' Name ')' Punctuation '\n' Text.Whitespace 'a_as_int' Name '.' Operator 'abs' Name ' ' Text.Whitespace '# works, compiler knows that a_as_int is Int32' Comment.Single '\n\n' Text.Whitespace 'ptr' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Pointer' Name '(' Punctuation 'Int32' Name ')' Punctuation '.' Operator 'malloc' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '\n' Text.Whitespace 'ptr' Name '.as' Keyword.Pseudo '(' Punctuation 'Int8' Name '*' Operator ')' Punctuation ' ' Text.Whitespace '# :: Pointer(Int8)' Comment.Single '\n\n' Text.Whitespace 'array' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '[' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ']' Operator '\n\n' Text.Whitespace '# object_id returns the address of an object in memory,' Comment.Single '\n' Text.Whitespace '# so we create a pointer with that address' Comment.Single '\n' Text.Whitespace 'ptr' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Pointer' Name '(' Punctuation 'Void' Name ')' Punctuation '.' Operator 'new' Name '(' Punctuation 'array' Name '.' Operator 'object_id' Name ')' Punctuation '\n\n' Text.Whitespace '# Now we cast that pointer to the same type, and' Comment.Single '\n' Text.Whitespace '# we should get the same value' Comment.Single '\n' Text.Whitespace 'array2' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'ptr' Name '.as' Keyword.Pseudo '(' Punctuation 'Array' Name '(' Punctuation 'Int32' Name ')' Punctuation ')' Punctuation '\n' Text.Whitespace 'array2' Name '.' Operator 'same?' Name '(' Punctuation 'array' Name ')' Punctuation ' ' Text.Whitespace '# => true' Comment.Single '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'b' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'a' Name '.as' Keyword.Pseudo '(' Punctuation 'Int32' Name ' ' Text.Whitespace '|' Operator ' ' Text.Whitespace 'Float64' Name ')' Punctuation '\n' Text.Whitespace 'b' Name ' ' Text.Whitespace '# :: Int32 | Float64' Comment.Single '\n\n' Text.Whitespace 'ary' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '[' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ']' Operator '\n\n' Text.Whitespace '# We want to create an array 1, 2, 3 of Int32 | Float64' Comment.Single '\n' Text.Whitespace 'ary2' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'ary' Name '.' Operator 'map' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '|' Operator 'x' Name '|' Operator ' ' Text.Whitespace 'x' Name '.as' Keyword.Pseudo '(' Punctuation 'Int32' Name ' ' Text.Whitespace '|' Operator ' ' Text.Whitespace 'Float64' Name ')' Punctuation ' ' Text.Whitespace '}' Punctuation '\n\n' Text.Whitespace 'ary2' Name ' ' Text.Whitespace '# :: Array(Int32 | Float64)' Comment.Single '\n' Text.Whitespace 'ary2' Name ' ' Text.Whitespace '<<' Operator ' ' Text.Whitespace '1.5' Literal.Number.Float ' ' Text.Whitespace '# OK' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation '@name' Name.Variable.Instance ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'name' Name.Function '\n ' Text.Whitespace '@name' Name.Variable.Instance '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '[' Operator ']' Operator ' ' Text.Whitespace 'of' Keyword ' ' Text.Whitespace 'Person' Name '\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'a' Name '.' Operator 'map' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '|' Operator 'f' Name '|' Operator ' ' Text.Whitespace 'f' Name '.' Operator 'name' Name ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace "# Error: can't infer block return type" Comment.Single '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '[' Operator ']' Operator ' ' Text.Whitespace 'of' Keyword ' ' Text.Whitespace 'Person' Name '\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'a' Name '.' Operator 'map' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '|' Operator 'f' Name '|' Operator ' ' Text.Whitespace 'f' Name '.' Operator 'name' Name '.as' Keyword.Pseudo '(' Punctuation 'String' Name ')' Punctuation ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace '# OK' Comment.Single '\n\n' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '[' Operator ']' Operator ' ' Text.Whitespace 'of' Keyword ' ' Text.Whitespace 'Person' Name '\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'a' Name '.' Operator 'map' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '|' Operator 'f' Name '|' Operator ' ' Text.Whitespace 'f' Name '.' Operator 'name' Name ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace '# OK' Comment.Single '\n\n' Text.Whitespace 'loop' Name.Builtin ' ' Text.Whitespace 'do' Keyword '\n ' Text.Whitespace 'do_something' Name '\n ' Text.Whitespace 'break' Keyword ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'some_condition' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Point' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation '@x' Name.Variable.Instance ',' Punctuation ' ' Text.Whitespace '@y' Name.Variable.Instance ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'Point' Name '.' Operator 'new' Name ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer '\n\n' Text.Whitespace '# 2 x Int32 = 2 x 4 = 8' Comment.Single '\n' Text.Whitespace 'instance_sizeof' Keyword.Pseudo '(' Punctuation 'Point' Name ')' Punctuation ' ' Text.Whitespace '# => 12' Comment.Single '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'while' Keyword ' ' Text.Whitespace 'a' Name ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace '5' Literal.Number.Integer '\n ' Text.Whitespace 'a' Name ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'a' Name ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace '3' Literal.Number.Integer '\n ' Text.Whitespace 'next' Keyword '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'a' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# The above prints the numbers 2, 4 and 5' Comment.Single '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'C' Name.Namespace '\n ' Text.Whitespace '# In C: double cos(double x)' Comment.Single '\n ' Text.Whitespace 'fun' Keyword ' ' Text.Whitespace 'cos' Name.Function '(' Punctuation 'value' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Float64' Name ')' Punctuation ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Float64' Name '\n\n ' Text.Whitespace 'fun' Keyword ' ' Text.Whitespace 'getch' Name.Function ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name '\n\n ' Text.Whitespace 'fun' Keyword ' ' Text.Whitespace 'srand' Name.Function '(' Punctuation 'seed' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'UInt32' Name ')' Punctuation '\n\n ' Text.Whitespace 'fun' Keyword ' ' Text.Whitespace 'exit' Name.Function '(' Punctuation 'status' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ')' Punctuation ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'NoReturn' Name '\n\n ' Text.Whitespace 'fun' Keyword ' ' Text.Whitespace 'printf' Name.Function '(' Punctuation 'format' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'UInt8' Name '*' Operator ',' Punctuation ' ' Text.Whitespace '...' Operator ')' Punctuation ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'C' Name '.' Operator 'cos' Name '(' Punctuation '1.5' Literal.Number.Float ')' Punctuation ' ' Text.Whitespace '# => 0.0707372' Comment.Single '\n' Text.Whitespace 'C' Name '.' Operator 'srand' Name '(' Punctuation '1_u32' Literal.Number.Integer ')' Punctuation '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'b' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer '\n' Text.Whitespace 'C' Name '.' Operator 'printf' Name ' ' Text.Whitespace '"' Literal.String.Double '%d + %d = %d' Literal.String.Double '\\n' Literal.String.Escape '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace 'a' Name ',' Punctuation ' ' Text.Whitespace 'b' Name ',' Punctuation ' ' Text.Whitespace 'a' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'b' Name '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'LibSDL' Name.Namespace '\n ' Text.Whitespace 'fun' Keyword ' ' Text.Whitespace 'init' Name.Function ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'SDL_Init' Name '(' Punctuation 'flags' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'UInt32' Name ')' Punctuation ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'LLVMIntrinsics' Name.Namespace '\n ' Text.Whitespace 'fun' Keyword ' ' Text.Whitespace 'ceil_f32' Name.Function ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'llvm.ceil.f32' Literal.String.Double '"' Literal.String.Double '(' Punctuation 'value' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Float32' Name ')' Punctuation ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Float32' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'MyLib' Name.Namespace '\n ' Text.Whitespace 'fun' Keyword ' ' Text.Whitespace 'my_fun' Name.Function '(' Punctuation 'some_size' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'LibC' Name '::' Operator 'SizeT' Name ')' Punctuation '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '@[' Operator 'Link' Name.Decorator '(' Punctuation '"' Literal.String.Double 'pcre' Literal.String.Double '"' Literal.String.Double ')' Punctuation ']' Operator '\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'LibPCRE' Name.Namespace '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'C' Name.Namespace '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'flag?' Name '(' Punctuation ':x86_64' Literal.String.Symbol ')' Punctuation ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'SizeT' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'UInt64' Name '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'else' Keyword ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'SizeT' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'UInt32' Name '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'end' Keyword ' ' Text.Whitespace '%}' Literal.String.Interpol '\n\n ' Text.Whitespace 'fun' Keyword ' ' Text.Whitespace 'memcmp' Name.Function '(' Punctuation 'p1' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Void' Name '*' Operator ',' Punctuation ' ' Text.Whitespace 'p2' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Void' Name '*' Operator ',' Punctuation ' ' Text.Whitespace 'size' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'C' Name '::' Operator 'SizeT' Name ')' Punctuation ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'X' Name.Namespace '\n ' Text.Whitespace 'enum' Keyword ' ' Text.Whitespace 'SomeEnum' Name.Class '\n ' Text.Whitespace 'Ten' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '10' Literal.Number.Integer '\n ' Text.Whitespace 'Twenty' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '10' Literal.Number.Integer ' ' Text.Whitespace '*' Operator ' ' Text.Whitespace '2' Literal.Number.Integer '\n ' Text.Whitespace 'ThirtyTwo' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '<<' Operator ' ' Text.Whitespace '5' Literal.Number.Integer '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'X' Name.Namespace '\n ' Text.Whitespace 'enum' Keyword ' ' Text.Whitespace 'SomeEnum' Name.Class '\n ' Text.Whitespace 'A' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1_u32' Literal.Number.Integer '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'X' Name '::' Operator 'SomeEnum' Name '::' Operator 'Zero' Name ' ' Text.Whitespace '# => 0_i8' Comment.Single '\n' Text.Whitespace 'X' Name '::' Operator 'SomeEnum' Name '::' Operator 'Two' Name ' ' Text.Whitespace '# => 2_i8' Comment.Single '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'X' Name.Namespace '\n ' Text.Whitespace 'fun' Keyword ' ' Text.Whitespace 'callback' Name.Function '(' Punctuation 'f' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ' ' Text.Whitespace '-' Operator '>' Operator ' ' Text.Whitespace 'Int32' Name ')' Punctuation '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'f' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '-' Operator '>' Operator '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ')' Punctuation ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace 'X' Name '.' Operator 'callback' Name '(' Punctuation 'f' Name ')' Punctuation '\n\n' Text.Whitespace 'X' Name '.' Operator 'callback' Name ' ' Text.Whitespace '-' Operator '>' Operator '(' Punctuation 'x' Name ')' Punctuation ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '}' Punctuation '\n\n' Text.Whitespace 'X' Name '.' Operator 'callback' Name ' ' Text.Whitespace 'nil' Keyword.Constant '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'LibFoo' Name.Namespace '\n ' Text.Whitespace 'fun' Keyword ' ' Text.Whitespace 'store_callback' Name.Function '(' Punctuation 'callback' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace '-' Operator '>' Operator ')' Punctuation '\n ' Text.Whitespace 'fun' Keyword ' ' Text.Whitespace 'execute_callback' Name.Function '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'LibFoo' Name '.' Operator 'store_callback' Name ' ' Text.Whitespace '-' Operator '>' Operator '{' Punctuation ' ' Text.Whitespace 'raise' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'OH NO!' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace 'LibFoo' Name '.' Operator 'execute_callback' Name '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'LibFoo' Name.Namespace '\n ' Text.Whitespace 'fun' Keyword ' ' Text.Whitespace 'store_callback' Name.Function '(' Punctuation 'callback' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace '-' Operator '>' Operator ')' Punctuation '\n\n ' Text.Whitespace '@[' Operator 'Raises' Name.Decorator ']' Operator '\n ' Text.Whitespace 'fun' Keyword ' ' Text.Whitespace 'execute_callback' Name.Function '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '@[' Operator 'Link' Name.Decorator '(' Punctuation '"' Literal.String.Double 'pcre' Literal.String.Double '"' Literal.String.Double ')' Punctuation ']' Operator '\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'PCRE' Name.Namespace '\n ' Text.Whitespace 'INFO_CAPTURECOUNT' Name.Constant ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'PCRE' Name '::' Operator 'INFO_CAPTURECOUNT' Name.Constant ' ' Text.Whitespace '# => 2' Comment.Single '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'U' Name.Namespace '\n ' Text.Whitespace '# In C:' Comment.Single '\n ' Text.Whitespace '#' Comment.Single '\n ' Text.Whitespace '# union IntOrFloat {' Comment.Single '\n ' Text.Whitespace '# int some_int;' Comment.Single '\n ' Text.Whitespace '# double some_float;' Comment.Single '\n ' Text.Whitespace '# };' Comment.Single '\n ' Text.Whitespace 'union' Keyword ' ' Text.Whitespace 'IntOrFloat' Name.Class '\n ' Text.Whitespace 'some_int' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name '\n ' Text.Whitespace 'some_float' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Float64' Name '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'value' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'U' Name '::' Operator 'IntOrFloat' Name '.' Operator 'new' Name '\n\n' Text.Whitespace 'value' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'uninitialized' Keyword.Pseudo ' ' Text.Whitespace 'U' Name '::' Operator 'IntOrFlaot' Name '\n' Text.Whitespace 'value' Name '.' Operator 'some_int' Name ' ' Text.Whitespace '# => some garbage value' Comment.Single '\n\n' Text.Whitespace 'value' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'U' Name '::' Operator 'IntOrFloat' Name '.' Operator 'new' Name '\n' Text.Whitespace 'value' Name '.' Operator 'some_int' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'value' Name '.' Operator 'some_int' Name ' ' Text.Whitespace '# => 1' Comment.Single '\n' Text.Whitespace 'value' Name '.' Operator 'some_float' Name ' ' Text.Whitespace '# => 4.94066e-324' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'change_it' Name.Function '(' Punctuation 'value' Name ')' Punctuation '\n ' Text.Whitespace 'value' Name '.' Operator 'some_int' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'value' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'U' Name '::' Operator 'IntOrFloat' Name '.' Operator 'new' Name '\n' Text.Whitespace 'change_it' Name ' ' Text.Whitespace 'value' Name '\n' Text.Whitespace 'value' Name '.' Operator 'some_int' Name ' ' Text.Whitespace '# => 0' Comment.Single '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'C' Name.Namespace '\n ' Text.Whitespace '# In C:' Comment.Single '\n ' Text.Whitespace '#' Comment.Single '\n ' Text.Whitespace '# struct TimeZone {' Comment.Single '\n ' Text.Whitespace '# int minutes_west;' Comment.Single '\n ' Text.Whitespace '# int dst_time;' Comment.Single '\n ' Text.Whitespace '# };' Comment.Single '\n ' Text.Whitespace 'struct' Keyword ' ' Text.Whitespace 'TimeZone' Name.Class '\n ' Text.Whitespace 'minutes_west' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name '\n ' Text.Whitespace 'dst_time' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'C' Name.Namespace '\n ' Text.Whitespace '# This is a forward declaration' Comment.Single '\n ' Text.Whitespace 'struct' Keyword ' ' Text.Whitespace 'Node' Name.Class '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'struct' Keyword ' ' Text.Whitespace 'Node' Name.Class '\n ' Text.Whitespace 'node' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Node' Name '*' Operator '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'tz' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'C' Name '::' Operator 'TimeZone' Name '.' Operator 'new' Name '\n\n' Text.Whitespace 'tz' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'uninitialized' Keyword.Pseudo ' ' Text.Whitespace 'C' Name '::' Operator 'TimeZone' Name '\n' Text.Whitespace 'tz' Name '.' Operator 'minutes_west' Name ' ' Text.Whitespace '# => some garbage value' Comment.Single '\n\n' Text.Whitespace 'tz' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'C' Name '::' Operator 'TimeZone' Name '.' Operator 'new' Name '\n' Text.Whitespace 'tz' Name '.' Operator 'minutes_west' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'tz' Name '.' Operator 'minutes_west' Name ' ' Text.Whitespace '# => 1' Comment.Single '\n\n' Text.Whitespace 'tz' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'C' Name '::' Operator 'TimeZone' Name '.' Operator 'new' Name ' ' Text.Whitespace 'minutes_west' Literal.String.Symbol ':' Punctuation ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace 'dst_time' Literal.String.Symbol ':' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer '\n' Text.Whitespace 'tz' Name '.' Operator 'minutes_west' Name ' ' Text.Whitespace '# => 1' Comment.Single '\n' Text.Whitespace 'tz' Name '.' Operator 'dst_time' Name ' ' Text.Whitespace '# => 2' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'change_it' Name.Function '(' Punctuation 'tz' Name ')' Punctuation '\n ' Text.Whitespace 'tz' Name '.' Operator 'minutes_west' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'tz' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'C' Name '::' Operator 'TimeZone' Name '.' Operator 'new' Name '\n' Text.Whitespace 'change_it' Name ' ' Text.Whitespace 'tz' Name '\n' Text.Whitespace 'tz' Name '.' Operator 'minutes_west' Name ' ' Text.Whitespace '# => 0' Comment.Single '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'C' Name.Namespace '\n ' Text.Whitespace '$errno' Name.Variable.Global ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'C' Name '.' Operator 'errno' Name ' ' Text.Whitespace '# => some value' Comment.Single '\n' Text.Whitespace 'C' Name '.' Operator 'errno' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n' Text.Whitespace 'C' Name '.' Operator 'errno' Name ' ' Text.Whitespace '# => 0' Comment.Single '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'C' Name.Namespace '\n ' Text.Whitespace '@[' Operator 'ThreadLocal' Name.Decorator ']' Operator '\n ' Text.Whitespace '$errno' Name.Variable.Global ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'C' Name.Namespace '\n ' Text.Whitespace 'fun' Keyword ' ' Text.Whitespace 'waitpid' Name.Function '(' Punctuation 'pid' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ',' Punctuation ' ' Text.Whitespace 'status_ptr' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name '*' Operator ',' Punctuation ' ' Text.Whitespace 'options' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ')' Punctuation ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'status_ptr' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'uninitialized' Keyword.Pseudo ' ' Text.Whitespace 'Int32' Name '\n\n' Text.Whitespace 'C' Name '.' Operator 'waitpid' Name '(' Punctuation 'pid' Name ',' Punctuation ' ' Text.Whitespace 'pointerof' Keyword.Pseudo '(' Punctuation 'status_ptr' Name ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'options' Name ')' Punctuation '\n\n' Text.Whitespace 'C' Name '.' Operator 'waitpid' Name '(' Punctuation 'pid' Name ',' Punctuation ' ' Text.Whitespace 'out' Keyword.Pseudo ' ' Text.Whitespace 'status_ptr' Name ',' Punctuation ' ' Text.Whitespace 'options' Name ')' Punctuation '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'X' Name.Namespace '\n ' Text.Whitespace 'type' Keyword ' ' Text.Whitespace 'CInt' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Int32' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'flag?' Name '(' Punctuation ':x86_64' Literal.String.Symbol ')' Punctuation ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace '# some specific code for 64 bits platforms' Comment.Single '\n' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'else' Keyword ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace '# some specific code for non-64 bits platforms' Comment.Single '\n' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'end' Keyword ' ' Text.Whitespace '%}' Literal.String.Interpol '\n\n' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'flag?' Name '(' Punctuation ':linux' Literal.String.Symbol ')' Punctuation ' ' Text.Whitespace '&&' Operator ' ' Text.Whitespace 'flag?' Name '(' Punctuation ':x86_64' Literal.String.Symbol ')' Punctuation ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace '# some specific code for linux 64 bits' Comment.Single '\n' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'end' Keyword ' ' Text.Whitespace '%}' Literal.String.Interpol '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'C' Name.Namespace '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'flag?' Name '(' Punctuation ':linux' Literal.String.Symbol ')' Punctuation ' ' Text.Whitespace '&&' Operator ' ' Text.Whitespace 'flag?' Name '(' Punctuation ':x86_64' Literal.String.Symbol ')' Punctuation ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace 'struct' Keyword ' ' Text.Whitespace 'SomeStruct' Name.Class '\n ' Text.Whitespace 'some_field' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'else' Keyword ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace 'struct' Keyword ' ' Text.Whitespace 'SomeStruct' Name.Class '\n ' Text.Whitespace 'some_field' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int64' Name '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'end' Keyword ' ' Text.Whitespace '%}' Literal.String.Interpol '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# Assigns to a local variable' Comment.Single '\n' Text.Whitespace 'local' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n\n' Text.Whitespace '# Assigns to a global property' Comment.Single '\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Global' Name.Class '\n ' Text.Whitespace 'class_property' Name.Builtin.Pseudo ' ' Text.Whitespace 'global1' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'class_getter' Name.Builtin.Pseudo ' ' Text.Whitespace 'global2' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer '\n ' Text.Whitespace 'class_setter' Name.Builtin.Pseudo ' ' Text.Whitespace 'global3' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '3' Literal.Number.Integer '\n\n ' Text.Whitespace '# Fails on nil' Comment.Single '\n ' Text.Whitespace 'class_property!' Name.Builtin.Pseudo ' ' Text.Whitespace 'global4' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '4' Literal.Number.Integer '\n ' Text.Whitespace 'class_getter!' Name.Builtin.Pseudo ' ' Text.Whitespace 'global5' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '5' Literal.Number.Integer '\n ' Text.Whitespace 'class_setter' Name.Builtin.Pseudo '!' Operator ' ' Text.Whitespace 'global6' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '6' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Testing' Name.Class '\n ' Text.Whitespace '# Assigns to an instance variable' Comment.Single '\n ' Text.Whitespace '@instance' Name.Variable.Instance ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer '\n\n ' Text.Whitespace '# Assigns to a class variable' Comment.Single '\n ' Text.Whitespace '@@class' Name.Variable.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '3' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'local' Name ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '# same as: local = local + 1' Comment.Single '\n\n' Text.Whitespace '# The above is valid with these operators:' Comment.Single '\n' Text.Whitespace '# +, -, *, /, %, |, &, ^, **, <<, >>' Comment.Single '\n\n' Text.Whitespace 'local' Name ' ' Text.Whitespace '||' Operator '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '# same as: local || (local = 1)' Comment.Single '\n' Text.Whitespace 'local' Name ' ' Text.Whitespace '&&' Operator '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '# same as: local && (local = 1)' Comment.Single '\n\n' Text.Whitespace '# A setter' Comment.Single '\n' Text.Whitespace 'person' Name '.' Operator 'name' Name '=' Operator '(' Punctuation '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double ')' Punctuation '\n\n' Text.Whitespace '# The above can be written as:' Comment.Single '\n' Text.Whitespace 'person' Name '.' Operator 'name' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double '\n\n' Text.Whitespace '# An indexed assignment' Comment.Single '\n' Text.Whitespace 'objects' Name '.' Operator '[]=' Name.Operator '(' Punctuation '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ')' Punctuation '\n\n' Text.Whitespace '# The above can be written as:' Comment.Single '\n' Text.Whitespace 'objects' Name '[' Operator '2' Literal.Number.Integer ']' Operator ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '3' Literal.Number.Integer '\n\n' Text.Whitespace '# Not assignment-related, but also syntax sugar:' Comment.Single '\n' Text.Whitespace 'objects' Name '.' Operator '[]' Name.Operator '(' Punctuation '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ')' Punctuation '\n\n' Text.Whitespace '# The above can be written as:' Comment.Single '\n' Text.Whitespace 'objects' Name '[' Operator '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ']' Operator '\n\n' Text.Whitespace 'person' Name '.' Operator 'age' Name ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '# same as: person.age = person.age + 1' Comment.Single '\n\n' Text.Whitespace 'person' Name '.' Operator 'name' Name ' ' Text.Whitespace '||' Operator '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# same as: person.name || (person.name = "John")' Comment.Single '\n' Text.Whitespace 'person' Name '.' Operator 'name' Name ' ' Text.Whitespace '&&' Operator '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# same as: person.name && (person.name = "John")' Comment.Single '\n\n' Text.Whitespace 'objects' Name '[' Operator '1' Literal.Number.Integer ']' Operator ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer ' ' Text.Whitespace '# same as: objects[1] = objects[1] + 2' Comment.Single '\n\n' Text.Whitespace 'objects' Name '[' Operator '1' Literal.Number.Integer ']' Operator ' ' Text.Whitespace '||' Operator '=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer ' ' Text.Whitespace '# same as: objects[1]? || (objects[1] = 2)' Comment.Single '\n' Text.Whitespace 'objects' Name '[' Operator '1' Literal.Number.Integer ']' Operator ' ' Text.Whitespace '&&' Operator '=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer ' ' Text.Whitespace '# same as: objects[1]? && (objects[1] = 2)' Comment.Single '\n\n' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'PInt32' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Pointer' Name '(' Punctuation 'Int32' Name ')' Punctuation '\n\n' Text.Whitespace 'ptr' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'PInt32' Name '.' Operator 'malloc' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# : Pointer(Int32)' Comment.Single '\n\n' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'RecArray' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Array' Name '(' Punctuation 'Int32' Name ')' Punctuation ' ' Text.Whitespace '|' Operator ' ' Text.Whitespace 'Array' Name '(' Punctuation 'RecArray' Name ')' Punctuation '\n\n' Text.Whitespace 'ary' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '[' Operator ']' Operator ' ' Text.Whitespace 'of' Keyword ' ' Text.Whitespace 'RecArray' Name '\n' Text.Whitespace 'ary' Name '.' Operator 'push' Name ' ' Text.Whitespace '[' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ']' Operator '\n' Text.Whitespace 'ary' Name '.' Operator 'push' Name ' ' Text.Whitespace 'ary' Name '\n' Text.Whitespace 'ary' Name ' ' Text.Whitespace '# => [[1, 2, 3], [...]]' Comment.Single '\n\n' Text.Whitespace 'module' Keyword ' ' Text.Whitespace 'Json' Name.Namespace '\n ' Text.Whitespace 'alias' Keyword ' ' Text.Whitespace 'Type' Name.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Nil' Name ' ' Text.Whitespace '|' Operator '\n ' Text.Whitespace 'Bool' Name ' ' Text.Whitespace '|' Operator '\n ' Text.Whitespace 'Int64' Name ' ' Text.Whitespace '|' Operator '\n ' Text.Whitespace 'Float64' Name ' ' Text.Whitespace '|' Operator '\n ' Text.Whitespace 'String' Name ' ' Text.Whitespace '|' Operator '\n ' Text.Whitespace 'Array' Name '(' Punctuation 'Type' Name ')' Punctuation ' ' Text.Whitespace '|' Operator '\n ' Text.Whitespace 'Hash' Name '(' Punctuation 'String' Name ',' Punctuation ' ' Text.Whitespace 'Type' Name ')' Punctuation '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'a' Name ' ' Text.Whitespace '>' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n ' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '10' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '# => 10' Comment.Single '\n\n' Text.Whitespace 'b' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'b' Name ' ' Text.Whitespace '>' Operator ' ' Text.Whitespace '2' Literal.Number.Integer '\n ' Text.Whitespace 'b' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '10' Literal.Number.Integer '\n' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace 'b' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '20' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'b' Name ' ' Text.Whitespace '# => 20' Comment.Single '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'some_condition' Name '\n ' Text.Whitespace 'do_something' Name '\n' Text.Whitespace 'elsif' Keyword ' ' Text.Whitespace 'some_other_condition' Name '\n ' Text.Whitespace 'do_something_else' Name '\n' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace 'do_that' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'some_condition' Name '\n ' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'true' Keyword.Constant '\n' Text.Whitespace 'end' Keyword '\n' Text.Whitespace '# a : String | Bool' Comment.Single '\n\n' Text.Whitespace 'b' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'some_condition' Name '\n ' Text.Whitespace 'b' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n' Text.Whitespace '# b : Int32 | String' Comment.Single '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'some_condition' Name '\n ' Text.Whitespace 'c' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace 'c' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n' Text.Whitespace '# c : Int32 | String' Comment.Single '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'some_condition' Name '\n ' Text.Whitespace 'd' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n' Text.Whitespace '# d : Int32 | Nil' Comment.Single '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'some_condition' Name '\n ' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace '# a : String' Comment.Single '\n ' Text.Whitespace 'a' Name '.' Operator 'size' Name '\n' Text.Whitespace 'end' Keyword '\n' Text.Whitespace '# a : String | Int32' Comment.Single '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'some_condition' Name '\n ' Text.Whitespace 'e' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace 'e' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace '# e : String' Comment.Single '\n ' Text.Whitespace 'return' Keyword '\n' Text.Whitespace 'end' Keyword '\n' Text.Whitespace '# e : Int32' Comment.Single '\n\n' Text.Whitespace 'enum' Keyword ' ' Text.Whitespace 'Color' Name.Class ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'UInt8' Name '\n ' Text.Whitespace 'Red' Name ' ' Text.Whitespace '# 0' Comment.Single '\n ' Text.Whitespace 'Green' Name ' ' Text.Whitespace '# 1' Comment.Single '\n ' Text.Whitespace 'Blue' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '5' Literal.Number.Integer ' ' Text.Whitespace '# overwritten to 5' Comment.Single '\n ' Text.Whitespace 'Yellow' Name ' ' Text.Whitespace '# 6 (5 + 1)' Comment.Single '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'red?' Name.Function '\n ' Text.Whitespace 'self' Keyword ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace 'Color' Name '::' Operator 'Red' Name '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'Color' Name '::' Operator 'Red' Name '.' Operator 'value' Name ' ' Text.Whitespace '# :: UInt8' Comment.Single '\n\n' Text.Whitespace '@[' Operator 'Flags' Name.Decorator ']' Operator '\n' Text.Whitespace 'enum' Keyword ' ' Text.Whitespace 'IOMode' Name.Class '\n ' Text.Whitespace 'Read' Name ' ' Text.Whitespace '# 1' Comment.Single '\n ' Text.Whitespace 'Write' Name ' ' Text.Whitespace '# 2' Comment.Single '\n ' Text.Whitespace 'Async' Name ' ' Text.Whitespace '# 4' Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'IOMode' Name '::' Operator 'None' Name '.' Operator 'value' Name ' ' Text.Whitespace '# => 0' Comment.Single '\n' Text.Whitespace 'IOMode' Name '::' Operator 'All' Name '.' Operator 'value' Name ' ' Text.Whitespace '# => 7' Comment.Single '\n\n' Text.Whitespace 'puts' Name.Builtin '(' Punctuation 'Color' Name '::' Operator 'Red' Name ')' Punctuation ' ' Text.Whitespace '# prints "Red"' Comment.Single '\n' Text.Whitespace 'puts' Name.Builtin '(' Punctuation 'IOMode' Name '::' Operator 'Write' Name ' ' Text.Whitespace '|' Operator ' ' Text.Whitespace 'IOMode' Name '::' Operator 'Async' Name ')' Punctuation ' ' Text.Whitespace '# prints "Write, Async"' Comment.Single '\n\n' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'Color' Name '.' Operator 'new' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# => prints "Green"' Comment.Single '\n\n' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'Color' Name '.' Operator 'new' Name '(' Punctuation '10' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# => prints "10"' Comment.Single '\n\n' Text.Whitespace 'Color' Name '::' Operator 'Red' Name '.' Operator 'red?' Name ' ' Text.Whitespace '# => true' Comment.Single '\n' Text.Whitespace 'Color' Name '::' Operator 'Blue' Name '.' Operator 'red?' Name ' ' Text.Whitespace '# => false' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'paint' Name.Function '(' Punctuation 'color' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Color' Name ')' Punctuation '\n ' Text.Whitespace 'case' Keyword ' ' Text.Whitespace 'color' Name '\n ' Text.Whitespace 'when' Keyword ' ' Text.Whitespace 'Color' Name '::' Operator 'Red' Name '\n ' Text.Whitespace '# ...' Comment.Single '\n ' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace '# Unusual, but still can happen' Comment.Single '\n ' Text.Whitespace 'raise' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'unknown color: ' Literal.String.Double '#{' Literal.String.Interpol 'color' Name '}' Literal.String.Interpol '"' Literal.String.Double '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'paint' Name ' ' Text.Whitespace 'Color' Name '::' Operator 'Red' Name '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'paint' Name.Function '(' Punctuation 'color' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Symbol' Name ')' Punctuation '\n ' Text.Whitespace 'case' Keyword ' ' Text.Whitespace 'color' Name '\n ' Text.Whitespace 'when' Keyword ' ' Text.Whitespace ':red' Literal.String.Symbol '\n ' Text.Whitespace '# ...' Comment.Single '\n ' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace 'raise' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'unknown color: ' Literal.String.Double '#{' Literal.String.Interpol 'color' Name '}' Literal.String.Interpol '"' Literal.String.Double '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'paint' Name ' ' Text.Whitespace ':red' Literal.String.Symbol '\n\n' Text.Whitespace 'name' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'Crystal' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'age' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n\n' Text.Whitespace 'flower' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'Tulip' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace "# At this point 'flower' is a String" Comment.Single '\n\n' Text.Whitespace 'flower' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n\n' Text.Whitespace "# At this point 'flower' is an Int32" Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Foo' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'finalize' Name.Function '\n ' Text.Whitespace '# Invoked when Foo is garbage-collected' Comment.Single '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Bye bye from ' Literal.String.Double '#{' Literal.String.Interpol 'self' Keyword '}' Literal.String.Interpol '!' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# Prints "Bye bye ...!" for ever' Comment.Single '\n' Text.Whitespace 'loop' Name.Builtin ' ' Text.Whitespace 'do' Keyword '\n ' Text.Whitespace 'Foo' Name '.' Operator 'new' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# Defines a method in the program' Comment.Single '\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'add' Name.Function '(' Punctuation 'x' Name ',' Punctuation ' ' Text.Whitespace 'y' Name ')' Punctuation '\n ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'y' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# Invokes the add method in the program' Comment.Single '\n' Text.Whitespace 'add' Name '(' Punctuation '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# => 3' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'even?' Name.Function '(' Punctuation 'num' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'num' Name ' ' Text.Whitespace '%' Operator ' ' Text.Whitespace '2' Literal.Number.Integer ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n ' Text.Whitespace 'return' Keyword ' ' Text.Whitespace 'true' Keyword.Constant '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'return' Keyword ' ' Text.Whitespace 'false' Keyword.Constant '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'add' Name.Function '(' Punctuation 'x' Name ',' Punctuation ' ' Text.Whitespace 'y' Name ')' Punctuation '\n ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'y' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Foo' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'bar' Name.Function '\n ' Text.Whitespace "# invokes the program's add method" Comment.Single '\n ' Text.Whitespace 'add' Name '(' Punctuation '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ')' Punctuation '\n\n ' Text.Whitespace "# invokes Foo's baz method" Comment.Single '\n ' Text.Whitespace 'baz' Name '(' Punctuation '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'baz' Name.Function '(' Punctuation 'x' Name ',' Punctuation ' ' Text.Whitespace 'y' Name ')' Punctuation '\n ' Text.Whitespace 'x' Name ' ' Text.Whitespace '*' Operator ' ' Text.Whitespace 'y' Name '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'baz' Name.Function '(' Punctuation 'x' Name ',' Punctuation ' ' Text.Whitespace 'y' Name ')' Punctuation '\n ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'y' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Foo' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'bar' Name.Function '\n ' Text.Whitespace 'baz' Name '(' Punctuation '4' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# => 2' Comment.Single '\n ' Text.Whitespace '::' Operator 'baz' Name '(' Punctuation '4' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# => 6' Comment.Single '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'baz' Name.Function '(' Punctuation 'x' Name ',' Punctuation ' ' Text.Whitespace 'y' Name ')' Punctuation '\n ' Text.Whitespace 'x' Name ' ' Text.Whitespace '-' Operator ' ' Text.Whitespace 'y' Name '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'add' Name.Function '(' Punctuation 'y' Name ')' Punctuation '\n ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'y' Name ' ' Text.Whitespace "# error: undefined local variable or method 'x'" Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'add' Name '(' Punctuation '2' Literal.Number.Integer ')' Punctuation '\n\n' Text.Whitespace 'add' Name ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ' ' Text.Whitespace '# same as add(1, 2)' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Counter' Name.Class '\n ' Text.Whitespace '@@instances' Name.Variable.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '\n ' Text.Whitespace '@@instances' Name.Variable.Class ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'self' Name.Class '.' Operator 'instances' Name.Function '\n ' Text.Whitespace '@@instances' Name.Variable.Class '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'Counter' Name '.' Operator 'instances' Name ' ' Text.Whitespace '# => 0' Comment.Single '\n' Text.Whitespace 'Counter' Name '.' Operator 'new' Name '\n' Text.Whitespace 'Counter' Name '.' Operator 'new' Name '\n' Text.Whitespace 'Counter' Name '.' Operator 'new' Name '\n' Text.Whitespace 'Counter' Name '.' Operator 'instances' Name ' ' Text.Whitespace '# => 3' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Counter' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'self' Name.Class '.' Operator 'increment' Name.Function '\n ' Text.Whitespace '@@instances' Name.Variable.Class ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'Counter' Name '.' Operator 'increment' Name ' ' Text.Whitespace "# Error: undefined method '+' for Nil" Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Parent' Name.Class '\n ' Text.Whitespace '@@counter' Name.Variable.Class ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Child' Name.Class ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'Parent' Name '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'self' Name.Class '.' Operator 'counter' Name.Function '\n ' Text.Whitespace '@@counter' Name.Variable.Class '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'Child' Name '.' Operator 'counter' Name ' ' Text.Whitespace '# => nil' Comment.Single '\n\n' Text.Whitespace 'unless' Keyword ' ' Text.Whitespace 'some_condition' Name '\n ' Text.Whitespace 'then_expression' Name '\n' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace 'else_expression' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# Can also be written as a suffix' Comment.Single '\n' Text.Whitespace 'close_door' Name ' ' Text.Whitespace 'unless' Keyword ' ' Text.Whitespace 'door_closed?' Name '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'b' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'typeof' Keyword.Pseudo '(' Punctuation 'a' Name ')' Punctuation ' ' Text.Whitespace '# => Int32' Comment.Single '\n\n' Text.Whitespace 'typeof' Keyword.Pseudo '(' Punctuation '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '"' Literal.String.Double 'a' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace "'a'" Literal.String.Char ')' Punctuation ' ' Text.Whitespace '# => (Int32 | String | Char)' Comment.Single '\n\n' Text.Whitespace 'hash' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '{' Punctuation '}' Punctuation ' ' Text.Whitespace 'of' Keyword ' ' Text.Whitespace 'Int32' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'String' Name '\n' Text.Whitespace 'another_hash' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'typeof' Keyword.Pseudo '(' Punctuation 'hash' Name ')' Punctuation '.' Operator 'new' Name ' ' Text.Whitespace '# :: Hash(Int32, String)' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Array' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'self' Name.Class '.' Operator 'elem_type' Name.Function '(' Punctuation 'typ' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'typ' Name '.is_a?' Keyword.Pseudo '(' Punctuation 'Array' Name ')' Punctuation '\n ' Text.Whitespace 'elem_type' Name '(' Punctuation 'typ' Name '.' Operator 'first' Name ')' Punctuation '\n ' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace 'typ' Name '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'nest' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '[' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '[' Operator '"' Literal.String.Double 'b' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace '[' Operator ':c' Literal.String.Symbol ',' Punctuation ' ' Text.Whitespace '[' Operator "'d'" Literal.String.Char ']' Operator ']' Operator ']' Operator ']' Operator '\n' Text.Whitespace 'flat' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Array' Name '(' Punctuation 'typeof' Keyword.Pseudo '(' Punctuation 'Array' Name '.' Operator 'elem_type' Name '(' Punctuation 'nest' Name ')' Punctuation ')' Punctuation ')' Punctuation '.' Operator 'new' Name '\n' Text.Whitespace 'typeof' Keyword.Pseudo '(' Punctuation 'nest' Name ')' Punctuation ' ' Text.Whitespace '# => Array(Int32 | Array(String | Array(Symbol | Array(Char))))' Comment.Single '\n' Text.Whitespace 'typeof' Keyword.Pseudo '(' Punctuation 'flat' Name ')' Punctuation ' ' Text.Whitespace '# => Array(String | Int32 | Symbol | Char)' Comment.Single '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'some_condition' Name '\n\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n' Text.Whitespace 'proc' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '-' Operator '>' Operator '{' Punctuation ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ';' Punctuation ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace 'proc' Name '.' Operator 'call' Name ' ' Text.Whitespace '# => 1' Comment.Single '\n' Text.Whitespace 'proc' Name '.' Operator 'call' Name ' ' Text.Whitespace '# => 2' Comment.Single '\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '# => 2' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'counter' Name.Function '\n ' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n ' Text.Whitespace '-' Operator '>' Operator '{' Punctuation ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ';' Punctuation ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'proc' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'counter' Name '\n' Text.Whitespace 'proc' Name '.' Operator 'call' Name ' ' Text.Whitespace '# => 1' Comment.Single '\n' Text.Whitespace 'proc' Name '.' Operator 'call' Name ' ' Text.Whitespace '# => 2' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '\n ' Text.Whitespace 'yield' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace 'do' Keyword '\n ' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '# : Int32 | String' Comment.Single '\n\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace 'do' Keyword '\n ' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '# : Int32 | String' Comment.Single '\n\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace "'a'" Literal.String.Char '\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '# : Char' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'capture' Name.Function '(' Punctuation '&' Operator 'block' Name ')' Punctuation '\n ' Text.Whitespace 'block' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'capture' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '}' Punctuation '\n\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace "'a'" Literal.String.Char '\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '# : Int32 | String | Char' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'capture' Name.Function '(' Punctuation '&' Operator 'block' Name ')' Punctuation '\n ' Text.Whitespace 'block' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace '-' Operator '>' Operator '{' Punctuation ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '}' Punctuation '\n\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace "'a'" Literal.String.Char '\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '# : Int32 | String | Char' Comment.Single '\n\n' Text.Whitespace 'abstract' Keyword ' ' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Animal' Name.Class '\n ' Text.Whitespace '# Makes this animal talk' Comment.Single '\n ' Text.Whitespace 'abstract' Keyword ' ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'talk' Name.Function '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Dog' Name.Class ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'Animal' Name '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'talk' Name.Function '\n ' Text.Whitespace '"' Literal.String.Double 'Woof!' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Cat' Name.Class ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'Animal' Name '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'talk' Name.Function '\n ' Text.Whitespace '"' Literal.String.Double 'Miau' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace 'getter' Name.Builtin.Pseudo ' ' Text.Whitespace 'pet' Name '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation '@name' Name.Variable.Instance ',' Punctuation ' ' Text.Whitespace '@pet' Name.Variable.Instance ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'john' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace 'Dog' Name '.' Operator 'new' Name '\n' Text.Whitespace 'peter' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'Peter' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace 'Cat' Name '.' Operator 'new' Name '\n\n' Text.Whitespace 'john' Name '.' Operator 'pet' Name '.' Operator 'talk' Name ' ' Text.Whitespace '# => "Woof!"' Comment.Single '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '>' Operator ' ' Text.Whitespace '2' Literal.Number.Integer ' ' Text.Whitespace '?' Operator ' ' Text.Whitespace '3' Literal.Number.Integer ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace '4' Literal.Number.Integer '\n\n' Text.Whitespace '# The above is the same as:' Comment.Single '\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '>' Operator ' ' Text.Whitespace '2' Literal.Number.Integer '\n ' Text.Whitespace '3' Literal.Number.Integer '\n ' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace '4' Literal.Number.Integer '\n ' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'some_method' Name.Function ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'String' Name '\n ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'PI' Name.Constant ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '3.14' Literal.Number.Float '\n\n' Text.Whitespace 'module' Keyword ' ' Text.Whitespace 'Earth' Name.Namespace '\n ' Text.Whitespace 'RADIUS' Name.Constant ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '6_371_000' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'PI' Name.Constant ' ' Text.Whitespace '# => 3.14' Comment.Single '\n' Text.Whitespace 'Earth' Name '::' Operator 'RADIUS' Name.Constant ' ' Text.Whitespace '# => 6_371_000' Comment.Single '\n\n' Text.Whitespace 'TEN' Name.Constant ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'begin' Keyword '\n ' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n ' Text.Whitespace 'while' Keyword ' ' Text.Whitespace 'a' Name ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace '10' Literal.Number.Integer '\n ' Text.Whitespace 'a' Name ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'a' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'TEN' Name.Constant ' ' Text.Whitespace '# => 10' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace 'getter' Name.Builtin.Pseudo ' ' Text.Whitespace 'name' Name '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation '@name' Name.Variable.Instance ')' Punctuation '\n ' Text.Whitespace '@age' Name.Variable.Instance ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'john' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'john' Name '.' Operator 'name' Name ' ' Text.Whitespace '# => "John"' Comment.Single '\n' Text.Whitespace 'john' Name '.' Operator 'name' Name '.' Operator 'size' Name ' ' Text.Whitespace '# => 4' Comment.Single '\n\n' Text.Whitespace 'one' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'one' Name '.' Operator 'name' Name ' ' Text.Whitespace '# => 1' Comment.Single '\n' Text.Whitespace 'one' Name '.' Operator 'name' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '2' Literal.Number.Integer ' ' Text.Whitespace '# => 3' Comment.Single '\n\n' Text.Whitespace 'john' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'one' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '1' Literal.Number.Integer '\n\n' Text.Whitespace 'john' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'one' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '1' Literal.Number.Integer '\n\n' Text.Whitespace "# Error: undefined method 'size' for Int32" Comment.Single '\n' Text.Whitespace 'john' Name '.' Operator 'name' Name '.' Operator 'size' Name '\n\n' Text.Whitespace "# Error: no overload matches 'String#+' with types Int32" Comment.Single '\n' Text.Whitespace 'john' Name '.' Operator 'name' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '3' Literal.Number.Integer '\n\n' Text.Whitespace 'john' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'john' Name '.' Operator 'name' Name '.' Operator 'size' Name '\n' Text.Whitespace 'one' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '1' Literal.Number.Integer '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace 'getter' Name.Builtin.Pseudo ' ' Text.Whitespace 'name' Name '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation '@name' Name.Variable.Instance ')' Punctuation '\n ' Text.Whitespace '@age' Name.Variable.Instance ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'address' Name.Function '\n ' Text.Whitespace '@address' Name.Variable.Instance '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'address' Name.Function '=' Operator '(' Punctuation '@address' Name.Variable.Instance ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'john' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'john' Name '.' Operator 'address' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'Argentina' Literal.String.Double '"' Literal.String.Double '\n\n' Text.Whitespace "# Error: undefined method 'size' for Nil" Comment.Single '\n' Text.Whitespace 'john' Name '.' Operator 'address' Name '.' Operator 'size' Name '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace '@age' Name.Variable.Instance ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation '@name' Name.Variable.Instance ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace '@age' Name.Variable.Instance ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation '@name' Name.Variable.Instance ')' Punctuation '\n ' Text.Whitespace '@age' Name.Variable.Instance ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '2' Literal.Number.Integer ' ' Text.Whitespace '>' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace '3' Literal.Number.Integer '\n ' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace '4' Literal.Number.Integer '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '# => 3' Comment.Single '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '>' Operator ' ' Text.Whitespace '2' Literal.Number.Integer '\n' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace '3' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'twice' Name.Function '(' Punctuation '&' Operator 'block' Name ')' Punctuation '\n ' Text.Whitespace 'yield' Keyword '\n ' Text.Whitespace 'yield' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'twice' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace 'do' Keyword '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Hello!' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'twice' Name ' ' Text.Whitespace 'do' Keyword '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Hello!' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'twice' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Hello!' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '}' Punctuation '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'twice' Name.Function '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '2' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'twice' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'i' Name '|' Operator '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Got ' Literal.String.Double '#{' Literal.String.Interpol 'i' Name '}' Literal.String.Interpol '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'twice' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '|' Operator 'i' Name '|' Operator ' ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Got ' Literal.String.Double '#{' Literal.String.Interpol 'i' Name '}' Literal.String.Interpol '"' Literal.String.Double ' ' Text.Whitespace '}' Punctuation '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'many' Name.Function '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'many' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'x' Name ',' Punctuation ' ' Text.Whitespace 'y' Name ',' Punctuation ' ' Text.Whitespace 'z' Name '|' Operator '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'y' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'z' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# Output: 6' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'many' Name.Function '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'many' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'x' Name ',' Punctuation ' ' Text.Whitespace 'y' Name '|' Operator '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'y' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# Output: 3' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'twice' Name.Function '\n ' Text.Whitespace 'yield' Keyword '\n ' Text.Whitespace 'yield' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'twice' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'i' Name '|' Operator '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'i' Name '.' Operator 'inspect' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'some' Name.Function '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace "'a'" Literal.String.Char '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace 'true' Keyword.Constant ',' Punctuation ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '2' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'some' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'first' Name ',' Punctuation ' ' Text.Whitespace 'second' Name '|' Operator '\n ' Text.Whitespace '# first is Int32 | Bool' Comment.Single '\n ' Text.Whitespace '# second is Char | String | Nil' Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'method' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'argument' Name '|' Operator '\n ' Text.Whitespace 'argument' Name '.' Operator 'some_method' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'method' Name '(' Punctuation '&' Operator '.' Operator 'some_method' Name ')' Punctuation '\n\n' Text.Whitespace 'method' Name ' ' Text.Whitespace '&' Operator '.' Operator 'some_method' Name '(' Punctuation 'arg1' Name ',' Punctuation ' ' Text.Whitespace 'arg2' Name ')' Punctuation '\n\n' Text.Whitespace 'method' Name ' ' Text.Whitespace '&' Operator '.' Operator '+' Name.Operator '(' Punctuation '2' Literal.Number.Integer ')' Punctuation '\n' Text.Whitespace 'method' Name ' ' Text.Whitespace '&' Operator '.' Operator '[' Name 'index' Name ']' Operator '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'twice' Name.Function '\n ' Text.Whitespace 'v1' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'v1' Name '\n\n ' Text.Whitespace 'v2' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '2' Literal.Number.Integer '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'v2' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'twice' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'i' Name '|' Operator '\n ' Text.Whitespace 'i' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'ary' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '[' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ']' Operator '\n' Text.Whitespace 'ary' Name '.' Operator 'map' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '|' Operator 'x' Name '|' Operator ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace '# => [2, 3, 4]' Comment.Single '\n' Text.Whitespace 'ary' Name '.' Operator 'select' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '|' Operator 'x' Name '|' Operator ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '%' Operator ' ' Text.Whitespace '2' Literal.Number.Integer ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace '# => [1, 3]' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'transform' Name.Function '(' Punctuation 'value' Name ')' Punctuation '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace 'value' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'transform' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '|' Operator 'x' Name '|' Operator ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace '# => 2' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'thrice' Name.Function '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Before 1' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Before 2' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '2' Literal.Number.Integer '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Before 3' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '3' Literal.Number.Integer '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'After 3' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'thrice' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'i' Name '|' Operator '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'i' Name ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace '2' Literal.Number.Integer '\n ' Text.Whitespace 'break' Keyword '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'twice' Name.Function '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '2' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'twice' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '|' Operator 'i' Name '|' Operator ' ' Text.Whitespace 'i' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace '# => 3' Comment.Single '\n' Text.Whitespace 'twice' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '|' Operator 'i' Name '|' Operator ' ' Text.Whitespace 'break' Keyword ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace '# => "hello"' Comment.Single '\n\n' Text.Whitespace 'value' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'twice' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'i' Name '|' Operator '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'i' Name ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'break' Keyword ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'i' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'value' Name ' ' Text.Whitespace '# :: Int32 | String' Comment.Single '\n\n' Text.Whitespace 'values' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'twice' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'break' Keyword ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace 'values' Name ' ' Text.Whitespace '# => {1, 2}' Comment.Single '\n\n' Text.Whitespace 'value' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'twice' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'break' Keyword ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace 'value' Name ' ' Text.Whitespace '# => nil' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'twice' Name.Function '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '2' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'twice' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'i' Name '|' Operator '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'i' Name ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Skipping 1' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace 'next' Keyword '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Got ' Literal.String.Double '#{' Literal.String.Interpol 'i' Name '}' Literal.String.Interpol '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'twice' Name.Function '\n ' Text.Whitespace 'v1' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'v1' Name '\n\n ' Text.Whitespace 'v2' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '2' Literal.Number.Integer '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'v2' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'twice' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'i' Name '|' Operator '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'i' Name ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'next' Keyword ' ' Text.Whitespace '10' Literal.Number.Integer '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'i' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# Output' Comment.Single '\n' Text.Whitespace '# 10' Comment.Single '\n' Text.Whitespace '# 3' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Foo' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'one' Name.Function '\n ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'yield_with_self' Name.Function '\n ' Text.Whitespace 'with' Keyword ' ' Text.Whitespace 'self' Keyword ' ' Text.Whitespace 'yield' Keyword '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'yield_normally' Name.Function '\n ' Text.Whitespace 'yield' Keyword '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'one' Name.Function '\n ' Text.Whitespace '"' Literal.String.Double 'one' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'Foo' Name '.' Operator 'new' Name '.' Operator 'yield_with_self' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'one' Name ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace '# => 1' Comment.Single '\n' Text.Whitespace 'Foo' Name '.' Operator 'new' Name '.' Operator 'yield_normally' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'one' Name ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace '# => "one"' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'twice' Name.Function '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '2' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'twice' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'i' Name '|' Operator '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Got: ' Literal.String.Double '#{' Literal.String.Interpol 'i' Name '}' Literal.String.Interpol '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'i' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Got: ' Literal.String.Double '#{' Literal.String.Interpol 'i' Name '}' Literal.String.Interpol '"' Literal.String.Double '\n' Text.Whitespace 'i' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer '\n' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Got: ' Literal.String.Double '#{' Literal.String.Interpol 'i' Name '}' Literal.String.Interpol '"' Literal.String.Double '\n\n' Text.Whitespace '3' Literal.Number.Integer '.' Operator 'times' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'i' Name '|' Operator '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'i' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'struct' Keyword ' ' Text.Whitespace 'Int' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'times' Name.Function '\n ' Text.Whitespace 'i' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n ' Text.Whitespace 'while' Keyword ' ' Text.Whitespace 'i' Name ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'self' Keyword '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace 'i' Name '\n ' Text.Whitespace 'i' Name ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'i' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n' Text.Whitespace 'while' Keyword ' ' Text.Whitespace 'i' Name ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace '3' Literal.Number.Integer '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'i' Name '\n ' Text.Whitespace 'i' Name ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation '@name' Name.Variable.Instance ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'greet' Name.Function '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double "Hi, I'm " Literal.String.Double '#{' Literal.String.Interpol '@name' Name.Variable.Instance '}' Literal.String.Interpol '"' Literal.String.Double '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Employee' Name.Class ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'Person' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'employee' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Employee' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'employee' Name '.' Operator 'greet' Name ' ' Text.Whitespace '# "Hi, I\'m John"' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation '@name' Name.Variable.Instance ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Employee' Name.Class ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'Person' Name '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation '@name' Name.Variable.Instance ',' Punctuation ' ' Text.Whitespace '@company_name' Name.Variable.Instance ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'Employee' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace '"' Literal.String.Double 'Acme' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# OK' Comment.Single '\n' Text.Whitespace 'Employee' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'Peter' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# Error: wrong number of arguments' Comment.Single '\n' Text.Whitespace "# for 'Employee:Class#new' (1 for 2)" Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'greet' Name.Function '(' Punctuation 'msg' Name ')' Punctuation '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Hi, ' Literal.String.Double '#{' Literal.String.Interpol 'msg' Name '}' Literal.String.Interpol '"' Literal.String.Double '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Employee' Name.Class ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'Person' Name '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'greet' Name.Function '(' Punctuation 'msg' Name ')' Punctuation '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Hello, ' Literal.String.Double '#{' Literal.String.Interpol 'msg' Name '}' Literal.String.Interpol '"' Literal.String.Double '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'p' Name.Builtin ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name '\n' Text.Whitespace 'p' Name.Builtin '.' Operator 'greet' Name ' ' Text.Whitespace '"' Literal.String.Double 'everyone' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# "Hi, everyone"' Comment.Single '\n\n' Text.Whitespace 'e' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Employee' Name '.' Operator 'new' Name '\n' Text.Whitespace 'e' Name '.' Operator 'greet' Name ' ' Text.Whitespace '"' Literal.String.Double 'everyone' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# "Hello, everyone"' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'greet' Name.Function '(' Punctuation 'msg' Name ')' Punctuation '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Hi, ' Literal.String.Double '#{' Literal.String.Interpol 'msg' Name '}' Literal.String.Interpol '"' Literal.String.Double '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Employee' Name.Class ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'Person' Name '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'greet' Name.Function '(' Punctuation 'msg' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ')' Punctuation '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Hi, this is a number: ' Literal.String.Double '#{' Literal.String.Interpol 'msg' Name '}' Literal.String.Interpol '"' Literal.String.Double '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'e' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Employee' Name '.' Operator 'new' Name '\n' Text.Whitespace 'e' Name '.' Operator 'greet' Name ' ' Text.Whitespace '"' Literal.String.Double 'everyone' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# "Hi, everyone"' Comment.Single '\n\n' Text.Whitespace 'e' Name '.' Operator 'greet' Name ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '# "Hi, this is a number: 1"' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'greet' Name.Function '(' Punctuation 'msg' Name ')' Punctuation '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Hello, ' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# {msg}"' Comment.Single '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Employee' Name.Class ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'Person' Name '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'greet' Name.Function '(' Punctuation 'msg' Name ')' Punctuation '\n ' Text.Whitespace 'super' Keyword ' ' Text.Whitespace '# Same as: super(msg)' Comment.Single '\n ' Text.Whitespace 'super' Keyword '(' Punctuation '"' Literal.String.Double 'another message' Literal.String.Double '"' Literal.String.Double ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'int_to_int' Name.Function '(' Punctuation '&' Operator 'block' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ' ' Text.Whitespace '-' Operator '>' Operator ' ' Text.Whitespace 'Int32' Name ')' Punctuation '\n ' Text.Whitespace 'block' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'proc' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'int_to_int' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '|' Operator 'x' Name '|' Operator ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace 'proc' Name '.' Operator 'call' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# => 2' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Model' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'on_save' Name.Function '(' Punctuation '&' Operator 'block' Name ')' Punctuation '\n ' Text.Whitespace '@on_save_callback' Name.Variable.Instance ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'block' Name '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'save' Name.Function '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'callback' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '@on_save_callback' Name.Variable.Instance '\n ' Text.Whitespace 'callback' Name '.' Operator 'call' Name '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'model' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Model' Name '.' Operator 'new' Name '\n' Text.Whitespace 'model' Name '.' Operator 'on_save' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Saved!' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace 'model' Name '.' Operator 'save' Name ' ' Text.Whitespace '# prints "Saved!"' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'some_proc' Name.Function '(' Punctuation '&' Operator 'block' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ' ' Text.Whitespace '-' Operator '>' Operator ')' Punctuation '\n ' Text.Whitespace 'block' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'proc' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'some_proc' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '|' Operator 'x' Name '|' Operator ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace 'proc' Name '.' Operator 'call' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# void' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'some_proc' Name.Function '(' Punctuation '&' Operator 'block' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ' ' Text.Whitespace '-' Operator '>' Operator ' ' Text.Whitespace '_' Name ')' Punctuation '\n ' Text.Whitespace 'block' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'proc' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'some_proc' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '|' Operator 'x' Name '|' Operator ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace 'proc' Name '.' Operator 'call' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# 2' Comment.Single '\n\n' Text.Whitespace 'proc' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'some_proc' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '|' Operator 'x' Name '|' Operator ' ' Text.Whitespace 'x' Name '.' Operator 'to_s' Name ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace 'proc' Name '.' Operator 'call' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# "1"' Comment.Single '\n\n' Text.Whitespace 'macro' Keyword ' ' Text.Whitespace 'update_x' Name.Function '\n ' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n' Text.Whitespace 'update_x' Name '\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '# => 1' Comment.Single '\n\n' Text.Whitespace 'macro' Keyword ' ' Text.Whitespace 'dont_update_x' Name.Function '\n ' Text.Whitespace '%' Operator 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '%' Operator 'x' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n' Text.Whitespace 'dont_update_x' Name ' ' Text.Whitespace '# outputs 1' Comment.Single '\n' Text.Whitespace 'x' Name ' ' Text.Whitespace '# => 0' Comment.Single '\n\n' Text.Whitespace 'macro' Keyword ' ' Text.Whitespace 'fresh_vars_sample' Name.Function '(' Punctuation '*' Operator 'names' Name ')' Punctuation '\n ' Text.Whitespace '# First declare vars' Comment.Single '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace 'name' Name ',' Punctuation ' ' Text.Whitespace 'index' Name ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace 'names' Name ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace 'print' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Declaring: ' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace '"' Literal.String.Double '%name{index}' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace "'\\n'" Literal.String.Char '\n ' Text.Whitespace '%' Operator 'name' Name '{' Punctuation 'index' Name '}' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '{{' Literal.String.Interpol 'index' Name '}}' Literal.String.Interpol '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'end' Keyword ' ' Text.Whitespace '%}' Literal.String.Interpol '\n\n ' Text.Whitespace '# Then print them' Comment.Single '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace 'name' Name ',' Punctuation ' ' Text.Whitespace 'index' Name ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace 'names' Name ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace 'print' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double '%name{index}: ' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace '%' Operator 'name' Name '{' Punctuation 'index' Name '}' Punctuation ',' Punctuation ' ' Text.Whitespace "'\\n'" Literal.String.Char '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'end' Keyword ' ' Text.Whitespace '%}' Literal.String.Interpol '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'fresh_vars_sample' Name ' ' Text.Whitespace 'a' Name ',' Punctuation ' ' Text.Whitespace 'b' Name ',' Punctuation ' ' Text.Whitespace 'c' Name '\n\n' Text.Whitespace '# Sample output:' Comment.Single '\n' Text.Whitespace '# Declaring: __temp_255' Comment.Single '\n' Text.Whitespace '# Declaring: __temp_256' Comment.Single '\n' Text.Whitespace '# Declaring: __temp_257' Comment.Single '\n' Text.Whitespace '# __temp_255: 0' Comment.Single '\n' Text.Whitespace '# __temp_256: 1' Comment.Single '\n' Text.Whitespace '# __temp_257: 2' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Object' Name.Class '\n ' Text.Whitespace 'macro' Keyword ' ' Text.Whitespace 'instance_vars_names' Name.Function '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'instance_vars_names' Name.Function ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Array' Name '(' Punctuation 'String' Name ')' Punctuation '\n ' Text.Whitespace '{{' Literal.String.Interpol ' ' Text.Whitespace '@type' Name.Variable.Instance '.' Operator 'instance_vars' Name '.' Operator 'map' Name ' ' Text.Whitespace '&' Operator '.' Operator 'name' Name '.' Operator 'stringify' Name ' ' Text.Whitespace '}}' Literal.String.Interpol '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation '@name' Name.Variable.Instance ',' Punctuation ' ' Text.Whitespace '@age' Name.Variable.Instance ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'person' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace '30' Literal.Number.Integer '\n' Text.Whitespace 'person' Name '.' Operator 'instance_vars_names' Name ' ' Text.Whitespace '# => ["name", "age"]' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Object' Name.Class '\n ' Text.Whitespace 'macro' Keyword ' ' Text.Whitespace 'has_instance_var?' Name.Function '(' Punctuation 'name' Name ')' Punctuation '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'has_instance_var?' Name.Function '(' Punctuation 'name' Name ')' Punctuation ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Bool' Name '\n ' Text.Whitespace '# We cannot access name inside the macro expansion here,' Comment.Single '\n ' Text.Whitespace '# instead we need to use the macro language to construct an array' Comment.Single '\n ' Text.Whitespace '# and do the inclusion check at runtime.' Comment.Single '\n ' Text.Whitespace '{{' Literal.String.Interpol ' ' Text.Whitespace '@type' Name.Variable.Instance '.' Operator 'instance_vars' Name '.' Operator 'map' Name ' ' Text.Whitespace '&' Operator '.' Operator 'name' Name '.' Operator 'stringify' Name ' ' Text.Whitespace '}}' Literal.String.Interpol '.' Operator 'includes?' Name ' ' Text.Whitespace 'name' Name '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'person' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace '30' Literal.Number.Integer '\n' Text.Whitespace 'person' Name '.' Operator 'has_instance_var?' Name '(' Punctuation '"' Literal.String.Double 'name' Literal.String.Double '"' Literal.String.Double ')' Punctuation ' ' Text.Whitespace '# => true' Comment.Single '\n' Text.Whitespace 'person' Name '.' Operator 'has_instance_var?' Name '(' Punctuation '"' Literal.String.Double 'birthday' Literal.String.Double '"' Literal.String.Double ')' Punctuation ' ' Text.Whitespace '# => false' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Parent' Name.Class '\n ' Text.Whitespace 'macro' Keyword ' ' Text.Whitespace 'inherited' Name.Function '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace '{{' Literal.String.Interpol '@type' Name.Variable.Instance '.' Operator 'name' Name '.' Operator 'downcase' Name '.' Operator 'id' Name '}}' Literal.String.Interpol '\n ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Child' Name.Class ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'Parent' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'Child' Name '.' Operator 'new' Name '.' Operator 'child' Name ' ' Text.Whitespace '# => 1' Comment.Single '\n\n' Text.Whitespace 'macro' Keyword ' ' Text.Whitespace 'method_missing' Name.Function '(' Punctuation 'name' Name ',' Punctuation ' ' Text.Whitespace 'args' Name ',' Punctuation ' ' Text.Whitespace 'block' Name ')' Punctuation '\n ' Text.Whitespace 'print' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Got ' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace '{{' Literal.String.Interpol 'name' Name '.' Operator 'id' Name '.' Operator 'stringify' Name '}}' Literal.String.Interpol ',' Punctuation ' ' Text.Whitespace '"' Literal.String.Double ' with ' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace '{{' Literal.String.Interpol 'args' Name '.' Operator 'size' Name '}}' Literal.String.Interpol ',' Punctuation ' ' Text.Whitespace '"' Literal.String.Double ' arguments' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace "'\\n'" Literal.String.Char '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace '# Prints: Got foo with 0 arguments' Comment.Single '\n' Text.Whitespace 'bar' Name ' ' Text.Whitespace "'a'" Literal.String.Char ',' Punctuation ' ' Text.Whitespace "'b'" Literal.String.Char ' ' Text.Whitespace '# Prints: Got bar with 2 arguments' Comment.Single '\n\n' Text.Whitespace 'sizeof' Keyword.Pseudo '(' Punctuation 'Int32' Name ')' Punctuation ' ' Text.Whitespace '# => 4' Comment.Single '\n' Text.Whitespace 'sizeof' Keyword.Pseudo '(' Punctuation 'Int64' Name ')' Punctuation ' ' Text.Whitespace '# => 8' Comment.Single '\n\n' Text.Whitespace '# On a 64 bits machine' Comment.Single '\n' Text.Whitespace 'sizeof' Keyword.Pseudo '(' Punctuation 'Pointer' Name '(' Punctuation 'Int32' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace '# => 8' Comment.Single '\n' Text.Whitespace 'sizeof' Keyword.Pseudo '(' Punctuation 'String' Name ')' Punctuation ' ' Text.Whitespace '# => 8' Comment.Single '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'sizeof' Keyword.Pseudo '(' Punctuation 'typeof' Keyword.Pseudo '(' Punctuation 'a' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace '# => 4' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Foo' Name.Class '\n ' Text.Whitespace 'macro' Keyword ' ' Text.Whitespace 'emphasize' Name.Function '(' Punctuation 'value' Name ')' Punctuation '\n ' Text.Whitespace '"' Literal.String.Double '***' Literal.String.Double '#{' Literal.String.Interpol ' ' Text.Whitespace '{' Literal.String.Interpol '{' Literal.String.Interpol 'value' Name '}' Literal.String.Interpol '}' Literal.String.Interpol ' ' Text.Whitespace '}' Literal.String.Interpol '***' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'yield_with_self' Name.Function '\n ' Text.Whitespace 'with' Keyword ' ' Text.Whitespace 'self' Keyword ' ' Text.Whitespace 'yield' Keyword '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'Foo' Name '.' Operator 'new' Name '.' Operator 'yield_with_self' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'emphasize' Name '(' Punctuation '10' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace '# => "***10***"' Comment.Single '\n\n' Text.Whitespace '# This generates:' Comment.Single '\n' Text.Whitespace '#' Comment.Single '\n' Text.Whitespace '# def :foo' Comment.Single '\n' Text.Whitespace '# 1' Comment.Single '\n' Text.Whitespace '# end' Comment.Single '\n' Text.Whitespace 'define_method' Name ' ' Text.Whitespace ':foo' Literal.String.Symbol ',' Punctuation ' ' Text.Whitespace '1' Literal.Number.Integer '\n\n' Text.Whitespace 'macro' Keyword ' ' Text.Whitespace 'define_method' Name.Function '(' Punctuation 'name' Name ',' Punctuation ' ' Text.Whitespace 'content' Name ')' Punctuation '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace '{{' Literal.String.Interpol 'name' Name '.' Operator 'id' Name '}}' Literal.String.Interpol '\n ' Text.Whitespace '{{' Literal.String.Interpol 'content' Name '}}' Literal.String.Interpol '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# This correctly generates:' Comment.Single '\n' Text.Whitespace '#' Comment.Single '\n' Text.Whitespace '# def foo' Comment.Single '\n' Text.Whitespace '# 1' Comment.Single '\n' Text.Whitespace '# end' Comment.Single '\n' Text.Whitespace 'define_method' Name ' ' Text.Whitespace ':foo' Literal.String.Symbol ',' Punctuation ' ' Text.Whitespace '1' Literal.Number.Integer '\n\n' Text.Whitespace 'macro' Keyword ' ' Text.Whitespace 'define_method' Name.Function '(' Punctuation 'name' Name ',' Punctuation ' ' Text.Whitespace 'content' Name ')' Punctuation '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace '{{' Literal.String.Interpol 'name' Name '}}' Literal.String.Interpol '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'content' Name ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace '"' Literal.String.Double 'one' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'else' Keyword ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace '{{' Literal.String.Interpol 'content' Name '}}' Literal.String.Interpol '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'end' Keyword ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'define_method' Name ' ' Text.Whitespace 'foo' Name ',' Punctuation ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'define_method' Name ' ' Text.Whitespace 'bar' Name ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer '\n\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace '# => one' Comment.Single '\n' Text.Whitespace 'bar' Name ' ' Text.Whitespace '# => 2' Comment.Single '\n\n' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'env' Name '(' Punctuation '"' Literal.String.Double 'TEST' Literal.String.Double '"' Literal.String.Double ')' Punctuation ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'We are in test mode' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'end' Keyword ' ' Text.Whitespace '%}' Literal.String.Interpol '\n\n' Text.Whitespace 'macro' Keyword ' ' Text.Whitespace 'define_dummy_methods' Name.Function '(' Punctuation 'names' Name ')' Punctuation '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace 'name' Name ',' Punctuation ' ' Text.Whitespace 'index' Name ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace 'names' Name ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace '{{' Literal.String.Interpol 'name' Name '.' Operator 'id' Name '}}' Literal.String.Interpol '\n ' Text.Whitespace '{{' Literal.String.Interpol 'index' Name '}}' Literal.String.Interpol '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'end' Keyword ' ' Text.Whitespace '%}' Literal.String.Interpol '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'define_dummy_methods' Name ' ' Text.Whitespace '[' Operator 'foo' Name ',' Punctuation ' ' Text.Whitespace 'bar' Name ',' Punctuation ' ' Text.Whitespace 'baz' Name ']' Operator '\n\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace '# => 0' Comment.Single '\n' Text.Whitespace 'bar' Name ' ' Text.Whitespace '# => 1' Comment.Single '\n' Text.Whitespace 'baz' Name ' ' Text.Whitespace '# => 2' Comment.Single '\n\n' Text.Whitespace 'macro' Keyword ' ' Text.Whitespace 'define_dummy_methods' Name.Function '(' Punctuation 'hash' Name ')' Punctuation '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace 'key' Name ',' Punctuation ' ' Text.Whitespace 'value' Name ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace 'hash' Name ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace '{{' Literal.String.Interpol 'key' Name '.' Operator 'id' Name '}}' Literal.String.Interpol '\n ' Text.Whitespace '{{' Literal.String.Interpol 'value' Name '}}' Literal.String.Interpol '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'end' Keyword ' ' Text.Whitespace '%}' Literal.String.Interpol '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'define_dummy_methods' Name '(' Punctuation '{' Punctuation 'foo' Literal.String.Symbol ':' Punctuation ' ' Text.Whitespace '10' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace 'bar' Literal.String.Symbol ':' Punctuation ' ' Text.Whitespace '20' Literal.Number.Integer '}' Punctuation ')' Punctuation '\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace '# => 10' Comment.Single '\n' Text.Whitespace 'bar' Name ' ' Text.Whitespace '# => 20' Comment.Single '\n\n' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace 'name' Name ',' Punctuation ' ' Text.Whitespace 'index' Name ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace '[' Operator '"' Literal.String.Double 'foo' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace '"' Literal.String.Double 'bar' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace '"' Literal.String.Double 'baz' Literal.String.Double '"' Literal.String.Double ']' Operator ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace '{{' Literal.String.Interpol 'name' Name '.' Operator 'id' Name '}}' Literal.String.Interpol '\n ' Text.Whitespace '{{' Literal.String.Interpol 'index' Name '}}' Literal.String.Interpol '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'end' Keyword ' ' Text.Whitespace '%}' Literal.String.Interpol '\n\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace '# => 0' Comment.Single '\n' Text.Whitespace 'bar' Name ' ' Text.Whitespace '# => 1' Comment.Single '\n' Text.Whitespace 'baz' Name ' ' Text.Whitespace '# => 2' Comment.Single '\n\n' Text.Whitespace 'macro' Keyword ' ' Text.Whitespace 'define_dummy_methods' Name.Function '(' Punctuation '*' Operator 'names' Name ')' Punctuation '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace 'name' Name ',' Punctuation ' ' Text.Whitespace 'index' Name ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace 'names' Name ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace '{{' Literal.String.Interpol 'name' Name '.' Operator 'id' Name '}}' Literal.String.Interpol '\n ' Text.Whitespace '{{' Literal.String.Interpol 'index' Name '}}' Literal.String.Interpol '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'end' Keyword ' ' Text.Whitespace '%}' Literal.String.Interpol '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'define_dummy_methods' Name ' ' Text.Whitespace 'foo' Name ',' Punctuation ' ' Text.Whitespace 'bar' Name ',' Punctuation ' ' Text.Whitespace 'baz' Name '\n\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace '# => 0' Comment.Single '\n' Text.Whitespace 'bar' Name ' ' Text.Whitespace '# => 1' Comment.Single '\n' Text.Whitespace 'baz' Name ' ' Text.Whitespace '# => 2' Comment.Single '\n\n' Text.Whitespace 'macro' Keyword ' ' Text.Whitespace 'println' Name.Function '(' Punctuation '*' Operator 'values' Name ')' Punctuation '\n ' Text.Whitespace 'print' Name.Builtin ' ' Text.Whitespace '{{' Literal.String.Interpol '*' Operator 'values' Name '}}' Literal.String.Interpol ',' Punctuation ' ' Text.Whitespace "'\\n'" Literal.String.Char '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'println' Name ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ' ' Text.Whitespace '# outputs 123\\n' Comment.Single '\n\n' Text.Whitespace 'VALUES' Name.Constant ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '[' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ']' Operator '\n\n' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace 'value' Name ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace 'VALUES' Name.Constant ' ' Text.Whitespace '%}' Literal.String.Interpol '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '{{' Literal.String.Interpol 'value' Name '}}' Literal.String.Interpol '\n' Text.Whitespace '{%' Literal.String.Interpol ' ' Text.Whitespace 'end' Keyword ' ' Text.Whitespace '%}' Literal.String.Interpol '\n\n' Text.Whitespace 'until' Keyword ' ' Text.Whitespace 'some_condition' Name '\n ' Text.Whitespace 'do_this' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# The above is the same as:' Comment.Single '\n' Text.Whitespace 'while' Keyword ' ' Text.Whitespace '!' Operator 'some_condition' Name '\n ' Text.Whitespace 'do_this' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'some_condition' Name ' ' Text.Whitespace '?' Punctuation ' ' Text.Whitespace 'nil' Keyword.Constant ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer '\n' Text.Whitespace '# a is Int32 or Nil' Comment.Single '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'a' Name '\n ' Text.Whitespace '# Since the only way to get here is if a is truthy,' Comment.Single '\n ' Text.Whitespace "# a can't be nil. So here a is Int32." Comment.Single '\n ' Text.Whitespace 'a' Name '.' Operator 'abs' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'some_expression' Name '\n ' Text.Whitespace '# here a is not nil' Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'a' Name ' ' Text.Whitespace '&&' Operator ' ' Text.Whitespace 'b' Name '\n ' Text.Whitespace '# here both a and b are guaranteed not to be Nil' Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '@a' Name.Variable.Instance '\n ' Text.Whitespace '# here @a can be nil' Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# First option: assign it to a variable' Comment.Single '\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '@a' Name.Variable.Instance '\n ' Text.Whitespace "# here a can't be nil" Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# Second option: use `Object#try` found in the standard library' Comment.Single '\n' Text.Whitespace '@a' Name.Variable.Instance '.' Operator 'try' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'a' Name '|' Operator '\n ' Text.Whitespace "# here a can't be nil" Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'method' Name ' ' Text.Whitespace '# first call to a method that can return Int32 or Nil' Comment.Single '\n ' Text.Whitespace '# here we know that the first call did not return Nil' Comment.Single '\n ' Text.Whitespace 'method' Name ' ' Text.Whitespace '# second call can still return Int32 or Nil' Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'become_older' Name.Function '(' Punctuation 'by' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ')' Punctuation '\n ' Text.Whitespace '@age' Name.Variable.Instance ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace 'by' Name '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'john' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'john' Name '.' Operator 'age' Name ' ' Text.Whitespace '# => 0' Comment.Single '\n\n' Text.Whitespace 'john' Name '.' Operator 'become_older' Name '\n' Text.Whitespace 'john' Name '.' Operator 'age' Name ' ' Text.Whitespace '# => 1' Comment.Single '\n\n' Text.Whitespace 'john' Name '.' Operator 'become_older' Name ' ' Text.Whitespace '2' Literal.Number.Integer '\n' Text.Whitespace 'john' Name '.' Operator 'age' Name ' ' Text.Whitespace '# => 3' Comment.Single '\n\n' Text.Whitespace 'john' Name '.' Operator 'become_older' Name ' ' Text.Whitespace 'by' Literal.String.Symbol ':' Punctuation ' ' Text.Whitespace '5' Literal.Number.Integer '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'some_method' Name.Function '(' Punctuation 'x' Name ',' Punctuation ' ' Text.Whitespace 'y' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace 'z' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace 'w' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '3' Literal.Number.Integer ')' Punctuation '\n ' Text.Whitespace '# do something...' Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'some_method' Name ' ' Text.Whitespace '10' Literal.Number.Integer ' ' Text.Whitespace '# x = 10, y = 1, z = 2, w = 3' Comment.Single '\n' Text.Whitespace 'some_method' Name ' ' Text.Whitespace '10' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace 'z' Literal.String.Symbol ':' Punctuation ' ' Text.Whitespace '10' Literal.Number.Integer ' ' Text.Whitespace '# x = 10, y = 1, z = 10, w = 3' Comment.Single '\n' Text.Whitespace 'some_method' Name ' ' Text.Whitespace '10' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace 'w' Literal.String.Symbol ':' Punctuation ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace 'y' Literal.String.Symbol ':' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace 'z' Literal.String.Symbol ':' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ' ' Text.Whitespace '# x = 10, y = 2, z = 3, w = 1' Comment.Single '\n\n' Text.Whitespace 'case' Keyword ' ' Text.Whitespace 'exp' Name '\n' Text.Whitespace 'when' Keyword ' ' Text.Whitespace 'value1' Name ',' Punctuation ' ' Text.Whitespace 'value2' Name '\n ' Text.Whitespace 'do_something' Name '\n' Text.Whitespace 'when' Keyword ' ' Text.Whitespace 'value3' Name '\n ' Text.Whitespace 'do_something_else' Name '\n' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace 'do_another_thing' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'case' Keyword ' ' Text.Whitespace 'var' Name '\n' Text.Whitespace 'when' Keyword ' ' Text.Whitespace 'String' Name '\n ' Text.Whitespace '# var : String' Comment.Single '\n ' Text.Whitespace 'do_something' Name '\n' Text.Whitespace 'when' Keyword ' ' Text.Whitespace 'Int32' Name '\n ' Text.Whitespace '# var : Int32' Comment.Single '\n ' Text.Whitespace 'do_something_else' Name '\n' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace '# here var is neither a String nor an Int32' Comment.Single '\n ' Text.Whitespace 'do_another_thing' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'case' Keyword ' ' Text.Whitespace 'num' Name '\n' Text.Whitespace 'when' Keyword ' ' Text.Whitespace '.' Operator 'even?' Name '\n ' Text.Whitespace 'do_something' Name '\n' Text.Whitespace 'when' Keyword ' ' Text.Whitespace '.' Operator 'odd?' Name '\n ' Text.Whitespace 'do_something_else' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'case' Keyword '\n' Text.Whitespace 'when' Keyword ' ' Text.Whitespace 'cond1' Name ',' Punctuation ' ' Text.Whitespace 'cond2' Name '\n ' Text.Whitespace 'do_something' Name '\n' Text.Whitespace 'when' Keyword ' ' Text.Whitespace 'cond3' Name '\n ' Text.Whitespace 'do_something_else' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'a' Name '.responds_to?' Keyword.Pseudo '(' Punctuation ':abs' Literal.String.Symbol ')' Punctuation ' ' Text.Whitespace '# => true' Comment.Single '\n' Text.Whitespace 'a' Name '.responds_to?' Keyword.Pseudo '(' Punctuation ':size' Literal.String.Symbol ')' Punctuation ' ' Text.Whitespace '# => false' Comment.Single '\n\n' Text.Whitespace 'foo_or_bar' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '/' Literal.String.Regex 'foo|bar' Literal.String.Regex '/' Literal.String.Regex '\n' Text.Whitespace 'heeello' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '/' Literal.String.Regex 'h(e+)llo' Literal.String.Regex '/' Literal.String.Regex '\n' Text.Whitespace 'integer' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '/' Literal.String.Regex '\\' Literal.String.Regex 'd+' Literal.String.Regex '/' Literal.String.Regex '\n\n' Text.Whitespace 'r' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '/' Literal.String.Regex 'foo' Literal.String.Regex '/imx' Literal.String.Regex '\n\n' Text.Whitespace 'slash' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '/' Literal.String.Regex '\\/' Literal.String.Regex '/' Literal.String.Regex '\n\n' Text.Whitespace 'r' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '%r(' Literal.String.Regex 'regex with slash: /' Literal.String.Regex ')' Literal.String.Regex '\n\n' Text.Whitespace '"' Literal.String.Double 'hello world' Literal.String.Double '"' Literal.String.Double '\n\n' Text.Whitespace '"' Literal.String.Double '\\"' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace '# double quote' Comment.Single '\n' Text.Whitespace '"' Literal.String.Double '\\\\' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace '# backslash' Comment.Single '\n' Text.Whitespace '"' Literal.String.Double '\\e' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace '# escape' Comment.Single '\n' Text.Whitespace '"' Literal.String.Double '\\f' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace '# form feed' Comment.Single '\n' Text.Whitespace '"' Literal.String.Double '\\n' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace '# newline' Comment.Single '\n' Text.Whitespace '"' Literal.String.Double '\\r' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace '# carriage return' Comment.Single '\n' Text.Whitespace '"' Literal.String.Double '\\t' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace '# tab' Comment.Single '\n' Text.Whitespace '"' Literal.String.Double '\\v' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace '# vertical tab' Comment.Single '\n\n' Text.Whitespace '"' Literal.String.Double '\\101' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace '# == "A"' Comment.Single '\n' Text.Whitespace '"' Literal.String.Double '\\123' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace '# == "S"' Comment.Single '\n' Text.Whitespace '"' Literal.String.Double '\\12' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace '# == "\\n"' Comment.Single '\n' Text.Whitespace '"' Literal.String.Double '\\1' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace '# string with one character with code point 1' Comment.Single '\n\n' Text.Whitespace '"' Literal.String.Double '\\u0041' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace '# == "A"' Comment.Single '\n\n' Text.Whitespace '"' Literal.String.Double '\\u{41}' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace '# == "A"' Comment.Single '\n' Text.Whitespace '"' Literal.String.Double '\\u{1F52E}' Literal.String.Escape '"' Literal.String.Double '\n\n' Text.Whitespace '"' Literal.String.Double 'hello\n world' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# same as "hello\\n world"' Comment.Single '\n\n' Text.Whitespace '"' Literal.String.Double 'hello ' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '\\' Punctuation '\n' Text.Whitespace '"' Literal.String.Double 'world, ' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '\\' Punctuation '\n' Text.Whitespace '"' Literal.String.Double 'no newlines' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# same as "hello world, no newlines"' Comment.Single '\n\n' Text.Whitespace '"' Literal.String.Double 'hello ' Literal.String.Double '\\' Literal.String.Double '\n world, ' Literal.String.Double '\\' Literal.String.Double '\n no newlines' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# same as "hello world, no newlines"' Comment.Single '\n\n' Text.Whitespace '%(' Literal.String.Other 'hello ' Literal.String.Other '(' Literal.String.Other '"world"' Literal.String.Other ')' Literal.String.Other ')' Literal.String.Other ' ' Text.Whitespace '# => "hello (\\"world\\")"' Comment.Single '\n' Text.Whitespace '%[' Literal.String.Other 'hello ' Literal.String.Other '[' Literal.String.Other '"world"' Literal.String.Other ']' Literal.String.Other ']' Literal.String.Other ' ' Text.Whitespace '# => "hello [\\"world\\"]"' Comment.Single '\n' Text.Whitespace '%{' Literal.String.Other 'hello ' Literal.String.Other '{' Literal.String.Other '"world"' Literal.String.Other '}' Literal.String.Other '}' Literal.String.Other ' ' Text.Whitespace '# => "hello {\\"world\\"}"' Comment.Single '\n' Text.Whitespace '%<' Literal.String.Other 'hello ' Literal.String.Other '<' Literal.String.Other '"world"' Literal.String.Other '>' Literal.String.Other '>' Literal.String.Other ' ' Text.Whitespace '# => "hello <\\"world\\">"' Comment.Single '\n' Text.Whitespace '%|' Literal.String.Other 'hello "world"' Literal.String.Other '|' Literal.String.Other ' ' Text.Whitespace '# => "hello \\"world\\""' Comment.Single '\n\n' Text.Whitespace '<<-' Operator '' Literal.String.Heredoc 'XML' Literal.String.Delimiter '' Literal.String.Heredoc '\n' Text.Whitespace '\n' Literal.String.Heredoc ' \n' Literal.String.Heredoc '\n' Literal.String.Heredoc 'XML\n' Literal.String.Delimiter '\n' Text.Whitespace '# Same as "Hello\\n world"' Comment.Single '\n' Text.Whitespace '<<-' Operator '' Literal.String.Heredoc 'STRING' Literal.String.Delimiter '' Literal.String.Heredoc '\n' Text.Whitespace ' Hello\n' Literal.String.Heredoc ' world\n' Literal.String.Heredoc ' STRING\n' Literal.String.Delimiter '\n' Text.Whitespace '# Same as " Hello\\n world"' Comment.Single '\n' Text.Whitespace '<<-' Operator '' Literal.String.Heredoc 'STRING' Literal.String.Delimiter '' Literal.String.Heredoc '\n' Text.Whitespace ' Hello\n' Literal.String.Heredoc ' world\n' Literal.String.Heredoc ' STRING\n' Literal.String.Delimiter '\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'b' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer '\n' Text.Whitespace '"' Literal.String.Double 'sum = ' Literal.String.Double '#{' Literal.String.Interpol 'a' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'b' Name '}' Literal.String.Interpol '"' Literal.String.Double ' ' Text.Whitespace '# "sum = 3"' Comment.Single '\n\n' Text.Whitespace '1.0' Literal.Number.Float ' ' Text.Whitespace '# Float64' Comment.Single '\n' Text.Whitespace '1.0_f32' Literal.Number.Float ' ' Text.Whitespace '# Float32' Comment.Single '\n' Text.Whitespace '1_f32' Literal.Number.Float ' ' Text.Whitespace '# Float32' Comment.Single '\n\n' Text.Whitespace '1e10' Literal.Number.Float ' ' Text.Whitespace '# Float64' Comment.Single '\n' Text.Whitespace '1.5e10' Literal.Number.Float ' ' Text.Whitespace '# Float64' Comment.Single '\n' Text.Whitespace '1.5e-7' Literal.Number.Float ' ' Text.Whitespace '# Float64' Comment.Single '\n\n' Text.Whitespace '+' Operator '1.3' Literal.Number.Float ' ' Text.Whitespace '# Float64' Comment.Single '\n' Text.Whitespace '-' Operator '0.5' Literal.Number.Float ' ' Text.Whitespace '# Float64' Comment.Single '\n\n' Text.Whitespace '1_000_000.111_111' Literal.Number.Float ' ' Text.Whitespace '# better than 1000000.111111' Comment.Single '\n\n' Text.Whitespace "'a'" Literal.String.Char '\n' Text.Whitespace "'z'" Literal.String.Char '\n' Text.Whitespace "'0'" Literal.String.Char '\n' Text.Whitespace "'_'" Literal.String.Char '\n' Text.Whitespace '"' Literal.String.Double 'ã\x81‚' Literal.String.Double '"' Literal.String.Double '\n\n' Text.Whitespace "'\\''" Literal.String.Char ' ' Text.Whitespace '# single quote' Comment.Single '\n' Text.Whitespace "'\\\\'" Literal.String.Char ' ' Text.Whitespace '# backslash' Comment.Single '\n' Text.Whitespace "'\\e'" Literal.String.Char ' ' Text.Whitespace '# escape' Comment.Single '\n' Text.Whitespace "'\\f'" Literal.String.Char ' ' Text.Whitespace '# form feed' Comment.Single '\n' Text.Whitespace "'\\n'" Literal.String.Char ' ' Text.Whitespace '# newline' Comment.Single '\n' Text.Whitespace "'\\r'" Literal.String.Char ' ' Text.Whitespace '# carriage return' Comment.Single '\n' Text.Whitespace "'\\t'" Literal.String.Char ' ' Text.Whitespace '# tab' Comment.Single '\n' Text.Whitespace "'\\v'" Literal.String.Char ' ' Text.Whitespace '# vertical tab' Comment.Single '\n\n' Text.Whitespace '"' Literal.String.Double '\\101' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace "# == 'A'" Comment.Single '\n' Text.Whitespace '"' Literal.String.Double '\\123' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace "# == 'S'" Comment.Single '\n' Text.Whitespace '"' Literal.String.Double '\\12' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace "# == '\\n'" Comment.Single '\n' Text.Whitespace '"' Literal.String.Double '\\1' Literal.String.Escape '"' Literal.String.Double ' ' Text.Whitespace '# code point 1' Comment.Single '\n\n' Text.Whitespace "'\\u0041'" Literal.String.Char ' ' Text.Whitespace "# == 'A'" Comment.Single '\n\n' Text.Whitespace "'\\u{41}'" Literal.String.Char ' ' Text.Whitespace "# == 'A'" Comment.Single '\n' Text.Whitespace "'\\u{1F52E}'" Literal.String.Char '\n\n' Text.Whitespace '{' Punctuation '1' Literal.Number.Integer ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '4' Literal.Number.Integer '}' Punctuation ' ' Text.Whitespace '# Hash(Int32, Int32)' Comment.Single '\n' Text.Whitespace '{' Punctuation '1' Literal.Number.Integer ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace "'a'" Literal.String.Char ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '3' Literal.Number.Integer '}' Punctuation ' ' Text.Whitespace '# Hash(Int32 | Char, Int32)' Comment.Single '\n\n' Text.Whitespace '{' Punctuation '}' Punctuation ' ' Text.Whitespace 'of' Keyword ' ' Text.Whitespace 'Int32' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Int32' Name ' ' Text.Whitespace '# same as Hash(Int32, Int32).new' Comment.Single '\n\n' Text.Whitespace '{' Punctuation 'key1' Literal.String.Symbol ':' Punctuation ' ' Text.Whitespace "'a'" Literal.String.Char ',' Punctuation ' ' Text.Whitespace 'key2' Literal.String.Symbol ':' Punctuation ' ' Text.Whitespace "'b'" Literal.String.Char '}' Punctuation ' ' Text.Whitespace '# Hash(Symbol, Char)' Comment.Single '\n\n' Text.Whitespace '{' Punctuation '"' Literal.String.Double 'key1' Literal.String.Double '"' Literal.String.Double ':' Punctuation ' ' Text.Whitespace "'a'" Literal.String.Char ',' Punctuation ' ' Text.Whitespace '"' Literal.String.Double 'key2' Literal.String.Double '"' Literal.String.Double ':' Punctuation ' ' Text.Whitespace "'b'" Literal.String.Char '}' Punctuation ' ' Text.Whitespace '# Hash(String, Char)' Comment.Single '\n\n' Text.Whitespace 'MyType' Name '{' Punctuation '"' Literal.String.Double 'foo' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '"' Literal.String.Double 'bar' Literal.String.Double '"' Literal.String.Double '}' Punctuation '\n\n' Text.Whitespace 'tmp' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'MyType' Name '.' Operator 'new' Name '\n' Text.Whitespace 'tmp' Name '[' Operator '"' Literal.String.Double 'foo' Literal.String.Double '"' Literal.String.Double ']' Operator ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'bar' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'tmp' Name '\n\n' Text.Whitespace 'tmp' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'MyType' Name '(' Punctuation 'typeof' Keyword.Pseudo '(' Punctuation '"' Literal.String.Double 'foo' Literal.String.Double '"' Literal.String.Double ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'typeof' Keyword.Pseudo '(' Punctuation '"' Literal.String.Double 'bar' Literal.String.Double '"' Literal.String.Double ')' Punctuation ')' Punctuation '.' Operator 'new' Name '\n' Text.Whitespace 'tmp' Name '[' Operator '"' Literal.String.Double 'foo' Literal.String.Double '"' Literal.String.Double ']' Operator ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'bar' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'tmp' Name '\n\n' Text.Whitespace 'MyType' Name '(' Punctuation 'String' Name ',' Punctuation ' ' Text.Whitespace 'String' Name ')' Punctuation '{' Punctuation '"' Literal.String.Double 'foo' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '"' Literal.String.Double 'bar' Literal.String.Double '"' Literal.String.Double '}' Punctuation '\n\n' Text.Whitespace ':hello' Literal.String.Symbol '\n' Text.Whitespace ':good_bye' Literal.String.Symbol '\n\n' Text.Whitespace '# With spaces and symbols' Comment.Single '\n' Text.Whitespace ':"' Literal.String.Symbol 'symbol with spaces' Literal.String.Symbol '"' Literal.String.Symbol '\n\n' Text.Whitespace '# Ending with question and exclamation marks' Comment.Single '\n' Text.Whitespace ':question?' Literal.String.Symbol '\n' Text.Whitespace ':exclamation!' Literal.String.Symbol '\n\n' Text.Whitespace '# For the operators' Comment.Single '\n' Text.Whitespace ':+' Literal.String.Symbol '\n' Text.Whitespace ':-' Literal.String.Symbol '\n' Text.Whitespace ':*' Literal.String.Symbol '\n' Text.Whitespace ':/' Literal.String.Symbol '\n' Text.Whitespace ':==' Literal.String.Symbol '\n' Text.Whitespace ':<' Literal.String.Symbol '\n' Text.Whitespace ':<=' Literal.String.Symbol '\n' Text.Whitespace ':>' Literal.String.Symbol '\n' Text.Whitespace ':>=' Literal.String.Symbol '\n' Text.Whitespace ':!' Literal.String.Symbol '\n' Text.Whitespace ':!=' Literal.String.Symbol '\n' Text.Whitespace ':=~' Literal.String.Symbol '\n' Text.Whitespace ':!~' Literal.String.Symbol '\n' Text.Whitespace ':&' Literal.String.Symbol '\n' Text.Whitespace ':|' Literal.String.Symbol '\n' Text.Whitespace ':^' Literal.String.Symbol '\n' Text.Whitespace ':~' Literal.String.Symbol '\n' Text.Whitespace ':**' Literal.String.Symbol '\n' Text.Whitespace ':>>' Literal.String.Symbol '\n' Text.Whitespace ':<<' Literal.String.Symbol '\n' Text.Whitespace ':%' Literal.String.Symbol '\n' Text.Whitespace ':[]' Literal.String.Symbol '\n' Text.Whitespace ':[]?' Literal.String.Symbol '\n' Text.Whitespace ':[]=' Literal.String.Symbol '\n' Text.Whitespace ':<=>' Literal.String.Symbol '\n' Text.Whitespace ':===' Literal.String.Symbol '\n\n' Text.Whitespace 'x' Name '..' Operator 'y' Name ' ' Text.Whitespace '# an inclusive range, in mathematics: [x, y]' Comment.Single '\n' Text.Whitespace 'x' Name '...' Operator 'y' Name ' ' Text.Whitespace '# an exclusive range, in mathematics: [x, y)' Comment.Single '\n\n' Text.Whitespace '# A proc without arguments' Comment.Single '\n' Text.Whitespace '-' Operator '>' Operator '{' Punctuation ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace '# Proc(Int32)' Comment.Single '\n\n' Text.Whitespace '# A proc with one argument' Comment.Single '\n' Text.Whitespace '-' Operator '>' Operator '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ')' Punctuation ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'x' Name '.' Operator 'to_s' Name ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace '# Proc(Int32, String)' Comment.Single '\n\n' Text.Whitespace '# A proc with two arguments:' Comment.Single '\n' Text.Whitespace '-' Operator '>' Operator '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ',' Punctuation ' ' Text.Whitespace 'y' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ')' Punctuation ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'y' Name ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace '# Proc(Int32, Int32, Int32)' Comment.Single '\n\n' Text.Whitespace 'Proc' Name '(' Punctuation 'Int32' Name ',' Punctuation ' ' Text.Whitespace 'String' Name ')' Punctuation '.' Operator 'new' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '|' Operator 'x' Name '|' Operator ' ' Text.Whitespace 'x' Name '.' Operator 'to_s' Name ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace '# Proc(Int32, String)' Comment.Single '\n\n' Text.Whitespace 'proc' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '-' Operator '>' Operator '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ',' Punctuation ' ' Text.Whitespace 'y' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ')' Punctuation ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'y' Name ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace 'proc' Name '.' Operator 'call' Name '(' Punctuation '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# => 3' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'one' Name.Function '\n ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'proc' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '-' Operator '>' Operator 'one' Name '\n' Text.Whitespace 'proc' Name '.' Operator 'call' Name ' ' Text.Whitespace '# => 1' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'plus_one' Name.Function '(' Punctuation 'x' Name ')' Punctuation '\n ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'proc' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '-' Operator '>' Operator 'plus_one' Name '(' Punctuation 'Int32' Name ')' Punctuation '\n' Text.Whitespace 'proc' Name '.' Operator 'call' Name '(' Punctuation '41' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# => 42' Comment.Single '\n\n' Text.Whitespace 'str' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'proc' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '-' Operator '>' Operator 'str' Name '.' Operator 'count' Name '(' Punctuation 'Char' Name ')' Punctuation '\n' Text.Whitespace 'proc' Name '.' Operator 'call' Name '(' Punctuation "'e'" Literal.String.Char ')' Punctuation ' ' Text.Whitespace '# => 1' Comment.Single '\n' Text.Whitespace 'proc' Name '.' Operator 'call' Name '(' Punctuation "'l'" Literal.String.Char ')' Punctuation ' ' Text.Whitespace '# => 2' Comment.Single '\n\n' Text.Whitespace 'tuple' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '{' Punctuation '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace "'x'" Literal.String.Char '}' Punctuation ' ' Text.Whitespace '# Tuple(Int32, String, Char)' Comment.Single '\n' Text.Whitespace 'tuple' Name '[' Operator '0' Literal.Number.Integer ']' Operator ' ' Text.Whitespace '# => 1 (Int32)' Comment.Single '\n' Text.Whitespace 'tuple' Name '[' Operator '1' Literal.Number.Integer ']' Operator ' ' Text.Whitespace '# => "hello" (String)' Comment.Single '\n' Text.Whitespace 'tuple' Name '[' Operator '2' Literal.Number.Integer ']' Operator ' ' Text.Whitespace "# => 'x' (Char)" Comment.Single '\n\n' Text.Whitespace '[' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ']' Operator ' ' Text.Whitespace '# Array(Int32)' Comment.Single '\n' Text.Whitespace '[' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace "'x'" Literal.String.Char ']' Operator ' ' Text.Whitespace '# Array(Int32 | String | Char)' Comment.Single '\n\n' Text.Whitespace '[' Operator ']' Operator ' ' Text.Whitespace 'of' Keyword ' ' Text.Whitespace 'Int32' Name ' ' Text.Whitespace '# same as Array(Int32).new' Comment.Single '\n\n' Text.Whitespace '%w(' Literal.String.Other 'one two three' Literal.String.Other ')' Literal.String.Other ' ' Text.Whitespace '# ["one", "two", "three"]' Comment.Single '\n\n' Text.Whitespace '%i(' Literal.String.Other 'one two three' Literal.String.Other ')' Literal.String.Other ' ' Text.Whitespace '# [:one, :two, :three]' Comment.Single '\n\n' Text.Whitespace 'MyType' Name '{' Punctuation '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer '}' Punctuation '\n\n' Text.Whitespace 'tmp' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'MyType' Name '.' Operator 'new' Name '\n' Text.Whitespace 'tmp' Name ' ' Text.Whitespace '<<' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'tmp' Name ' ' Text.Whitespace '<<' Operator ' ' Text.Whitespace '2' Literal.Number.Integer '\n' Text.Whitespace 'tmp' Name ' ' Text.Whitespace '<<' Operator ' ' Text.Whitespace '3' Literal.Number.Integer '\n' Text.Whitespace 'tmp' Name '\n\n' Text.Whitespace 'tmp' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'MyType' Name '(' Punctuation 'typeof' Keyword.Pseudo '(' Punctuation '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ')' Punctuation ')' Punctuation '.' Operator 'new' Name '\n' Text.Whitespace 'tmp' Name ' ' Text.Whitespace '<<' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'tmp' Name ' ' Text.Whitespace '<<' Operator ' ' Text.Whitespace '2' Literal.Number.Integer '\n' Text.Whitespace 'tmp' Name ' ' Text.Whitespace '<<' Operator ' ' Text.Whitespace '3' Literal.Number.Integer '\n' Text.Whitespace 'tmp' Name '\n\n' Text.Whitespace 'MyType' Name '(' Punctuation 'Int32' Name ' ' Text.Whitespace '|' Operator ' ' Text.Whitespace 'String' Name ')' Punctuation '{' Punctuation '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '"' Literal.String.Double 'foo' Literal.String.Double '"' Literal.String.Double '}' Punctuation '\n\n' Text.Whitespace 'nil' Keyword.Constant '\n\n' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '# Int32' Comment.Single '\n\n' Text.Whitespace '1_i8' Literal.Number.Integer ' ' Text.Whitespace '# Int8' Comment.Single '\n' Text.Whitespace '1_i16' Literal.Number.Integer ' ' Text.Whitespace '# Int16' Comment.Single '\n' Text.Whitespace '1_i32' Literal.Number.Integer ' ' Text.Whitespace '# Int32' Comment.Single '\n' Text.Whitespace '1_i64' Literal.Number.Integer ' ' Text.Whitespace '# Int64' Comment.Single '\n\n' Text.Whitespace '1_u8' Literal.Number.Integer ' ' Text.Whitespace '# UInt8' Comment.Single '\n' Text.Whitespace '1_u16' Literal.Number.Integer ' ' Text.Whitespace '# UInt16' Comment.Single '\n' Text.Whitespace '1_u32' Literal.Number.Integer ' ' Text.Whitespace '# UInt32' Comment.Single '\n' Text.Whitespace '1_u64' Literal.Number.Integer ' ' Text.Whitespace '# UInt64' Comment.Single '\n\n' Text.Whitespace '+' Operator '10' Literal.Number.Integer ' ' Text.Whitespace '# Int32' Comment.Single '\n' Text.Whitespace '-' Operator '20' Literal.Number.Integer ' ' Text.Whitespace '# Int32' Comment.Single '\n\n' Text.Whitespace '2147483648' Literal.Number.Integer ' ' Text.Whitespace '# Int64' Comment.Single '\n' Text.Whitespace '9223372036854775808' Literal.Number.Integer ' ' Text.Whitespace '# UInt64' Comment.Single '\n\n' Text.Whitespace '1_000_000' Literal.Number.Integer ' ' Text.Whitespace '# better than 1000000' Comment.Single '\n\n' Text.Whitespace '0b1101' Literal.Number.Bin ' ' Text.Whitespace '# == 13' Comment.Single '\n\n' Text.Whitespace '0o123' Literal.Number.Oct ' ' Text.Whitespace '# == 83' Comment.Single '\n\n' Text.Whitespace '0xFE012D' Literal.Number.Hex ' ' Text.Whitespace '# == 16646445' Comment.Single '\n' Text.Whitespace '0xfe012d' Literal.Number.Hex ' ' Text.Whitespace '# == 16646445' Comment.Single '\n\n' Text.Whitespace 'true' Keyword.Constant ' ' Text.Whitespace '# A Bool that is true' Comment.Single '\n' Text.Whitespace 'false' Keyword.Constant ' ' Text.Whitespace '# A Bool that is false' Comment.Single '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n\n' Text.Whitespace 'ptr' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'pointerof' Keyword.Pseudo '(' Punctuation 'a' Name ')' Punctuation '\n' Text.Whitespace 'ptr' Name '.' Operator 'value' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '# => 2' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Point' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'initialize' Name.Function '(' Punctuation '@x' Name.Variable.Instance ',' Punctuation ' ' Text.Whitespace '@y' Name.Variable.Instance ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'x' Name.Function '\n ' Text.Whitespace '@x' Name.Variable.Instance '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'x_ptr' Name.Function '\n ' Text.Whitespace 'pointerof' Keyword.Pseudo '(' Punctuation '@x' Name.Variable.Instance ')' Punctuation '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'point' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Point' Name '.' Operator 'new' Name ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer '\n\n' Text.Whitespace 'ptr' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'point' Name '.' Operator 'x_ptr' Name '\n' Text.Whitespace 'ptr' Name '.' Operator 'value' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '10' Literal.Number.Integer '\n\n' Text.Whitespace 'point' Name '.' Operator 'x' Name ' ' Text.Whitespace '# => 10' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'add' Name.Function '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Number' Name ',' Punctuation ' ' Text.Whitespace 'y' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Number' Name ')' Punctuation '\n ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'y' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# Ok' Comment.Single '\n' Text.Whitespace 'add' Name ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ' ' Text.Whitespace '# Ok' Comment.Single '\n\n' Text.Whitespace "# Error: no overload matches 'add' with types Bool, Bool" Comment.Single '\n' Text.Whitespace 'add' Name ' ' Text.Whitespace 'true' Keyword.Constant ',' Punctuation ' ' Text.Whitespace 'false' Keyword.Constant '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'add' Name.Function '(' Punctuation 'x' Name ',' Punctuation ' ' Text.Whitespace 'y' Name ')' Punctuation '\n ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'y' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'add' Name ' ' Text.Whitespace 'true' Keyword.Constant ',' Punctuation ' ' Text.Whitespace 'false' Keyword.Constant '\n\n' Text.Whitespace "# A class that has a + method but isn't a Number" Comment.Single '\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Six' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace '+' Name.Function '(' Punctuation 'other' Name ')' Punctuation '\n ' Text.Whitespace '6' Literal.Number.Integer ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'other' Name '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# add method without type restrictions' Comment.Single '\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'add' Name.Function '(' Punctuation 'x' Name ',' Punctuation ' ' Text.Whitespace 'y' Name ')' Punctuation '\n ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'y' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# OK' Comment.Single '\n' Text.Whitespace 'add' Name ' ' Text.Whitespace 'Six' Name '.' Operator 'new' Name ',' Punctuation ' ' Text.Whitespace '10' Literal.Number.Integer '\n\n' Text.Whitespace '# add method with type restrictions' Comment.Single '\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'restricted_add' Name.Function '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Number' Name ',' Punctuation ' ' Text.Whitespace 'y' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Number' Name ')' Punctuation '\n ' Text.Whitespace 'x' Name ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'y' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace "# Error: no overload matches 'restricted_add' with types Six, Int32" Comment.Single '\n' Text.Whitespace 'restricted_add' Name ' ' Text.Whitespace 'Six' Name '.' Operator 'new' Name ',' Punctuation ' ' Text.Whitespace '10' Literal.Number.Integer '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace '==' Name.Function '(' Punctuation 'other' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'self' Keyword ')' Punctuation '\n ' Text.Whitespace 'other' Name '.' Operator 'name' Name ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace 'name' Name '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace '==' Name.Function '(' Punctuation 'other' Name ')' Punctuation '\n ' Text.Whitespace 'false' Keyword.Constant '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'john' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'another_john' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'peter' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'Peter' Literal.String.Double '"' Literal.String.Double '\n\n' Text.Whitespace 'john' Name ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace 'another_john' Name ' ' Text.Whitespace '# => true' Comment.Single '\n' Text.Whitespace 'john' Name ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace 'peter' Name ' ' Text.Whitespace '# => false (names differ)' Comment.Single '\n' Text.Whitespace 'john' Name ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '# => false (because 1 is not a Person)' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'self' Name.Class '.' Operator 'compare' Name.Function '(' Punctuation 'p1' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'self' Keyword ',' Punctuation ' ' Text.Whitespace 'p2' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'self' Keyword ')' Punctuation '\n ' Text.Whitespace 'p1' Name '.' Operator 'name' Name ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace 'p2' Name '.' Operator 'name' Name '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'john' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'peter' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'Peter' Literal.String.Double '"' Literal.String.Double '\n\n' Text.Whitespace 'Person' Name '.' Operator 'compare' Name '(' Punctuation 'john' Name ',' Punctuation ' ' Text.Whitespace 'peter' Name ')' Punctuation ' ' Text.Whitespace '# OK' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ')' Punctuation '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '# OK' Comment.Single '\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# Error' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name '.' Operator 'class' Name ')' Punctuation '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace 'Int32' Name ' ' Text.Whitespace '# OK' Comment.Single '\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace 'String' Name ' ' Text.Whitespace '# Error' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name '.' Operator 'class' Name ')' Punctuation '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Got Int32' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'String' Name '.' Operator 'class' Name ')' Punctuation '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Got String' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace 'Int32' Name ' ' Text.Whitespace '# prints "Got Int32"' Comment.Single '\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace 'String' Name ' ' Text.Whitespace '# prints "Got String"' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '(' Punctuation '*' Operator 'args' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ')' Punctuation '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '(' Punctuation '*' Operator 'args' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'String' Name ')' Punctuation '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ' ' Text.Whitespace '# OK, invokes first overload' Comment.Single '\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace '"' Literal.String.Double 'a' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace '"' Literal.String.Double 'b' Literal.String.Double '"' Literal.String.Double ',' Punctuation ' ' Text.Whitespace '"' Literal.String.Double 'c' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# OK, invokes second overload' Comment.Single '\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# Error' Comment.Single '\n' Text.Whitespace 'foo' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '# Error' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '\n ' Text.Whitespace '# This is the empty-tuple case' Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'T' Name ')' Punctuation '\n ' Text.Whitespace 'T' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'foo' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '# => Int32' Comment.Single '\n' Text.Whitespace 'foo' Name '(' Punctuation '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double ')' Punctuation ' ' Text.Whitespace '# => String' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Array' Name '(' Punctuation 'T' Name ')' Punctuation ')' Punctuation '\n ' Text.Whitespace 'T' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'foo' Name '(' Punctuation '[' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ']' Operator ')' Punctuation ' ' Text.Whitespace '# => Int32' Comment.Single '\n' Text.Whitespace 'foo' Name '(' Punctuation '[' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '"' Literal.String.Double 'a' Literal.String.Double '"' Literal.String.Double ']' Operator ')' Punctuation ' ' Text.Whitespace '# => (Int32 | String)' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '(' Punctuation 'x' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'T' Name '.' Operator 'class' Name ')' Punctuation '\n ' Text.Whitespace 'Array' Name '(' Punctuation 'T' Name ')' Punctuation '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'foo' Name '(' Punctuation 'Int32' Name ')' Punctuation ' ' Text.Whitespace '# => Array(Int32)' Comment.Single '\n' Text.Whitespace 'foo' Name '(' Punctuation 'String' Name ')' Punctuation ' ' Text.Whitespace '# => Array(String)' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace '# Increases age by one' Comment.Single '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'become_older' Name.Function '\n ' Text.Whitespace '@age' Name.Variable.Instance ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace '# Increases age by the given number of years' Comment.Single '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'become_older' Name.Function '(' Punctuation 'years' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ')' Punctuation '\n ' Text.Whitespace '@age' Name.Variable.Instance ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace 'years' Name '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace '# Increases age by the given number of years, as a String' Comment.Single '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'become_older' Name.Function '(' Punctuation 'years' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'String' Name ')' Punctuation '\n ' Text.Whitespace '@age' Name.Variable.Instance ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace 'years' Name '.' Operator 'to_i' Name '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace '# Yields the current age of this person and increases' Comment.Single '\n ' Text.Whitespace '# its age by the value returned by the block' Comment.Single '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'become_older' Name.Function '\n ' Text.Whitespace '@age' Name.Variable.Instance ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '@age' Name.Variable.Instance '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'person' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'John' Literal.String.Double '"' Literal.String.Double '\n\n' Text.Whitespace 'person' Name '.' Operator 'become_older' Name '\n' Text.Whitespace 'person' Name '.' Operator 'age' Name ' ' Text.Whitespace '# => 1' Comment.Single '\n\n' Text.Whitespace 'person' Name '.' Operator 'become_older' Name ' ' Text.Whitespace '5' Literal.Number.Integer '\n' Text.Whitespace 'person' Name '.' Operator 'age' Name ' ' Text.Whitespace '# => 6' Comment.Single '\n\n' Text.Whitespace 'person' Name '.' Operator 'become_older' Name ' ' Text.Whitespace '"' Literal.String.Double '12' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'person' Name '.' Operator 'age' Name ' ' Text.Whitespace '# => 18' Comment.Single '\n\n' Text.Whitespace 'person' Name '.' Operator 'become_older' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'current_age' Name '|' Operator '\n ' Text.Whitespace 'current_age' Name ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace '20' Literal.Number.Integer ' ' Text.Whitespace '?' Operator ' ' Text.Whitespace '10' Literal.Number.Integer ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace '30' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'person' Name '.' Operator 'age' Name ' ' Text.Whitespace '# => 28' Comment.Single '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'a' Name '.is_a?' Keyword.Pseudo '(' Punctuation 'Int32' Name ')' Punctuation ' ' Text.Whitespace '# => true' Comment.Single '\n' Text.Whitespace 'a' Name '.is_a?' Keyword.Pseudo '(' Punctuation 'String' Name ')' Punctuation ' ' Text.Whitespace '# => false' Comment.Single '\n' Text.Whitespace 'a' Name '.is_a?' Keyword.Pseudo '(' Punctuation 'Number' Name ')' Punctuation ' ' Text.Whitespace '# => true' Comment.Single '\n' Text.Whitespace 'a' Name '.is_a?' Keyword.Pseudo '(' Punctuation 'Int32' Name ' ' Text.Whitespace '|' Operator ' ' Text.Whitespace 'String' Name ')' Punctuation ' ' Text.Whitespace '# => true' Comment.Single '\n\n' Text.Whitespace '# One for each thread' Comment.Single '\n' Text.Whitespace '@[' Operator 'ThreadLocal' Name.Decorator ']' Operator '\n' Text.Whitespace 'values' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '[' Operator ']' Operator ' ' Text.Whitespace 'of' Keyword ' ' Text.Whitespace 'Int32' Name '\n\n' Text.Whitespace '@[' Operator 'AlwaysInline' Name.Decorator ']' Operator '\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '\n ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '@[' Operator 'NoInline' Name.Decorator ']' Operator '\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '\n ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'lib' Keyword ' ' Text.Whitespace 'LibFoo' Name.Namespace '\n ' Text.Whitespace '@[' Operator 'CallConvention' Name.Decorator '(' Punctuation '"' Literal.String.Double 'X86_StdCall' Literal.String.Double '"' Literal.String.Double ')' Punctuation ']' Operator '\n ' Text.Whitespace 'fun' Keyword ' ' Text.Whitespace 'foo' Name.Function ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'sum' Name.Function '(' Punctuation '*' Operator 'elements' Name ')' Punctuation '\n ' Text.Whitespace 'total' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n ' Text.Whitespace 'elements' Name '.' Operator 'each' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'value' Name '|' Operator '\n ' Text.Whitespace 'total' Name ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace 'value' Name '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'total' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace '# elements is Tuple(Int32, Int32, Int32, Float64)' Comment.Single '\n' Text.Whitespace 'sum' Name ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '3' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '4.5' Literal.Number.Float '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'a' Name '.responds_to?' Keyword.Pseudo '(' Punctuation ':abs' Literal.String.Symbol ')' Punctuation '\n ' Text.Whitespace "# here a's type will be reduced to those responding to the 'abs' method" Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'some_condition' Name ' ' Text.Whitespace '?' Punctuation ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace '# a : Int32 | String' Comment.Single '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'a' Name '.responds_to?' Keyword.Pseudo '(' Punctuation ':abs' Literal.String.Symbol ')' Punctuation '\n ' Text.Whitespace "# here a will be Int32, since Int32#abs exists but String#abs doesn't" Comment.Single '\n' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace '# here a will be String' Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '@a' Name.Variable.Instance ')' Punctuation '.responds_to?' Keyword.Pseudo '(' Punctuation ':abs' Literal.String.Symbol ')' Punctuation '\n ' Text.Whitespace '# here a is guaranteed to respond to `abs`' Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'capture' Name.Function '(' Punctuation '&' Operator 'block' Name ')' Punctuation '\n ' Text.Whitespace 'block' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'invoke' Name.Function '(' Punctuation '&' Operator 'block' Name ')' Punctuation '\n ' Text.Whitespace 'block' Name '.' Operator 'call' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'proc' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'capture' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Hello' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace 'invoke' Name '(' Punctuation '&' Operator 'proc' Name ')' Punctuation ' ' Text.Whitespace '# prints "Hello"' Comment.Single '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'capture' Name.Function '(' Punctuation '&' Operator 'block' Name ')' Punctuation '\n ' Text.Whitespace 'block' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'twice' Name.Function '\n ' Text.Whitespace 'yield' Keyword '\n ' Text.Whitespace 'yield' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'proc' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'capture' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Hello' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace 'twice' Name ' ' Text.Whitespace '&' Operator 'proc' Name '\n\n' Text.Whitespace 'twice' Name ' ' Text.Whitespace '&' Operator '-' Operator '>' Operator '{' Punctuation ' ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Hello' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '}' Punctuation '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'say_hello' Name.Function '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Hello' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'twice' Name ' ' Text.Whitespace '&' Operator '-' Operator '>' Operator 'say_hello' Name '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'wrap_foo' Name.Function '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Before foo' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace 'foo' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'x' Name '|' Operator '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace 'x' Name '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'After foo' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'wrap_foo' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'i' Name '|' Operator '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'i' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '\n ' Text.Whitespace 'yield' Keyword ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'wrap_foo' Name.Function '(' Punctuation '&' Operator 'block' Name ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Int32' Name ' ' Text.Whitespace '-' Operator '>' Operator ' ' Text.Whitespace '_' Name ')' Punctuation '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Before foo' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace 'foo' Name '(' Punctuation '&' Operator 'block' Name ')' Punctuation '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'After foo' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'wrap_foo' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'i' Name '|' Operator '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'i' Name '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'foo_forward' Name ' ' Text.Whitespace 'do' Keyword ' ' Text.Whitespace '|' Operator 'i' Name '|' Operator '\n ' Text.Whitespace 'break' Keyword ' ' Text.Whitespace '# error' Comment.Single '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer '\n' Text.Whitespace 'while' Keyword ' ' Text.Whitespace '(' Punctuation 'a' Name ' ' Text.Whitespace '+=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace '20' Literal.Number.Integer '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'a' Name ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace '10' Literal.Number.Integer '\n ' Text.Whitespace "# goes to 'puts a'" Comment.Single '\n ' Text.Whitespace 'break' Keyword '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'a' Name ' ' Text.Whitespace '# => 10' Comment.Single '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace 'private' Keyword ' ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'say' Name.Function '(' Punctuation 'message' Name ')' Punctuation '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'message' Name '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'say_hello' Name.Function '\n ' Text.Whitespace 'say' Name ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# OK, no receiver' Comment.Single '\n ' Text.Whitespace 'self' Keyword '.' Operator 'say' Name ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# Error, self is a receiver' Comment.Single '\n\n ' Text.Whitespace 'other' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Person' Name '.' Operator 'new' Name ' ' Text.Whitespace '"' Literal.String.Double 'Other' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace 'other' Name '.' Operator 'say' Name ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# Error, other is a receiver' Comment.Single '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Employee' Name.Class ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'Person' Name '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'say_bye' Name.Function '\n ' Text.Whitespace 'say' Name ' ' Text.Whitespace '"' Literal.String.Double 'bye' Literal.String.Double '"' Literal.String.Double ' ' Text.Whitespace '# OK' Comment.Single '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'module' Keyword ' ' Text.Whitespace 'Namespace' Name.Namespace '\n ' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Foo' Name.Class '\n ' Text.Whitespace 'protected' Keyword ' ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'foo' Name.Function '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace '"' Literal.String.Double 'Hello' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Bar' Name.Class '\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'bar' Name.Function '\n ' Text.Whitespace '# Works, because Foo and Bar are under Namespace' Comment.Single '\n ' Text.Whitespace 'Foo' Name '.' Operator 'new' Name '.' Operator 'foo' Name '\n ' Text.Whitespace 'end' Keyword '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'Namespace' Name '::' Operator 'Bar' Name '.' Operator 'new' Name '.' Operator 'bar' Name '\n\n' Text.Whitespace 'class' Keyword ' ' Text.Whitespace 'Person' Name.Class '\n ' Text.Whitespace 'protected' Keyword ' ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'self' Name.Class '.' Operator 'say' Name.Function '(' Punctuation 'message' Name ')' Punctuation '\n ' Text.Whitespace 'puts' Name.Builtin ' ' Text.Whitespace 'message' Name '\n ' Text.Whitespace 'end' Keyword '\n\n ' Text.Whitespace 'def' Keyword ' ' Text.Whitespace 'say_hello' Name.Function '\n ' Text.Whitespace 'Person' Name '.' Operator 'say' Name ' ' Text.Whitespace '"' Literal.String.Double 'hello' Literal.String.Double '"' Literal.String.Double '\n ' Text.Whitespace 'end' Keyword '\n' Text.Whitespace 'end' Keyword '\n\n' Text.Whitespace 'buffer' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'uninitialized' Keyword.Pseudo ' ' Text.Whitespace 'UInt8' Name '[' Operator '256' Literal.Number.Integer ']' Operator '\n\n' Text.Whitespace 'foo' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'rand' Name.Builtin '(' Punctuation '5' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '>' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace '?' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'nil' Keyword.Constant '\n\n' Text.Whitespace 'foo' Name '.' Operator 'not_nil!' Name '.' Operator 'to_i' Name '\n' Text.Whitespace