'scheme' Keyword ' ' Text 'COMPILER' Keyword.Type ' ' Text '=' Text ' ' Text '\n' Text 'class' Keyword '\n' Text ' ' Text ' ' Text 'type' Keyword '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text 'Prog' Keyword.Type ' ' Text '=' Text '=' Text ' ' Text 'm' Text 'k' Text '_' Text 'P' Text 'r' Text 'o' Text 'g' Text '(' Text 's' Text 't' Text 'm' Text 't' Text ' ' Text ':' Text ' ' Text 'Stmt' Keyword.Type ')' Text ',' Text ' ' Text ' ' Text '\n' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text 'Stmt' Keyword.Type ' ' Text '=' Text '=' Text ' ' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'A' Text 's' Text 'g' Text 'n' Text '(' Text 'i' Text 'd' Text 'e' Text ' ' Text ':' Text ' ' Text 'Identifier' Keyword.Type ',' Text ' ' Text ' ' Text 'e' Text 'x' Text 'p' Text 'r' Text ' ' Text ':' Text ' ' Text 'Expr' Keyword.Type ')' Text ' ' Text '|' Text ' ' Text ' ' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'I' Text 'f' Text '(' Text 'c' Text 'o' Text 'n' Text 'd' Text ' ' Text ':' Text ' ' Text 'Expr' Keyword.Type ',' Text ' ' Text ' ' Text 's' Text '1' Literal.Number.Integer ' ' Text ':' Text ' ' Text 'Stmt' Keyword.Type ',' Text ' ' Text 's' Text '2' Literal.Number.Integer ' ' Text ':' Text ' ' Text 'Stmt' Keyword.Type ')' Text ' ' Text '|' Text ' ' Text ' ' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'S' Text 'e' Text 'q' Text '(' Text 'h' Text 'e' Text 'a' Text 'd' Text ' ' Text ':' Text ' ' Text 'Stmt' Keyword.Type ',' Text ' ' Text ' ' Text 'l' Text 'a' Text 's' Text 't' Text ' ' Text ':' Text ' ' Text 'Stmt' Keyword.Type ')' Text ',' Text ' ' Text ' ' Text '\n' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text 'Expr' Keyword.Type ' ' Text '=' Text '=' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'C' Text 'o' Text 'n' Text 's' Text 't' Text '(' Text 'c' Text 'o' Text 'n' Text 's' Text 't' Text ' ' Text ':' Text ' ' Text 'Int' Keyword ')' Text ' ' Text '|' Text ' ' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'P' Text 'l' Text 'u' Text 's' Text '(' Text 'f' Text 's' Text 't' Text ' ' Text ':' Text ' ' Text 'Expr' Keyword.Type ',' Text ' ' Text ' ' Text 's' Text 'n' Text 'd' Text ' ' Text ':' Text ' ' Text 'Expr' Keyword.Type ')' Text ' ' Text '|' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'I' Text 'd' Text '(' Text 'i' Text 'd' Text 'e' Text ' ' Text ':' Text ' ' Text 'Identifier' Keyword.Type ')' Text ',' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text 'Identifier' Keyword.Type ' ' Text '=' Text ' ' Text 'Text' Keyword '\n' Text '\n' Text 'type' Keyword ' ' Text '/* storage for program variables */' Comment '\n' Text ' ' Text ' ' Text '`' Text 'Sigma' Keyword.Type ' ' Text '=' Text ' ' Text 'Identifier' Keyword.Type ' ' Text '-m->' Operator ' ' Text 'Int' Keyword ' ' Text '\n' Text '\n' Text 'value' Keyword ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text '\n' Text ' m : ' Name.Function 'Prog' Keyword.Type ' ' Text '->' Operator ' ' Text '`' Text 'Sigma' Keyword.Type ' ' Text '->' Operator ' ' Text '`' Text 'Sigma' Keyword.Type '\n' Text ' ' Text ' ' Text 'm' Text '(' Text 'p' Text ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ' ' Text ' ' Text 'is' Keyword ' ' Text ' ' Text 'm' Text '(' Text 's' Text 't' Text 'm' Text 't' Text '(' Text 'p' Text ')' Text ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ',' Text ' ' Text ' ' Text '\n' Text '\n' Text ' m : ' Name.Function 'Stmt' Keyword.Type ' ' Text '->' Operator ' ' Text '`' Text 'Sigma' Keyword.Type ' ' Text '->' Operator ' ' Text '`' Text 'Sigma' Keyword.Type '\n' Text ' ' Text ' ' Text 'm' Text '(' Text 's' Text ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ' ' Text ' ' Text 'is' Keyword ' ' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text 'case' Keyword ' ' Text 's' Text ' ' Text 'of' Keyword ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'A' Text 's' Text 'g' Text 'n' Text '(' Text 'i' Text ',' Text ' ' Text 'e' Text ')' Text ' ' Text '->' Operator ' ' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ' ' Text '!!' Operator ' ' Text '[' Text 'i' Text ' ' Text '+>' Operator ' ' Text 'm' Text '(' Text 'e' Text ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ']' Text ',' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'S' Text 'e' Text 'q' Text '(' Text 's' Text '1' Literal.Number.Integer ',' Text ' ' Text 's' Text '2' Literal.Number.Integer ')' Text ' ' Text '->' Operator ' ' Text 'm' Text '(' Text 's' Text '2' Literal.Number.Integer ')' Text '(' Text 'm' Text '(' Text 's' Text '1' Literal.Number.Integer ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ')' Text ',' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'I' Text 'f' Text '(' Text 'c' Text ',' Text ' ' Text 's' Text '1' Literal.Number.Integer ',' Text ' ' Text 's' Text '2' Literal.Number.Integer ')' Text ' ' Text '->' Operator ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'if' Keyword ' ' Text 'm' Text '(' Text 'c' Text ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ' ' Text '~=' Operator ' ' Text '0' Literal.Number.Integer ' ' Text 'then' Keyword ' ' Text 'm' Text '(' Text 's' Text '1' Literal.Number.Integer ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ' ' Text 'else' Keyword ' ' Text 'm' Text '(' Text 's' Text '2' Literal.Number.Integer ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ' ' Text 'end' Keyword ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text 'end' Keyword ',' Text '\n' Text ' ' Text ' ' Text '\n' Text ' m : ' Name.Function 'Expr' Keyword.Type ' ' Text '->' Operator ' ' Text '`' Text 'Sigma' Keyword.Type ' ' Text '->' Operator ' ' Text 'Int' Keyword '\n' Text ' ' Text ' ' Text 'm' Text '(' Text 'e' Text ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ' ' Text ' ' Text 'is' Keyword ' ' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text 'case' Keyword ' ' Text 'e' Text ' ' Text 'of' Keyword ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'C' Text 'o' Text 'n' Text 's' Text 't' Text '(' Text 'n' Text ')' Text ' ' Text '->' Operator ' ' Text 'n' Text ',' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'P' Text 'l' Text 'u' Text 's' Text '(' Text 'e' Text '1' Literal.Number.Integer ',' Text ' ' Text 'e' Text '2' Literal.Number.Integer ')' Text ' ' Text '->' Operator ' ' Text 'm' Text '(' Text 'e' Text '1' Literal.Number.Integer ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ' ' Text '+' Text ' ' Text 'm' Text '(' Text 'e' Text '2' Literal.Number.Integer ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ',' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'I' Text 'd' Text '(' Text 'i' Text 'd' Text ')' Text ' ' Text '->' Operator ' ' Text 'if' Keyword ' ' Text 'i' Text 'd' Text ' ' Text 'isin' Keyword ' ' Text ' ' Text 'dom' Keyword ' ' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ' ' Text 'then' Keyword ' ' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text '(' Text 'i' Text 'd' Text ')' Text ' ' Text 'else' Keyword ' ' Text '0' Literal.Number.Integer ' ' Text 'end' Keyword ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text 'end' Keyword ' ' Text '\n' Text '\n' Text 'type' Keyword '\n' Text ' ' Text ' ' Text 'MProg' Keyword.Type ' ' Text '=' Text ' ' Text 'Inst' Keyword.Type '-list' Keyword ',' Text '\n' Text ' ' Text ' ' Text 'Inst' Keyword.Type ' ' Text '=' Text '=' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'P' Text 'u' Text 's' Text 'h' Text '(' Text 'i' Text 'd' Text 'e' Text '1' Literal.Number.Integer ' ' Text ':' Text ' ' Text 'Identifier' Keyword.Type ')' Text ' ' Text '|' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'P' Text 'o' Text 'p' Text '(' Text 'Unit' Keyword ')' Text ' ' Text '|' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'A' Text 'd' Text 'd' Text '(' Text 'Unit' Keyword ')' Text ' ' Text '|' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'C' Text 'n' Text 's' Text 't' Text '(' Text 'v' Text 'a' Text 'l' Text ' ' Text ':' Text ' ' Text 'Int' Keyword ')' Text ' ' Text '|' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'S' Text 't' Text 'o' Text 'r' Text 'e' Text '(' Text 'i' Text 'd' Text 'e' Text '2' Literal.Number.Integer ' ' Text ':' Text ' ' Text 'Identifier' Keyword.Type ')' Text ' ' Text '|' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'J' Text 'u' Text 'm' Text 'p' Text 'false' Keyword.Constant '(' Text 'o' Text 'f' Text 'f' Text '1' Literal.Number.Integer ' ' Text ':' Text ' ' Text 'Int' Keyword ')' Text ' ' Text '|' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'J' Text 'u' Text 'm' Text 'p' Text '(' Text 'o' Text 'f' Text 'f' Text '2' Literal.Number.Integer ' ' Text ':' Text ' ' Text 'Int' Keyword ')' Text ' ' Text '\n' Text '\n' Text '\n' Text '/* An interpreter for SMALL instructions */' Comment '\n' Text '\n' Text 'type' Keyword ' ' Text ' ' Text 'Stack' Keyword.Type ' ' Text '=' Text ' ' Text 'Int' Keyword '-list' Keyword '\n' Text 'value' Keyword ' ' Text '\n' Text ' I : ' Name.Function 'MProg' Keyword.Type ' ' Text '><' Operator ' ' Text 'Int' Keyword ' ' Text '><' Operator ' ' Text 'Stack' Keyword.Type ' ' Text '->' Operator ' ' Text '(' Text '`' Text 'Sigma' Keyword.Type ' ' Text '->' Operator '`' Text 'Sigma' Keyword.Type ')' Text '\n' Text ' ' Text ' ' Text 'I' Keyword.Type '(' Text 'm' Text 'p' Text ',' Text ' ' Text 'p' Text 'c' Text ',' Text ' ' Text 's' Text ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ' ' Text 'is' Keyword ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text 'if' Keyword ' ' Text 'p' Text 'c' Text ' ' Text '<=' Operator ' ' Text '0' Literal.Number.Integer ' ' Text '\\/' Operator ' ' Text 'p' Text 'c' Text ' ' Text '>' Text ' ' Text 'len' Keyword ' ' Text 'm' Text 'p' Text ' ' Text 'then' Keyword ' ' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ' ' Text 'else' Keyword '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'case' Keyword ' ' Text ' ' Text 'm' Text 'p' Text '(' Text 'p' Text 'c' Text ')' Text ' ' Text 'of' Keyword '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'P' Text 'u' Text 's' Text 'h' Text '(' Text 'x' Text ')' Text ' ' Text '->' Operator ' ' Text 'if' Keyword ' ' Text 'x' Text ' ' Text 'isin' Keyword ' ' Text 'dom' Keyword ' ' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'then' Keyword ' ' Text 'I' Keyword.Type '(' Text 'm' Text 'p' Text ',' Text ' ' Text 'p' Text 'c' Text ' ' Text '+' Text ' ' Text '1' Literal.Number.Integer ',' Text ' ' Text '<.' Operator '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text '(' Text 'x' Text ')' Text '.>' Operator ' ' Text '^' Text ' ' Text 's' Text ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'else' Keyword ' ' Text ' ' Text 'I' Keyword.Type '(' Text 'm' Text 'p' Text ',' Text ' ' Text 'p' Text 'c' Text ' ' Text '+' Text ' ' Text '1' Literal.Number.Integer ',' Text ' ' Text '<.' Operator '0' Literal.Number.Integer '.>' Operator ' ' Text '^' Text ' ' Text 's' Text ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ' ' Text 'end' Keyword ',' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'P' Text 'o' Text 'p' Text '(' Text '(' Text ')' Text ')' Text ' ' Text '->' Operator ' ' Text 'if' Keyword ' ' Text 'len' Keyword ' ' Text 's' Text ' ' Text '=' Text ' ' Text '0' Literal.Number.Integer ' ' Text 'then' Keyword ' ' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'else' Keyword ' ' Text 'I' Keyword.Type '(' Text 'm' Text 'p' Text ',' Text ' ' Text 'p' Text 'c' Text ' ' Text '+' Text ' ' Text '1' Literal.Number.Integer ',' Text ' ' Text 'tl' Keyword ' ' Text 's' Text ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ' ' Text 'end' Keyword ',' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'C' Text 'n' Text 's' Text 't' Text '(' Text 'n' Text ')' Text ' ' Text ' ' Text '->' Operator ' ' Text 'I' Keyword.Type '(' Text 'm' Text 'p' Text ',' Text ' ' Text 'p' Text 'c' Text ' ' Text '+' Text ' ' Text '1' Literal.Number.Integer ',' Text ' ' Text '<.' Operator 'n' Text '.>' Operator ' ' Text '^' Text ' ' Text ' ' Text 's' Text ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ',' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'A' Text 'd' Text 'd' Text '(' Text '(' Text ')' Text ')' Text ' ' Text '->' Operator ' ' Text 'if' Keyword ' ' Text 'len' Keyword ' ' Text 's' Text ' ' Text '<' Text ' ' Text '2' Literal.Number.Integer ' ' Text 'then' Keyword ' ' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'else' Keyword ' ' Text ' ' Text 'I' Keyword.Type '(' Text 'm' Text 'p' Text ',' Text ' ' Text 'p' Text 'c' Text ' ' Text '+' Text ' ' Text '1' Literal.Number.Integer ',' Text '<.' Operator 's' Text '(' Text '1' Literal.Number.Integer ')' Text ' ' Text '+' Text ' ' Text 's' Text '(' Text '2' Literal.Number.Integer ')' Text '.>' Operator ' ' Text '^' Text ' ' Text 'tl' Keyword ' ' Text 'tl' Keyword ' ' Text 's' Text ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ' ' Text 'end' Keyword ',' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'S' Text 't' Text 'o' Text 'r' Text 'e' Text '(' Text 'x' Text ')' Text ' ' Text '->' Operator ' ' Text 'if' Keyword ' ' Text 'len' Keyword ' ' Text 's' Text ' ' Text '=' Text ' ' Text '0' Literal.Number.Integer ' ' Text 'then' Keyword ' ' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'else' Keyword ' ' Text 'I' Keyword.Type '(' Text 'm' Text 'p' Text ',' Text ' ' Text 'p' Text 'c' Text ' ' Text '+' Text ' ' Text '1' Literal.Number.Integer ',' Text ' ' Text 's' Text ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ' ' Text '!!' Operator ' ' Text '[' Text 'x' Text ' ' Text '+>' Operator ' ' Text 's' Text '(' Text '1' Literal.Number.Integer ')' Text ']' Text ')' Text ' ' Text 'end' Keyword ',' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'J' Text 'u' Text 'm' Text 'p' Text 'false' Keyword.Constant '(' Text 'n' Text ')' Text ' ' Text '->' Operator ' ' Text 'if' Keyword ' ' Text 'len' Keyword ' ' Text 's' Text ' ' Text '=' Text ' ' Text '0' Literal.Number.Integer ' ' Text 'then' Keyword ' ' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'e' Text 'l' Text 's' Text 'i' Text 'f' Text ' ' Text ' ' Text 'hd' Keyword ' ' Text 's' Text ' ' Text '~=' Operator ' ' Text '0' Literal.Number.Integer ' ' Text ' ' Text 'then' Keyword ' ' Text 'I' Keyword.Type '(' Text 'm' Text 'p' Text ',' Text ' ' Text 'p' Text 'c' Text ' ' Text '+' Text ' ' Text '1' Literal.Number.Integer ',' Text ' ' Text 's' Text ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'else' Keyword ' ' Text 'I' Keyword.Type '(' Text 'm' Text 'p' Text ',' Text ' ' Text 'p' Text 'c' Text ' ' Text '+' Text ' ' Text 'n' Text ',' Text ' ' Text 's' Text ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ' ' Text 'end' Keyword ',' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'J' Text 'u' Text 'm' Text 'p' Text '(' Text 'n' Text ')' Text ' ' Text '->' Operator ' ' Text 'I' Keyword.Type '(' Text 'm' Text 'p' Text ',' Text ' ' Text 'p' Text 'c' Text ' ' Text '+' Text ' ' Text 'n' Text ',' Text ' ' Text 's' Text ')' Text '(' Text '`' Text 's' Text 'i' Text 'g' Text 'm' Text 'a' Text ')' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'end' Keyword '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text 'end' Keyword ' ' Text ' ' Text '\n' Text '\n' Text 'value' Keyword '\n' Text ' comp_Prog : ' Name.Function 'Prog' Keyword.Type ' ' Text '->' Operator ' ' Text 'MProg' Keyword.Type '\n' Text ' ' Text 'comp_Prog' Name.Function '(p) ' Text 'is' Keyword ' ' Text 'c' Text 'o' Text 'm' Text 'p' Text '_' Text 'S' Text 't' Text 'm' Text 't' Text '(' Text 's' Text 't' Text 'm' Text 't' Text '(' Text 'p' Text ')' Text ')' Text ',' Text '\n' Text '\n' Text ' comp_Stmt : ' Name.Function 'Stmt' Keyword.Type ' ' Text '->' Operator ' ' Text 'MProg' Keyword.Type '\n' Text ' ' Text 'comp_Stmt' Name.Function '(s) ' Text 'is' Keyword '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text 'case' Keyword ' ' Text 's' Text ' ' Text 'of' Keyword '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'A' Text 's' Text 'g' Text 'n' Text '(' Text 'i' Text 'd' Text ',' Text ' ' Text 'e' Text ')' Text ' ' Text '->' Operator ' ' Text 'c' Text 'o' Text 'm' Text 'p' Text '_' Text 'E' Text 'x' Text 'p' Text 'r' Text '(' Text 'e' Text ')' Text ' ' Text '^' Text ' ' Text '<.' Operator ' ' Text 'm' Text 'k' Text '_' Text 'S' Text 't' Text 'o' Text 'r' Text 'e' Text '(' Text 'i' Text 'd' Text ')' Text ',' Text ' ' Text 'm' Text 'k' Text '_' Text 'P' Text 'o' Text 'p' Text '(' Text ')' Text ' ' Text '.>' Operator ',' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'S' Text 'e' Text 'q' Text '(' Text 's' Text '1' Literal.Number.Integer ',' Text ' ' Text 's' Text '2' Literal.Number.Integer ')' Text ' ' Text '->' Operator ' ' Text 'c' Text 'o' Text 'm' Text 'p' Text '_' Text 'S' Text 't' Text 'm' Text 't' Text '(' Text 's' Text '1' Literal.Number.Integer ')' Text ' ' Text '^' Text ' ' Text 'c' Text 'o' Text 'm' Text 'p' Text '_' Text 'S' Text 't' Text 'm' Text 't' Text '(' Text 's' Text '2' Literal.Number.Integer ')' Text ',' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'I' Text 'f' Text '(' Text 'e' Text ',' Text ' ' Text 's' Text '1' Literal.Number.Integer ',' Text ' ' Text 's' Text '2' Literal.Number.Integer ')' Text ' ' Text '->' Operator ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'let' Keyword ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'c' Text 'e' Text ' ' Text '=' Text ' ' Text 'c' Text 'o' Text 'm' Text 'p' Text '_' Text 'E' Text 'x' Text 'p' Text 'r' Text '(' Text 'e' Text ')' Text ',' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'c' Text 's' Text '1' Literal.Number.Integer ' ' Text '=' Text ' ' Text 'c' Text 'o' Text 'm' Text 'p' Text '_' Text 'S' Text 't' Text 'm' Text 't' Text '(' Text 's' Text '1' Literal.Number.Integer ')' Text ',' Text ' ' Text 'c' Text 's' Text '2' Literal.Number.Integer ' ' Text '=' Text ' ' Text 'c' Text 'o' Text 'm' Text 'p' Text '_' Text 'S' Text 't' Text 'm' Text 't' Text '(' Text 's' Text '2' Literal.Number.Integer ')' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'in' Keyword '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'c' Text 'e' Text ' ' Text '^' Text ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text '<.' Operator ' ' Text 'm' Text 'k' Text '_' Text 'J' Text 'u' Text 'm' Text 'p' Text 'false' Keyword.Constant '(' Text 'len' Keyword ' ' Text 'c' Text 's' Text '1' Literal.Number.Integer ' ' Text '+' Text ' ' Text '3' Literal.Number.Integer ')' Text ' ' Text '.>' Operator ' ' Text '^' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text '<.' Operator ' ' Text 'm' Text 'k' Text '_' Text 'P' Text 'o' Text 'p' Text '(' Text ')' Text ' ' Text '.>' Operator ' ' Text '^' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'c' Text 's' Text '1' Literal.Number.Integer ' ' Text '^' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text '<.' Operator ' ' Text 'm' Text 'k' Text '_' Text 'J' Text 'u' Text 'm' Text 'p' Text '(' Text 'len' Keyword ' ' Text 'c' Text 's' Text '2' Literal.Number.Integer ' ' Text '+' Text ' ' Text '2' Literal.Number.Integer ')' Text ' ' Text '.>' Operator ' ' Text '^' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text '<.' Operator ' ' Text 'm' Text 'k' Text '_' Text 'P' Text 'o' Text 'p' Text '(' Text ')' Text ' ' Text '.>' Operator ' ' Text '^' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'c' Text 's' Text '2' Literal.Number.Integer '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'end' Keyword '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text 'end' Keyword ',' Text '\n' Text '\n' Text ' comp_Expr : ' Name.Function 'Expr' Keyword.Type ' ' Text '->' Operator ' ' Text 'MProg' Keyword.Type '\n' Text ' ' Text 'comp_Expr' Name.Function '(e) ' Text 'is' Keyword ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text 'case' Keyword ' ' Text 'e' Text ' ' Text 'of' Keyword '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'C' Text 'o' Text 'n' Text 's' Text 't' Text '(' Text 'n' Text ')' Text ' ' Text '->' Operator ' ' Text '<.' Operator ' ' Text 'm' Text 'k' Text '_' Text 'C' Text 'n' Text 's' Text 't' Text '(' Text 'n' Text ')' Text ' ' Text '.>' Operator ',' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'P' Text 'l' Text 'u' Text 's' Text '(' Text 'e' Text '1' Literal.Number.Integer ',' Text ' ' Text 'e' Text '2' Literal.Number.Integer ')' Text ' ' Text '->' Operator ' ' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'c' Text 'o' Text 'm' Text 'p' Text '_' Text 'E' Text 'x' Text 'p' Text 'r' Text '(' Text 'e' Text '1' Literal.Number.Integer ')' Text ' ' Text '^' Text ' ' Text 'c' Text 'o' Text 'm' Text 'p' Text '_' Text 'E' Text 'x' Text 'p' Text 'r' Text '(' Text 'e' Text '2' Literal.Number.Integer ')' Text ' ' Text '^' Text ' ' Text '<.' Operator ' ' Text 'm' Text 'k' Text '_' Text 'A' Text 'd' Text 'd' Text '(' Text ')' Text ' ' Text '.>' Operator ',' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text 'm' Text 'k' Text '_' Text 'I' Text 'd' Text '(' Text 'i' Text 'd' Text ')' Text ' ' Text '->' Operator ' ' Text '<.' Operator ' ' Text 'm' Text 'k' Text '_' Text 'P' Text 'u' Text 's' Text 'h' Text '(' Text 'i' Text 'd' Text ')' Text ' ' Text '.>' Operator '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text 'end' Keyword '\n' Text '\n' Text 'end' Keyword '\n' Text