'// -------------------------------------------------------------------------------------------------\n' Comment.Single '// Rick, a Rust intercal compiler. Save your souls!\n' Comment.Single '//\n' Comment.Single '// Copyright (c) 2015 Georg Brandl\n' Comment.Single '//\n' Comment.Single '// This program is free software; you can redistribute it and/or modify it under the terms of the\n' Comment.Single '// GNU General Public License as published by the Free Software Foundation; either version 2 of the\n' Comment.Single '// License, or (at your option) any later version.\n' Comment.Single '//\n' Comment.Single '// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without\n' Comment.Single '// even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n' Comment.Single '// General Public License for more details.\n' Comment.Single '//\n' Comment.Single '// You should have received a copy of the GNU General Public License along with this program;\n' Comment.Single '// if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\n' Comment.Single '// -------------------------------------------------------------------------------------------------\n' Comment.Single '\n' Text.Whitespace '/// Interprets INTERCAL source.\n' Literal.String.Doc '///\n' Literal.String.Doc '/// The evaluator is used when rick is called with `-i`, or when the compiler generates\n' Literal.String.Doc '/// the output while compiling (in the constant-output case).\n' Literal.String.Doc '\n' Text.Whitespace 'use' Keyword ' ' Text.Whitespace 'std' Name '::' Text 'fmt' Name ':' Text ':' Text '{' Punctuation ' ' Text.Whitespace 'Debug' Name ',' Punctuation ' ' Text.Whitespace 'Display' Name ' ' Text.Whitespace '}' Punctuation ';' Punctuation '\n' Text.Whitespace 'use' Keyword ' ' Text.Whitespace 'std' Name '::' Text 'io' Name '::' Text 'Write' Name ';' Punctuation '\n' Text.Whitespace 'use' Keyword ' ' Text.Whitespace 'std' Name '::' Text 'u16' Keyword.Type ';' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace 'use' Keyword ' ' Text.Whitespace 'err' Name ':' Text ':' Text '{' Punctuation ' ' Text.Whitespace 'Res' Name ',' Punctuation ' ' Text.Whitespace 'IE123' Name ',' Punctuation ' ' Text.Whitespace 'IE129' Name ',' Punctuation ' ' Text.Whitespace 'IE252' Name ',' Punctuation ' ' Text.Whitespace 'IE275' Name ',' Punctuation ' ' Text.Whitespace 'IE555' Name ',' Punctuation ' ' Text.Whitespace 'IE633' Name ',' Punctuation ' ' Text.Whitespace 'IE774' Name ',' Punctuation ' ' Text.Whitespace 'IE994' Name ' ' Text.Whitespace '}' Punctuation ';' Punctuation '\n' Text.Whitespace 'use' Keyword ' ' Text.Whitespace 'ast' Name ':' Text ':' Text '{' Punctuation ' ' Text.Whitespace 'self' Name.Builtin.Pseudo ',' Punctuation ' ' Text.Whitespace 'Program' Name ',' Punctuation ' ' Text.Whitespace 'Stmt' Name ',' Punctuation ' ' Text.Whitespace 'StmtBody' Name ',' Punctuation ' ' Text.Whitespace 'ComeFrom' Name ',' Punctuation ' ' Text.Whitespace 'Expr' Name ',' Punctuation ' ' Text.Whitespace 'Var' Name ',' Punctuation ' ' Text.Whitespace 'VType' Name ' ' Text.Whitespace '}' Punctuation ';' Punctuation '\n' Text.Whitespace 'use' Keyword ' ' Text.Whitespace 'stdops' Name ':' Text ':' Text '{' Punctuation ' ' Text.Whitespace 'Bind' Name ',' Punctuation ' ' Text.Whitespace 'Array' Name ',' Punctuation ' ' Text.Whitespace 'write_number' Name ',' Punctuation ' ' Text.Whitespace 'read_number' Name ',' Punctuation ' ' Text.Whitespace 'check_chance' Name ',' Punctuation ' ' Text.Whitespace 'check_ovf' Name ',' Punctuation ' ' Text.Whitespace 'pop_jumps' Name ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'get_random_seed' Name ',' Punctuation ' ' Text.Whitespace 'mingle' Name ',' Punctuation ' ' Text.Whitespace 'select' Name ',' Punctuation ' ' Text.Whitespace 'and_16' Name ',' Punctuation ' ' Text.Whitespace 'and_32' Name ',' Punctuation ' ' Text.Whitespace 'or_16' Name ',' Punctuation ' ' Text.Whitespace 'or_32' Name ',' Punctuation ' ' Text.Whitespace 'xor_16' Name ',' Punctuation ' ' Text.Whitespace 'xor_32' Name ' ' Text.Whitespace '}' Punctuation ';' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace '\n' Text.Whitespace '/// Represents a value (either 16-bit or 32-bit) at runtime.\n' Literal.String.Doc '#[' Comment.Preproc 'derive(Clone, PartialEq, Eq, Debug)' Comment.Preproc ']' Comment.Preproc '\n' Text.Whitespace 'pub' Keyword ' ' Text.Whitespace 'enum' Keyword ' ' Text 'Val' Name.Class ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'I16' Name '(' Punctuation 'u16' Keyword.Type ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'I32' Name '(' Punctuation 'u32' Keyword.Type ')' Punctuation ',' Punctuation '\n' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace 'impl' Keyword ' ' Text.Whitespace 'Val' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '/// Cast as a 16-bit value; returns an error if 32-bit and too big.\n' Literal.String.Doc ' ' Text.Whitespace 'pub' Keyword ' ' Text.Whitespace 'fn' Keyword ' ' Text 'as_u16' Name.Function '(' Punctuation '&' Operator 'self' Name.Builtin.Pseudo ')' Punctuation ' ' Text.Whitespace '->' Text ' ' Text 'Res' Name.Class '<' Operator 'u16' Keyword.Type '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace '*' Operator 'self' Name.Builtin.Pseudo ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Val' Name '::' Text 'I16' Name '(' Punctuation 'v' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'v' Name ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Val' Name '::' Text 'I32' Name '(' Punctuation 'v' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '>' Operator ' ' Text.Whitespace '(' Punctuation 'u16' Keyword.Type '::' Text 'MAX' Name ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'u32' Keyword.Type ')' Punctuation ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'return' Keyword ' ' Text.Whitespace 'IE275' Name '.' Punctuation 'err' Name '(' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'v' Name ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'u16' Keyword.Type ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace '/// Cast as a 32-bit value; always succeeds.\n' Literal.String.Doc ' ' Text.Whitespace 'pub' Keyword ' ' Text.Whitespace 'fn' Keyword ' ' Text 'as_u32' Name.Function '(' Punctuation '&' Operator 'self' Name.Builtin.Pseudo ')' Punctuation ' ' Text.Whitespace '->' Text ' ' Text 'u32' Keyword.Type ' ' Text '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace '*' Operator 'self' Name.Builtin.Pseudo ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Val' Name '::' Text 'I16' Name '(' Punctuation 'v' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'u32' Keyword.Type ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Val' Name '::' Text 'I32' Name '(' Punctuation 'v' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'v' Name '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace '/// Cast as an usize value; always succeeds.\n' Literal.String.Doc ' ' Text.Whitespace 'pub' Keyword ' ' Text.Whitespace 'fn' Keyword ' ' Text 'as_usize' Name.Function '(' Punctuation '&' Operator 'self' Name.Builtin.Pseudo ')' Punctuation ' ' Text.Whitespace '->' Text ' ' Text 'usize' Keyword.Type ' ' Text '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'usize' Keyword.Type '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace '/// Create from a 32-bit value; will select the smallest possible type.\n' Literal.String.Doc ' ' Text.Whitespace 'pub' Keyword ' ' Text.Whitespace 'fn' Keyword ' ' Text 'from_u32' Name.Function '(' Punctuation 'v' Name ':' Text ' ' Text 'u32' Keyword.Type ')' Punctuation ' ' Text.Whitespace '->' Text ' ' Text 'Val' Name.Class ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '&' Operator ' ' Text.Whitespace '0xFFFF' Literal.Number.Hex ' ' Text.Whitespace '=' Operator '=' Operator ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Val' Name '::' Text 'I16' Name '(' Punctuation 'v' Name ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'u16' Keyword.Type ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace 'else' Keyword ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Val' Name '::' Text 'I32' Name '(' Punctuation 'v' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace "/// The state of the interpreter's evaluator.\n" Literal.String.Doc 'pub' Keyword ' ' Text.Whitespace 'struct' Keyword ' ' Text 'Eval' Name.Class '<' Operator "'" Operator 'a' Name.Attribute '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '/// Program to execute.\n' Literal.String.Doc ' ' Text.Whitespace 'program' Name ':' Text ' ' Text '&' Keyword.Pseudo "'" Operator 'a' Name.Attribute ' ' Text 'Program' Name.Class ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '/// Stream to use for printing output.\n' Literal.String.Doc ' ' Text.Whitespace 'stdout' Name ':' Text ' ' Text '&' Keyword.Pseudo "'" Operator 'a' Name.Attribute ' ' Text 'mut' Name.Class ' ' Text.Whitespace 'Write' Name ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '/// Whether to print debugging output during execution.\n' Literal.String.Doc ' ' Text.Whitespace 'debug' Name ':' Text ' ' Text 'bool' Keyword.Type ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '/// Variable bindings for the four types of variables.\n' Literal.String.Doc ' ' Text.Whitespace 'spot' Name ':' Text ' ' Text 'Vec' Name.Builtin '<' Operator 'Bind' Name '<' Operator 'u16' Keyword.Type '>' Operator '>' Operator ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'twospot' Name ':' Text ' ' Text 'Vec' Name.Builtin '<' Operator 'Bind' Name '<' Operator 'u32' Keyword.Type '>' Operator '>' Operator ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'tail' Name ':' Text ' ' Text 'Vec' Name.Builtin '<' Operator 'Bind' Name '<' Operator 'Array' Name '<' Operator 'u16' Keyword.Type '>' Operator '>' Operator '>' Operator ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'hybrid' Name ':' Text ' ' Text 'Vec' Name.Builtin '<' Operator 'Bind' Name '<' Operator 'Array' Name '<' Operator 'u32' Keyword.Type '>' Operator '>' Operator '>' Operator ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '/// The infamous NEXT stack, capable of holding 80 elements.\n' Literal.String.Doc ' ' Text.Whitespace 'jumps' Name ':' Text ' ' Text 'Vec' Name.Builtin '<' Operator 'ast' Name '::' Text 'LogLine' Name '>' Operator ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '/// Abstain counter for each statement.\n' Literal.String.Doc ' ' Text.Whitespace 'abstain' Name ':' Text ' ' Text 'Vec' Name.Builtin '<' Operator 'u32' Keyword.Type '>' Operator ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '/// Binary I/O "tape" state.\n' Literal.String.Doc ' ' Text.Whitespace 'last_in' Name ':' Text ' ' Text 'u8' Keyword.Type ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'last_out' Name ':' Text ' ' Text 'u8' Keyword.Type ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '/// Random number generator state.\n' Literal.String.Doc ' ' Text.Whitespace 'rand_st' Name ':' Text ' ' Text 'u32' Keyword.Type ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '/// Counts the number of executed statements.\n' Literal.String.Doc ' ' Text.Whitespace 'stmt_ctr' Name ':' Text ' ' Text 'usize' Keyword.Type ',' Punctuation '\n' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace '/// Represents the control flow effect of an executed statement.\n' Literal.String.Doc 'enum' Keyword ' ' Text 'StmtRes' Name.Class ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '/// normal execution, next statement\n' Literal.String.Doc ' ' Text.Whitespace 'Next' Name ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '/// jump around, from DO ... NEXT\n' Literal.String.Doc ' ' Text.Whitespace 'Jump' Name '(' Punctuation 'usize' Keyword.Type ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '/// jump back, from RESUME\n' Literal.String.Doc ' ' Text.Whitespace 'Back' Name '(' Punctuation 'usize' Keyword.Type ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '/// start from the first statement, from TRY AGAIN\n' Literal.String.Doc ' ' Text.Whitespace 'FromTop' Name ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '/// end the program, from GIVE UP\n' Literal.String.Doc ' ' Text.Whitespace 'End' Name ',' Punctuation '\n' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace 'impl' Keyword '<' Operator "'" Operator 'a' Name.Attribute '>' Operator ' ' Text.Whitespace 'Eval' Name '<' Operator "'" Operator 'a' Name.Attribute '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '/// Construct a new evaluator.\n' Literal.String.Doc ' ' Text.Whitespace 'pub' Keyword ' ' Text.Whitespace 'fn' Keyword ' ' Text 'new' Name.Function '(' Punctuation 'program' Name ':' Text ' ' Text '&' Keyword.Pseudo "'" Operator 'a' Name.Attribute ' ' Text 'Program' Name.Class ',' Punctuation ' ' Text.Whitespace 'stdout' Name ':' Text ' ' Text '&' Keyword.Pseudo "'" Operator 'a' Name.Attribute ' ' Text 'mut' Name.Class ' ' Text.Whitespace 'Write' Name ',' Punctuation ' ' Text.Whitespace 'debug' Name ':' Text ' ' Text 'bool' Keyword.Type ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'random' Name ':' Text ' ' Text 'bool' Keyword.Type ')' Punctuation ' ' Text.Whitespace '->' Text ' ' Text 'Eval' Name.Class '<' Operator "'" Operator 'a' Name.Attribute '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'abs' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'program' Name '.' Punctuation 'stmts' Name '.' Punctuation 'iter' Name '(' Punctuation ')' Punctuation '.' Punctuation 'map' Name '(' Punctuation '|' Operator 'stmt' Name '|' Operator ' ' Text.Whitespace 'stmt' Name '.' Punctuation 'props' Name '.' Punctuation 'disabled' Name ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'u32' Keyword.Type ')' Punctuation '.' Punctuation 'collect' Name '(' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'nvars' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '(' Punctuation 'program' Name '.' Punctuation 'var_info' Name '.' Punctuation '0.' Literal.Number.Float 'len' Name '(' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'program' Name '.' Punctuation 'var_info' Name '.' Punctuation '1.' Literal.Number.Float 'len' Name '(' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'program' Name '.' Punctuation 'var_info' Name '.' Punctuation '2.' Literal.Number.Float 'len' Name '(' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'program' Name '.' Punctuation 'var_info' Name '.' Punctuation '3.' Literal.Number.Float 'len' Name '(' Punctuation ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Eval' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'program' Name ':' Text ' ' Text 'program' Name.Class ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'stdout' Name ':' Text ' ' Text 'stdout' Name.Class ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'debug' Name ':' Text ' ' Text 'debug' Name.Class ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'spot' Name ':' Text ' ' Text 'vec' Name.Class '!' Operator '[' Punctuation 'Bind' Name '::' Text 'new' Name '(' Punctuation '0' Literal.Number.Integer ')' Punctuation ';' Punctuation ' ' Text.Whitespace 'nvars' Name '.' Punctuation '0' Literal.Number.Integer ']' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'twospot' Name ':' Text ' ' Text 'vec' Name.Class '!' Operator '[' Punctuation 'Bind' Name '::' Text 'new' Name '(' Punctuation '0' Literal.Number.Integer ')' Punctuation ';' Punctuation ' ' Text.Whitespace 'nvars' Name '.' Punctuation '1' Literal.Number.Integer ']' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'tail' Name ':' Text ' ' Text 'vec' Name.Class '!' Operator '[' Punctuation 'Bind' Name '::' Text 'new' Name '(' Punctuation 'Array' Name '::' Text 'empty' Name '(' Punctuation ')' Punctuation ')' Punctuation ';' Punctuation ' ' Text.Whitespace 'nvars' Name '.' Punctuation '2' Literal.Number.Integer ']' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'hybrid' Name ':' Text ' ' Text 'vec' Name.Class '!' Operator '[' Punctuation 'Bind' Name '::' Text 'new' Name '(' Punctuation 'Array' Name '::' Text 'empty' Name '(' Punctuation ')' Punctuation ')' Punctuation ';' Punctuation ' ' Text.Whitespace 'nvars' Name '.' Punctuation '3' Literal.Number.Integer ']' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'jumps' Name ':' Text ' ' Text 'Vec' Name.Builtin '::' Text 'with_capacity' Name '(' Punctuation '80' Literal.Number.Integer ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'rand_st' Name ':' Text ' ' Text 'if' Name.Class ' ' Text.Whitespace 'random' Name ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'get_random_seed' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace 'else' Keyword ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ' ' Text.Whitespace '}' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'abstain' Name ':' Text ' ' Text 'abs' Name.Class ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'last_in' Name ':' Text ' ' Text '0' Literal.Number.Integer ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'last_out' Name ':' Text ' ' Text '0' Literal.Number.Integer ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'stmt_ctr' Name ':' Text ' ' Text '0' Literal.Number.Integer ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace '/// Interpret the program. Returns either the number of executed statements,\n' Literal.String.Doc ' ' Text.Whitespace '/// or an error (RtError).\n' Literal.String.Doc ' ' Text.Whitespace 'pub' Keyword ' ' Text.Whitespace 'fn' Keyword ' ' Text 'eval' Name.Function '(' Punctuation '&' Operator 'mut' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo ')' Punctuation ' ' Text.Whitespace '->' Text ' ' Text 'Res' Name.Class '<' Operator 'usize' Keyword.Type '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'mut' Keyword ' ' Text.Whitespace 'pctr' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer ';' Punctuation ' ' Text.Whitespace '// index of current statement\n' Comment.Single ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'program' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'program' Name '.' Punctuation 'clone' Name '(' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'nstmts' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'program' Name '.' Punctuation 'stmts' Name '.' Punctuation 'len' Name '(' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'loop' Keyword ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// check for falling off the end\n' Comment.Single ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'pctr' Name ' ' Text.Whitespace '>' Operator '=' Operator ' ' Text.Whitespace 'nstmts' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// if the last statement was a TRY AGAIN, falling off the end is fine\n' Comment.Single ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'StmtBody' Name '::' Text 'TryAgain' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'program' Name '.' Punctuation 'stmts' Name '[' Punctuation 'program' Name '.' Punctuation 'stmts' Name '.' Punctuation 'len' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '-' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ']' Punctuation '.' Punctuation 'body' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'break' Keyword ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'return' Keyword ' ' Text.Whitespace 'IE633' Name '.' Punctuation 'err' Name '(' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'stmt_ctr' Name ' ' Text.Whitespace '+' Operator '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'stmt' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '&' Operator 'program' Name '.' Punctuation 'stmts' Name '[' Punctuation 'pctr' Name ']' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// execute statement if not abstained\n' Comment.Single ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'abstain' Name '[' Punctuation 'pctr' Name ']' Punctuation ' ' Text.Whitespace '=' Operator '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// check execution chance\n' Comment.Single ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace '(' Punctuation 'passed' Name ',' Punctuation ' ' Text.Whitespace 'rand_st' Name ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'check_chance' Name '(' Punctuation 'stmt' Name '.' Punctuation 'props' Name '.' Punctuation 'chance' Name ',' Punctuation ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'rand_st' Name ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'rand_st' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'rand_st' Name ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'passed' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// try to eval this statement\n' Comment.Single ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'res' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_stmt' Name '(' Punctuation 'stmt' Name ')' Punctuation ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// on error, set the correct line number and bubble up\n' Comment.Single ' ' Text.Whitespace 'Err' Name.Builtin '(' Punctuation 'mut' Keyword ' ' Text.Whitespace 'err' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'err' Name '.' Punctuation 'set_line' Name '(' Punctuation 'stmt' Name '.' Punctuation 'props' Name '.' Punctuation 'onthewayto' Name ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// special treatment for NEXT\n' Comment.Single ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'StmtBody' Name '::' Text 'DoNext' Name '(' Punctuation 'n' Name ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'stmt' Name '.' Punctuation 'body' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'Some' Name.Builtin '(' Punctuation 'i' Name ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'program' Name '.' Punctuation 'labels' Name '.' Punctuation 'get' Name '(' Punctuation '&' Operator 'n' Name ')' Punctuation ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'err' Name '.' Punctuation 'set_line' Name '(' Punctuation 'program' Name '.' Punctuation 'stmts' Name '[' Punctuation '*' Operator 'i' Name ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'usize' Keyword.Type ']' Punctuation '.' Punctuation 'props' Name '.' Punctuation 'srcline' Name ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'return' Keyword ' ' Text.Whitespace 'Err' Name.Builtin '(' Punctuation 'err' Name ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'res' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'res' Name '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// handle control flow effects\n' Comment.Single ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace 'res' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtRes' Name '::' Text 'Next' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtRes' Name '::' Text 'Jump' Name '(' Punctuation 'n' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'jumps' Name '.' Punctuation 'push' Name '(' Punctuation 'pctr' Name ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'u16' Keyword.Type ')' Punctuation ';' Punctuation ' ' Text.Whitespace '// push the line with the NEXT\n' Comment.Single ' ' Text.Whitespace 'pctr' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'n' Name ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'continue' Keyword ';' Punctuation ' ' Text.Whitespace '// do not increment or check for COME FROMs\n' Comment.Single ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtRes' Name '::' Text 'Back' Name '(' Punctuation 'n' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'pctr' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'n' Name ';' Punctuation ' ' Text.Whitespace '// will be incremented below after COME FROM check\n' Comment.Single ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtRes' Name '::' Text 'FromTop' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'pctr' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer ';' Punctuation ' ' Text.Whitespace '// start from the beginning, do not push any stack\n' Comment.Single ' ' Text.Whitespace 'continue' Keyword ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtRes' Name '::' Text 'End' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'break' Keyword ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// if we are on the line with the compiler bug, error out\n' Comment.Single ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'pctr' Name ' ' Text.Whitespace '=' Operator '=' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'program' Name '.' Punctuation 'bugline' Name ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'usize' Keyword.Type ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'return' Keyword ' ' Text.Whitespace 'IE774' Name '.' Punctuation 'err_with' Name '(' Punctuation 'None' Name.Builtin ',' Punctuation ' ' Text.Whitespace 'stmt' Name '.' Punctuation 'props' Name '.' Punctuation 'onthewayto' Name ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// try to determine if we have to go to a COME FROM statement\n' Comment.Single ' ' Text.Whitespace '// (note: in general, program.stmts[pctr] != stmt)\n' Comment.Single ' ' Text.Whitespace '//\n' Comment.Single ' ' Text.Whitespace '// the static COME FROM is always a possibility\n' Comment.Single ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'mut' Keyword ' ' Text.Whitespace 'maybe_next' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'program' Name '.' Punctuation 'stmts' Name '[' Punctuation 'pctr' Name ']' Punctuation '.' Punctuation 'comefrom' Name ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// the complicated case: evaluate all computed-come-from expressions\n' Comment.Single ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'my_label' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'program' Name '.' Punctuation 'stmts' Name '[' Punctuation 'pctr' Name ']' Punctuation '.' Punctuation 'props' Name '.' Punctuation 'label' Name ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'program' Name '.' Punctuation 'uses_complex_comefrom' Name ' ' Text.Whitespace '&' Operator '&' Operator ' ' Text.Whitespace 'my_label' Name ' ' Text.Whitespace '>' Operator ' ' Text.Whitespace '0' Literal.Number.Integer ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace '(' Punctuation 'i' Name ',' Punctuation ' ' Text.Whitespace 'stmt' Name ')' Punctuation ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace 'program' Name '.' Punctuation 'stmts' Name '.' Punctuation 'iter' Name '(' Punctuation ')' Punctuation '.' Punctuation 'enumerate' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'StmtBody' Name '::' Text 'ComeFrom' Name '(' Punctuation 'ComeFrom' Name '::' Text 'Expr' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'e' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'stmt' Name '.' Punctuation 'body' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'e' Name ')' Punctuation ')' Punctuation '.' Punctuation 'as_u16' Name '(' Punctuation ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '=' Operator '=' Operator ' ' Text.Whitespace 'my_label' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// as soon as we have multiple candidates, we can bail out\n' Comment.Single ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'maybe_next' Name '.' Punctuation 'is_some' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'return' Keyword ' ' Text.Whitespace 'IE555' Name '.' Punctuation 'err' Name '(' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'maybe_next' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'Some' Name.Builtin '(' Punctuation 'i' Name ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'u16' Keyword.Type ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// check for COME FROMs from this line\n' Comment.Single ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'Some' Name.Builtin '(' Punctuation 'next' Name ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'maybe_next' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'next' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'next' Name ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'usize' Keyword.Type ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// check for abstained COME FROM\n' Comment.Single ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'abstain' Name '[' Punctuation 'next' Name ']' Punctuation ' ' Text.Whitespace '=' Operator '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// the COME FROM can also have a % chance\n' Comment.Single ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace '(' Punctuation 'passed' Name ',' Punctuation ' ' Text.Whitespace 'rand_st' Name ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'check_chance' Name '(' Punctuation 'program' Name '.' Punctuation 'stmts' Name '[' Punctuation 'next' Name ']' Punctuation '.' Punctuation 'props' Name '.' Punctuation 'chance' Name ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'rand_st' Name ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'rand_st' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'rand_st' Name ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'passed' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'pctr' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'next' Name ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'continue' Keyword ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// no COME FROM, normal execution\n' Comment.Single ' ' Text.Whitespace 'pctr' Name ' ' Text.Whitespace '+' Operator '=' Operator ' ' Text.Whitespace '1' Literal.Number.Integer ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'stmt_ctr' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace '/// Interpret a single statement.\n' Literal.String.Doc ' ' Text.Whitespace 'fn' Keyword ' ' Text 'eval_stmt' Name.Function '(' Punctuation '&' Operator 'mut' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo ',' Punctuation ' ' Text.Whitespace 'stmt' Name ':' Text ' ' Text '&' Keyword.Pseudo 'Stmt' Name.Class ')' Punctuation ' ' Text.Whitespace '->' Text ' ' Text 'Res' Name.Class '<' Operator 'StmtRes' Name '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'debug' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'println!' Name.Function.Magic '(' Punctuation '"' Literal.String '\\n' Literal.String.Escape 'Executing Stmt #{} (state before following)' Literal.String '"' Literal.String ',' Punctuation ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'stmt_ctr' Name ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'dump_state' Name '(' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'println!' Name.Function.Magic '(' Punctuation '"' Literal.String '{}' Literal.String '"' Literal.String ',' Punctuation ' ' Text.Whitespace 'stmt' Name ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace 'stmt' Name '.' Punctuation 'body' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtBody' Name '::' Text 'Calc' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'var' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'expr' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'val' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'expr' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'assign' Name '(' Punctuation 'var' Name ',' Punctuation ' ' Text.Whitespace 'val' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'StmtRes' Name '::' Text 'Next' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtBody' Name '::' Text 'Dim' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'var' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'exprs' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'array_dim' Name '(' Punctuation 'var' Name ',' Punctuation ' ' Text.Whitespace 'exprs' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'StmtRes' Name '::' Text 'Next' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtBody' Name '::' Text 'DoNext' Name '(' Punctuation 'n' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'program' Name '.' Punctuation 'labels' Name '.' Punctuation 'get' Name '(' Punctuation '&' Operator 'n' Name ')' Punctuation ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// too many jumps on stack already?\n' Comment.Single ' ' Text.Whitespace 'Some' Name.Builtin '(' Punctuation '_' Name ')' Punctuation ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'jumps' Name '.' Punctuation 'len' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '>' Operator '=' Operator ' ' Text.Whitespace '80' Literal.Number.Integer ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'IE123' Name '.' Punctuation 'err' Name '(' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Some' Name.Builtin '(' Punctuation 'i' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'StmtRes' Name '::' Text 'Jump' Name '(' Punctuation '*' Operator 'i' Name ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'usize' Keyword.Type ')' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'None' Name.Builtin ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'IE129' Name '.' Punctuation 'err' Name '(' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtBody' Name '::' Text 'ComeFrom' Name '(' Punctuation '_' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// nothing to do here at runtime\n' Comment.Single ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'StmtRes' Name '::' Text 'Next' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtBody' Name '::' Text 'Resume' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'expr' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'n' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'expr' Name ')' Punctuation ')' Punctuation '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// this expect() is safe: if the third arg is true, there will\n' Comment.Single ' ' Text.Whitespace '// be no Ok(None) returns\n' Comment.Single ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'next' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'pop_jumps' Name '(' Punctuation '&' Operator 'mut' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'jumps' Name ',' Punctuation ' ' Text.Whitespace 'n' Name ',' Punctuation ' ' Text.Whitespace 'true' Keyword.Constant ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '.' Punctuation 'expect' Name '(' Punctuation '"' Literal.String 'https://xkcd.com/378/ ?!' Literal.String '"' Literal.String ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'StmtRes' Name '::' Text 'Back' Name '(' Punctuation 'next' Name ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'usize' Keyword.Type ')' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtBody' Name '::' Text 'Forget' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'expr' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'n' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'expr' Name ')' Punctuation ')' Punctuation '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'pop_jumps' Name '(' Punctuation '&' Operator 'mut' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'jumps' Name ',' Punctuation ' ' Text.Whitespace 'n' Name ',' Punctuation ' ' Text.Whitespace 'false' Keyword.Constant ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'StmtRes' Name '::' Text 'Next' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtBody' Name '::' Text 'Ignore' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'vars' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace 'var' Name ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace 'vars' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'set_rw' Name '(' Punctuation 'var' Name ',' Punctuation ' ' Text.Whitespace 'false' Keyword.Constant ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'StmtRes' Name '::' Text 'Next' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtBody' Name '::' Text 'Remember' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'vars' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace 'var' Name ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace 'vars' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'set_rw' Name '(' Punctuation 'var' Name ',' Punctuation ' ' Text.Whitespace 'true' Keyword.Constant ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'StmtRes' Name '::' Text 'Next' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtBody' Name '::' Text 'Stash' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'vars' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace 'var' Name ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace 'vars' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'stash' Name '(' Punctuation 'var' Name ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'StmtRes' Name '::' Text 'Next' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtBody' Name '::' Text 'Retrieve' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'vars' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace 'var' Name ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace 'vars' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'retrieve' Name '(' Punctuation 'var' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'StmtRes' Name '::' Text 'Next' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtBody' Name '::' Text 'Abstain' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'expr' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'whats' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'f' Name ':' Text ' ' Text 'Box' Name.Builtin '<' Operator 'Fn' Name.Builtin '(' Punctuation 'u32' Keyword.Type ')' Punctuation ' ' Text.Whitespace '->' Text ' ' Text 'u32' Keyword.Type '>' Operator ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'Some' Name.Builtin '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'e' Name ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '*' Operator 'expr' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'n' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'e' Name ')' Punctuation ')' Punctuation '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'box' Keyword ' ' Text.Whitespace 'move' Keyword ' ' Text.Whitespace '|' Operator 'v' Name ':' Text ' ' Text 'u32' Keyword.Type '|' Operator ' ' Text.Whitespace 'v' Name '.' Punctuation 'saturating_add' Name '(' Punctuation 'n' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace 'else' Keyword ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'box' Keyword ' ' Text.Whitespace '|' Operator '_' Name '|' Operator ' ' Text.Whitespace '1' Literal.Number.Integer '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace 'what' Name ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace 'whats' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'abstain' Name '(' Punctuation 'what' Name ',' Punctuation ' ' Text.Whitespace '&' Operator '*' Operator 'f' Name ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'StmtRes' Name '::' Text 'Next' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtBody' Name '::' Text 'Reinstate' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'whats' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace 'what' Name ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace 'whats' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'abstain' Name '(' Punctuation 'what' Name ',' Punctuation ' ' Text.Whitespace '&' Operator '|' Operator 'v' Name ':' Text ' ' Text 'u32' Keyword.Type '|' Operator ' ' Text.Whitespace 'v' Name '.' Punctuation 'saturating_sub' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'StmtRes' Name '::' Text 'Next' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtBody' Name '::' Text 'ReadOut' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'vars' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace 'var' Name ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace 'vars' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace '*' Operator 'var' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// read out whole array\n' Comment.Single ' ' Text.Whitespace 'Expr' Name '::' Text 'Var' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'var' Name ')' Punctuation ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'var' Name '.' Punctuation 'is_dim' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'array_readout' Name '(' Punctuation 'var' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// read out single var or array element\n' Comment.Single ' ' Text.Whitespace 'Expr' Name '::' Text 'Var' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'var' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'varval' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'lookup' Name '(' Punctuation 'var' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'write_number' Name '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'stdout' Name ',' Punctuation ' ' Text.Whitespace 'varval' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// read out constant\n' Comment.Single ' ' Text.Whitespace 'Expr' Name '::' Text 'Num' Name '(' Punctuation '_' Name ',' Punctuation ' ' Text.Whitespace 'v' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'write_number' Name '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'stdout' Name ',' Punctuation ' ' Text.Whitespace 'v' Name ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// others will not be generated\n' Comment.Single ' ' Text.Whitespace '_' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'return' Keyword ' ' Text.Whitespace 'IE994' Name '.' Punctuation 'err' Name '(' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'StmtRes' Name '::' Text 'Next' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtBody' Name '::' Text 'WriteIn' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'vars' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace 'var' Name ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace 'vars' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'var' Name '.' Punctuation 'is_dim' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// write in whole array\n' Comment.Single ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'array_writein' Name '(' Punctuation 'var' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace 'else' Keyword ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// write in single var or array element\n' Comment.Single ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'n' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'read_number' Name '(' Punctuation '0' Literal.Number.Integer ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'assign' Name '(' Punctuation 'var' Name ',' Punctuation ' ' Text.Whitespace 'Val' Name '::' Text 'from_u32' Name '(' Punctuation 'n' Name ')' Punctuation ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'StmtRes' Name '::' Text 'Next' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// this one is only generated by the constant-program optimizer\n' Comment.Single ' ' Text.Whitespace 'StmtBody' Name '::' Text 'Print' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 's' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'Err' Name.Builtin '(' Punctuation '_' Name ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'stdout' Name '.' Punctuation 'write' Name '(' Punctuation '&' Operator 's' Name ')' Punctuation ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'return' Keyword ' ' Text.Whitespace 'IE252' Name '.' Punctuation 'err' Name '(' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'StmtRes' Name '::' Text 'Next' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtBody' Name '::' Text 'TryAgain' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'StmtRes' Name '::' Text 'FromTop' Name ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtBody' Name '::' Text 'GiveUp' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'StmtRes' Name '::' Text 'End' Name ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'StmtBody' Name '::' Text 'Error' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'e' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Err' Name.Builtin '(' Punctuation '(' Punctuation '*' Operator 'e' Name ')' Punctuation '.' Punctuation 'clone' Name '(' Punctuation ')' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace '/// Evaluate an expression to a value.\n' Literal.String.Doc ' ' Text.Whitespace 'fn' Keyword ' ' Text 'eval_expr' Name.Function '(' Punctuation '&' Operator 'self' Name.Builtin.Pseudo ',' Punctuation ' ' Text.Whitespace 'expr' Name ':' Text ' ' Text '&' Keyword.Pseudo 'Expr' Name.Class ')' Punctuation ' ' Text.Whitespace '->' Text ' ' Text 'Res' Name.Class '<' Operator 'Val' Name '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace '*' Operator 'expr' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Expr' Name '::' Text 'Num' Name '(' Punctuation 'vtype' Name ',' Punctuation ' ' Text.Whitespace 'v' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace 'vtype' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'VType' Name '::' Text 'I16' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I16' Name '(' Punctuation 'v' Name ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'u16' Keyword.Type ')' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'VType' Name '::' Text 'I32' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I32' Name '(' Punctuation 'v' Name ')' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Expr' Name '::' Text 'Var' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'var' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'lookup' Name '(' Punctuation 'var' Name ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Expr' Name '::' Text 'Mingle' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'vx' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'wx' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'vx' Name ')' Punctuation ')' Punctuation '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'w' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'wx' Name ')' Punctuation ')' Punctuation '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'check_ovf' Name '(' Punctuation 'v' Name ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'w' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'check_ovf' Name '(' Punctuation 'w' Name ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I32' Name '(' Punctuation 'mingle' Name '(' Punctuation 'v' Name ',' Punctuation ' ' Text.Whitespace 'w' Name ')' Punctuation ')' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Expr' Name '::' Text 'Select' Name '(' Punctuation 'vtype' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'vx' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'wx' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'vx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'w' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'wx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'vtype' Name ' ' Text.Whitespace '=' Operator '=' Operator ' ' Text.Whitespace 'VType' Name '::' Text 'I16' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I16' Name '(' Punctuation 'select' Name '(' Punctuation 'v' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'w' Name '.' Punctuation 'as_u16' Name '(' Punctuation ')' Punctuation ')' Punctuation ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'u32' Keyword.Type ')' Punctuation ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'u16' Keyword.Type ')' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace 'else' Keyword ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I32' Name '(' Punctuation 'select' Name '(' Punctuation 'v' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'w' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Expr' Name '::' Text 'And' Name '(' Punctuation 'vtype' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'vx' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'vx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace 'vtype' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'VType' Name '::' Text 'I16' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I16' Name '(' Punctuation 'and_16' Name '(' Punctuation 'try' Keyword.Reserved '!' Operator '(' Punctuation 'v' Name '.' Punctuation 'as_u16' Name '(' Punctuation ')' Punctuation ')' Punctuation ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'u32' Keyword.Type ')' Punctuation ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'u16' Keyword.Type ')' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'VType' Name '::' Text 'I32' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I32' Name '(' Punctuation 'and_32' Name '(' Punctuation 'v' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Expr' Name '::' Text 'Or' Name '(' Punctuation 'vtype' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'vx' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'vx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace 'vtype' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'VType' Name '::' Text 'I16' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I16' Name '(' Punctuation 'or_16' Name '(' Punctuation 'try' Keyword.Reserved '!' Operator '(' Punctuation 'v' Name '.' Punctuation 'as_u16' Name '(' Punctuation ')' Punctuation ')' Punctuation ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'u32' Keyword.Type ')' Punctuation ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'u16' Keyword.Type ')' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'VType' Name '::' Text 'I32' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I32' Name '(' Punctuation 'or_32' Name '(' Punctuation 'v' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Expr' Name '::' Text 'Xor' Name '(' Punctuation 'vtype' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'vx' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'vx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace 'vtype' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'VType' Name '::' Text 'I16' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I16' Name '(' Punctuation 'xor_16' Name '(' Punctuation 'try' Keyword.Reserved '!' Operator '(' Punctuation 'v' Name '.' Punctuation 'as_u16' Name '(' Punctuation ')' Punctuation ')' Punctuation ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'u32' Keyword.Type ')' Punctuation ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'u16' Keyword.Type ')' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'VType' Name '::' Text 'I32' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I32' Name '(' Punctuation 'xor_32' Name '(' Punctuation 'v' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Expr' Name '::' Text 'RsNot' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'vx' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'vx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I32' Name '(' Punctuation '!' Operator 'v' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Expr' Name '::' Text 'RsAnd' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'vx' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'wx' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'vx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'w' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'wx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I32' Name '(' Punctuation 'v' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '&' Operator ' ' Text.Whitespace 'w' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Expr' Name '::' Text 'RsOr' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'vx' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'wx' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'vx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'w' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'wx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I32' Name '(' Punctuation 'v' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '|' Operator ' ' Text.Whitespace 'w' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Expr' Name '::' Text 'RsXor' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'vx' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'wx' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'vx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'w' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'wx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I32' Name '(' Punctuation 'v' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '^' Operator ' ' Text.Whitespace 'w' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Expr' Name '::' Text 'RsRshift' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'vx' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'wx' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'vx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'w' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'wx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I32' Name '(' Punctuation 'v' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '>' Operator '>' Operator ' ' Text.Whitespace 'w' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Expr' Name '::' Text 'RsLshift' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'vx' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'wx' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'vx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'w' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'wx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I32' Name '(' Punctuation 'v' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '<' Operator '<' Operator ' ' Text.Whitespace 'w' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '// Expr::RsEqual(ref vx, ref wx) => {\n' Comment.Single ' ' Text.Whitespace '// let v = try!(self.eval_expr(vx));\n' Comment.Single ' ' Text.Whitespace '// let w = try!(self.eval_expr(wx));\n' Comment.Single ' ' Text.Whitespace '// Ok(Val::I32((v.as_u32() == w.as_u32()) as u32))\n' Comment.Single ' ' Text.Whitespace '// }\n' Comment.Single ' ' Text.Whitespace 'Expr' Name '::' Text 'RsNotEqual' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'vx' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'wx' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'vx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'w' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'wx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I32' Name '(' Punctuation '(' Punctuation 'v' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '!' Operator '=' Operator ' ' Text.Whitespace 'w' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ')' Punctuation ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'u32' Keyword.Type ')' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Expr' Name '::' Text 'RsPlus' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'vx' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'wx' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'vx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'w' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'wx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I32' Name '(' Punctuation 'v' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'w' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Expr' Name '::' Text 'RsMinus' Name '(' Punctuation 'ref' Keyword ' ' Text.Whitespace 'vx' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'wx' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'v' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'vx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'w' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'wx' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I32' Name '(' Punctuation 'v' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '-' Operator ' ' Text.Whitespace 'w' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace '#[' Comment.Preproc 'inline' Comment.Preproc ']' Comment.Preproc '\n' Text.Whitespace ' ' Text.Whitespace 'fn' Keyword ' ' Text 'eval_subs' Name.Function '(' Punctuation '&' Operator 'self' Name.Builtin.Pseudo ',' Punctuation ' ' Text.Whitespace 'subs' Name ':' Text ' ' Text '&' Keyword.Pseudo 'Vec' Name.Builtin '<' Operator 'Expr' Name '>' Operator ')' Punctuation ' ' Text.Whitespace '->' Text ' ' Text 'Res' Name.Class '<' Operator 'Vec' Name.Builtin '<' Operator 'usize' Keyword.Type '>' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'subs' Name '.' Punctuation 'iter' Name '(' Punctuation ')' Punctuation '.' Punctuation 'map' Name '(' Punctuation '|' Operator 'v' Name '|' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_expr' Name '(' Punctuation 'v' Name ')' Punctuation '.' Punctuation 'map' Name '(' Punctuation '|' Operator 'w' Name '|' Operator ' ' Text.Whitespace 'w' Name '.' Punctuation 'as_usize' Name '(' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation '.' Punctuation 'collect' Name '(' Punctuation ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace '/// Dimension an array.\n' Literal.String.Doc ' ' Text.Whitespace 'fn' Keyword ' ' Text 'array_dim' Name.Function '(' Punctuation '&' Operator 'mut' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo ',' Punctuation ' ' Text.Whitespace 'var' Name ':' Text ' ' Text '&' Keyword.Pseudo 'Var' Name.Class ',' Punctuation ' ' Text.Whitespace 'dims' Name ':' Text ' ' Text '&' Keyword.Pseudo 'Vec' Name.Builtin '<' Operator 'Expr' Name '>' Operator ')' Punctuation ' ' Text.Whitespace '->' Text ' ' Text 'Res' Name.Class '<' Operator '(' Punctuation ')' Punctuation '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'dims' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_subs' Name '(' Punctuation 'dims' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace '*' Operator 'var' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'A16' Name '(' Punctuation 'n' Name ',' Punctuation ' ' Text.Whitespace '_' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'tail' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'dimension' Name '(' Punctuation 'dims' Name ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'A32' Name '(' Punctuation 'n' Name ',' Punctuation ' ' Text.Whitespace '_' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'hybrid' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'dimension' Name '(' Punctuation 'dims' Name ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '_' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'return' Keyword ' ' Text.Whitespace 'IE994' Name '.' Punctuation 'err' Name '(' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace '/// Assign to a variable.\n' Literal.String.Doc ' ' Text.Whitespace 'fn' Keyword ' ' Text 'assign' Name.Function '(' Punctuation '&' Operator 'mut' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo ',' Punctuation ' ' Text.Whitespace 'var' Name ':' Text ' ' Text '&' Keyword.Pseudo 'Var' Name.Class ',' Punctuation ' ' Text.Whitespace 'val' Name ':' Text ' ' Text 'Val' Name.Class ')' Punctuation ' ' Text.Whitespace '->' Text ' ' Text 'Res' Name.Class '<' Operator '(' Punctuation ')' Punctuation '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace '*' Operator 'var' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'I16' Name '(' Punctuation 'n' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'spot' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'assign' Name '(' Punctuation 'try' Keyword.Reserved '!' Operator '(' Punctuation 'val' Name '.' Punctuation 'as_u16' Name '(' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'I32' Name '(' Punctuation 'n' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'twospot' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'assign' Name '(' Punctuation 'val' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ')' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'A16' Name '(' Punctuation 'n' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'subs' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'subs' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_subs' Name '(' Punctuation 'subs' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'tail' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'set_md' Name '(' Punctuation 'subs' Name ',' Punctuation ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'val' Name '.' Punctuation 'as_u16' Name '(' Punctuation ')' Punctuation ')' Punctuation ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'A32' Name '(' Punctuation 'n' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'subs' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'subs' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_subs' Name '(' Punctuation 'subs' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'hybrid' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'set_md' Name '(' Punctuation 'subs' Name ',' Punctuation ' ' Text.Whitespace 'val' Name '.' Punctuation 'as_u32' Name '(' Punctuation ')' Punctuation ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace '/// Look up the value of a variable.\n' Literal.String.Doc ' ' Text.Whitespace 'fn' Keyword ' ' Text 'lookup' Name.Function '(' Punctuation '&' Operator 'self' Name.Builtin.Pseudo ',' Punctuation ' ' Text.Whitespace 'var' Name ':' Text ' ' Text '&' Keyword.Pseudo 'Var' Name.Class ')' Punctuation ' ' Text.Whitespace '->' Text ' ' Text 'Res' Name.Class '<' Operator 'Val' Name '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace '*' Operator 'var' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'I16' Name '(' Punctuation 'n' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I16' Name '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'spot' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'val' Name ')' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'I32' Name '(' Punctuation 'n' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'Ok' Name.Builtin '(' Punctuation 'Val' Name '::' Text 'I32' Name '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'twospot' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'val' Name ')' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'A16' Name '(' Punctuation 'n' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'subs' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'subs' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_subs' Name '(' Punctuation 'subs' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'tail' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'get_md' Name '(' Punctuation 'subs' Name ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation '.' Punctuation 'map' Name '(' Punctuation 'Val' Name '::' Text 'I16' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'A32' Name '(' Punctuation 'n' Name ',' Punctuation ' ' Text.Whitespace 'ref' Keyword ' ' Text.Whitespace 'subs' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'subs' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'try' Keyword.Reserved '!' Operator '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'eval_subs' Name '(' Punctuation 'subs' Name ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'hybrid' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'get_md' Name '(' Punctuation 'subs' Name ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation '.' Punctuation 'map' Name '(' Punctuation 'Val' Name '::' Text 'I32' Name ')' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace '/// Process a STASH statement.\n' Literal.String.Doc ' ' Text.Whitespace 'fn' Keyword ' ' Text 'stash' Name.Function '(' Punctuation '&' Operator 'mut' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo ',' Punctuation ' ' Text.Whitespace 'var' Name ':' Text ' ' Text '&' Keyword.Pseudo 'Var' Name.Class ')' Punctuation ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace '*' Operator 'var' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'I16' Name '(' Punctuation 'n' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'spot' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'stash' Name '(' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'I32' Name '(' Punctuation 'n' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'twospot' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'stash' Name '(' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'A16' Name '(' Punctuation 'n' Name ',' Punctuation ' ' Text.Whitespace '_' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'tail' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'stash' Name '(' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'A32' Name '(' Punctuation 'n' Name ',' Punctuation ' ' Text.Whitespace '_' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'hybrid' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'stash' Name '(' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace '/// Process a RETRIEVE statement.\n' Literal.String.Doc ' ' Text.Whitespace 'fn' Keyword ' ' Text 'retrieve' Name.Function '(' Punctuation '&' Operator 'mut' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo ',' Punctuation ' ' Text.Whitespace 'var' Name ':' Text ' ' Text '&' Keyword.Pseudo 'Var' Name.Class ')' Punctuation ' ' Text.Whitespace '->' Text ' ' Text 'Res' Name.Class '<' Operator '(' Punctuation ')' Punctuation '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace '*' Operator 'var' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'I16' Name '(' Punctuation 'n' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'spot' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'retrieve' Name '(' Punctuation '0' Literal.Number.Integer ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'I32' Name '(' Punctuation 'n' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'twospot' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'retrieve' Name '(' Punctuation '0' Literal.Number.Integer ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'A16' Name '(' Punctuation 'n' Name ',' Punctuation ' ' Text.Whitespace '_' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'tail' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'retrieve' Name '(' Punctuation '0' Literal.Number.Integer ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'A32' Name '(' Punctuation 'n' Name ',' Punctuation ' ' Text.Whitespace '_' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'hybrid' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'retrieve' Name '(' Punctuation '0' Literal.Number.Integer ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace '/// Process an IGNORE or REMEMBER statement. Cannot fail.\n' Literal.String.Doc ' ' Text.Whitespace 'fn' Keyword ' ' Text 'set_rw' Name.Function '(' Punctuation '&' Operator 'mut' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo ',' Punctuation ' ' Text.Whitespace 'var' Name ':' Text ' ' Text '&' Keyword.Pseudo 'Var' Name.Class ',' Punctuation ' ' Text.Whitespace 'rw' Name ':' Text ' ' Text 'bool' Keyword.Type ')' Punctuation ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace '*' Operator 'var' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'I16' Name '(' Punctuation 'n' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'spot' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'rw' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'rw' Name ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'I32' Name '(' Punctuation 'n' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'twospot' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'rw' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'rw' Name ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'A16' Name '(' Punctuation 'n' Name ',' Punctuation ' ' Text.Whitespace '_' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'tail' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'rw' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'rw' Name ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'A32' Name '(' Punctuation 'n' Name ',' Punctuation ' ' Text.Whitespace '_' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'hybrid' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'rw' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'rw' Name ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace '/// P()rocess an ABSTAIN or REINSTATE statement. Cannot fail.\n' Literal.String.Doc ' ' Text.Whitespace 'fn' Keyword ' ' Text 'abstain' Name.Function '(' Punctuation '&' Operator 'mut' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo ',' Punctuation ' ' Text.Whitespace 'what' Name ':' Text ' ' Text '&' Keyword.Pseudo 'ast' Name.Class '::' Text 'Abstain' Name ',' Punctuation ' ' Text.Whitespace 'f' Name ':' Text ' ' Text '&' Keyword.Pseudo 'Fn' Name.Builtin '(' Punctuation 'u32' Keyword.Type ')' Punctuation ' ' Text.Whitespace '->' Text ' ' Text 'u32' Keyword.Type ')' Punctuation ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace '&' Operator 'ast' Name '::' Text 'Abstain' Name '::' Text 'Label' Name '(' Punctuation 'lbl' Name ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'what' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'idx' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'program' Name '.' Punctuation 'labels' Name '[' Punctuation '&' Operator 'lbl' Name ']' Punctuation ' ' Text.Whitespace 'as' Keyword ' ' Text.Whitespace 'usize' Keyword.Type ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'program' Name '.' Punctuation 'stmts' Name '[' Punctuation 'idx' Name ']' Punctuation '.' Punctuation 'body' Name ' ' Text.Whitespace '!' Operator '=' Operator ' ' Text.Whitespace 'StmtBody' Name '::' Text 'GiveUp' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'abstain' Name '[' Punctuation 'idx' Name ']' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'f' Name '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'abstain' Name '[' Punctuation 'idx' Name ']' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation ' ' Text.Whitespace 'else' Keyword ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace '(' Punctuation 'i' Name ',' Punctuation ' ' Text.Whitespace 'stype' Name ')' Punctuation ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'program' Name '.' Punctuation 'stmt_types' Name '.' Punctuation 'iter' Name '(' Punctuation ')' Punctuation '.' Punctuation 'enumerate' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'stype' Name ' ' Text.Whitespace '=' Operator '=' Operator ' ' Text.Whitespace 'what' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'abstain' Name '[' Punctuation 'i' Name ']' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'f' Name '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'abstain' Name '[' Punctuation 'i' Name ']' Punctuation ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace '/// Array readout helper.\n' Literal.String.Doc ' ' Text.Whitespace 'fn' Keyword ' ' Text 'array_readout' Name.Function '(' Punctuation '&' Operator 'mut' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo ',' Punctuation ' ' Text.Whitespace 'var' Name ':' Text ' ' Text '&' Keyword.Pseudo 'Var' Name.Class ')' Punctuation ' ' Text.Whitespace '->' Text ' ' Text 'Res' Name.Class '<' Operator '(' Punctuation ')' Punctuation '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'state' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '&' Operator 'mut' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'last_out' Name ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace '*' Operator 'var' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'A16' Name '(' Punctuation 'n' Name ',' Punctuation ' ' Text.Whitespace '_' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'tail' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'readout' Name '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'stdout' Name ',' Punctuation ' ' Text.Whitespace 'state' Name ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'A32' Name '(' Punctuation 'n' Name ',' Punctuation ' ' Text.Whitespace '_' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'hybrid' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'readout' Name '(' Punctuation 'self' Name.Builtin.Pseudo '.' Punctuation 'stdout' Name ',' Punctuation ' ' Text.Whitespace 'state' Name ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '_' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'return' Keyword ' ' Text.Whitespace 'IE994' Name '.' Punctuation 'err' Name '(' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace '/// Array writein helper.\n' Literal.String.Doc ' ' Text.Whitespace 'fn' Keyword ' ' Text 'array_writein' Name.Function '(' Punctuation '&' Operator 'mut' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo ',' Punctuation ' ' Text.Whitespace 'var' Name ':' Text ' ' Text '&' Keyword.Pseudo 'Var' Name.Class ')' Punctuation ' ' Text.Whitespace '->' Text ' ' Text 'Res' Name.Class '<' Operator '(' Punctuation ')' Punctuation '>' Operator ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'let' Keyword.Declaration ' ' Text.Whitespace 'state' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '&' Operator 'mut' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'last_in' Name ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'match' Keyword ' ' Text.Whitespace '*' Operator 'var' Name ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'A16' Name '(' Punctuation 'n' Name ',' Punctuation ' ' Text.Whitespace '_' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'tail' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'writein' Name '(' Punctuation 'state' Name ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'Var' Name '::' Text 'A32' Name '(' Punctuation 'n' Name ',' Punctuation ' ' Text.Whitespace '_' Name ')' Punctuation ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'hybrid' Name '[' Punctuation 'n' Name ']' Punctuation '.' Punctuation 'writein' Name '(' Punctuation 'state' Name ',' Punctuation ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '_' Name ' ' Text.Whitespace '=' Operator '>' Operator ' ' Text.Whitespace 'return' Keyword ' ' Text.Whitespace 'IE994' Name '.' Punctuation 'err' Name '(' Punctuation ')' Punctuation ',' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace '/// Debug helpers.\n' Literal.String.Doc ' ' Text.Whitespace 'fn' Keyword ' ' Text 'dump_state' Name.Function '(' Punctuation '&' Operator 'self' Name.Builtin.Pseudo ')' Punctuation ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'dump_state_one' Name '(' Punctuation '&' Operator 'self' Name.Builtin.Pseudo '.' Punctuation 'spot' Name ',' Punctuation ' ' Text.Whitespace '"' Literal.String '.' Literal.String '"' Literal.String ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'dump_state_one' Name '(' Punctuation '&' Operator 'self' Name.Builtin.Pseudo '.' Punctuation 'twospot' Name ',' Punctuation ' ' Text.Whitespace '"' Literal.String ':' Literal.String '"' Literal.String ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'dump_state_one' Name '(' Punctuation '&' Operator 'self' Name.Builtin.Pseudo '.' Punctuation 'tail' Name ',' Punctuation ' ' Text.Whitespace '"' Literal.String ',' Literal.String '"' Literal.String ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'dump_state_one' Name '(' Punctuation '&' Operator 'self' Name.Builtin.Pseudo '.' Punctuation 'hybrid' Name ',' Punctuation ' ' Text.Whitespace '"' Literal.String ';' Literal.String '"' Literal.String ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'jumps' Name '.' Punctuation 'len' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '>' Operator ' ' Text.Whitespace '0' Literal.Number.Integer ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'println!' Name.Function.Magic '(' Punctuation '"' Literal.String 'Next stack: {:?}' Literal.String '"' Literal.String ',' Punctuation ' ' Text.Whitespace 'self' Name.Builtin.Pseudo '.' Punctuation 'jumps' Name ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '//println!("Abstained: {:?}", self.abstain);\n' Comment.Single ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text.Whitespace 'fn' Keyword ' ' Text 'dump_state_one' Name.Function '<' Operator 'T' Name ':' Text ' ' Text 'Debug' Name.Class ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace 'Display' Name '>' Operator '(' Punctuation '&' Operator 'self' Name.Builtin.Pseudo ',' Punctuation ' ' Text.Whitespace 'vec' Name ':' Text ' ' Text '&' Keyword.Pseudo 'Vec' Name.Builtin '<' Operator 'Bind' Name '<' Operator 'T' Name '>' Operator '>' Operator ',' Punctuation ' ' Text.Whitespace 'sigil' Name ':' Text ' ' Text '&' Keyword.Pseudo 'str' Keyword.Type ')' Punctuation ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace 'vec' Name '.' Punctuation 'len' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '>' Operator ' ' Text.Whitespace '0' Literal.Number.Integer ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'for' Keyword ' ' Text.Whitespace '(' Punctuation 'i' Name ',' Punctuation ' ' Text.Whitespace 'v' Name ')' Punctuation ' ' Text.Whitespace 'in' Keyword ' ' Text.Whitespace 'vec' Name '.' Punctuation 'iter' Name '(' Punctuation ')' Punctuation '.' Punctuation 'enumerate' Name '(' Punctuation ')' Punctuation ' ' Text.Whitespace '{' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'print!' Name.Function.Magic '(' Punctuation '"' Literal.String '{}{} = {}, ' Literal.String '"' Literal.String ',' Punctuation ' ' Text.Whitespace 'sigil' Name ',' Punctuation ' ' Text.Whitespace 'i' Name ',' Punctuation ' ' Text.Whitespace 'v' Name ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace 'println!' Name.Function.Magic '(' Punctuation '"' Literal.String '"' Literal.String ')' Punctuation ';' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace ' ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace '}' Punctuation '\n' Text.Whitespace