From d72a9e7a46347edcb0832ef445e0585811f0b7a5 Mon Sep 17 00:00:00 2001 From: JCH Date: Wed, 10 Mar 2021 21:53:22 -0500 Subject: [PATCH 01/44] build(virtual enviroment): set a virtual enviroment A virtual enviroment offers possibility of register all dependencies in project for its later execution in other enviroment. --- Pipfile | 14 +++++++ Pipfile.lock | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 115 insertions(+) create mode 100644 Pipfile create mode 100644 Pipfile.lock diff --git a/Pipfile b/Pipfile new file mode 100644 index 000000000..c78fabba6 --- /dev/null +++ b/Pipfile @@ -0,0 +1,14 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +pytest = "*" +pytest-ordering = "*" +ply = "*" + +[dev-packages] + +[requires] +python_version = "3.8" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 000000000..f2d2ca3da --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,101 @@ +{ + "_meta": { + "hash": { + "sha256": "43725ac1dca09ce12c76d47fe2eec1e6306e83acbf5e8b5e427f76bcb4acdd95" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.8" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "attrs": { + "hashes": [ + "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", + "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==20.3.0" + }, + "iniconfig": { + "hashes": [ + "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", + "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" + ], + "version": "==1.1.1" + }, + "packaging": { + "hashes": [ + "sha256:5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5", + "sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==20.9" + }, + "pluggy": { + "hashes": [ + "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", + "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==0.13.1" + }, + "ply": { + "hashes": [ + "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", + "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce" + ], + "index": "pypi", + "version": "==3.11" + }, + "py": { + "hashes": [ + "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", + "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.10.0" + }, + "pyparsing": { + "hashes": [ + "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", + "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" + ], + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", + "version": "==2.4.7" + }, + "pytest": { + "hashes": [ + "sha256:9d1edf9e7d0b84d72ea3dbcdfd22b35fb543a5e8f2a60092dd578936bf63d7f9", + "sha256:b574b57423e818210672e07ca1fa90aaf194a4f63f3ab909a2c67ebb22913839" + ], + "index": "pypi", + "version": "==6.2.2" + }, + "pytest-ordering": { + "hashes": [ + "sha256:27fba3fc265f5d0f8597e7557885662c1bdc1969497cd58aff6ed21c3b617de2", + "sha256:3f314a178dbeb6777509548727dc69edf22d6d9a2867bf2d310ab85c403380b6", + "sha256:561ad653626bb171da78e682f6d39ac33bb13b3e272d406cd555adb6b006bda6" + ], + "index": "pypi", + "version": "==0.6" + }, + "toml": { + "hashes": [ + "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", + "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" + ], + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", + "version": "==0.10.2" + } + }, + "develop": {} +} From fa73a2567c4c0f181c4633bd7a5e9fe1fbf2d20b Mon Sep 17 00:00:00 2001 From: JCH Date: Wed, 10 Mar 2021 21:58:47 -0500 Subject: [PATCH 02/44] feat(lexer): add tools for work in lexer. Intials steps Add util folder with auxiliar code needed in all project(AST clases, visitor pattern, ...). Add ply module for make more easy the coding in this first part. Not complete. --- .gitignore | 1 + package.json | 10 + src/lexer/lexer.py | 73 +++ src/utils/__init__.py | 3 + src/utils/ast.py | 193 ++++++ src/utils/tokens.py | 26 + src/utils/visitor.py | 80 +++ yarn.lock | 1352 +++++++++++++++++++++++++++++++++++++++++ 8 files changed, 1738 insertions(+) create mode 100644 package.json create mode 100644 src/lexer/lexer.py create mode 100644 src/utils/__init__.py create mode 100644 src/utils/ast.py create mode 100644 src/utils/tokens.py create mode 100644 src/utils/visitor.py create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index 4acafde18..01cc60cb8 100644 --- a/.gitignore +++ b/.gitignore @@ -408,3 +408,4 @@ dmypy.json # Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option) +node_modules diff --git a/package.json b/package.json new file mode 100644 index 000000000..067cd2bc9 --- /dev/null +++ b/package.json @@ -0,0 +1,10 @@ +{ + "devDependencies": { + "cz-conventional-changelog": "3.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + } +} diff --git a/src/lexer/lexer.py b/src/lexer/lexer.py new file mode 100644 index 000000000..46095f988 --- /dev/null +++ b/src/lexer/lexer.py @@ -0,0 +1,73 @@ +from ..utils import reservedKeywords, literals, ignored, tokens + +import ply.lex as lex + +class CoolLexer: + def __init__(self): + self.reserved = reservedKeywords + self.tokens = tokens + self.errors = [] + self.lexer = lex.lex() + + def t_COMMENT(self, t): + r'--[^\n]+\n|\(\*[^(\*\))]+\*\)' + pass + + def t_INTEGER(self,t): + r'[0-9]+' + t.value = int(t.value) + return t + + def t_STRING(self, t): + r'"[^\0\n"]*(\\\n[^\0\n"]*)*"' + t.value = t.value[1:-1] + return t + + def t_BOOL(self, t): + r'true|false' + t.value = True if t.value == 'true' else False + return t + + def t_newline(self, t): + r'\n+' + t.lexer.lineno += len(t.value) + + def t_INTEGER(self, t): + r'[0-9]+' + t.value = int(t.value) + return t + + + def t_STRING(self, t): + r'"[^\0\n"]*(\\\n[^\0\n"]*)*"' + t.value = t.value[1:-1] + return t + + def t_BOOL(self, t): + r'true|false' + t.value = True if t.value == 'true' else False + return t + + def t_newline(self, t): + r'\n+' + t.lexer.lineno += len(t.value) + + def t_NOT(self, t): + r'[nN][oO][tT]' + return t + + def t_TYPE(self,t): + r'[A-Z][A-Za-z0-9_]*' + return t + + def t_ID(self, t): + r'[a-z][A-Za-z0-9_]*' + t.type = reservedKeywords.get(t.value.lower(), 'ID') + return t + + def t_error(self, t): + print("Illegal character '{}'".format(t.value[0])) + t.lexer.skip(1) + + + t_ignore = ''.join(ignored) \ No newline at end of file diff --git a/src/utils/__init__.py b/src/utils/__init__.py new file mode 100644 index 000000000..9b230230c --- /dev/null +++ b/src/utils/__init__.py @@ -0,0 +1,3 @@ +from .ast import * +from .tokens import * +from .visitor import * \ No newline at end of file diff --git a/src/utils/ast.py b/src/utils/ast.py new file mode 100644 index 000000000..4f0c700d2 --- /dev/null +++ b/src/utils/ast.py @@ -0,0 +1,193 @@ +class Node: + pass + +class ProgramNode(Node): + def __init__(self, declarations): + self.declarations = declarations + self.line = declarations[0].line + self.column = declarations[0].column + + +class DeclarationNode(Node): + pass + +#Declarations +class ClassDeclarationNode(DeclarationNode): + def __init__(self, idx, features, parent=None): + self.id = idx + self.parent = parent + self.features = features + self.line = idx.line + self.column = idx.column + +class FuncDeclarationNode(DeclarationNode): + def __init__(self, idx, params, return_type, body): + self.id = idx + self.params = params + self.type = return_type + self.body = body + self.line = idx.line + self.column = idx.column + +class AttrDeclarationNode(DeclarationNode): + def __init__(self, idx, typex, expression = None): + self.id = idx + self.type = typex + self.expression = expression + self.line = idx.line + self.column = idx.column + +class ExpressionNode(Node): + pass + +#Expressions +class IfThenElseNode(ExpressionNode): + def __init__(self, condition, if_body, else_body): + self.condition = condition + self.if_body = if_body + self.else_body = else_body + self.line = condition.line + self.column = condition.column + +class BlockNode(ExpressionNode): + def __init__(self, expressions): + self.expressions = expressions + self.line = expressions[-1].line + self.column = expressions[-1].column + + +class WhileLoopNode(ExpressionNode): + def __init__(self, condition, body): + self.condition = condition + self.body = body + self.line = condition.line + self.column = condition.column + + +class LetInNode(ExpressionNode): + def __init__(self, let_body, in_body): + self.let_body = let_body + self.in_body = in_body + self.line = in_body.line + self.column = in_body.column + + +class CaseOfNode(ExpressionNode): + def __init__(self, expression, branches): + self.expression = expression + self.branches = branches + self.line = expression.line + self.column = expression.column + + +class AssignNode(ExpressionNode): + def __init__(self, idx, expression): + self.id = idx + self.expression = expression + self.line = idx.line + self.column = idx.column + + +class UnaryNode(ExpressionNode): + def __init__(self, expression): + self.expression = expression + self.line = expression.line + self.column = expression.column + +class NotNode(UnaryNode): + pass + +class BinaryNode(ExpressionNode): + def __init__(self, left, right): + self.left = left + self.right = right + self.line = left.line + self.column = left.column + + +class FunctionCallNode(ExpressionNode): + def __init__(self, obj, idx, args, typex=None): + self.obj = obj + self.id = idx + self.args = args + self.type = typex + self.line = idx.line + self.column = idx.column + + +class MemberCallNode(ExpressionNode): + def __init__(self, idx, args): + self.id = idx + self.args = args + self.line = idx.line + self.column = idx.column + + +class NewNode(ExpressionNode): + def __init__(self, typex): + self.type = typex + self.line = typex.line + self.column = typex.column + + +# check this +class AtomicNode(ExpressionNode): + def __init__(self, token): + self.token = token + self.line = token.line + self.column = token.column + +class ArithmeticNode(BinaryNode): + pass + + +class LessEqualNode(BinaryNode): + pass + + +class LessNode(BinaryNode): + pass + + +class EqualNode(BinaryNode): + pass + + +class PlusNode(ArithmeticNode): + pass + + +class MinusNode(ArithmeticNode): + pass + + +class StarNode(ArithmeticNode): + pass + + +class DivNode(ArithmeticNode): + pass + + +class IsVoidNode(UnaryNode): + pass + + +class ComplementNode(UnaryNode): + pass + + +class IntegerNode(AtomicNode): + pass + + +class IdNode(AtomicNode): + pass + + +class StringNode(AtomicNode): + pass + + +class BoolNode(AtomicNode): + pass diff --git a/src/utils/tokens.py b/src/utils/tokens.py new file mode 100644 index 000000000..6a8c7deeb --- /dev/null +++ b/src/utils/tokens.py @@ -0,0 +1,26 @@ +reservedKeywords = { + 'class': 'CLASS', + 'inherits': 'INHERITS', + 'if': 'IF', + 'then': 'THEN', + 'else': 'ELSE', + 'fi': 'FI', + 'while': 'WHILE', + 'loop': 'LOOP', + 'pool': 'POOL', + 'let': 'LET', + 'in': 'IN', + 'case': 'CASE', + 'of': 'OF', + 'esac': 'ESAC', + 'new': 'NEW', + 'isvoid': 'ISVOID', +} + +literals = ['+', '-', '*', '/', ':', ';', '(', ')', '{', '}', '@', '.', ','] +ignored = [' ', '\f', '\r', '\t', '\v'] + +tokens = [ + 'TYPE', 'ID', 'INTEGER', 'STRING', 'BOOL', 'ACTION', 'ASSIGN', 'LESS', 'LESSEQUAL', 'EQUAL', 'INT_COMPLEMENT', 'NOT', +] + list(reservedKeywords.values()) + diff --git a/src/utils/visitor.py b/src/utils/visitor.py new file mode 100644 index 000000000..964842836 --- /dev/null +++ b/src/utils/visitor.py @@ -0,0 +1,80 @@ +# The MIT License (MIT) +# +# Copyright (c) 2013 Curtis Schlak +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +import inspect + +__all__ = ['on', 'when'] + +def on(param_name): + def f(fn): + dispatcher = Dispatcher(param_name, fn) + return dispatcher + return f + + +def when(param_type): + def f(fn): + frame = inspect.currentframe().f_back + func_name = fn.func_name if 'func_name' in dir(fn) else fn.__name__ + dispatcher = frame.f_locals[func_name] + if not isinstance(dispatcher, Dispatcher): + dispatcher = dispatcher.dispatcher + dispatcher.add_target(param_type, fn) + def ff(*args, **kw): + return dispatcher(*args, **kw) + ff.dispatcher = dispatcher + return ff + return f + + +class Dispatcher(object): + def __init__(self, param_name, fn): + frame = inspect.currentframe().f_back.f_back + top_level = frame.f_locals == frame.f_globals + self.param_index = self.__argspec(fn).args.index(param_name) + self.param_name = param_name + self.targets = {} + + def __call__(self, *args, **kw): + typ = args[self.param_index].__class__ + d = self.targets.get(typ) + if d is not None: + return d(*args, **kw) + else: + issub = issubclass + t = self.targets + ks = t.keys() + ans = [t[k](*args, **kw) for k in ks if issub(typ, k)] + if len(ans) == 1: + return ans.pop() + return ans + + def add_target(self, typ, target): + self.targets[typ] = target + + @staticmethod + def __argspec(fn): + # Support for Python 3 type hints requires inspect.getfullargspec + if hasattr(inspect, 'getfullargspec'): + return inspect.getfullargspec(fn) + else: + return inspect.getargspec(fn) diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 000000000..8a1b2302f --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1352 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" + integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== + dependencies: + "@babel/highlight" "^7.12.13" + +"@babel/helper-validator-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== + +"@babel/highlight@^7.12.13": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" + integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@commitlint/execute-rule@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-12.0.1.tgz#5bb2eba929270cafb2bd8191799d8b451de7fb7e" + integrity sha512-JzyweYfZlFLtXpgP+btzSY3YAkGPg61TqUSYQqBr4+5IaVf1FruMm5v4D5eLu9dAJuNKUfHbM3AEfuEPiZ79pg== + +"@commitlint/load@>6.1.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-12.0.1.tgz#4d180fc88e5b4cfcb476a245d899f85154137502" + integrity sha512-dX8KdCWn7w0bTkkk3zKQpe9X8vsTRa5EM+1ffF313wCX9b6tGa9vujhEHCkSzKAbbE2tFV64CHZygE7rtlHdIA== + dependencies: + "@commitlint/execute-rule" "^12.0.1" + "@commitlint/resolve-extends" "^12.0.1" + "@commitlint/types" "^12.0.1" + chalk "^4.0.0" + cosmiconfig "^7.0.0" + lodash "^4.17.19" + resolve-from "^5.0.0" + +"@commitlint/resolve-extends@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-12.0.1.tgz#77509f386e08bd30262ec9a75c783d8f4f028fd2" + integrity sha512-Mvg0GDi/68Cqw893ha8uhxE8myHfPmiSSSi7d1x4VJNR4hoS37lBdX89kyx4i9NPmLfviY2cUJKTyK8ZrFznZw== + dependencies: + import-fresh "^3.0.0" + lodash "^4.17.19" + resolve-from "^5.0.0" + resolve-global "^1.0.0" + +"@commitlint/types@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-12.0.1.tgz#04a0cbb8aa56b7c004f8939c2d1ef8892ec68327" + integrity sha512-FsNDMV0W7D19/ZbR412klpqAilXASx75Neqh7jPtK278IEwdukOg3vth1r5kTm+BjDScM7wMUEOwIW3NNfAtwg== + dependencies: + chalk "^4.0.0" + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cachedir@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.2.0.tgz#19afa4305e05d79e417566882e0c8f960f62ff0e" + integrity sha512-VvxA0xhNqIIfg0V9AmJkDg91DaJwryutH5rVEZAhcNi4iJFj9f+QxmAjgK1LT9I8OgToX27fypX6/MeCXVbBjQ== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +commitizen@^4.0.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-4.2.3.tgz#088d0ef72500240d331b11e02e288223667c1475" + integrity sha512-pYlYEng7XMV2TW4xtjDKBGqeJ0Teq2zyRSx2S3Ml1XAplHSlJZK8vm1KdGclpMEZuGafbS5TeHXIVnHk8RWIzQ== + dependencies: + cachedir "2.2.0" + cz-conventional-changelog "3.2.0" + dedent "0.7.0" + detect-indent "6.0.0" + find-node-modules "2.0.0" + find-root "1.1.0" + fs-extra "8.1.0" + glob "7.1.4" + inquirer "6.5.2" + is-utf8 "^0.2.1" + lodash "^4.17.20" + minimist "1.2.5" + strip-bom "4.0.0" + strip-json-comments "3.0.1" + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +conventional-commit-types@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz#7c9214e58eae93e85dd66dbfbafe7e4fffa2365b" + integrity sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg== + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +cz-conventional-changelog@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-3.2.0.tgz#6aef1f892d64113343d7e455529089ac9f20e477" + integrity sha512-yAYxeGpVi27hqIilG1nh4A9Bnx4J3Ov+eXy4koL3drrR+IO9GaWPsKjik20ht608Asqi8TQPf0mczhEeyAtMzg== + dependencies: + chalk "^2.4.1" + commitizen "^4.0.3" + conventional-commit-types "^3.0.0" + lodash.map "^4.5.1" + longest "^2.0.1" + word-wrap "^1.0.3" + optionalDependencies: + "@commitlint/load" ">6.1.1" + +cz-conventional-changelog@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz#9246947c90404149b3fe2cf7ee91acad3b7d22d2" + integrity sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw== + dependencies: + chalk "^2.4.1" + commitizen "^4.0.3" + conventional-commit-types "^3.0.0" + lodash.map "^4.5.1" + longest "^2.0.1" + word-wrap "^1.0.3" + optionalDependencies: + "@commitlint/load" ">6.1.1" + +debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +dedent@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + +detect-indent@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" + integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +find-node-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-node-modules/-/find-node-modules-2.0.0.tgz#5db1fb9e668a3d451db3d618cd167cdd59e41b69" + integrity sha512-8MWIBRgJi/WpjjfVXumjPKCtmQ10B+fjx6zmSA+770GMJirLhWIzg8l763rhjl9xaeaHbnxPNRQKq2mgMhr+aw== + dependencies: + findup-sync "^3.0.0" + merge "^1.2.1" + +find-root@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fs-extra@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob@7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-dirs@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= + dependencies: + ini "^1.3.4" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inquirer@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-utf8@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +isarray@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +lodash.map@^4.5.1: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" + integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= + +lodash@^4.17.12, lodash@^4.17.19, lodash@^4.17.20: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +longest@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-2.0.1.tgz#781e183296aa94f6d4d916dc335d0d17aefa23f8" + integrity sha1-eB4YMpaqlPbU2RbcM10NF676I/g= + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +merge@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" + integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== + +micromatch@^3.0.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-global@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-global/-/resolve-global-1.0.0.tgz#a2a79df4af2ca3f49bf77ef9ddacd322dad19255" + integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== + dependencies: + global-dirs "^0.1.1" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +run-async@^2.2.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +rxjs@^6.4.0: + version "6.6.6" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.6.tgz#14d8417aa5a07c5e633995b525e1e3c0dec03b70" + integrity sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg== + dependencies: + tslib "^1.9.0" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +string-width@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-json-comments@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +which@^1.2.14: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.0.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +yaml@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== From 7e56feb043b4c01475ee0c768ef895d8786e29fc Mon Sep 17 00:00:00 2001 From: JCH Date: Thu, 11 Mar 2021 09:18:16 -0500 Subject: [PATCH 03/44] feat(errors): add class for management errors introduce management of lexicographic errors --- src/utils/__init__.py | 3 ++- src/utils/errors.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/utils/errors.py diff --git a/src/utils/__init__.py b/src/utils/__init__.py index 9b230230c..1d87120b9 100644 --- a/src/utils/__init__.py +++ b/src/utils/__init__.py @@ -1,3 +1,4 @@ from .ast import * from .tokens import * -from .visitor import * \ No newline at end of file +from .visitor import * +from .errors import * \ No newline at end of file diff --git a/src/utils/errors.py b/src/utils/errors.py new file mode 100644 index 000000000..6028b826a --- /dev/null +++ b/src/utils/errors.py @@ -0,0 +1,32 @@ +class CoolError(Exception): + def __init__(self, text: str, line: int, column: int): + super().__init__(text) + self.text = text + self.line = line + self.column = column + + @property() + def error_type(self) -> str: + return 'CoolError' + + @property() + def text(self) -> str: + return self.text + + def __str__(self): + return f'({self.line}, {self.column}) - {self.error_type}: {self.text}' + + def __repr__(self): + return str(self) + +class LexicographicError(CoolError): + + UNKNOWN_TOKEN = 'ERROR "%s"' + UNDETERMINATED_STRING = 'Undeterminated string constant' + EOF_COMMENT = 'EOF in comment' + EOF_STRING = 'EOF in string constant' + NULL_STRING = 'String contains null character' + + @property + def error_type(self) -> str: + return 'LexicographicError' \ No newline at end of file From 14419a105a6bc0305693610f90eb0f100bc9a2e9 Mon Sep 17 00:00:00 2001 From: JCH Date: Thu, 11 Mar 2021 15:39:26 -0500 Subject: [PATCH 04/44] feat(utils): add errors management init satete for errors managements [only base class and lexicographic errors] --- src/utils/errors.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/utils/errors.py b/src/utils/errors.py index 6028b826a..3dc40220b 100644 --- a/src/utils/errors.py +++ b/src/utils/errors.py @@ -1,17 +1,18 @@ class CoolError(Exception): def __init__(self, text: str, line: int, column: int): + #print(text) + #print(type(text)) super().__init__(text) - self.text = text self.line = line self.column = column - @property() + @property def error_type(self) -> str: return 'CoolError' - @property() + @property def text(self) -> str: - return self.text + return self.args[0] def __str__(self): return f'({self.line}, {self.column}) - {self.error_type}: {self.text}' From 9a4270c30fff6eaa7c0b928ae44f54c4cffece34 Mon Sep 17 00:00:00 2001 From: JCH Date: Fri, 12 Mar 2021 21:40:18 -0500 Subject: [PATCH 05/44] refactor(cool): move lexer and utils into cool folder The goal of this change is call with '-m' flag, something like this: 'python -m cool'. This change allows call cool folder as module and use relative imports with that. --- src/{ => cool}/lexer/lexer.py | 0 src/{ => cool}/utils/__init__.py | 0 src/{ => cool}/utils/ast.py | 0 src/{ => cool}/utils/errors.py | 0 src/{ => cool}/utils/tokens.py | 0 src/{ => cool}/utils/visitor.py | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename src/{ => cool}/lexer/lexer.py (100%) rename src/{ => cool}/utils/__init__.py (100%) rename src/{ => cool}/utils/ast.py (100%) rename src/{ => cool}/utils/errors.py (100%) rename src/{ => cool}/utils/tokens.py (100%) rename src/{ => cool}/utils/visitor.py (100%) diff --git a/src/lexer/lexer.py b/src/cool/lexer/lexer.py similarity index 100% rename from src/lexer/lexer.py rename to src/cool/lexer/lexer.py diff --git a/src/utils/__init__.py b/src/cool/utils/__init__.py similarity index 100% rename from src/utils/__init__.py rename to src/cool/utils/__init__.py diff --git a/src/utils/ast.py b/src/cool/utils/ast.py similarity index 100% rename from src/utils/ast.py rename to src/cool/utils/ast.py diff --git a/src/utils/errors.py b/src/cool/utils/errors.py similarity index 100% rename from src/utils/errors.py rename to src/cool/utils/errors.py diff --git a/src/utils/tokens.py b/src/cool/utils/tokens.py similarity index 100% rename from src/utils/tokens.py rename to src/cool/utils/tokens.py diff --git a/src/utils/visitor.py b/src/cool/utils/visitor.py similarity index 100% rename from src/utils/visitor.py rename to src/cool/utils/visitor.py From 129fca346afadb91fcf87e71da55e561b7a697d2 Mon Sep 17 00:00:00 2001 From: JCH Date: Fri, 12 Mar 2021 21:46:38 -0500 Subject: [PATCH 06/44] refactor(tokens): change tokens.py, insert token class and update keyworks/literals --- src/cool/utils/ast.py | 21 +--------- src/cool/utils/tokens.py | 84 +++++++++++++++++++++++++++++----------- 2 files changed, 63 insertions(+), 42 deletions(-) diff --git a/src/cool/utils/ast.py b/src/cool/utils/ast.py index 4f0c700d2..b4de73745 100644 --- a/src/cool/utils/ast.py +++ b/src/cool/utils/ast.py @@ -6,8 +6,6 @@ def __init__(self, declarations): self.declarations = declarations self.line = declarations[0].line self.column = declarations[0].column - - class DeclarationNode(Node): pass @@ -19,7 +17,6 @@ def __init__(self, idx, features, parent=None): self.features = features self.line = idx.line self.column = idx.column - class FuncDeclarationNode(DeclarationNode): def __init__(self, idx, params, return_type, body): self.id = idx @@ -28,7 +25,6 @@ def __init__(self, idx, params, return_type, body): self.body = body self.line = idx.line self.column = idx.column - class AttrDeclarationNode(DeclarationNode): def __init__(self, idx, typex, expression = None): self.id = idx @@ -36,7 +32,6 @@ def __init__(self, idx, typex, expression = None): self.expression = expression self.line = idx.line self.column = idx.column - class ExpressionNode(Node): pass @@ -55,23 +50,18 @@ def __init__(self, expressions): self.line = expressions[-1].line self.column = expressions[-1].column - class WhileLoopNode(ExpressionNode): def __init__(self, condition, body): self.condition = condition self.body = body self.line = condition.line self.column = condition.column - - class LetInNode(ExpressionNode): def __init__(self, let_body, in_body): self.let_body = let_body self.in_body = in_body self.line = in_body.line self.column = in_body.column - - class CaseOfNode(ExpressionNode): def __init__(self, expression, branches): self.expression = expression @@ -79,7 +69,6 @@ def __init__(self, expression, branches): self.line = expression.line self.column = expression.column - class AssignNode(ExpressionNode): def __init__(self, idx, expression): self.id = idx @@ -87,13 +76,11 @@ def __init__(self, idx, expression): self.line = idx.line self.column = idx.column - class UnaryNode(ExpressionNode): def __init__(self, expression): self.expression = expression self.line = expression.line self.column = expression.column - class NotNode(UnaryNode): pass @@ -104,7 +91,6 @@ def __init__(self, left, right): self.line = left.line self.column = left.column - class FunctionCallNode(ExpressionNode): def __init__(self, obj, idx, args, typex=None): self.obj = obj @@ -113,8 +99,6 @@ def __init__(self, obj, idx, args, typex=None): self.type = typex self.line = idx.line self.column = idx.column - - class MemberCallNode(ExpressionNode): def __init__(self, idx, args): self.id = idx @@ -122,15 +106,12 @@ def __init__(self, idx, args): self.line = idx.line self.column = idx.column - class NewNode(ExpressionNode): def __init__(self, typex): self.type = typex self.line = typex.line self.column = typex.column - -# check this class AtomicNode(ExpressionNode): def __init__(self, token): self.token = token @@ -190,4 +171,4 @@ class StringNode(AtomicNode): class BoolNode(AtomicNode): - pass + pass \ No newline at end of file diff --git a/src/cool/utils/tokens.py b/src/cool/utils/tokens.py index 6a8c7deeb..2ffc0288e 100644 --- a/src/cool/utils/tokens.py +++ b/src/cool/utils/tokens.py @@ -1,26 +1,66 @@ -reservedKeywords = { - 'class': 'CLASS', - 'inherits': 'INHERITS', - 'if': 'IF', - 'then': 'THEN', - 'else': 'ELSE', - 'fi': 'FI', - 'while': 'WHILE', - 'loop': 'LOOP', - 'pool': 'POOL', - 'let': 'LET', - 'in': 'IN', - 'case': 'CASE', - 'of': 'OF', - 'esac': 'ESAC', - 'new': 'NEW', - 'isvoid': 'ISVOID', +from typing import Dict, List + +ignored: List[str] = [' ', '\f', '\r', '\t', '\v'] + +reservedKeywords: Dict[str, str] = { + 'class': 'class', + 'else': 'else', + 'false': 'false', + 'fi': 'fi', + 'if': 'if', + 'in': 'in', + 'inherits': 'inherits', + 'isvoid': 'isvoid', + 'let': 'let', + 'loop': 'loop', + 'pool': 'pool', + 'then': 'then', + 'while': 'while', + 'case': 'case', + 'esac': 'esac', + 'new': 'new', + 'of': 'of', + 'not': 'not', + 'true': 'true' } -literals = ['+', '-', '*', '/', ':', ';', '(', ')', '{', '}', '@', '.', ','] -ignored = [' ', '\f', '\r', '\t', '\v'] +literals: List[str] = [ + 'semi', # '; ' + 'colon', # ': ' + 'comma', # ', ' + 'dot', # '. ' + 'opar', # '( ' + 'cpar', # ') ' + 'ocur', # '{' + 'ccur', # '} ' + 'larrow', # '<-' + 'arroba', # '@' + 'rarrow', # '=> ' + 'nox', # '~' + 'equal', # '=' + 'plus', # '+' + 'minus', # '-' + 'star', # '\*' + 'div', # '/ ' + 'less', # '<' + 'lesseq', # '<=' + 'id', + 'type', + 'num', + 'string' +] + +tokens = list(reservedKeywords.values()) + literals + +class Token: + def __init__(self, lex: str, type_: str, lineno: int, pos: int): + self.lex = lex + self.type = type_ + self.lineno = lineno + self.pos = pos -tokens = [ - 'TYPE', 'ID', 'INTEGER', 'STRING', 'BOOL', 'ACTION', 'ASSIGN', 'LESS', 'LESSEQUAL', 'EQUAL', 'INT_COMPLEMENT', 'NOT', -] + list(reservedKeywords.values()) + def __str__(self): + return f'{self.type}: {self.lex} ({self.lineno}, {self.pos})' + def __repr__(self): + return str(self) \ No newline at end of file From d2634cd9ff8f7e2811414305875179e853c245a1 Mon Sep 17 00:00:00 2001 From: JCH Date: Fri, 12 Mar 2021 21:58:08 -0500 Subject: [PATCH 07/44] refactor(lexer): update lexer.py, update coolc.h Change lexer.py and add good management in ply class. --- src/cool/lexer/__init__.py | 1 + src/cool/lexer/lexer.py | 304 ++++++++++++++++++++++++++++++++----- src/coolc.sh | 9 +- 3 files changed, 269 insertions(+), 45 deletions(-) create mode 100644 src/cool/lexer/__init__.py diff --git a/src/cool/lexer/__init__.py b/src/cool/lexer/__init__.py new file mode 100644 index 000000000..193ee3c3e --- /dev/null +++ b/src/cool/lexer/__init__.py @@ -0,0 +1 @@ +from .lexer import * \ No newline at end of file diff --git a/src/cool/lexer/lexer.py b/src/cool/lexer/lexer.py index 46095f988..4c84aea6f 100644 --- a/src/cool/lexer/lexer.py +++ b/src/cool/lexer/lexer.py @@ -1,73 +1,295 @@ -from ..utils import reservedKeywords, literals, ignored, tokens - +from ..utils import reservedKeywords, literals, ignored, tokens, Token, errors +from pathlib import Path +from typing import List +from pprint import pprint import ply.lex as lex class CoolLexer: - def __init__(self): + def __init__(self, **kwargs): self.reserved = reservedKeywords self.tokens = tokens self.errors = [] - self.lexer = lex.lex() + self.lexer = lex.lex(self, **kwargs) + self.lexer.lineno = 1 + self.lexer.linestart = 0 + + def updateColumn(self, t): + t.column = t.lexpos - t.lexer.linestart + 1 + + states = ( + ('comments', 'exclusive'), + ('strings', 'exclusive') + ) - def t_COMMENT(self, t): - r'--[^\n]+\n|\(\*[^(\*\))]+\*\)' - pass + # Comments + def t_comment(self, t): + r'--.*($|\n)' + t.lexer.lineno += 1 + t.lexer.linestart = t.lexer.lexpos - def t_INTEGER(self,t): - r'[0-9]+' - t.value = int(t.value) - return t + def t_comments(self,t): + r'\(\*' + t.lexer.level = 1 + t.lexer.begin('comments') - def t_STRING(self, t): - r'"[^\0\n"]*(\\\n[^\0\n"]*)*"' - t.value = t.value[1:-1] - return t + def t_comments_open(self, t): + r'\(\*' + t.lexer.level += 1 + + def t_comments_close(self, t): + r'\*\)' + t.lexer.level -= 1 - def t_BOOL(self, t): - r'true|false' - t.value = True if t.value == 'true' else False - return t + if t.lexer.level == 0: + t.lexer.begin('INITIAL') - def t_newline(self, t): + def t_comments_newline(self, t): r'\n+' t.lexer.lineno += len(t.value) + t.lexer.linestart = t.lexer.lexpos + + t_comments_ignore = ' \t\f\r\t\v' + + def t_comments_error(self, t): + t.lexer.skip(1) + + def t_comments_eof(self, t): + self.updateColumn(t) + if t.lexer.level > 0: + error_text = errors.LexicographicError.EOF_COMMENT + self.errors.append(errors.LexicographicError(error_text, t.lineno, t.column)) + + # Strings + t_strings_ignore = '' + + def t_strings(self, t): + r'\"' + t.lexer.str_start = t.lexer.lexpos + t.lexer.myString = '' + t.lexer.backslash = False + t.lexer.begin('strings') + + def t_strings_end(self, t): + r'\"' + self.updateColumn(t) + + if t.lexer.backslash : + t.lexer.myString += '"' + t.lexer.backslash = False + else: + t.value = t.lexer.myString + t.type = 'string' + t.lexer.begin('INITIAL') + return t - def t_INTEGER(self, t): - r'[0-9]+' - t.value = int(t.value) + def t_strings_newline(self, t): + r'\n' + t.lexer.lineno += 1 + self.updateColumn(t) + + t.lexer.linestart = t.lexer.lexpos + + if not t.lexer.backslash: + error_text = errors.LexicographicError.UNDETERMINATED_STRING + self.errors.append(errors.LexicographicError(error_text, t.lineno, t.column)) + t.lexer.begin('INITIAL') + + def t_strings_nill(self, t): + r'\0' + error_text = errors.LexicographicError.NULL_STRING + self.updateColumn(t) + + self.errors.append(errors.LexicographicError(error_text, t.lineno, t.column)) + + def t_strings_consume(self, t): + r'[^\n]' + + if t.lexer.backslash : + if t.value in ['b', 't', 'f', 'n', '\\']: + t.lexer.myString += f'\{t.value}' + else: + t.lexer.myString += t.value + + t.lexer.backslash = False + else: + if t.value != '\\': + t.lexer.myString += t.value + else: + t.lexer.backslash = True + + def t_strings_error(self, t): + pass + + def t_strings_eof(self, t): + self.updateColumn(t) + + error_text = errors.LexicographicError.EOF_STRING + self.errors.append(errors.LexicographicError(error_text, t.lineno, t.column)) + + t_ignore = ' \t\f\r\t\v' + + def t_semi(self, t): + r';' + self.updateColumn(t) return t + def t_colon(self, t): + r':' + self.updateColumn(t) + return t - def t_STRING(self, t): - r'"[^\0\n"]*(\\\n[^\0\n"]*)*"' - t.value = t.value[1:-1] + def t_comma(self, t): + r',' + self.updateColumn(t) return t - def t_BOOL(self, t): - r'true|false' - t.value = True if t.value == 'true' else False + def t_dot(self, t): + r'\.' + self.updateColumn(t) + return t + + def t_opar(self, t): + r'\(' + self.updateColumn(t) + return t + + def t_cpar(self, t): + r'\)' + self.updateColumn(t) + return t + + def t_ocur(self, t): + r'\{' + self.updateColumn(t) + return t + + def t_ccur(self, t): + r'\}' + self.updateColumn(t) + return t + + def t_larrow(self, t): + r'<-' + self.updateColumn(t) + return t + + def t_arroba(self, t): + r'@' + self.updateColumn(t) return t - def t_newline(self, t): - r'\n+' - t.lexer.lineno += len(t.value) + def t_rarrow(self, t): + r'=>' + self.updateColumn(t) + return t + + def t_nox(self, t): + r'~' + self.updateColumn(t) + return t + + def t_equal(self, t): + r'=' + self.updateColumn(t) + return t + + def t_plus(self, t): + r'\+' + self.updateColumn(t) + return t + + def t_of(self, t): + r'of' + self.updateColumn(t) + return t + + def t_minus(self, t): + r'-' + self.updateColumn(t) + return t + + def t_star(self, t): + r'\*' + self.updateColumn(t) + return t + + def t_div(self, t): + r'/' + self.updateColumn(t) + return t + + def t_lesseq(self, t): + r'<=' + self.updateColumn(t) + return t + + def t_less(self, t): + r'<' + self.updateColumn(t) + return t + + def t_inherits(self, t): + r'inherits' + self.updateColumn(t) + return t - def t_NOT(self, t): - r'[nN][oO][tT]' + def t_type(self, t): + r'[A-Z][a-zA-Z_0-9]*' + t.type = self.reserved.get(t.value.lower(), 'type') + self.updateColumn(t) return t - def t_TYPE(self,t): - r'[A-Z][A-Za-z0-9_]*' + # Check for reserved words: + def t_id(self, t): + r'[a-z][a-zA-Z_0-9]*' + t.type = self.reserved.get(t.value.lower(), 'id') + self.updateColumn(t) return t - def t_ID(self, t): - r'[a-z][A-Za-z0-9_]*' - t.type = reservedKeywords.get(t.value.lower(), 'ID') + # Get Numbers + def t_num(self, t): + r'\d+(\.\d+)? ' + t.value = float(t.value) + self.updateColumn(t) return t + # Define a rule so we can track line numbers + def t_newline(self, t): + r'\n+' + t.lexer.lineno += len(t.value) + t.lexer.linestart = t.lexer.lexpos + + # Error handling rule def t_error(self, t): - print("Illegal character '{}'".format(t.value[0])) + self.updateColumn(t) + error_text = errors.LexicographicError.UNKNOWN_TOKEN % t.value[0] + + self.errors.append(errors.LexicographicError(error_text, t.lineno, t.column)) + #print(f'Report Error {len(self.errors)} {self.errors[0]}') t.lexer.skip(1) + #t.lexer.skip(len(t.value)) + + def tokenize(self, text: str) -> List[Token]: + self.lexer.input(text) + tokens: List[Token] = [] + + for t in self.lexer: + tokens.append(Token(t.type, t.value, t.lineno, t.column)) + + return tokens + +def main(input, output = None): + lexer = CoolLexer() + text: str = '' + # print(f'Path: {input}') + with open(input)as file: + text = file.read() + lexer.tokenize(text) + if lexer.errors: + for e in lexer.errors: + print(e) + raise Exception() - t_ignore = ''.join(ignored) \ No newline at end of file +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/src/coolc.sh b/src/coolc.sh index 3088de4f9..4d71cb033 100755 --- a/src/coolc.sh +++ b/src/coolc.sh @@ -4,8 +4,9 @@ INPUT_FILE=$1 OUTPUT_FILE=${INPUT_FILE:0: -2}mips # Si su compilador no lo hace ya, aquí puede imprimir la información de contacto -echo "LINEA_CON_NOMBRE_Y_VERSION_DEL_COMPILADOR" # TODO: Recuerde cambiar estas -echo "Copyright (c) 2019: Nombre1, Nombre2, Nombre3" # TODO: líneas a los valores correctos +echo "Cool Compiler 2021 v1" # TODO: Recuerde cambiar estas +echo "Copyright (c): Jose Carlos Hdez" # TODO: líneas a los valores correctos -# Llamar al compilador -echo "Compiling $INPUT_FILE into $OUTPUT_FILE" +FILE = "cool" + +python -m ${FILE} $INPUT_FILE $OUTPUT_FILE \ No newline at end of file From 5dbdfab02533ae80dfa7622ead7aff4516972a5d Mon Sep 17 00:00:00 2001 From: JCH Date: Fri, 12 Mar 2021 22:01:44 -0500 Subject: [PATCH 08/44] test(requerimients): add ply in requerimients.txt --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 9eb0cad1a..4d792d537 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ pytest pytest-ordering +ply~=3.11 From 0cdfe27c1243cae6f8e4433eba3de11424f8eadd Mon Sep 17 00:00:00 2001 From: JCH Date: Fri, 12 Mar 2021 22:05:18 -0500 Subject: [PATCH 09/44] chore(test.utils): print output of subprocess.run for check errors --- tests/utils/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/utils/utils.py b/tests/utils/utils.py index 961cf7cbc..24274e454 100644 --- a/tests/utils/utils.py +++ b/tests/utils/utils.py @@ -46,6 +46,7 @@ def get_file_name(path: str): def compare_errors(compiler_path: str, cool_file_path: str, error_file_path: str, cmp=first_error, timeout=100): try: sp = subprocess.run(['bash', compiler_path, cool_file_path], capture_output=True, timeout=timeout) + print(f'Code: {sp.returncode}, Error: {sp.stderr}') return_code, output = sp.returncode, sp.stdout.decode() except subprocess.TimeoutExpired: assert False, COMPILER_TIMEOUT From 04cc8727012e2ca888f64918d3a99f8b2067588d Mon Sep 17 00:00:00 2001 From: JCH Date: Fri, 12 Mar 2021 22:08:16 -0500 Subject: [PATCH 10/44] fix(coolc): update FILE --- src/coolc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coolc.sh b/src/coolc.sh index 4d71cb033..20e97e845 100755 --- a/src/coolc.sh +++ b/src/coolc.sh @@ -7,6 +7,6 @@ OUTPUT_FILE=${INPUT_FILE:0: -2}mips echo "Cool Compiler 2021 v1" # TODO: Recuerde cambiar estas echo "Copyright (c): Jose Carlos Hdez" # TODO: líneas a los valores correctos -FILE = "cool" +FILE="cool" python -m ${FILE} $INPUT_FILE $OUTPUT_FILE \ No newline at end of file From 13de328683a14a1b2c907455c139d3457b67b4c2 Mon Sep 17 00:00:00 2001 From: JCH Date: Fri, 12 Mar 2021 22:11:54 -0500 Subject: [PATCH 11/44] fix(__main__): add __main__.py in cool module --- src/cool/__init__.py | 2 ++ src/cool/__main__.py | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 src/cool/__init__.py create mode 100644 src/cool/__main__.py diff --git a/src/cool/__init__.py b/src/cool/__init__.py new file mode 100644 index 000000000..882a6b38a --- /dev/null +++ b/src/cool/__init__.py @@ -0,0 +1,2 @@ +from .utils import * +from .lexer import * \ No newline at end of file diff --git a/src/cool/__main__.py b/src/cool/__main__.py new file mode 100644 index 000000000..549836c55 --- /dev/null +++ b/src/cool/__main__.py @@ -0,0 +1,19 @@ +from .lexer import CoolLexer, main +from pathlib import Path +import sys + +if __name__ == '__main__': + # in_ = sys.argv[1] + #out_ = sys.argv[2] + # print(f'Argv: {sys.argv} ') + #in_ = sys.argv[1] if len(sys.argv) > 1 else f'{Path.cwd()}/cool/code.cl' + #out_ = sys.argv[2] if len(sys.argv) > 1 else None + + # in_ = f'{sys.argv[1]} {sys.argv[2]}' + # out_ = f'{sys.argv[3]} {sys.argv[4]}' + + # print(f'{in_}') + + in_ = sys.argv[1] + out_ = sys.argv[2] + main(in_, out_) \ No newline at end of file From 64c004c96649a13737262e5b0d6db47d9064e6f7 Mon Sep 17 00:00:00 2001 From: JCH Date: Fri, 12 Mar 2021 22:13:40 -0500 Subject: [PATCH 12/44] revert(test.utils): remove print in utils --- tests/utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/utils/utils.py b/tests/utils/utils.py index 24274e454..2566a6b59 100644 --- a/tests/utils/utils.py +++ b/tests/utils/utils.py @@ -46,7 +46,7 @@ def get_file_name(path: str): def compare_errors(compiler_path: str, cool_file_path: str, error_file_path: str, cmp=first_error, timeout=100): try: sp = subprocess.run(['bash', compiler_path, cool_file_path], capture_output=True, timeout=timeout) - print(f'Code: {sp.returncode}, Error: {sp.stderr}') + # print(f'Code: {sp.returncode}, Error: {sp.stderr}') return_code, output = sp.returncode, sp.stdout.decode() except subprocess.TimeoutExpired: assert False, COMPILER_TIMEOUT From b1706444220349e8d28377d5c3b520dbb028d805 Mon Sep 17 00:00:00 2001 From: JCH97 Date: Mon, 20 Sep 2021 15:04:08 -0400 Subject: [PATCH 13/44] feat(parser): add initial state for parser. update details into lexer --- .vscode/launch.json | 14 + src/__main__.py | 36 + src/cool/__main__.py | 29 +- src/cool/code.cl | 37 + src/cool/lexer/__main__.py | 0 src/cool/lexer/lexer.py | 26 +- src/cool/parser/__init__.py | 1 + src/cool/parser/__main__.py | 0 src/cool/parser/output/debug.txt | 0 src/cool/parser/output/parselog.txt | 7364 +++++++++++++++++++++++++++ src/cool/parser/output/parsetab.py | 0 src/cool/parser/parser.py | 799 +++ src/cool/utils/ast.py | 278 +- src/cool/utils/errors.py | 14 +- src/cool/utils/helpers.py | 6 + src/cool/utils/logger.py | 13 + 16 files changed, 8488 insertions(+), 129 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 src/__main__.py create mode 100644 src/cool/code.cl create mode 100644 src/cool/lexer/__main__.py create mode 100644 src/cool/parser/__init__.py create mode 100644 src/cool/parser/__main__.py create mode 100644 src/cool/parser/output/debug.txt create mode 100644 src/cool/parser/output/parselog.txt create mode 100644 src/cool/parser/output/parsetab.py create mode 100644 src/cool/parser/parser.py create mode 100644 src/cool/utils/helpers.py create mode 100644 src/cool/utils/logger.py diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 000000000..2c391c601 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,14 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python: Module", + "type": "python", + "request": "launch", + "module": "src" + } + ] +} \ No newline at end of file diff --git a/src/__main__.py b/src/__main__.py new file mode 100644 index 000000000..85597f73d --- /dev/null +++ b/src/__main__.py @@ -0,0 +1,36 @@ +import sys +from pathlib import Path + +from .cool.lexer import CoolLexer, main +from .cool.parser import CoolParser + +if __name__ == '__main__': + # in_ = sys.argv[1] + #out_ = sys.argv[2] + # print(f'Argv: {sys.argv} ') + _in = sys.argv[1] if len(sys.argv) > 1 else f'{Path.cwd()}/src/cool/code.cl' + _out = sys.argv[2] if len(sys.argv) > 1 else None + + # in_ = f'{sys.argv[1]} {sys.argv[2]}' + # out_ = f'{sys.argv[3]} {sys.argv[4]}' + + # print(f'{in_}') + + # _in = sys.argv[1] + # _out = sys.argv[2] + + text: str = '' + + with open(_in)as file: + text = file.read() + + lexer = main(text, _out) + + # print(lexer) + + lexer.lexer.lineno = 1 + + parser = CoolParser(lexer) + result = parser.parse(text) + + # print(result) diff --git a/src/cool/__main__.py b/src/cool/__main__.py index 549836c55..fc3b67b8b 100644 --- a/src/cool/__main__.py +++ b/src/cool/__main__.py @@ -1,19 +1,34 @@ -from .lexer import CoolLexer, main -from pathlib import Path import sys +from pathlib import Path + +from .lexer import CoolLexer, main +from .parser import CoolParser if __name__ == '__main__': # in_ = sys.argv[1] #out_ = sys.argv[2] # print(f'Argv: {sys.argv} ') - #in_ = sys.argv[1] if len(sys.argv) > 1 else f'{Path.cwd()}/cool/code.cl' - #out_ = sys.argv[2] if len(sys.argv) > 1 else None + _in = sys.argv[1] if len(sys.argv) > 1 else f'{Path.cwd()}/cool/code.cl' + _out = sys.argv[2] if len(sys.argv) > 1 else None # in_ = f'{sys.argv[1]} {sys.argv[2]}' # out_ = f'{sys.argv[3]} {sys.argv[4]}' # print(f'{in_}') - in_ = sys.argv[1] - out_ = sys.argv[2] - main(in_, out_) \ No newline at end of file + # _in = sys.argv[1] + # _out = sys.argv[2] + + text: str = '' + + with open(_in)as file: + text = file.read() + + lexer = main(text, _out) + + print(lexer) + + parser = CoolParser(lexer) + result = parser.parse(text) + + print(result) diff --git a/src/cool/code.cl b/src/cool/code.cl new file mode 100644 index 000000000..75b4c5bbd --- /dev/null +++ b/src/cool/code.cl @@ -0,0 +1,37 @@ +(* An assignment has the form <- *) + +class Main { + main(): Object { + (new Alpha).print() + }; +}; + +class Test { + test1: Object; + + testing1(): Int { + 2 + 2 + }; + + test2: Int <- 1; + + test3: String <- "1"; + + testing2(a: Alpha, b: Int): Int { + 2 + 2 + }; + + testing3(): String { + "2 + 2" + }; + + testing4(): String { + Test1 <- "Hello World" -- Identifiers begin with a lower case letter + }; +}; + +class Alpha inherits IO { + print() : Object { + out_string("reached!!\n") + }; +}; \ No newline at end of file diff --git a/src/cool/lexer/__main__.py b/src/cool/lexer/__main__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/cool/lexer/lexer.py b/src/cool/lexer/lexer.py index 4c84aea6f..4a69d633a 100644 --- a/src/cool/lexer/lexer.py +++ b/src/cool/lexer/lexer.py @@ -1,9 +1,12 @@ -from ..utils import reservedKeywords, literals, ignored, tokens, Token, errors from pathlib import Path -from typing import List from pprint import pprint +from typing import List + import ply.lex as lex +from ..utils import Token, errors, ignored, literals, reservedKeywords, tokens + + class CoolLexer: def __init__(self, **kwargs): self.reserved = reservedKeywords @@ -90,7 +93,7 @@ def t_strings_newline(self, t): t.lexer.linestart = t.lexer.lexpos if not t.lexer.backslash: - error_text = errors.LexicographicError.UNDETERMINATED_STRING + error_text = errors.LexicographicError.UNDETERMINED_STRING self.errors.append(errors.LexicographicError(error_text, t.lineno, t.column)) t.lexer.begin('INITIAL') @@ -278,18 +281,23 @@ def tokenize(self, text: str) -> List[Token]: return tokens -def main(input, output = None): +def main(text: str, output = None): lexer = CoolLexer() - text: str = '' + # print(f'Path: {input}') - with open(input)as file: - text = file.read() - lexer.tokenize(text) + a = lexer.tokenize(text) + + for i in a: + print(i) + if lexer.errors: for e in lexer.errors: print(e) raise Exception() + return lexer + + if __name__ == '__main__': - main() \ No newline at end of file + main() diff --git a/src/cool/parser/__init__.py b/src/cool/parser/__init__.py new file mode 100644 index 000000000..8c76936af --- /dev/null +++ b/src/cool/parser/__init__.py @@ -0,0 +1 @@ +from .parser import * \ No newline at end of file diff --git a/src/cool/parser/__main__.py b/src/cool/parser/__main__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/cool/parser/output/debug.txt b/src/cool/parser/output/debug.txt new file mode 100644 index 000000000..e69de29bb diff --git a/src/cool/parser/output/parselog.txt b/src/cool/parser/output/parselog.txt new file mode 100644 index 000000000..6c951fc82 --- /dev/null +++ b/src/cool/parser/output/parselog.txt @@ -0,0 +1,7364 @@ + yacc.py:3317:Created by PLY version 3.11 (http://www.dabeaz.com/ply) + yacc.py:3377: + yacc.py:3378:Grammar + yacc.py:3379: + yacc.py:3381:Rule 0 S' -> program + yacc.py:3381:Rule 1 program -> class_list + yacc.py:3381:Rule 2 epsilon -> + yacc.py:3381:Rule 3 class_list -> def_class class_list + yacc.py:3381:Rule 4 class_list -> def_class + yacc.py:3381:Rule 5 class_list -> error class_list + yacc.py:3381:Rule 6 def_class -> class type ocur feature_list ccur semi + yacc.py:3381:Rule 7 def_class -> class type inherits type ocur feature_list ccur semi + yacc.py:3381:Rule 8 def_class -> class error ocur feature_list ccur semi + yacc.py:3381:Rule 9 def_class -> class type ocur feature_list ccur error + yacc.py:3381:Rule 10 def_class -> class error inherits type ocur feature_list ccur semi + yacc.py:3381:Rule 11 def_class -> class error inherits error ocur feature_list ccur semi + yacc.py:3381:Rule 12 def_class -> class type inherits error ocur feature_list ccur semi + yacc.py:3381:Rule 13 def_class -> class type inherits type ocur feature_list ccur error + yacc.py:3381:Rule 14 feature_list -> epsilon + yacc.py:3381:Rule 15 feature_list -> def_attr semi feature_list + yacc.py:3381:Rule 16 feature_list -> def_func semi feature_list + yacc.py:3381:Rule 17 feature_list -> error feature_list + yacc.py:3381:Rule 18 def_attr -> id colon type + yacc.py:3381:Rule 19 def_attr -> id colon type larrow expr + yacc.py:3381:Rule 20 def_attr -> error colon type + yacc.py:3381:Rule 21 def_attr -> id colon error + yacc.py:3381:Rule 22 def_attr -> error colon type larrow expr + yacc.py:3381:Rule 23 def_attr -> id colon error larrow expr + yacc.py:3381:Rule 24 def_attr -> id colon type larrow error + yacc.py:3381:Rule 25 def_func -> id opar formals cpar colon type ocur expr ccur + yacc.py:3381:Rule 26 def_func -> error opar formals cpar colon type ocur expr ccur + yacc.py:3381:Rule 27 def_func -> id opar error cpar colon type ocur expr ccur + yacc.py:3381:Rule 28 def_func -> id opar formals cpar colon error ocur expr ccur + yacc.py:3381:Rule 29 def_func -> id opar formals cpar colon type ocur error ccur + yacc.py:3381:Rule 30 formals -> param_list + yacc.py:3381:Rule 31 formals -> param_list_empty + yacc.py:3381:Rule 32 param_list -> param + yacc.py:3381:Rule 33 param_list -> param comma param_list + yacc.py:3381:Rule 34 param_list_empty -> epsilon + yacc.py:3381:Rule 35 param -> id colon type + yacc.py:3381:Rule 36 let_list -> let_assign + yacc.py:3381:Rule 37 let_list -> let_assign comma let_list + yacc.py:3381:Rule 38 let_assign -> param larrow expr + yacc.py:3381:Rule 39 let_assign -> param + yacc.py:3381:Rule 40 cases_list -> casep semi + yacc.py:3381:Rule 41 cases_list -> casep semi cases_list + yacc.py:3381:Rule 42 cases_list -> error cases_list + yacc.py:3381:Rule 43 cases_list -> error semi + yacc.py:3381:Rule 44 casep -> id colon type rarrow expr + yacc.py:3381:Rule 45 expr -> id larrow expr + yacc.py:3381:Rule 46 expr -> comp + yacc.py:3381:Rule 47 comp -> comp less op + yacc.py:3381:Rule 48 comp -> comp lesseq op + yacc.py:3381:Rule 49 comp -> comp equal op + yacc.py:3381:Rule 50 comp -> op + yacc.py:3381:Rule 51 op -> op plus term + yacc.py:3381:Rule 52 op -> op minus term + yacc.py:3381:Rule 53 op -> term + yacc.py:3381:Rule 54 term -> term star base_call + yacc.py:3381:Rule 55 term -> term div base_call + yacc.py:3381:Rule 56 term -> base_call + yacc.py:3381:Rule 57 term -> term star error + yacc.py:3381:Rule 58 term -> term div error + yacc.py:3381:Rule 59 base_call -> factor arroba type dot func_call + yacc.py:3381:Rule 60 base_call -> factor + yacc.py:3381:Rule 61 base_call -> error arroba type dot func_call + yacc.py:3381:Rule 62 base_call -> factor arroba error dot func_call + yacc.py:3381:Rule 63 factor -> atom + yacc.py:3381:Rule 64 factor -> opar expr cpar + yacc.py:3381:Rule 65 factor -> factor dot func_call + yacc.py:3381:Rule 66 factor -> not expr + yacc.py:3381:Rule 67 factor -> func_call + yacc.py:3381:Rule 68 factor -> isvoid base_call + yacc.py:3381:Rule 69 factor -> nox base_call + yacc.py:3381:Rule 70 factor -> let let_list in expr + yacc.py:3381:Rule 71 factor -> case expr of cases_list esac + yacc.py:3381:Rule 72 factor -> if expr then expr else expr fi + yacc.py:3381:Rule 73 factor -> while expr loop expr pool + yacc.py:3381:Rule 74 atom -> num + yacc.py:3381:Rule 75 atom -> id + yacc.py:3381:Rule 76 atom -> new type + yacc.py:3381:Rule 77 atom -> ocur block ccur + yacc.py:3381:Rule 78 atom -> error block ccur + yacc.py:3381:Rule 79 atom -> ocur error ccur + yacc.py:3381:Rule 80 atom -> ocur block error + yacc.py:3381:Rule 81 atom -> true + yacc.py:3381:Rule 82 atom -> false + yacc.py:3381:Rule 83 atom -> string + yacc.py:3381:Rule 84 block -> expr semi + yacc.py:3381:Rule 85 block -> expr semi block + yacc.py:3381:Rule 86 block -> error block + yacc.py:3381:Rule 87 block -> error semi + yacc.py:3381:Rule 88 func_call -> id opar args cpar + yacc.py:3381:Rule 89 func_call -> id opar error cpar + yacc.py:3381:Rule 90 func_call -> error opar args cpar + yacc.py:3381:Rule 91 args -> arg_list + yacc.py:3381:Rule 92 args -> arg_list_empty + yacc.py:3381:Rule 93 arg_list -> expr + yacc.py:3381:Rule 94 arg_list -> expr comma arg_list + yacc.py:3381:Rule 95 arg_list -> error arg_list + yacc.py:3381:Rule 96 arg_list_empty -> epsilon + yacc.py:3399: + yacc.py:3400:Terminals, with rules where they appear + yacc.py:3401: + yacc.py:3405:arroba : 59 61 62 + yacc.py:3405:case : 71 + yacc.py:3405:ccur : 6 7 8 9 10 11 12 13 25 26 27 28 29 77 78 79 + yacc.py:3405:class : 6 7 8 9 10 11 12 13 + yacc.py:3405:colon : 18 19 20 21 22 23 24 25 26 27 28 29 35 44 + yacc.py:3405:comma : 33 37 94 + yacc.py:3405:cpar : 25 26 27 28 29 64 88 89 90 + yacc.py:3405:div : 55 58 + yacc.py:3405:dot : 59 61 62 65 + yacc.py:3405:else : 72 + yacc.py:3405:equal : 49 + yacc.py:3405:error : 5 8 9 10 11 11 12 13 17 20 21 22 23 24 26 27 28 29 42 43 57 58 61 62 78 79 80 86 87 89 90 95 + yacc.py:3405:esac : 71 + yacc.py:3405:false : 82 + yacc.py:3405:fi : 72 + yacc.py:3405:id : 18 19 21 23 24 25 27 28 29 35 44 45 75 88 89 + yacc.py:3405:if : 72 + yacc.py:3405:in : 70 + yacc.py:3405:inherits : 7 10 11 12 13 + yacc.py:3405:isvoid : 68 + yacc.py:3405:larrow : 19 22 23 24 38 45 + yacc.py:3405:less : 47 + yacc.py:3405:lesseq : 48 + yacc.py:3405:let : 70 + yacc.py:3405:loop : 73 + yacc.py:3405:minus : 52 + yacc.py:3405:new : 76 + yacc.py:3405:not : 66 + yacc.py:3405:nox : 69 + yacc.py:3405:num : 74 + yacc.py:3405:ocur : 6 7 8 9 10 11 12 13 25 26 27 28 29 77 79 80 + yacc.py:3405:of : 71 + yacc.py:3405:opar : 25 26 27 28 29 64 88 89 90 + yacc.py:3405:plus : 51 + yacc.py:3405:pool : 73 + yacc.py:3405:rarrow : 44 + yacc.py:3405:semi : 6 7 8 10 11 12 15 16 40 41 43 84 85 87 + yacc.py:3405:star : 54 57 + yacc.py:3405:string : 83 + yacc.py:3405:then : 72 + yacc.py:3405:true : 81 + yacc.py:3405:type : 6 7 7 9 10 12 13 13 18 19 20 22 24 25 26 27 29 35 44 59 61 76 + yacc.py:3405:while : 73 + yacc.py:3407: + yacc.py:3408:Nonterminals, with rules where they appear + yacc.py:3409: + yacc.py:3413:arg_list : 91 94 95 + yacc.py:3413:arg_list_empty : 92 + yacc.py:3413:args : 88 90 + yacc.py:3413:atom : 63 + yacc.py:3413:base_call : 54 55 56 68 69 + yacc.py:3413:block : 77 78 80 85 86 + yacc.py:3413:casep : 40 41 + yacc.py:3413:cases_list : 41 42 71 + yacc.py:3413:class_list : 1 3 5 + yacc.py:3413:comp : 46 47 48 49 + yacc.py:3413:def_attr : 15 + yacc.py:3413:def_class : 3 4 + yacc.py:3413:def_func : 16 + yacc.py:3413:epsilon : 14 34 96 + yacc.py:3413:expr : 19 22 23 25 26 27 28 38 44 45 64 66 70 71 72 72 72 73 73 84 85 93 94 + yacc.py:3413:factor : 59 60 62 65 + yacc.py:3413:feature_list : 6 7 8 9 10 11 12 13 15 16 17 + yacc.py:3413:formals : 25 26 28 29 + yacc.py:3413:func_call : 59 61 62 65 67 + yacc.py:3413:let_assign : 36 37 + yacc.py:3413:let_list : 37 70 + yacc.py:3413:op : 47 48 49 50 51 52 + yacc.py:3413:param : 32 33 38 39 + yacc.py:3413:param_list : 30 33 + yacc.py:3413:param_list_empty : 31 + yacc.py:3413:program : 0 + yacc.py:3413:term : 51 52 53 54 55 57 58 + yacc.py:3414: + yacc.py:3436:Generating LALR tables + yacc.py:2543:Parsing method: LALR + yacc.py:2561: + yacc.py:2562:state 0 + yacc.py:2563: + yacc.py:2565: (0) S' -> . program + yacc.py:2565: (1) program -> . class_list + yacc.py:2565: (3) class_list -> . def_class class_list + yacc.py:2565: (4) class_list -> . def_class + yacc.py:2565: (5) class_list -> . error class_list + yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi + yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error + yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: error shift and go to state 4 + yacc.py:2687: class shift and go to state 5 + yacc.py:2689: + yacc.py:2714: program shift and go to state 1 + yacc.py:2714: class_list shift and go to state 2 + yacc.py:2714: def_class shift and go to state 3 + yacc.py:2561: + yacc.py:2562:state 1 + yacc.py:2563: + yacc.py:2565: (0) S' -> program . + yacc.py:2566: + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 2 + yacc.py:2563: + yacc.py:2565: (1) program -> class_list . + yacc.py:2566: + yacc.py:2687: $end reduce using rule 1 (program -> class_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 3 + yacc.py:2563: + yacc.py:2565: (3) class_list -> def_class . class_list + yacc.py:2565: (4) class_list -> def_class . + yacc.py:2565: (3) class_list -> . def_class class_list + yacc.py:2565: (4) class_list -> . def_class + yacc.py:2565: (5) class_list -> . error class_list + yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi + yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error + yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: $end reduce using rule 4 (class_list -> def_class .) + yacc.py:2687: error shift and go to state 4 + yacc.py:2687: class shift and go to state 5 + yacc.py:2689: + yacc.py:2714: def_class shift and go to state 3 + yacc.py:2714: class_list shift and go to state 6 + yacc.py:2561: + yacc.py:2562:state 4 + yacc.py:2563: + yacc.py:2565: (5) class_list -> error . class_list + yacc.py:2565: (3) class_list -> . def_class class_list + yacc.py:2565: (4) class_list -> . def_class + yacc.py:2565: (5) class_list -> . error class_list + yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi + yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error + yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: error shift and go to state 4 + yacc.py:2687: class shift and go to state 5 + yacc.py:2689: + yacc.py:2714: class_list shift and go to state 7 + yacc.py:2714: def_class shift and go to state 3 + yacc.py:2561: + yacc.py:2562:state 5 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class . type ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> class . type inherits type ocur feature_list ccur semi + yacc.py:2565: (8) def_class -> class . error ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> class . type ocur feature_list ccur error + yacc.py:2565: (10) def_class -> class . error inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> class . error inherits error ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> class . type inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> class . type inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: type shift and go to state 8 + yacc.py:2687: error shift and go to state 9 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 6 + yacc.py:2563: + yacc.py:2565: (3) class_list -> def_class class_list . + yacc.py:2566: + yacc.py:2687: $end reduce using rule 3 (class_list -> def_class class_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 7 + yacc.py:2563: + yacc.py:2565: (5) class_list -> error class_list . + yacc.py:2566: + yacc.py:2687: $end reduce using rule 5 (class_list -> error class_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 8 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type . ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> class type . inherits type ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> class type . ocur feature_list ccur error + yacc.py:2565: (12) def_class -> class type . inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> class type . inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 10 + yacc.py:2687: inherits shift and go to state 11 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 9 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error . ocur feature_list ccur semi + yacc.py:2565: (10) def_class -> class error . inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> class error . inherits error ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 12 + yacc.py:2687: inherits shift and go to state 13 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 10 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type ocur . feature_list ccur semi + yacc.py:2565: (9) def_class -> class type ocur . feature_list ccur error + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (2) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 14 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 11 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits . type ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> class type inherits . error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> class type inherits . type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: type shift and go to state 20 + yacc.py:2687: error shift and go to state 21 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 12 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error ocur . feature_list ccur semi + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (2) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 22 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 13 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits . type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> class error inherits . error ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: type shift and go to state 24 + yacc.py:2687: error shift and go to state 23 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 14 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type ocur feature_list . ccur semi + yacc.py:2565: (9) def_class -> class type ocur feature_list . ccur error + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 25 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 15 + yacc.py:2563: + yacc.py:2565: (17) feature_list -> error . feature_list + yacc.py:2565: (20) def_attr -> error . colon type + yacc.py:2565: (22) def_attr -> error . colon type larrow expr + yacc.py:2565: (26) def_func -> error . opar formals cpar colon type ocur expr ccur + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (2) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 27 + yacc.py:2687: opar shift and go to state 28 + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 26 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 16 + yacc.py:2563: + yacc.py:2565: (14) feature_list -> epsilon . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 14 (feature_list -> epsilon .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 17 + yacc.py:2563: + yacc.py:2565: (15) feature_list -> def_attr . semi feature_list + yacc.py:2566: + yacc.py:2687: semi shift and go to state 29 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 18 + yacc.py:2563: + yacc.py:2565: (16) feature_list -> def_func . semi feature_list + yacc.py:2566: + yacc.py:2687: semi shift and go to state 30 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 19 + yacc.py:2563: + yacc.py:2565: (18) def_attr -> id . colon type + yacc.py:2565: (19) def_attr -> id . colon type larrow expr + yacc.py:2565: (21) def_attr -> id . colon error + yacc.py:2565: (23) def_attr -> id . colon error larrow expr + yacc.py:2565: (24) def_attr -> id . colon type larrow error + yacc.py:2565: (25) def_func -> id . opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> id . opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> id . opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> id . opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 31 + yacc.py:2687: opar shift and go to state 32 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 20 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type . ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> class type inherits type . ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 33 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 21 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error . ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 34 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 22 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error ocur feature_list . ccur semi + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 35 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 23 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error . ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 36 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 24 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type . ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 37 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 25 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type ocur feature_list ccur . semi + yacc.py:2565: (9) def_class -> class type ocur feature_list ccur . error + yacc.py:2566: + yacc.py:2687: semi shift and go to state 38 + yacc.py:2687: error shift and go to state 39 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 26 + yacc.py:2563: + yacc.py:2565: (17) feature_list -> error feature_list . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 17 (feature_list -> error feature_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 27 + yacc.py:2563: + yacc.py:2565: (20) def_attr -> error colon . type + yacc.py:2565: (22) def_attr -> error colon . type larrow expr + yacc.py:2566: + yacc.py:2687: type shift and go to state 40 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 28 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar . formals cpar colon type ocur expr ccur + yacc.py:2565: (30) formals -> . param_list + yacc.py:2565: (31) formals -> . param_list_empty + yacc.py:2565: (32) param_list -> . param + yacc.py:2565: (33) param_list -> . param comma param_list + yacc.py:2565: (34) param_list_empty -> . epsilon + yacc.py:2565: (35) param -> . id colon type + yacc.py:2565: (2) epsilon -> . + yacc.py:2566: + yacc.py:2687: id shift and go to state 46 + yacc.py:2687: cpar reduce using rule 2 (epsilon -> .) + yacc.py:2689: + yacc.py:2714: formals shift and go to state 41 + yacc.py:2714: param_list shift and go to state 42 + yacc.py:2714: param_list_empty shift and go to state 43 + yacc.py:2714: param shift and go to state 44 + yacc.py:2714: epsilon shift and go to state 45 + yacc.py:2561: + yacc.py:2562:state 29 + yacc.py:2563: + yacc.py:2565: (15) feature_list -> def_attr semi . feature_list + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (2) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: feature_list shift and go to state 47 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 30 + yacc.py:2563: + yacc.py:2565: (16) feature_list -> def_func semi . feature_list + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (2) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2714: feature_list shift and go to state 48 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2561: + yacc.py:2562:state 31 + yacc.py:2563: + yacc.py:2565: (18) def_attr -> id colon . type + yacc.py:2565: (19) def_attr -> id colon . type larrow expr + yacc.py:2565: (21) def_attr -> id colon . error + yacc.py:2565: (23) def_attr -> id colon . error larrow expr + yacc.py:2565: (24) def_attr -> id colon . type larrow error + yacc.py:2566: + yacc.py:2687: type shift and go to state 49 + yacc.py:2687: error shift and go to state 50 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 32 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar . formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> id opar . error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> id opar . formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> id opar . formals cpar colon type ocur error ccur + yacc.py:2565: (30) formals -> . param_list + yacc.py:2565: (31) formals -> . param_list_empty + yacc.py:2565: (32) param_list -> . param + yacc.py:2565: (33) param_list -> . param comma param_list + yacc.py:2565: (34) param_list_empty -> . epsilon + yacc.py:2565: (35) param -> . id colon type + yacc.py:2565: (2) epsilon -> . + yacc.py:2566: + yacc.py:2687: error shift and go to state 52 + yacc.py:2687: id shift and go to state 46 + yacc.py:2687: cpar reduce using rule 2 (epsilon -> .) + yacc.py:2689: + yacc.py:2714: formals shift and go to state 51 + yacc.py:2714: param_list shift and go to state 42 + yacc.py:2714: param_list_empty shift and go to state 43 + yacc.py:2714: param shift and go to state 44 + yacc.py:2714: epsilon shift and go to state 45 + yacc.py:2561: + yacc.py:2562:state 33 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type ocur . feature_list ccur semi + yacc.py:2565: (13) def_class -> class type inherits type ocur . feature_list ccur error + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (2) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 53 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 34 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error ocur . feature_list ccur semi + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (2) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 54 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 35 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error ocur feature_list ccur . semi + yacc.py:2566: + yacc.py:2687: semi shift and go to state 55 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 36 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error ocur . feature_list ccur semi + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (2) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 56 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 37 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type ocur . feature_list ccur semi + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (2) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 57 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 38 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 39 + yacc.py:2563: + yacc.py:2565: (9) def_class -> class type ocur feature_list ccur error . + yacc.py:2566: + yacc.py:2687: error reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) + yacc.py:2687: class reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) + yacc.py:2687: $end reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 40 + yacc.py:2563: + yacc.py:2565: (20) def_attr -> error colon type . + yacc.py:2565: (22) def_attr -> error colon type . larrow expr + yacc.py:2566: + yacc.py:2687: semi reduce using rule 20 (def_attr -> error colon type .) + yacc.py:2687: larrow shift and go to state 58 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 41 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals . cpar colon type ocur expr ccur + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 59 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 42 + yacc.py:2563: + yacc.py:2565: (30) formals -> param_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 30 (formals -> param_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 43 + yacc.py:2563: + yacc.py:2565: (31) formals -> param_list_empty . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 31 (formals -> param_list_empty .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 44 + yacc.py:2563: + yacc.py:2565: (32) param_list -> param . + yacc.py:2565: (33) param_list -> param . comma param_list + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 32 (param_list -> param .) + yacc.py:2687: comma shift and go to state 60 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 45 + yacc.py:2563: + yacc.py:2565: (34) param_list_empty -> epsilon . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 34 (param_list_empty -> epsilon .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 46 + yacc.py:2563: + yacc.py:2565: (35) param -> id . colon type + yacc.py:2566: + yacc.py:2687: colon shift and go to state 61 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 47 + yacc.py:2563: + yacc.py:2565: (15) feature_list -> def_attr semi feature_list . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 15 (feature_list -> def_attr semi feature_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 48 + yacc.py:2563: + yacc.py:2565: (16) feature_list -> def_func semi feature_list . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 16 (feature_list -> def_func semi feature_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 49 + yacc.py:2563: + yacc.py:2565: (18) def_attr -> id colon type . + yacc.py:2565: (19) def_attr -> id colon type . larrow expr + yacc.py:2565: (24) def_attr -> id colon type . larrow error + yacc.py:2566: + yacc.py:2687: semi reduce using rule 18 (def_attr -> id colon type .) + yacc.py:2687: larrow shift and go to state 62 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 50 + yacc.py:2563: + yacc.py:2565: (21) def_attr -> id colon error . + yacc.py:2565: (23) def_attr -> id colon error . larrow expr + yacc.py:2566: + yacc.py:2687: semi reduce using rule 21 (def_attr -> id colon error .) + yacc.py:2687: larrow shift and go to state 63 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 51 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals . cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> id opar formals . cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> id opar formals . cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 64 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 52 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error . cpar colon type ocur expr ccur + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 65 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 53 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list . ccur semi + yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list . ccur error + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 66 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 54 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list . ccur semi + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 67 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 55 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 56 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list . ccur semi + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 68 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 57 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list . ccur semi + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 69 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 58 + yacc.py:2563: + yacc.py:2565: (22) def_attr -> error colon type larrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 71 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 59 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar . colon type ocur expr ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 94 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 60 + yacc.py:2563: + yacc.py:2565: (33) param_list -> param comma . param_list + yacc.py:2565: (32) param_list -> . param + yacc.py:2565: (33) param_list -> . param comma param_list + yacc.py:2565: (35) param -> . id colon type + yacc.py:2566: + yacc.py:2687: id shift and go to state 46 + yacc.py:2689: + yacc.py:2714: param shift and go to state 44 + yacc.py:2714: param_list shift and go to state 95 + yacc.py:2561: + yacc.py:2562:state 61 + yacc.py:2563: + yacc.py:2565: (35) param -> id colon . type + yacc.py:2566: + yacc.py:2687: type shift and go to state 96 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 62 + yacc.py:2563: + yacc.py:2565: (19) def_attr -> id colon type larrow . expr + yacc.py:2565: (24) def_attr -> id colon type larrow . error + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 98 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 97 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 63 + yacc.py:2563: + yacc.py:2565: (23) def_attr -> id colon error larrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 99 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 64 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar . colon type ocur expr ccur + yacc.py:2565: (28) def_func -> id opar formals cpar . colon error ocur expr ccur + yacc.py:2565: (29) def_func -> id opar formals cpar . colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 100 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 65 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar . colon type ocur expr ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 101 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 66 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list ccur . semi + yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list ccur . error + yacc.py:2566: + yacc.py:2687: semi shift and go to state 102 + yacc.py:2687: error shift and go to state 103 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 67 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list ccur . semi + yacc.py:2566: + yacc.py:2687: semi shift and go to state 104 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 68 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list ccur . semi + yacc.py:2566: + yacc.py:2687: semi shift and go to state 105 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 69 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list ccur . semi + yacc.py:2566: + yacc.py:2687: semi shift and go to state 106 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 70 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 71 + yacc.py:2563: + yacc.py:2565: (22) def_attr -> error colon type larrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 22 (def_attr -> error colon type larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 72 + yacc.py:2563: + yacc.py:2565: (45) expr -> id . larrow expr + yacc.py:2565: (75) atom -> id . + yacc.py:2565: (88) func_call -> id . opar args cpar + yacc.py:2565: (89) func_call -> id . opar error cpar + yacc.py:2566: + yacc.py:2687: larrow shift and go to state 112 + yacc.py:2687: arroba reduce using rule 75 (atom -> id .) + yacc.py:2687: dot reduce using rule 75 (atom -> id .) + yacc.py:2687: star reduce using rule 75 (atom -> id .) + yacc.py:2687: div reduce using rule 75 (atom -> id .) + yacc.py:2687: plus reduce using rule 75 (atom -> id .) + yacc.py:2687: minus reduce using rule 75 (atom -> id .) + yacc.py:2687: less reduce using rule 75 (atom -> id .) + yacc.py:2687: lesseq reduce using rule 75 (atom -> id .) + yacc.py:2687: equal reduce using rule 75 (atom -> id .) + yacc.py:2687: semi reduce using rule 75 (atom -> id .) + yacc.py:2687: cpar reduce using rule 75 (atom -> id .) + yacc.py:2687: of reduce using rule 75 (atom -> id .) + yacc.py:2687: then reduce using rule 75 (atom -> id .) + yacc.py:2687: loop reduce using rule 75 (atom -> id .) + yacc.py:2687: comma reduce using rule 75 (atom -> id .) + yacc.py:2687: in reduce using rule 75 (atom -> id .) + yacc.py:2687: else reduce using rule 75 (atom -> id .) + yacc.py:2687: pool reduce using rule 75 (atom -> id .) + yacc.py:2687: ccur reduce using rule 75 (atom -> id .) + yacc.py:2687: fi reduce using rule 75 (atom -> id .) + yacc.py:2687: opar shift and go to state 113 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 73 + yacc.py:2563: + yacc.py:2565: (46) expr -> comp . + yacc.py:2565: (47) comp -> comp . less op + yacc.py:2565: (48) comp -> comp . lesseq op + yacc.py:2565: (49) comp -> comp . equal op + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for less resolved as shift + yacc.py:2666: ! shift/reduce conflict for lesseq resolved as shift + yacc.py:2666: ! shift/reduce conflict for equal resolved as shift + yacc.py:2687: semi reduce using rule 46 (expr -> comp .) + yacc.py:2687: cpar reduce using rule 46 (expr -> comp .) + yacc.py:2687: arroba reduce using rule 46 (expr -> comp .) + yacc.py:2687: dot reduce using rule 46 (expr -> comp .) + yacc.py:2687: star reduce using rule 46 (expr -> comp .) + yacc.py:2687: div reduce using rule 46 (expr -> comp .) + yacc.py:2687: plus reduce using rule 46 (expr -> comp .) + yacc.py:2687: minus reduce using rule 46 (expr -> comp .) + yacc.py:2687: of reduce using rule 46 (expr -> comp .) + yacc.py:2687: then reduce using rule 46 (expr -> comp .) + yacc.py:2687: loop reduce using rule 46 (expr -> comp .) + yacc.py:2687: comma reduce using rule 46 (expr -> comp .) + yacc.py:2687: in reduce using rule 46 (expr -> comp .) + yacc.py:2687: else reduce using rule 46 (expr -> comp .) + yacc.py:2687: pool reduce using rule 46 (expr -> comp .) + yacc.py:2687: ccur reduce using rule 46 (expr -> comp .) + yacc.py:2687: fi reduce using rule 46 (expr -> comp .) + yacc.py:2687: less shift and go to state 114 + yacc.py:2687: lesseq shift and go to state 115 + yacc.py:2687: equal shift and go to state 116 + yacc.py:2689: + yacc.py:2696: ! less [ reduce using rule 46 (expr -> comp .) ] + yacc.py:2696: ! lesseq [ reduce using rule 46 (expr -> comp .) ] + yacc.py:2696: ! equal [ reduce using rule 46 (expr -> comp .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 74 + yacc.py:2563: + yacc.py:2565: (50) comp -> op . + yacc.py:2565: (51) op -> op . plus term + yacc.py:2565: (52) op -> op . minus term + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for plus resolved as shift + yacc.py:2666: ! shift/reduce conflict for minus resolved as shift + yacc.py:2687: less reduce using rule 50 (comp -> op .) + yacc.py:2687: lesseq reduce using rule 50 (comp -> op .) + yacc.py:2687: equal reduce using rule 50 (comp -> op .) + yacc.py:2687: semi reduce using rule 50 (comp -> op .) + yacc.py:2687: cpar reduce using rule 50 (comp -> op .) + yacc.py:2687: arroba reduce using rule 50 (comp -> op .) + yacc.py:2687: dot reduce using rule 50 (comp -> op .) + yacc.py:2687: star reduce using rule 50 (comp -> op .) + yacc.py:2687: div reduce using rule 50 (comp -> op .) + yacc.py:2687: of reduce using rule 50 (comp -> op .) + yacc.py:2687: then reduce using rule 50 (comp -> op .) + yacc.py:2687: loop reduce using rule 50 (comp -> op .) + yacc.py:2687: comma reduce using rule 50 (comp -> op .) + yacc.py:2687: in reduce using rule 50 (comp -> op .) + yacc.py:2687: else reduce using rule 50 (comp -> op .) + yacc.py:2687: pool reduce using rule 50 (comp -> op .) + yacc.py:2687: ccur reduce using rule 50 (comp -> op .) + yacc.py:2687: fi reduce using rule 50 (comp -> op .) + yacc.py:2687: plus shift and go to state 117 + yacc.py:2687: minus shift and go to state 118 + yacc.py:2689: + yacc.py:2696: ! plus [ reduce using rule 50 (comp -> op .) ] + yacc.py:2696: ! minus [ reduce using rule 50 (comp -> op .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 75 + yacc.py:2563: + yacc.py:2565: (53) op -> term . + yacc.py:2565: (54) term -> term . star base_call + yacc.py:2565: (55) term -> term . div base_call + yacc.py:2565: (57) term -> term . star error + yacc.py:2565: (58) term -> term . div error + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for star resolved as shift + yacc.py:2666: ! shift/reduce conflict for div resolved as shift + yacc.py:2687: plus reduce using rule 53 (op -> term .) + yacc.py:2687: minus reduce using rule 53 (op -> term .) + yacc.py:2687: less reduce using rule 53 (op -> term .) + yacc.py:2687: lesseq reduce using rule 53 (op -> term .) + yacc.py:2687: equal reduce using rule 53 (op -> term .) + yacc.py:2687: semi reduce using rule 53 (op -> term .) + yacc.py:2687: cpar reduce using rule 53 (op -> term .) + yacc.py:2687: arroba reduce using rule 53 (op -> term .) + yacc.py:2687: dot reduce using rule 53 (op -> term .) + yacc.py:2687: of reduce using rule 53 (op -> term .) + yacc.py:2687: then reduce using rule 53 (op -> term .) + yacc.py:2687: loop reduce using rule 53 (op -> term .) + yacc.py:2687: comma reduce using rule 53 (op -> term .) + yacc.py:2687: in reduce using rule 53 (op -> term .) + yacc.py:2687: else reduce using rule 53 (op -> term .) + yacc.py:2687: pool reduce using rule 53 (op -> term .) + yacc.py:2687: ccur reduce using rule 53 (op -> term .) + yacc.py:2687: fi reduce using rule 53 (op -> term .) + yacc.py:2687: star shift and go to state 119 + yacc.py:2687: div shift and go to state 120 + yacc.py:2689: + yacc.py:2696: ! star [ reduce using rule 53 (op -> term .) ] + yacc.py:2696: ! div [ reduce using rule 53 (op -> term .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 76 + yacc.py:2563: + yacc.py:2565: (56) term -> base_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 56 (term -> base_call .) + yacc.py:2687: div reduce using rule 56 (term -> base_call .) + yacc.py:2687: plus reduce using rule 56 (term -> base_call .) + yacc.py:2687: minus reduce using rule 56 (term -> base_call .) + yacc.py:2687: less reduce using rule 56 (term -> base_call .) + yacc.py:2687: lesseq reduce using rule 56 (term -> base_call .) + yacc.py:2687: equal reduce using rule 56 (term -> base_call .) + yacc.py:2687: semi reduce using rule 56 (term -> base_call .) + yacc.py:2687: cpar reduce using rule 56 (term -> base_call .) + yacc.py:2687: arroba reduce using rule 56 (term -> base_call .) + yacc.py:2687: dot reduce using rule 56 (term -> base_call .) + yacc.py:2687: of reduce using rule 56 (term -> base_call .) + yacc.py:2687: then reduce using rule 56 (term -> base_call .) + yacc.py:2687: loop reduce using rule 56 (term -> base_call .) + yacc.py:2687: comma reduce using rule 56 (term -> base_call .) + yacc.py:2687: in reduce using rule 56 (term -> base_call .) + yacc.py:2687: else reduce using rule 56 (term -> base_call .) + yacc.py:2687: pool reduce using rule 56 (term -> base_call .) + yacc.py:2687: ccur reduce using rule 56 (term -> base_call .) + yacc.py:2687: fi reduce using rule 56 (term -> base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 77 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor . arroba type dot func_call + yacc.py:2565: (60) base_call -> factor . + yacc.py:2565: (62) base_call -> factor . arroba error dot func_call + yacc.py:2565: (65) factor -> factor . dot func_call + yacc.py:2566: + yacc.py:2609: ! shift/reduce conflict for arroba resolved as shift + yacc.py:2666: ! shift/reduce conflict for dot resolved as shift + yacc.py:2687: arroba shift and go to state 121 + yacc.py:2687: star reduce using rule 60 (base_call -> factor .) + yacc.py:2687: div reduce using rule 60 (base_call -> factor .) + yacc.py:2687: plus reduce using rule 60 (base_call -> factor .) + yacc.py:2687: minus reduce using rule 60 (base_call -> factor .) + yacc.py:2687: less reduce using rule 60 (base_call -> factor .) + yacc.py:2687: lesseq reduce using rule 60 (base_call -> factor .) + yacc.py:2687: equal reduce using rule 60 (base_call -> factor .) + yacc.py:2687: semi reduce using rule 60 (base_call -> factor .) + yacc.py:2687: cpar reduce using rule 60 (base_call -> factor .) + yacc.py:2687: of reduce using rule 60 (base_call -> factor .) + yacc.py:2687: then reduce using rule 60 (base_call -> factor .) + yacc.py:2687: loop reduce using rule 60 (base_call -> factor .) + yacc.py:2687: comma reduce using rule 60 (base_call -> factor .) + yacc.py:2687: in reduce using rule 60 (base_call -> factor .) + yacc.py:2687: else reduce using rule 60 (base_call -> factor .) + yacc.py:2687: pool reduce using rule 60 (base_call -> factor .) + yacc.py:2687: ccur reduce using rule 60 (base_call -> factor .) + yacc.py:2687: fi reduce using rule 60 (base_call -> factor .) + yacc.py:2687: dot shift and go to state 122 + yacc.py:2689: + yacc.py:2696: ! arroba [ reduce using rule 60 (base_call -> factor .) ] + yacc.py:2696: ! dot [ reduce using rule 60 (base_call -> factor .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 78 + yacc.py:2563: + yacc.py:2565: (67) factor -> func_call . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 67 (factor -> func_call .) + yacc.py:2687: dot reduce using rule 67 (factor -> func_call .) + yacc.py:2687: star reduce using rule 67 (factor -> func_call .) + yacc.py:2687: div reduce using rule 67 (factor -> func_call .) + yacc.py:2687: plus reduce using rule 67 (factor -> func_call .) + yacc.py:2687: minus reduce using rule 67 (factor -> func_call .) + yacc.py:2687: less reduce using rule 67 (factor -> func_call .) + yacc.py:2687: lesseq reduce using rule 67 (factor -> func_call .) + yacc.py:2687: equal reduce using rule 67 (factor -> func_call .) + yacc.py:2687: semi reduce using rule 67 (factor -> func_call .) + yacc.py:2687: cpar reduce using rule 67 (factor -> func_call .) + yacc.py:2687: of reduce using rule 67 (factor -> func_call .) + yacc.py:2687: then reduce using rule 67 (factor -> func_call .) + yacc.py:2687: loop reduce using rule 67 (factor -> func_call .) + yacc.py:2687: comma reduce using rule 67 (factor -> func_call .) + yacc.py:2687: in reduce using rule 67 (factor -> func_call .) + yacc.py:2687: else reduce using rule 67 (factor -> func_call .) + yacc.py:2687: pool reduce using rule 67 (factor -> func_call .) + yacc.py:2687: ccur reduce using rule 67 (factor -> func_call .) + yacc.py:2687: fi reduce using rule 67 (factor -> func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 79 + yacc.py:2563: + yacc.py:2565: (63) factor -> atom . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 63 (factor -> atom .) + yacc.py:2687: dot reduce using rule 63 (factor -> atom .) + yacc.py:2687: star reduce using rule 63 (factor -> atom .) + yacc.py:2687: div reduce using rule 63 (factor -> atom .) + yacc.py:2687: plus reduce using rule 63 (factor -> atom .) + yacc.py:2687: minus reduce using rule 63 (factor -> atom .) + yacc.py:2687: less reduce using rule 63 (factor -> atom .) + yacc.py:2687: lesseq reduce using rule 63 (factor -> atom .) + yacc.py:2687: equal reduce using rule 63 (factor -> atom .) + yacc.py:2687: semi reduce using rule 63 (factor -> atom .) + yacc.py:2687: cpar reduce using rule 63 (factor -> atom .) + yacc.py:2687: of reduce using rule 63 (factor -> atom .) + yacc.py:2687: then reduce using rule 63 (factor -> atom .) + yacc.py:2687: loop reduce using rule 63 (factor -> atom .) + yacc.py:2687: comma reduce using rule 63 (factor -> atom .) + yacc.py:2687: in reduce using rule 63 (factor -> atom .) + yacc.py:2687: else reduce using rule 63 (factor -> atom .) + yacc.py:2687: pool reduce using rule 63 (factor -> atom .) + yacc.py:2687: ccur reduce using rule 63 (factor -> atom .) + yacc.py:2687: fi reduce using rule 63 (factor -> atom .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 80 + yacc.py:2563: + yacc.py:2565: (64) factor -> opar . expr cpar + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 123 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 81 + yacc.py:2563: + yacc.py:2565: (66) factor -> not . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 124 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 82 + yacc.py:2563: + yacc.py:2565: (68) factor -> isvoid . base_call + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: base_call shift and go to state 125 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 83 + yacc.py:2563: + yacc.py:2565: (69) factor -> nox . base_call + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: base_call shift and go to state 127 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 84 + yacc.py:2563: + yacc.py:2565: (70) factor -> let . let_list in expr + yacc.py:2565: (36) let_list -> . let_assign + yacc.py:2565: (37) let_list -> . let_assign comma let_list + yacc.py:2565: (38) let_assign -> . param larrow expr + yacc.py:2565: (39) let_assign -> . param + yacc.py:2565: (35) param -> . id colon type + yacc.py:2566: + yacc.py:2687: id shift and go to state 46 + yacc.py:2689: + yacc.py:2714: let_list shift and go to state 128 + yacc.py:2714: let_assign shift and go to state 129 + yacc.py:2714: param shift and go to state 130 + yacc.py:2561: + yacc.py:2562:state 85 + yacc.py:2563: + yacc.py:2565: (71) factor -> case . expr of cases_list esac + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 131 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 86 + yacc.py:2563: + yacc.py:2565: (72) factor -> if . expr then expr else expr fi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 132 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 87 + yacc.py:2563: + yacc.py:2565: (73) factor -> while . expr loop expr pool + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 133 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 88 + yacc.py:2563: + yacc.py:2565: (74) atom -> num . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 74 (atom -> num .) + yacc.py:2687: dot reduce using rule 74 (atom -> num .) + yacc.py:2687: star reduce using rule 74 (atom -> num .) + yacc.py:2687: div reduce using rule 74 (atom -> num .) + yacc.py:2687: plus reduce using rule 74 (atom -> num .) + yacc.py:2687: minus reduce using rule 74 (atom -> num .) + yacc.py:2687: less reduce using rule 74 (atom -> num .) + yacc.py:2687: lesseq reduce using rule 74 (atom -> num .) + yacc.py:2687: equal reduce using rule 74 (atom -> num .) + yacc.py:2687: semi reduce using rule 74 (atom -> num .) + yacc.py:2687: cpar reduce using rule 74 (atom -> num .) + yacc.py:2687: of reduce using rule 74 (atom -> num .) + yacc.py:2687: then reduce using rule 74 (atom -> num .) + yacc.py:2687: loop reduce using rule 74 (atom -> num .) + yacc.py:2687: comma reduce using rule 74 (atom -> num .) + yacc.py:2687: in reduce using rule 74 (atom -> num .) + yacc.py:2687: else reduce using rule 74 (atom -> num .) + yacc.py:2687: pool reduce using rule 74 (atom -> num .) + yacc.py:2687: ccur reduce using rule 74 (atom -> num .) + yacc.py:2687: fi reduce using rule 74 (atom -> num .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 89 + yacc.py:2563: + yacc.py:2565: (76) atom -> new . type + yacc.py:2566: + yacc.py:2687: type shift and go to state 134 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 90 + yacc.py:2563: + yacc.py:2565: (77) atom -> ocur . block ccur + yacc.py:2565: (79) atom -> ocur . error ccur + yacc.py:2565: (80) atom -> ocur . block error + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 136 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: block shift and go to state 135 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 91 + yacc.py:2563: + yacc.py:2565: (81) atom -> true . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 81 (atom -> true .) + yacc.py:2687: dot reduce using rule 81 (atom -> true .) + yacc.py:2687: star reduce using rule 81 (atom -> true .) + yacc.py:2687: div reduce using rule 81 (atom -> true .) + yacc.py:2687: plus reduce using rule 81 (atom -> true .) + yacc.py:2687: minus reduce using rule 81 (atom -> true .) + yacc.py:2687: less reduce using rule 81 (atom -> true .) + yacc.py:2687: lesseq reduce using rule 81 (atom -> true .) + yacc.py:2687: equal reduce using rule 81 (atom -> true .) + yacc.py:2687: semi reduce using rule 81 (atom -> true .) + yacc.py:2687: cpar reduce using rule 81 (atom -> true .) + yacc.py:2687: of reduce using rule 81 (atom -> true .) + yacc.py:2687: then reduce using rule 81 (atom -> true .) + yacc.py:2687: loop reduce using rule 81 (atom -> true .) + yacc.py:2687: comma reduce using rule 81 (atom -> true .) + yacc.py:2687: in reduce using rule 81 (atom -> true .) + yacc.py:2687: else reduce using rule 81 (atom -> true .) + yacc.py:2687: pool reduce using rule 81 (atom -> true .) + yacc.py:2687: ccur reduce using rule 81 (atom -> true .) + yacc.py:2687: fi reduce using rule 81 (atom -> true .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 92 + yacc.py:2563: + yacc.py:2565: (82) atom -> false . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 82 (atom -> false .) + yacc.py:2687: dot reduce using rule 82 (atom -> false .) + yacc.py:2687: star reduce using rule 82 (atom -> false .) + yacc.py:2687: div reduce using rule 82 (atom -> false .) + yacc.py:2687: plus reduce using rule 82 (atom -> false .) + yacc.py:2687: minus reduce using rule 82 (atom -> false .) + yacc.py:2687: less reduce using rule 82 (atom -> false .) + yacc.py:2687: lesseq reduce using rule 82 (atom -> false .) + yacc.py:2687: equal reduce using rule 82 (atom -> false .) + yacc.py:2687: semi reduce using rule 82 (atom -> false .) + yacc.py:2687: cpar reduce using rule 82 (atom -> false .) + yacc.py:2687: of reduce using rule 82 (atom -> false .) + yacc.py:2687: then reduce using rule 82 (atom -> false .) + yacc.py:2687: loop reduce using rule 82 (atom -> false .) + yacc.py:2687: comma reduce using rule 82 (atom -> false .) + yacc.py:2687: in reduce using rule 82 (atom -> false .) + yacc.py:2687: else reduce using rule 82 (atom -> false .) + yacc.py:2687: pool reduce using rule 82 (atom -> false .) + yacc.py:2687: ccur reduce using rule 82 (atom -> false .) + yacc.py:2687: fi reduce using rule 82 (atom -> false .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 93 + yacc.py:2563: + yacc.py:2565: (83) atom -> string . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 83 (atom -> string .) + yacc.py:2687: dot reduce using rule 83 (atom -> string .) + yacc.py:2687: star reduce using rule 83 (atom -> string .) + yacc.py:2687: div reduce using rule 83 (atom -> string .) + yacc.py:2687: plus reduce using rule 83 (atom -> string .) + yacc.py:2687: minus reduce using rule 83 (atom -> string .) + yacc.py:2687: less reduce using rule 83 (atom -> string .) + yacc.py:2687: lesseq reduce using rule 83 (atom -> string .) + yacc.py:2687: equal reduce using rule 83 (atom -> string .) + yacc.py:2687: semi reduce using rule 83 (atom -> string .) + yacc.py:2687: cpar reduce using rule 83 (atom -> string .) + yacc.py:2687: of reduce using rule 83 (atom -> string .) + yacc.py:2687: then reduce using rule 83 (atom -> string .) + yacc.py:2687: loop reduce using rule 83 (atom -> string .) + yacc.py:2687: comma reduce using rule 83 (atom -> string .) + yacc.py:2687: in reduce using rule 83 (atom -> string .) + yacc.py:2687: else reduce using rule 83 (atom -> string .) + yacc.py:2687: pool reduce using rule 83 (atom -> string .) + yacc.py:2687: ccur reduce using rule 83 (atom -> string .) + yacc.py:2687: fi reduce using rule 83 (atom -> string .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 94 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon . type ocur expr ccur + yacc.py:2566: + yacc.py:2687: type shift and go to state 137 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 95 + yacc.py:2563: + yacc.py:2565: (33) param_list -> param comma param_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 33 (param_list -> param comma param_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 96 + yacc.py:2563: + yacc.py:2565: (35) param -> id colon type . + yacc.py:2566: + yacc.py:2687: comma reduce using rule 35 (param -> id colon type .) + yacc.py:2687: cpar reduce using rule 35 (param -> id colon type .) + yacc.py:2687: larrow reduce using rule 35 (param -> id colon type .) + yacc.py:2687: in reduce using rule 35 (param -> id colon type .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 97 + yacc.py:2563: + yacc.py:2565: (19) def_attr -> id colon type larrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 19 (def_attr -> id colon type larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 98 + yacc.py:2563: + yacc.py:2565: (24) def_attr -> id colon type larrow error . + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: semi reduce using rule 24 (def_attr -> id colon type larrow error .) + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 99 + yacc.py:2563: + yacc.py:2565: (23) def_attr -> id colon error larrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 23 (def_attr -> id colon error larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 100 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon . type ocur expr ccur + yacc.py:2565: (28) def_func -> id opar formals cpar colon . error ocur expr ccur + yacc.py:2565: (29) def_func -> id opar formals cpar colon . type ocur error ccur + yacc.py:2566: + yacc.py:2687: type shift and go to state 138 + yacc.py:2687: error shift and go to state 139 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 101 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon . type ocur expr ccur + yacc.py:2566: + yacc.py:2687: type shift and go to state 140 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 102 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 103 + yacc.py:2563: + yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list ccur error . + yacc.py:2566: + yacc.py:2687: error reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) + yacc.py:2687: class reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) + yacc.py:2687: $end reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 104 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 105 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 106 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 107 + yacc.py:2563: + yacc.py:2565: (86) block -> error . block + yacc.py:2565: (87) block -> error . semi + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: semi shift and go to state 142 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: block shift and go to state 141 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 108 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error arroba . type dot func_call + yacc.py:2566: + yacc.py:2687: type shift and go to state 143 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 109 + yacc.py:2563: + yacc.py:2565: (78) atom -> error block . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 144 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 110 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error opar . args cpar + yacc.py:2565: (64) factor -> opar . expr cpar + yacc.py:2565: (91) args -> . arg_list + yacc.py:2565: (92) args -> . arg_list_empty + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (96) arg_list_empty -> . epsilon + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (2) epsilon -> . + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 145 + yacc.py:2687: cpar reduce using rule 2 (epsilon -> .) + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: args shift and go to state 146 + yacc.py:2714: expr shift and go to state 147 + yacc.py:2714: arg_list shift and go to state 148 + yacc.py:2714: arg_list_empty shift and go to state 149 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: epsilon shift and go to state 150 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 111 + yacc.py:2563: + yacc.py:2565: (84) block -> expr . semi + yacc.py:2565: (85) block -> expr . semi block + yacc.py:2566: + yacc.py:2687: semi shift and go to state 151 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 112 + yacc.py:2563: + yacc.py:2565: (45) expr -> id larrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 152 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 113 + yacc.py:2563: + yacc.py:2565: (88) func_call -> id opar . args cpar + yacc.py:2565: (89) func_call -> id opar . error cpar + yacc.py:2565: (91) args -> . arg_list + yacc.py:2565: (92) args -> . arg_list_empty + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (96) arg_list_empty -> . epsilon + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (2) epsilon -> . + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 154 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: cpar reduce using rule 2 (epsilon -> .) + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: args shift and go to state 153 + yacc.py:2714: arg_list shift and go to state 148 + yacc.py:2714: arg_list_empty shift and go to state 149 + yacc.py:2714: expr shift and go to state 155 + yacc.py:2714: epsilon shift and go to state 150 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 114 + yacc.py:2563: + yacc.py:2565: (47) comp -> comp less . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: op shift and go to state 156 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 115 + yacc.py:2563: + yacc.py:2565: (48) comp -> comp lesseq . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: op shift and go to state 157 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 116 + yacc.py:2563: + yacc.py:2565: (49) comp -> comp equal . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: op shift and go to state 158 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 117 + yacc.py:2563: + yacc.py:2565: (51) op -> op plus . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: term shift and go to state 159 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 118 + yacc.py:2563: + yacc.py:2565: (52) op -> op minus . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: term shift and go to state 160 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 119 + yacc.py:2563: + yacc.py:2565: (54) term -> term star . base_call + yacc.py:2565: (57) term -> term star . error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 162 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: base_call shift and go to state 161 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 120 + yacc.py:2563: + yacc.py:2565: (55) term -> term div . base_call + yacc.py:2565: (58) term -> term div . error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 164 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: base_call shift and go to state 163 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 121 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor arroba . type dot func_call + yacc.py:2565: (62) base_call -> factor arroba . error dot func_call + yacc.py:2566: + yacc.py:2687: type shift and go to state 165 + yacc.py:2687: error shift and go to state 166 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 122 + yacc.py:2563: + yacc.py:2565: (65) factor -> factor dot . func_call + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 168 + yacc.py:2687: error shift and go to state 169 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 167 + yacc.py:2561: + yacc.py:2562:state 123 + yacc.py:2563: + yacc.py:2565: (64) factor -> opar expr . cpar + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 170 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 124 + yacc.py:2563: + yacc.py:2565: (66) factor -> not expr . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 66 (factor -> not expr .) + yacc.py:2687: dot reduce using rule 66 (factor -> not expr .) + yacc.py:2687: star reduce using rule 66 (factor -> not expr .) + yacc.py:2687: div reduce using rule 66 (factor -> not expr .) + yacc.py:2687: plus reduce using rule 66 (factor -> not expr .) + yacc.py:2687: minus reduce using rule 66 (factor -> not expr .) + yacc.py:2687: less reduce using rule 66 (factor -> not expr .) + yacc.py:2687: lesseq reduce using rule 66 (factor -> not expr .) + yacc.py:2687: equal reduce using rule 66 (factor -> not expr .) + yacc.py:2687: semi reduce using rule 66 (factor -> not expr .) + yacc.py:2687: cpar reduce using rule 66 (factor -> not expr .) + yacc.py:2687: of reduce using rule 66 (factor -> not expr .) + yacc.py:2687: then reduce using rule 66 (factor -> not expr .) + yacc.py:2687: loop reduce using rule 66 (factor -> not expr .) + yacc.py:2687: comma reduce using rule 66 (factor -> not expr .) + yacc.py:2687: in reduce using rule 66 (factor -> not expr .) + yacc.py:2687: else reduce using rule 66 (factor -> not expr .) + yacc.py:2687: pool reduce using rule 66 (factor -> not expr .) + yacc.py:2687: ccur reduce using rule 66 (factor -> not expr .) + yacc.py:2687: fi reduce using rule 66 (factor -> not expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 125 + yacc.py:2563: + yacc.py:2565: (68) factor -> isvoid base_call . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: dot reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: star reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: div reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: plus reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: minus reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: less reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: lesseq reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: equal reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: semi reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: cpar reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: of reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: then reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: loop reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: comma reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: in reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: else reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: pool reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: ccur reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: fi reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 126 + yacc.py:2563: + yacc.py:2565: (75) atom -> id . + yacc.py:2565: (88) func_call -> id . opar args cpar + yacc.py:2565: (89) func_call -> id . opar error cpar + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 75 (atom -> id .) + yacc.py:2687: dot reduce using rule 75 (atom -> id .) + yacc.py:2687: star reduce using rule 75 (atom -> id .) + yacc.py:2687: div reduce using rule 75 (atom -> id .) + yacc.py:2687: plus reduce using rule 75 (atom -> id .) + yacc.py:2687: minus reduce using rule 75 (atom -> id .) + yacc.py:2687: less reduce using rule 75 (atom -> id .) + yacc.py:2687: lesseq reduce using rule 75 (atom -> id .) + yacc.py:2687: equal reduce using rule 75 (atom -> id .) + yacc.py:2687: semi reduce using rule 75 (atom -> id .) + yacc.py:2687: cpar reduce using rule 75 (atom -> id .) + yacc.py:2687: of reduce using rule 75 (atom -> id .) + yacc.py:2687: then reduce using rule 75 (atom -> id .) + yacc.py:2687: loop reduce using rule 75 (atom -> id .) + yacc.py:2687: comma reduce using rule 75 (atom -> id .) + yacc.py:2687: in reduce using rule 75 (atom -> id .) + yacc.py:2687: else reduce using rule 75 (atom -> id .) + yacc.py:2687: pool reduce using rule 75 (atom -> id .) + yacc.py:2687: ccur reduce using rule 75 (atom -> id .) + yacc.py:2687: fi reduce using rule 75 (atom -> id .) + yacc.py:2687: opar shift and go to state 113 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 127 + yacc.py:2563: + yacc.py:2565: (69) factor -> nox base_call . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: dot reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: star reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: div reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: plus reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: minus reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: less reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: lesseq reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: equal reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: semi reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: cpar reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: of reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: then reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: loop reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: comma reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: in reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: else reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: pool reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: ccur reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: fi reduce using rule 69 (factor -> nox base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 128 + yacc.py:2563: + yacc.py:2565: (70) factor -> let let_list . in expr + yacc.py:2566: + yacc.py:2687: in shift and go to state 171 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 129 + yacc.py:2563: + yacc.py:2565: (36) let_list -> let_assign . + yacc.py:2565: (37) let_list -> let_assign . comma let_list + yacc.py:2566: + yacc.py:2687: in reduce using rule 36 (let_list -> let_assign .) + yacc.py:2687: comma shift and go to state 172 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 130 + yacc.py:2563: + yacc.py:2565: (38) let_assign -> param . larrow expr + yacc.py:2565: (39) let_assign -> param . + yacc.py:2566: + yacc.py:2687: larrow shift and go to state 173 + yacc.py:2687: comma reduce using rule 39 (let_assign -> param .) + yacc.py:2687: in reduce using rule 39 (let_assign -> param .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 131 + yacc.py:2563: + yacc.py:2565: (71) factor -> case expr . of cases_list esac + yacc.py:2566: + yacc.py:2687: of shift and go to state 174 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 132 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr . then expr else expr fi + yacc.py:2566: + yacc.py:2687: then shift and go to state 175 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 133 + yacc.py:2563: + yacc.py:2565: (73) factor -> while expr . loop expr pool + yacc.py:2566: + yacc.py:2687: loop shift and go to state 176 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 134 + yacc.py:2563: + yacc.py:2565: (76) atom -> new type . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 76 (atom -> new type .) + yacc.py:2687: dot reduce using rule 76 (atom -> new type .) + yacc.py:2687: star reduce using rule 76 (atom -> new type .) + yacc.py:2687: div reduce using rule 76 (atom -> new type .) + yacc.py:2687: plus reduce using rule 76 (atom -> new type .) + yacc.py:2687: minus reduce using rule 76 (atom -> new type .) + yacc.py:2687: less reduce using rule 76 (atom -> new type .) + yacc.py:2687: lesseq reduce using rule 76 (atom -> new type .) + yacc.py:2687: equal reduce using rule 76 (atom -> new type .) + yacc.py:2687: semi reduce using rule 76 (atom -> new type .) + yacc.py:2687: cpar reduce using rule 76 (atom -> new type .) + yacc.py:2687: of reduce using rule 76 (atom -> new type .) + yacc.py:2687: then reduce using rule 76 (atom -> new type .) + yacc.py:2687: loop reduce using rule 76 (atom -> new type .) + yacc.py:2687: comma reduce using rule 76 (atom -> new type .) + yacc.py:2687: in reduce using rule 76 (atom -> new type .) + yacc.py:2687: else reduce using rule 76 (atom -> new type .) + yacc.py:2687: pool reduce using rule 76 (atom -> new type .) + yacc.py:2687: ccur reduce using rule 76 (atom -> new type .) + yacc.py:2687: fi reduce using rule 76 (atom -> new type .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 135 + yacc.py:2563: + yacc.py:2565: (77) atom -> ocur block . ccur + yacc.py:2565: (80) atom -> ocur block . error + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 177 + yacc.py:2687: error shift and go to state 178 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 136 + yacc.py:2563: + yacc.py:2565: (79) atom -> ocur error . ccur + yacc.py:2565: (86) block -> error . block + yacc.py:2565: (87) block -> error . semi + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 179 + yacc.py:2687: semi shift and go to state 142 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: block shift and go to state 141 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 137 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon type . ocur expr ccur + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 180 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 138 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon type . ocur expr ccur + yacc.py:2565: (29) def_func -> id opar formals cpar colon type . ocur error ccur + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 181 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 139 + yacc.py:2563: + yacc.py:2565: (28) def_func -> id opar formals cpar colon error . ocur expr ccur + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 182 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 140 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon type . ocur expr ccur + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 183 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 141 + yacc.py:2563: + yacc.py:2565: (86) block -> error block . + yacc.py:2565: (78) atom -> error block . ccur + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for ccur resolved as shift + yacc.py:2687: error reduce using rule 86 (block -> error block .) + yacc.py:2687: ccur shift and go to state 144 + yacc.py:2689: + yacc.py:2696: ! ccur [ reduce using rule 86 (block -> error block .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 142 + yacc.py:2563: + yacc.py:2565: (87) block -> error semi . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 87 (block -> error semi .) + yacc.py:2687: error reduce using rule 87 (block -> error semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 143 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error arroba type . dot func_call + yacc.py:2566: + yacc.py:2687: dot shift and go to state 184 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 144 + yacc.py:2563: + yacc.py:2565: (78) atom -> error block ccur . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: dot reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: star reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: div reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: plus reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: minus reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: less reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: lesseq reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: equal reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: semi reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: cpar reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: of reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: then reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: loop reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: comma reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: in reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: else reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: pool reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: ccur reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: fi reduce using rule 78 (atom -> error block ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 145 + yacc.py:2563: + yacc.py:2565: (95) arg_list -> error . arg_list + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 185 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: arg_list shift and go to state 186 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 187 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 146 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error opar args . cpar + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 188 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 147 + yacc.py:2563: + yacc.py:2565: (64) factor -> opar expr . cpar + yacc.py:2565: (93) arg_list -> expr . + yacc.py:2565: (94) arg_list -> expr . comma arg_list + yacc.py:2566: + yacc.py:2609: ! shift/reduce conflict for cpar resolved as shift + yacc.py:2687: cpar shift and go to state 170 + yacc.py:2687: comma shift and go to state 189 + yacc.py:2689: + yacc.py:2696: ! cpar [ reduce using rule 93 (arg_list -> expr .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 148 + yacc.py:2563: + yacc.py:2565: (91) args -> arg_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 91 (args -> arg_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 149 + yacc.py:2563: + yacc.py:2565: (92) args -> arg_list_empty . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 92 (args -> arg_list_empty .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 150 + yacc.py:2563: + yacc.py:2565: (96) arg_list_empty -> epsilon . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 96 (arg_list_empty -> epsilon .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 151 + yacc.py:2563: + yacc.py:2565: (84) block -> expr semi . + yacc.py:2565: (85) block -> expr semi . block + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for error resolved as shift + yacc.py:2687: ccur reduce using rule 84 (block -> expr semi .) + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2696: ! error [ reduce using rule 84 (block -> expr semi .) ] + yacc.py:2700: + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: block shift and go to state 190 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 152 + yacc.py:2563: + yacc.py:2565: (45) expr -> id larrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: cpar reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: arroba reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: dot reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: star reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: div reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: plus reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: minus reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: less reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: lesseq reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: equal reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: of reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: then reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: loop reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: comma reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: in reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: else reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: pool reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: ccur reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: fi reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 153 + yacc.py:2563: + yacc.py:2565: (88) func_call -> id opar args . cpar + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 191 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 154 + yacc.py:2563: + yacc.py:2565: (89) func_call -> id opar error . cpar + yacc.py:2565: (95) arg_list -> error . arg_list + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 192 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 185 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: arg_list shift and go to state 186 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 187 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 155 + yacc.py:2563: + yacc.py:2565: (93) arg_list -> expr . + yacc.py:2565: (94) arg_list -> expr . comma arg_list + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 93 (arg_list -> expr .) + yacc.py:2687: comma shift and go to state 189 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 156 + yacc.py:2563: + yacc.py:2565: (47) comp -> comp less op . + yacc.py:2565: (51) op -> op . plus term + yacc.py:2565: (52) op -> op . minus term + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for plus resolved as shift + yacc.py:2666: ! shift/reduce conflict for minus resolved as shift + yacc.py:2687: less reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: lesseq reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: equal reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: semi reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: cpar reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: arroba reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: dot reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: star reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: div reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: of reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: then reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: loop reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: comma reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: in reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: else reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: pool reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: ccur reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: fi reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: plus shift and go to state 117 + yacc.py:2687: minus shift and go to state 118 + yacc.py:2689: + yacc.py:2696: ! plus [ reduce using rule 47 (comp -> comp less op .) ] + yacc.py:2696: ! minus [ reduce using rule 47 (comp -> comp less op .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 157 + yacc.py:2563: + yacc.py:2565: (48) comp -> comp lesseq op . + yacc.py:2565: (51) op -> op . plus term + yacc.py:2565: (52) op -> op . minus term + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for plus resolved as shift + yacc.py:2666: ! shift/reduce conflict for minus resolved as shift + yacc.py:2687: less reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: lesseq reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: equal reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: semi reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: cpar reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: arroba reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: dot reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: star reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: div reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: of reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: then reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: loop reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: comma reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: in reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: else reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: pool reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: ccur reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: fi reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: plus shift and go to state 117 + yacc.py:2687: minus shift and go to state 118 + yacc.py:2689: + yacc.py:2696: ! plus [ reduce using rule 48 (comp -> comp lesseq op .) ] + yacc.py:2696: ! minus [ reduce using rule 48 (comp -> comp lesseq op .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 158 + yacc.py:2563: + yacc.py:2565: (49) comp -> comp equal op . + yacc.py:2565: (51) op -> op . plus term + yacc.py:2565: (52) op -> op . minus term + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for plus resolved as shift + yacc.py:2666: ! shift/reduce conflict for minus resolved as shift + yacc.py:2687: less reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: lesseq reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: equal reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: semi reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: cpar reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: arroba reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: dot reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: star reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: div reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: of reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: then reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: loop reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: comma reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: in reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: else reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: pool reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: ccur reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: fi reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: plus shift and go to state 117 + yacc.py:2687: minus shift and go to state 118 + yacc.py:2689: + yacc.py:2696: ! plus [ reduce using rule 49 (comp -> comp equal op .) ] + yacc.py:2696: ! minus [ reduce using rule 49 (comp -> comp equal op .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 159 + yacc.py:2563: + yacc.py:2565: (51) op -> op plus term . + yacc.py:2565: (54) term -> term . star base_call + yacc.py:2565: (55) term -> term . div base_call + yacc.py:2565: (57) term -> term . star error + yacc.py:2565: (58) term -> term . div error + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for star resolved as shift + yacc.py:2666: ! shift/reduce conflict for div resolved as shift + yacc.py:2687: plus reduce using rule 51 (op -> op plus term .) + yacc.py:2687: minus reduce using rule 51 (op -> op plus term .) + yacc.py:2687: less reduce using rule 51 (op -> op plus term .) + yacc.py:2687: lesseq reduce using rule 51 (op -> op plus term .) + yacc.py:2687: equal reduce using rule 51 (op -> op plus term .) + yacc.py:2687: semi reduce using rule 51 (op -> op plus term .) + yacc.py:2687: cpar reduce using rule 51 (op -> op plus term .) + yacc.py:2687: arroba reduce using rule 51 (op -> op plus term .) + yacc.py:2687: dot reduce using rule 51 (op -> op plus term .) + yacc.py:2687: of reduce using rule 51 (op -> op plus term .) + yacc.py:2687: then reduce using rule 51 (op -> op plus term .) + yacc.py:2687: loop reduce using rule 51 (op -> op plus term .) + yacc.py:2687: comma reduce using rule 51 (op -> op plus term .) + yacc.py:2687: in reduce using rule 51 (op -> op plus term .) + yacc.py:2687: else reduce using rule 51 (op -> op plus term .) + yacc.py:2687: pool reduce using rule 51 (op -> op plus term .) + yacc.py:2687: ccur reduce using rule 51 (op -> op plus term .) + yacc.py:2687: fi reduce using rule 51 (op -> op plus term .) + yacc.py:2687: star shift and go to state 119 + yacc.py:2687: div shift and go to state 120 + yacc.py:2689: + yacc.py:2696: ! star [ reduce using rule 51 (op -> op plus term .) ] + yacc.py:2696: ! div [ reduce using rule 51 (op -> op plus term .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 160 + yacc.py:2563: + yacc.py:2565: (52) op -> op minus term . + yacc.py:2565: (54) term -> term . star base_call + yacc.py:2565: (55) term -> term . div base_call + yacc.py:2565: (57) term -> term . star error + yacc.py:2565: (58) term -> term . div error + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for star resolved as shift + yacc.py:2666: ! shift/reduce conflict for div resolved as shift + yacc.py:2687: plus reduce using rule 52 (op -> op minus term .) + yacc.py:2687: minus reduce using rule 52 (op -> op minus term .) + yacc.py:2687: less reduce using rule 52 (op -> op minus term .) + yacc.py:2687: lesseq reduce using rule 52 (op -> op minus term .) + yacc.py:2687: equal reduce using rule 52 (op -> op minus term .) + yacc.py:2687: semi reduce using rule 52 (op -> op minus term .) + yacc.py:2687: cpar reduce using rule 52 (op -> op minus term .) + yacc.py:2687: arroba reduce using rule 52 (op -> op minus term .) + yacc.py:2687: dot reduce using rule 52 (op -> op minus term .) + yacc.py:2687: of reduce using rule 52 (op -> op minus term .) + yacc.py:2687: then reduce using rule 52 (op -> op minus term .) + yacc.py:2687: loop reduce using rule 52 (op -> op minus term .) + yacc.py:2687: comma reduce using rule 52 (op -> op minus term .) + yacc.py:2687: in reduce using rule 52 (op -> op minus term .) + yacc.py:2687: else reduce using rule 52 (op -> op minus term .) + yacc.py:2687: pool reduce using rule 52 (op -> op minus term .) + yacc.py:2687: ccur reduce using rule 52 (op -> op minus term .) + yacc.py:2687: fi reduce using rule 52 (op -> op minus term .) + yacc.py:2687: star shift and go to state 119 + yacc.py:2687: div shift and go to state 120 + yacc.py:2689: + yacc.py:2696: ! star [ reduce using rule 52 (op -> op minus term .) ] + yacc.py:2696: ! div [ reduce using rule 52 (op -> op minus term .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 161 + yacc.py:2563: + yacc.py:2565: (54) term -> term star base_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: div reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: plus reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: minus reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: less reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: lesseq reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: equal reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: semi reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: cpar reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: arroba reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: dot reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: of reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: then reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: loop reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: comma reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: in reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: else reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: pool reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: ccur reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: fi reduce using rule 54 (term -> term star base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 162 + yacc.py:2563: + yacc.py:2565: (57) term -> term star error . + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for arroba resolved as shift + yacc.py:2687: star reduce using rule 57 (term -> term star error .) + yacc.py:2687: div reduce using rule 57 (term -> term star error .) + yacc.py:2687: plus reduce using rule 57 (term -> term star error .) + yacc.py:2687: minus reduce using rule 57 (term -> term star error .) + yacc.py:2687: less reduce using rule 57 (term -> term star error .) + yacc.py:2687: lesseq reduce using rule 57 (term -> term star error .) + yacc.py:2687: equal reduce using rule 57 (term -> term star error .) + yacc.py:2687: semi reduce using rule 57 (term -> term star error .) + yacc.py:2687: cpar reduce using rule 57 (term -> term star error .) + yacc.py:2687: dot reduce using rule 57 (term -> term star error .) + yacc.py:2687: of reduce using rule 57 (term -> term star error .) + yacc.py:2687: then reduce using rule 57 (term -> term star error .) + yacc.py:2687: loop reduce using rule 57 (term -> term star error .) + yacc.py:2687: comma reduce using rule 57 (term -> term star error .) + yacc.py:2687: in reduce using rule 57 (term -> term star error .) + yacc.py:2687: else reduce using rule 57 (term -> term star error .) + yacc.py:2687: pool reduce using rule 57 (term -> term star error .) + yacc.py:2687: ccur reduce using rule 57 (term -> term star error .) + yacc.py:2687: fi reduce using rule 57 (term -> term star error .) + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2696: ! arroba [ reduce using rule 57 (term -> term star error .) ] + yacc.py:2700: + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 163 + yacc.py:2563: + yacc.py:2565: (55) term -> term div base_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: div reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: plus reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: minus reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: less reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: lesseq reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: equal reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: semi reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: cpar reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: arroba reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: dot reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: of reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: then reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: loop reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: comma reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: in reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: else reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: pool reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: ccur reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: fi reduce using rule 55 (term -> term div base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 164 + yacc.py:2563: + yacc.py:2565: (58) term -> term div error . + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for arroba resolved as shift + yacc.py:2687: star reduce using rule 58 (term -> term div error .) + yacc.py:2687: div reduce using rule 58 (term -> term div error .) + yacc.py:2687: plus reduce using rule 58 (term -> term div error .) + yacc.py:2687: minus reduce using rule 58 (term -> term div error .) + yacc.py:2687: less reduce using rule 58 (term -> term div error .) + yacc.py:2687: lesseq reduce using rule 58 (term -> term div error .) + yacc.py:2687: equal reduce using rule 58 (term -> term div error .) + yacc.py:2687: semi reduce using rule 58 (term -> term div error .) + yacc.py:2687: cpar reduce using rule 58 (term -> term div error .) + yacc.py:2687: dot reduce using rule 58 (term -> term div error .) + yacc.py:2687: of reduce using rule 58 (term -> term div error .) + yacc.py:2687: then reduce using rule 58 (term -> term div error .) + yacc.py:2687: loop reduce using rule 58 (term -> term div error .) + yacc.py:2687: comma reduce using rule 58 (term -> term div error .) + yacc.py:2687: in reduce using rule 58 (term -> term div error .) + yacc.py:2687: else reduce using rule 58 (term -> term div error .) + yacc.py:2687: pool reduce using rule 58 (term -> term div error .) + yacc.py:2687: ccur reduce using rule 58 (term -> term div error .) + yacc.py:2687: fi reduce using rule 58 (term -> term div error .) + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2696: ! arroba [ reduce using rule 58 (term -> term div error .) ] + yacc.py:2700: + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 165 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor arroba type . dot func_call + yacc.py:2566: + yacc.py:2687: dot shift and go to state 193 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 166 + yacc.py:2563: + yacc.py:2565: (62) base_call -> factor arroba error . dot func_call + yacc.py:2566: + yacc.py:2687: dot shift and go to state 194 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 167 + yacc.py:2563: + yacc.py:2565: (65) factor -> factor dot func_call . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: dot reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: star reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: div reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: plus reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: minus reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: less reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: lesseq reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: equal reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: semi reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: cpar reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: of reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: then reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: loop reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: comma reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: in reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: else reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: pool reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: ccur reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: fi reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 168 + yacc.py:2563: + yacc.py:2565: (88) func_call -> id . opar args cpar + yacc.py:2565: (89) func_call -> id . opar error cpar + yacc.py:2566: + yacc.py:2687: opar shift and go to state 113 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 169 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2566: + yacc.py:2687: opar shift and go to state 195 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 170 + yacc.py:2563: + yacc.py:2565: (64) factor -> opar expr cpar . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: dot reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: star reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: div reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: plus reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: minus reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: less reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: lesseq reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: equal reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: semi reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: cpar reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: of reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: then reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: loop reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: comma reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: in reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: else reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: pool reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: ccur reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: fi reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 171 + yacc.py:2563: + yacc.py:2565: (70) factor -> let let_list in . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 196 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 172 + yacc.py:2563: + yacc.py:2565: (37) let_list -> let_assign comma . let_list + yacc.py:2565: (36) let_list -> . let_assign + yacc.py:2565: (37) let_list -> . let_assign comma let_list + yacc.py:2565: (38) let_assign -> . param larrow expr + yacc.py:2565: (39) let_assign -> . param + yacc.py:2565: (35) param -> . id colon type + yacc.py:2566: + yacc.py:2687: id shift and go to state 46 + yacc.py:2689: + yacc.py:2714: let_assign shift and go to state 129 + yacc.py:2714: let_list shift and go to state 197 + yacc.py:2714: param shift and go to state 130 + yacc.py:2561: + yacc.py:2562:state 173 + yacc.py:2563: + yacc.py:2565: (38) let_assign -> param larrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 198 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 174 + yacc.py:2563: + yacc.py:2565: (71) factor -> case expr of . cases_list esac + yacc.py:2565: (40) cases_list -> . casep semi + yacc.py:2565: (41) cases_list -> . casep semi cases_list + yacc.py:2565: (42) cases_list -> . error cases_list + yacc.py:2565: (43) cases_list -> . error semi + yacc.py:2565: (44) casep -> . id colon type rarrow expr + yacc.py:2566: + yacc.py:2687: error shift and go to state 201 + yacc.py:2687: id shift and go to state 202 + yacc.py:2689: + yacc.py:2714: cases_list shift and go to state 199 + yacc.py:2714: casep shift and go to state 200 + yacc.py:2561: + yacc.py:2562:state 175 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then . expr else expr fi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 203 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 176 + yacc.py:2563: + yacc.py:2565: (73) factor -> while expr loop . expr pool + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 204 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 177 + yacc.py:2563: + yacc.py:2565: (77) atom -> ocur block ccur . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: dot reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: star reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: div reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: plus reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: minus reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: less reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: lesseq reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: equal reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: semi reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: cpar reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: of reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: then reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: loop reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: comma reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: in reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: else reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: pool reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: ccur reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: fi reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 178 + yacc.py:2563: + yacc.py:2565: (80) atom -> ocur block error . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: dot reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: star reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: div reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: plus reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: minus reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: less reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: lesseq reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: equal reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: semi reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: cpar reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: of reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: then reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: loop reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: comma reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: in reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: else reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: pool reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: ccur reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: fi reduce using rule 80 (atom -> ocur block error .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 179 + yacc.py:2563: + yacc.py:2565: (79) atom -> ocur error ccur . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: dot reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: star reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: div reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: plus reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: minus reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: less reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: lesseq reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: equal reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: semi reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: cpar reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: of reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: then reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: loop reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: comma reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: in reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: else reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: pool reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: ccur reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: fi reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 180 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur . expr ccur + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 205 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 181 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur . expr ccur + yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur . error ccur + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 207 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 206 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 182 + yacc.py:2563: + yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur . expr ccur + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 208 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 183 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur . expr ccur + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 209 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 184 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error arroba type dot . func_call + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 168 + yacc.py:2687: error shift and go to state 169 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 210 + yacc.py:2561: + yacc.py:2562:state 185 + yacc.py:2563: + yacc.py:2565: (95) arg_list -> error . arg_list + yacc.py:2565: (86) block -> error . block + yacc.py:2565: (87) block -> error . semi + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: semi shift and go to state 142 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 185 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: arg_list shift and go to state 186 + yacc.py:2714: block shift and go to state 141 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: expr shift and go to state 187 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 186 + yacc.py:2563: + yacc.py:2565: (95) arg_list -> error arg_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 95 (arg_list -> error arg_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 187 + yacc.py:2563: + yacc.py:2565: (93) arg_list -> expr . + yacc.py:2565: (94) arg_list -> expr . comma arg_list + yacc.py:2565: (84) block -> expr . semi + yacc.py:2565: (85) block -> expr . semi block + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 93 (arg_list -> expr .) + yacc.py:2687: comma shift and go to state 189 + yacc.py:2687: semi shift and go to state 151 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 188 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error opar args cpar . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: dot reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: star reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: div reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: plus reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: minus reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: less reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: lesseq reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: equal reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: semi reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: cpar reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: of reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: then reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: loop reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: comma reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: in reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: else reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: pool reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: ccur reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: fi reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 189 + yacc.py:2563: + yacc.py:2565: (94) arg_list -> expr comma . arg_list + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 145 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 155 + yacc.py:2714: arg_list shift and go to state 211 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 190 + yacc.py:2563: + yacc.py:2565: (85) block -> expr semi block . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 85 (block -> expr semi block .) + yacc.py:2687: error reduce using rule 85 (block -> expr semi block .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 191 + yacc.py:2563: + yacc.py:2565: (88) func_call -> id opar args cpar . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: dot reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: star reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: div reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: plus reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: minus reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: less reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: lesseq reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: equal reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: semi reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: cpar reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: of reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: then reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: loop reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: comma reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: in reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: else reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: pool reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: ccur reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: fi reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 192 + yacc.py:2563: + yacc.py:2565: (89) func_call -> id opar error cpar . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: dot reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: star reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: div reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: plus reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: minus reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: less reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: lesseq reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: equal reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: semi reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: cpar reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: of reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: then reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: loop reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: comma reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: in reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: else reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: pool reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: ccur reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: fi reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 193 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor arroba type dot . func_call + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 168 + yacc.py:2687: error shift and go to state 169 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 212 + yacc.py:2561: + yacc.py:2562:state 194 + yacc.py:2563: + yacc.py:2565: (62) base_call -> factor arroba error dot . func_call + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 168 + yacc.py:2687: error shift and go to state 169 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 213 + yacc.py:2561: + yacc.py:2562:state 195 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error opar . args cpar + yacc.py:2565: (91) args -> . arg_list + yacc.py:2565: (92) args -> . arg_list_empty + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (96) arg_list_empty -> . epsilon + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (2) epsilon -> . + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 145 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: cpar reduce using rule 2 (epsilon -> .) + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: args shift and go to state 146 + yacc.py:2714: arg_list shift and go to state 148 + yacc.py:2714: arg_list_empty shift and go to state 149 + yacc.py:2714: expr shift and go to state 155 + yacc.py:2714: epsilon shift and go to state 150 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 196 + yacc.py:2563: + yacc.py:2565: (70) factor -> let let_list in expr . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: dot reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: star reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: div reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: plus reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: minus reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: less reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: lesseq reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: equal reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: semi reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: cpar reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: of reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: then reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: loop reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: comma reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: in reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: else reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: pool reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: ccur reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: fi reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 197 + yacc.py:2563: + yacc.py:2565: (37) let_list -> let_assign comma let_list . + yacc.py:2566: + yacc.py:2687: in reduce using rule 37 (let_list -> let_assign comma let_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 198 + yacc.py:2563: + yacc.py:2565: (38) let_assign -> param larrow expr . + yacc.py:2566: + yacc.py:2687: comma reduce using rule 38 (let_assign -> param larrow expr .) + yacc.py:2687: in reduce using rule 38 (let_assign -> param larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 199 + yacc.py:2563: + yacc.py:2565: (71) factor -> case expr of cases_list . esac + yacc.py:2566: + yacc.py:2687: esac shift and go to state 214 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 200 + yacc.py:2563: + yacc.py:2565: (40) cases_list -> casep . semi + yacc.py:2565: (41) cases_list -> casep . semi cases_list + yacc.py:2566: + yacc.py:2687: semi shift and go to state 215 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 201 + yacc.py:2563: + yacc.py:2565: (42) cases_list -> error . cases_list + yacc.py:2565: (43) cases_list -> error . semi + yacc.py:2565: (40) cases_list -> . casep semi + yacc.py:2565: (41) cases_list -> . casep semi cases_list + yacc.py:2565: (42) cases_list -> . error cases_list + yacc.py:2565: (43) cases_list -> . error semi + yacc.py:2565: (44) casep -> . id colon type rarrow expr + yacc.py:2566: + yacc.py:2687: semi shift and go to state 217 + yacc.py:2687: error shift and go to state 201 + yacc.py:2687: id shift and go to state 202 + yacc.py:2689: + yacc.py:2714: cases_list shift and go to state 216 + yacc.py:2714: casep shift and go to state 200 + yacc.py:2561: + yacc.py:2562:state 202 + yacc.py:2563: + yacc.py:2565: (44) casep -> id . colon type rarrow expr + yacc.py:2566: + yacc.py:2687: colon shift and go to state 218 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 203 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then expr . else expr fi + yacc.py:2566: + yacc.py:2687: else shift and go to state 219 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 204 + yacc.py:2563: + yacc.py:2565: (73) factor -> while expr loop expr . pool + yacc.py:2566: + yacc.py:2687: pool shift and go to state 220 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 205 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur expr . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 221 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 206 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur expr . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 222 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 207 + yacc.py:2563: + yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur error . ccur + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 223 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 208 + yacc.py:2563: + yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur expr . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 224 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 209 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur expr . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 225 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 210 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error arroba type dot func_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: div reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: plus reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: minus reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: less reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: lesseq reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: equal reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: semi reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: cpar reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: arroba reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: dot reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: of reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: then reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: loop reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: comma reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: in reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: else reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: pool reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: ccur reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: fi reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 211 + yacc.py:2563: + yacc.py:2565: (94) arg_list -> expr comma arg_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 94 (arg_list -> expr comma arg_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 212 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor arroba type dot func_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: div reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: plus reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: minus reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: less reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: lesseq reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: equal reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: semi reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: cpar reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: arroba reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: dot reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: of reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: then reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: loop reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: comma reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: in reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: else reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: pool reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: ccur reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: fi reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 213 + yacc.py:2563: + yacc.py:2565: (62) base_call -> factor arroba error dot func_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: div reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: plus reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: minus reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: less reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: lesseq reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: equal reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: semi reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: cpar reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: arroba reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: dot reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: of reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: then reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: loop reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: comma reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: in reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: else reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: pool reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: ccur reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: fi reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 214 + yacc.py:2563: + yacc.py:2565: (71) factor -> case expr of cases_list esac . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: dot reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: star reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: div reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: plus reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: minus reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: less reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: lesseq reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: equal reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: semi reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: cpar reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: of reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: then reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: loop reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: comma reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: in reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: else reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: pool reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: ccur reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: fi reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 215 + yacc.py:2563: + yacc.py:2565: (40) cases_list -> casep semi . + yacc.py:2565: (41) cases_list -> casep semi . cases_list + yacc.py:2565: (40) cases_list -> . casep semi + yacc.py:2565: (41) cases_list -> . casep semi cases_list + yacc.py:2565: (42) cases_list -> . error cases_list + yacc.py:2565: (43) cases_list -> . error semi + yacc.py:2565: (44) casep -> . id colon type rarrow expr + yacc.py:2566: + yacc.py:2687: esac reduce using rule 40 (cases_list -> casep semi .) + yacc.py:2687: error shift and go to state 201 + yacc.py:2687: id shift and go to state 202 + yacc.py:2689: + yacc.py:2714: casep shift and go to state 200 + yacc.py:2714: cases_list shift and go to state 226 + yacc.py:2561: + yacc.py:2562:state 216 + yacc.py:2563: + yacc.py:2565: (42) cases_list -> error cases_list . + yacc.py:2566: + yacc.py:2687: esac reduce using rule 42 (cases_list -> error cases_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 217 + yacc.py:2563: + yacc.py:2565: (43) cases_list -> error semi . + yacc.py:2566: + yacc.py:2687: esac reduce using rule 43 (cases_list -> error semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 218 + yacc.py:2563: + yacc.py:2565: (44) casep -> id colon . type rarrow expr + yacc.py:2566: + yacc.py:2687: type shift and go to state 227 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 219 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then expr else . expr fi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 228 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 220 + yacc.py:2563: + yacc.py:2565: (73) factor -> while expr loop expr pool . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: dot reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: star reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: div reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: plus reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: minus reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: less reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: lesseq reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: equal reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: semi reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: cpar reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: of reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: then reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: loop reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: comma reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: in reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: else reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: pool reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: ccur reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: fi reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 221 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur expr ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 26 (def_func -> error opar formals cpar colon type ocur expr ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 222 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur expr ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 25 (def_func -> id opar formals cpar colon type ocur expr ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 223 + yacc.py:2563: + yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur error ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 29 (def_func -> id opar formals cpar colon type ocur error ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 224 + yacc.py:2563: + yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur expr ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 28 (def_func -> id opar formals cpar colon error ocur expr ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 225 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur expr ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 27 (def_func -> id opar error cpar colon type ocur expr ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 226 + yacc.py:2563: + yacc.py:2565: (41) cases_list -> casep semi cases_list . + yacc.py:2566: + yacc.py:2687: esac reduce using rule 41 (cases_list -> casep semi cases_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 227 + yacc.py:2563: + yacc.py:2565: (44) casep -> id colon type . rarrow expr + yacc.py:2566: + yacc.py:2687: rarrow shift and go to state 229 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 228 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then expr else expr . fi + yacc.py:2566: + yacc.py:2687: fi shift and go to state 230 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 229 + yacc.py:2563: + yacc.py:2565: (44) casep -> id colon type rarrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 231 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 230 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then expr else expr fi . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: dot reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: star reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: div reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: plus reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: minus reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: less reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: lesseq reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: equal reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: semi reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: cpar reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: of reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: then reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: loop reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: comma reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: in reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: else reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: pool reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: ccur reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: fi reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 231 + yacc.py:2563: + yacc.py:2565: (44) casep -> id colon type rarrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 44 (casep -> id colon type rarrow expr .) + yacc.py:2689: + yacc.py:3447:24 shift/reduce conflicts + yacc.py:3457: + yacc.py:3458:Conflicts: + yacc.py:3459: + yacc.py:3462:shift/reduce conflict for less in state 73 resolved as shift + yacc.py:3462:shift/reduce conflict for lesseq in state 73 resolved as shift + yacc.py:3462:shift/reduce conflict for equal in state 73 resolved as shift + yacc.py:3462:shift/reduce conflict for plus in state 74 resolved as shift + yacc.py:3462:shift/reduce conflict for minus in state 74 resolved as shift + yacc.py:3462:shift/reduce conflict for star in state 75 resolved as shift + yacc.py:3462:shift/reduce conflict for div in state 75 resolved as shift + yacc.py:3462:shift/reduce conflict for arroba in state 77 resolved as shift + yacc.py:3462:shift/reduce conflict for dot in state 77 resolved as shift + yacc.py:3462:shift/reduce conflict for ccur in state 141 resolved as shift + yacc.py:3462:shift/reduce conflict for cpar in state 147 resolved as shift + yacc.py:3462:shift/reduce conflict for error in state 151 resolved as shift + yacc.py:3462:shift/reduce conflict for plus in state 156 resolved as shift + yacc.py:3462:shift/reduce conflict for minus in state 156 resolved as shift + yacc.py:3462:shift/reduce conflict for plus in state 157 resolved as shift + yacc.py:3462:shift/reduce conflict for minus in state 157 resolved as shift + yacc.py:3462:shift/reduce conflict for plus in state 158 resolved as shift + yacc.py:3462:shift/reduce conflict for minus in state 158 resolved as shift + yacc.py:3462:shift/reduce conflict for star in state 159 resolved as shift + yacc.py:3462:shift/reduce conflict for div in state 159 resolved as shift + yacc.py:3462:shift/reduce conflict for star in state 160 resolved as shift + yacc.py:3462:shift/reduce conflict for div in state 160 resolved as shift + yacc.py:3462:shift/reduce conflict for arroba in state 162 resolved as shift + yacc.py:3462:shift/reduce conflict for arroba in state 164 resolved as shift + yacc.py:3488:Couldn't create 'src.cool.parser.parsetab'. [Errno 2] No such file or directory: 'parser/output/parsetab.py' + yacc.py: 362:PLY: PARSE DEBUG START + yacc.py: 410: + yacc.py: 411:State : 0 + yacc.py: 434:Stack : . LexToken(class,'class',3,49) + yacc.py: 445:Action : Shift and goto state 5 + yacc.py: 410: + yacc.py: 411:State : 5 + yacc.py: 434:Stack : class . LexToken(type,'Main',3,55) + yacc.py: 445:Action : Shift and goto state 8 + yacc.py: 410: + yacc.py: 411:State : 8 + yacc.py: 434:Stack : class type . LexToken(ocur,'{',3,60) + yacc.py: 445:Action : Shift and goto state 10 + yacc.py: 410: + yacc.py: 411:State : 10 + yacc.py: 434:Stack : class type ocur . LexToken(id,'main',4,66) + yacc.py: 445:Action : Shift and goto state 19 + yacc.py: 410: + yacc.py: 411:State : 19 + yacc.py: 434:Stack : class type ocur id . LexToken(opar,'(',4,70) + yacc.py: 445:Action : Shift and goto state 32 + yacc.py: 410: + yacc.py: 411:State : 32 + yacc.py: 434:Stack : class type ocur id opar . LexToken(cpar,')',4,71) + yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : class type ocur id opar epsilon . LexToken(cpar,')',4,71) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : class type ocur id opar param_list_empty . LexToken(cpar,')',4,71) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : class type ocur id opar formals . LexToken(cpar,')',4,71) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : class type ocur id opar formals cpar . LexToken(colon,':',4,72) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon . LexToken(type,'Object',4,74) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type . LexToken(ocur,'{',4,81) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur . LexToken(opar,'(',5,91) + yacc.py: 445:Action : Shift and goto state 80 + yacc.py: 410: + yacc.py: 411:State : 80 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar . LexToken(new,'new',5,92) + yacc.py: 445:Action : Shift and goto state 89 + yacc.py: 410: + yacc.py: 411:State : 89 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar new . LexToken(type,'Alpha',5,96) + yacc.py: 445:Action : Shift and goto state 134 + yacc.py: 410: + yacc.py: 411:State : 134 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar new type . LexToken(cpar,')',5,101) + yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','Alpha'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 123 + yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar epsilon . LexToken(cpar,')',5,109) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar arg_list_empty . LexToken(cpar,')',5,109) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 153 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args . LexToken(cpar,')',5,109) + yacc.py: 445:Action : Shift and goto state 191 + yacc.py: 410: + yacc.py: 411:State : 191 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args cpar . LexToken(ccur,'}',6,115) + yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['print','(',[],')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'print',5,103), [])) + yacc.py: 410: + yacc.py: 411:State : 167 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot func_call . LexToken(ccur,'}',6,115) + yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','Object','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 16 + yacc.py: 430:Defaulted state 16: Reduce using 14 + yacc.py: 434:Stack : class type ocur def_func semi epsilon . LexToken(ccur,'}',7,118) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 48 + yacc.py: 430:Defaulted state 48: Reduce using 16 + yacc.py: 434:Stack : class type ocur def_func semi feature_list . LexToken(ccur,'}',7,118) + yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 14 + yacc.py: 506:Result : ([ class type ocur feature_list ccur semi] with ['class','Main','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( id colon type] with ['test1',':','Object'] and goto state 17 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar epsilon . LexToken(cpar,')',12,172) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar param_list_empty . LexToken(cpar,')',12,172) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals . LexToken(cpar,')',12,172) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar . LexToken(colon,':',12,173) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon . LexToken(type,'Int',12,175) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',12,179) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type ocur . LexToken(num,2.0,13,189) + yacc.py: 445:Action : Shift and goto state 88 + yacc.py: 410: + yacc.py: 411:State : 88 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',13,191) + yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing1','(',[],')',':','Int','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( num] with [1.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test2',':','Int','<-',] and goto state 17 + yacc.py: 506:Result : ( string] with ['1'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test3',':','String','<-',] and goto state 17 + yacc.py: 506:Result : ( id colon type] with ['a',':','Alpha'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'a',20,265), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param . LexToken(comma,',',20,273) + yacc.py: 445:Action : Shift and goto state 60 + yacc.py: 410: + yacc.py: 411:State : 60 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma . LexToken(id,'b',20,275) + yacc.py: 445:Action : Shift and goto state 46 + yacc.py: 410: + yacc.py: 411:State : 46 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id . LexToken(colon,':',20,276) + yacc.py: 445:Action : Shift and goto state 61 + yacc.py: 410: + yacc.py: 411:State : 61 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id colon . LexToken(type,'Int',20,278) + yacc.py: 445:Action : Shift and goto state 96 + yacc.py: 410: + yacc.py: 411:State : 96 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id colon type . LexToken(cpar,')',20,281) + yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['b',':','Int'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'b',20,275), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param . LexToken(cpar,')',20,281) + yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 + yacc.py: 506:Result : ([(LexToken(id,'b',20,275), LexToken(type ...) + yacc.py: 410: + yacc.py: 411:State : 95 + yacc.py: 430:Defaulted state 95: Reduce using 33 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param_list . LexToken(cpar,')',20,281) + yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 + yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) + yacc.py: 410: + yacc.py: 411:State : 42 + yacc.py: 430:Defaulted state 42: Reduce using 30 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param_list . LexToken(cpar,')',20,281) + yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 + yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals . LexToken(cpar,')',20,281) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar . LexToken(colon,':',20,282) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon . LexToken(type,'Int',20,284) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',20,288) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur . LexToken(num,2.0,21,298) + yacc.py: 445:Action : Shift and goto state 88 + yacc.py: 410: + yacc.py: 411:State : 88 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',21,300) + yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing2','(',,')',':','Int','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar epsilon . LexToken(cpar,')',24,325) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar param_list_empty . LexToken(cpar,')',24,325) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals . LexToken(cpar,')',24,325) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar . LexToken(colon,':',24,326) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon . LexToken(type,'String',24,328) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',24,335) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur . LexToken(string,'2 + 2',25,351) + yacc.py: 445:Action : Shift and goto state 93 + yacc.py: 410: + yacc.py: 411:State : 93 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur string . LexToken(ccur,'}',26,357) + yacc.py: 469:Action : Reduce rule [atom -> string] with ['2 + 2'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing3','(',[],')',':','String','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',28,374) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',28,374) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals . LexToken(cpar,')',28,374) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',28,375) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'String',28,377) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',28,384) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(type,'Test1',29,394) + yacc.py: 579:Error : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(type,'Test1',29,394) + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur . error + yacc.py: 445:Action : Shift and goto state 207 + yacc.py: 410: + yacc.py: 411:State : 207 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error . LexToken(type,'Test1',29,394) + yacc.py: 579:Error : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error . LexToken(type,'Test1',29,394) + yacc.py: 410: + yacc.py: 411:State : 207 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error . LexToken(larrow,'<-',29,400) + yacc.py: 579:Error : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error . LexToken(larrow,'<-',29,400) + yacc.py: 410: + yacc.py: 411:State : 207 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error . LexToken(string,'Hello World',29,415) + yacc.py: 445:Action : Shift and goto state 93 + yacc.py: 410: + yacc.py: 411:State : 93 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error string . LexToken(ccur,'}',30,467) + yacc.py: 469:Action : Reduce rule [atom -> string] with ['Hello World'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( error semi] with [,';'] and goto state 109 + yacc.py: 506:Result : ([ error block ccur] with [,,'}'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( ] with [] and goto state 150 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar epsilon . LexToken(cpar,')',34,510) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar arg_list_empty . LexToken(cpar,')',34,510) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 153 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar args . LexToken(cpar,')',34,510) + yacc.py: 445:Action : Shift and goto state 191 + yacc.py: 410: + yacc.py: 411:State : 191 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar args cpar . LexToken(colon,':',34,512) + yacc.py: 579:Error : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar args cpar . LexToken(colon,':',34,512) + yacc.py: 410: + yacc.py: 411:State : 191 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar args cpar . error + yacc.py: 579:Error : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar args cpar . error + yacc.py: 410: + yacc.py: 411:State : 153 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar args . error + yacc.py: 579:Error : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar args . error + yacc.py: 410: + yacc.py: 411:State : 113 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar . error + yacc.py: 445:Action : Shift and goto state 154 + yacc.py: 410: + yacc.py: 411:State : 154 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error . LexToken(colon,':',34,512) + yacc.py: 579:Error : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error . LexToken(colon,':',34,512) + yacc.py: 410: + yacc.py: 411:State : 154 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error . LexToken(type,'Object',34,514) + yacc.py: 579:Error : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error . LexToken(type,'Object',34,514) + yacc.py: 410: + yacc.py: 411:State : 154 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error . LexToken(ocur,'{',34,521) + yacc.py: 445:Action : Shift and goto state 90 + yacc.py: 410: + yacc.py: 411:State : 90 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error ocur . LexToken(id,'out_string',35,531) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error ocur id . LexToken(opar,'(',35,541) + yacc.py: 445:Action : Shift and goto state 113 + yacc.py: 410: + yacc.py: 411:State : 113 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error ocur id opar . LexToken(string,'reached!!\\n',35,554) + yacc.py: 445:Action : Shift and goto state 93 + yacc.py: 410: + yacc.py: 411:State : 93 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error ocur id opar string . LexToken(cpar,')',35,555) + yacc.py: 469:Action : Reduce rule [atom -> string] with ['reached!!\\n'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'out_string',35,531), [ func_call] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( ocur error ccur] with ['{',,'}'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 187 + yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 109 + yacc.py: 506:Result : ([ error block ccur] with [,,'}'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( str: - return 'LexicographicError' \ No newline at end of file + return 'LexicographicError' + + +class SyntacticError(CoolError): + 'Errores detectados en el cool_parser' + + ERROR = 'ERROR at or near "%s"' + + @property + def error_type(self): + return 'SyntacticError' diff --git a/src/cool/utils/helpers.py b/src/cool/utils/helpers.py new file mode 100644 index 000000000..2bd692b0d --- /dev/null +++ b/src/cool/utils/helpers.py @@ -0,0 +1,6 @@ +import itertools + + +def find_column(lexer, token): + line_start = lexer.lexdata.rfind('\n', 0, token.lexpos) + return token.lexpos - line_start diff --git a/src/cool/utils/logger.py b/src/cool/utils/logger.py new file mode 100644 index 000000000..a8b42b35f --- /dev/null +++ b/src/cool/utils/logger.py @@ -0,0 +1,13 @@ +import logging +import os + +cwd = os.getcwd() + +logging.basicConfig( + level = logging.DEBUG, + filename = f"{cwd}/src/cool/parser/output/parselog.txt", + filemode = "w", + format = "%(filename)10s:%(lineno)4d:%(message)s" +) + +log = logging.getLogger() From e2b162a147061eb2e9b677d03f77fbd580d74dfe Mon Sep 17 00:00:00 2001 From: JCH97 Date: Mon, 20 Sep 2021 15:12:57 -0400 Subject: [PATCH 14/44] chore(parser): test without parser. last test lexer fail --- src/cool/__main__.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/cool/__main__.py b/src/cool/__main__.py index fc3b67b8b..dc5217d5b 100644 --- a/src/cool/__main__.py +++ b/src/cool/__main__.py @@ -11,6 +11,7 @@ _in = sys.argv[1] if len(sys.argv) > 1 else f'{Path.cwd()}/cool/code.cl' _out = sys.argv[2] if len(sys.argv) > 1 else None + # print(_in, _out) # in_ = f'{sys.argv[1]} {sys.argv[2]}' # out_ = f'{sys.argv[3]} {sys.argv[4]}' @@ -26,9 +27,9 @@ lexer = main(text, _out) - print(lexer) + # print(lexer) - parser = CoolParser(lexer) - result = parser.parse(text) + # parser = CoolParser(lexer) + # result = parser.parse(text) - print(result) + # print(result) From 3d7ebd044cca288f323c29ddd5dbe67354942bf2 Mon Sep 17 00:00:00 2001 From: JCH97 Date: Mon, 20 Sep 2021 15:20:16 -0400 Subject: [PATCH 15/44] chore(parser): update parser. update __main__.py --- src/__main__.py | 16 +- src/cool/__main__.py | 10 +- src/cool/parser/parser.py | 587 ++++++-------------------------------- 3 files changed, 107 insertions(+), 506 deletions(-) diff --git a/src/__main__.py b/src/__main__.py index 85597f73d..06b7f311f 100644 --- a/src/__main__.py +++ b/src/__main__.py @@ -8,29 +8,29 @@ # in_ = sys.argv[1] #out_ = sys.argv[2] # print(f'Argv: {sys.argv} ') - _in = sys.argv[1] if len(sys.argv) > 1 else f'{Path.cwd()}/src/cool/code.cl' - _out = sys.argv[2] if len(sys.argv) > 1 else None + # _in = sys.argv[1] if len(sys.argv) > 1 else f'{Path.cwd()}/src/cool/code.cl' + # _out = sys.argv[2] if len(sys.argv) > 1 else None # in_ = f'{sys.argv[1]} {sys.argv[2]}' # out_ = f'{sys.argv[3]} {sys.argv[4]}' # print(f'{in_}') - # _in = sys.argv[1] - # _out = sys.argv[2] + _in = sys.argv[1] + _out = sys.argv[2] text: str = '' - with open(_in)as file: + with open(_in) as file: text = file.read() lexer = main(text, _out) # print(lexer) - lexer.lexer.lineno = 1 + # lexer.lexer.lineno = 1 - parser = CoolParser(lexer) - result = parser.parse(text) + # parser = CoolParser(lexer) + # result = parser.parse(text) # print(result) diff --git a/src/cool/__main__.py b/src/cool/__main__.py index dc5217d5b..cf5ff6df7 100644 --- a/src/cool/__main__.py +++ b/src/cool/__main__.py @@ -8,8 +8,8 @@ # in_ = sys.argv[1] #out_ = sys.argv[2] # print(f'Argv: {sys.argv} ') - _in = sys.argv[1] if len(sys.argv) > 1 else f'{Path.cwd()}/cool/code.cl' - _out = sys.argv[2] if len(sys.argv) > 1 else None + # _in = sys.argv[1] if len(sys.argv) > 1 else f'{Path.cwd()}/cool/code.cl' + # _out = sys.argv[2] if len(sys.argv) > 1 else None # print(_in, _out) # in_ = f'{sys.argv[1]} {sys.argv[2]}' @@ -17,12 +17,12 @@ # print(f'{in_}') - # _in = sys.argv[1] - # _out = sys.argv[2] + _in = sys.argv[1] + _out = sys.argv[2] text: str = '' - with open(_in)as file: + with open(_in) as file: text = file.read() lexer = main(text, _out) diff --git a/src/cool/parser/parser.py b/src/cool/parser/parser.py index 0ba6f2763..cbca0a2be 100644 --- a/src/cool/parser/parser.py +++ b/src/cool/parser/parser.py @@ -14,421 +14,48 @@ def __init__(self, lexer = None): self.outputdir = 'parser/output' self.tokens = tokens self.errors = False - self.parser = yacc.yacc(start='program', - module=self, - outputdir=self.outputdir, - optimize=1, - debuglog=log, - errorlog=log) + self.parser = yacc.yacc(start = 'program', + module = self, + outputdir = self.outputdir, + optimize = 1, + debuglog = log, + errorlog = log) def parse(self, program, debug = False): self.errors = False return self.parser.parse(program, self.lexer.lexer, debug = log) -# class CoolParser(Parser): -# def p_program(self, p): -# 'program : class_list' - -# p[0] = ProgramNode(p[1]) - -# def p_class_list(self, p): -# '''class_list : def_class class_list -# | def_class''' - -# p[0] = [p[1]] if len(p) == 2 else [p[1]] + p[2] - -# def p_class_list_error(self, p): -# 'class_list : error class_list' - -# p[0] = [p[1]] if len(p) == 2 else [p[1]] + p[2] - - -# def p_epsilon(self, p): -# 'epsilon :' -# pass - - -# def p_def_class(self, p): -# '''def_class : class type ocur feature_list ccur semi -# | class type inherits type ocur feature_list ccur semi''' - -# p[0] = ClassDeclarationNode(p.slice[2], p[4]) if len(p) == 7 else \ -# ClassDeclarationNode(p.slice[2], p[6], p.slice[4]) - - -# def p_def_class_error(self, p): -# '''def_class : class error ocur feature_list ccur semi -# | class type ocur feature_list ccur error -# | class error inherits type ocur feature_list ccur semi -# | class error inherits error ocur feature_list ccur semi -# | class type inherits error ocur feature_list ccur semi -# | class type inherits type ocur feature_list ccur error''' - -# p[0] = ErrorNode() - - -# def p_feature_list(self, p): -# '''feature_list : epsilon -# | def_attr semi feature_list -# | def_func semi feature_list''' - -# p[0] = [] if len(p) == 2 else [p[1]] + p[3] - - -# def p_feature_list_error(self, p): -# 'feature_list : error feature_list' - -# p[0] = [p[1]] + p[2] - - -# def p_def_attr(self, p): -# '''def_attr : id colon type -# | id colon type larrow expr''' - -# p[0] = AttrDeclarationNode(p.slice[1], p.slice[3]) if len(p) == 4 else \ -# AttrDeclarationNode(p.slice[1], p.slice[3], p[5]) - -# def p_def_attr_error(self, p): -# '''def_attr : error colon type -# | id colon error -# | error colon type larrow expr -# | id colon error larrow expr -# | id colon type larrow error''' - -# p[0] = ErrorNode() - - -# def p_def_func(self, p): -# 'def_func : id opar formals cpar colon type ocur expr ccur' - -# p[0] = FuncDeclarationNode(p.slice[1], p[3], p.slice[6], p[8]) - -# def p_def_func_error(self, p): -# '''def_func : error opar formals cpar colon type ocur expr ccur -# | id opar error cpar colon type ocur expr ccur -# | id opar formals cpar colon error ocur expr ccur -# | id opar formals cpar colon type ocur error ccur''' - -# p[0] = ErrorNode() - - -# def p_formals(self, p): -# '''formals : param_list -# | param_list_empty''' - -# p[0] = p[1] - - -# def p_param_list(self, p): -# '''param_list : param -# | param comma param_list''' - -# p[0] = [p[1]] if len(p) == 2 else [p[1]] + p[3] - - -# def p_param_list_empty(self, p): -# 'param_list_empty : epsilon' - -# p[0] = [] - -# def p_param(self, p): -# 'param : id colon type' - -# p[0] = (p.slice[1], p.slice[3]) - - -# def p_let_list(self, p): -# '''let_list : let_assign -# | let_assign comma let_list''' - -# p[0] = [p[1]] if len(p) == 2 else [p[1]] + p[3] - -# def p_let_assign(self, p): -# '''let_assign : param larrow expr -# | param''' - -# p[0] = VarDeclarationNode(p[1][0], p[1][1]) if len(p) == 2 else\ -# VarDeclarationNode(p[1][0], p[1][1], p[3]) - - -# def p_cases_list(self, p): -# '''cases_list : casep semi -# | casep semi cases_list''' - -# p[0] = [p[1]] if len(p) == 3 else [p[1]] + p[3] - -# def p_cases_list_error(self, p): -# '''cases_list : error cases_list -# | error semi''' - -# p[0] = [ErrorNode()] - -# def p_case(self, p): -# 'casep : id colon type rarrow expr' - -# p[0] = OptionNode(p.slice[1], p.slice[3], p[5]) - - -# def p_expr(self, p): -# '''expr : id larrow expr -# | comp''' - -# p[0] = AssignNode(p.slice[1], p[3]) if len(p) == 4 else p[1] - - -# def p_comp(self, p): -# '''comp : comp less op -# | comp lesseq op -# | comp equal op -# | op''' - -# if len(p) == 2: -# p[0] = p[1] -# elif p[2] == '<': -# p[0] = LessNode(p[1], p[3]) -# elif p[2] == '<=': -# p[0] = LessEqNode(p[1], p[3]) -# elif p[2] == '=': -# p[0] = EqualNode(p[1], p[3]) - -# def p_op(self, p): -# '''op : op plus term -# | op minus term -# | term''' - -# if len(p) == 2: -# p[0] = p[1] -# elif p[2] == '+': -# p[0] = PlusNode(p[1], p[3]) -# elif p[2] == '-': -# p[0] = MinusNode(p[1], p[3]) - -# def p_term(self, p): -# '''term : term star base_call -# | term div base_call -# | base_call''' - -# if len(p) == 2: -# p[0] = p[1] -# elif p[2] == '*': -# p[0] = StarNode(p[1], p[3]) -# elif p[2] == '/': -# p[0] = DivNode(p[1], p[3]) - - -# def p_term_error(self, p): -# '''term : term star error -# | term div error''' - -# p[0] = ErrorNode() - - -# def p_base_call(self, p): -# '''base_call : factor arroba type dot func_call -# | factor''' - -# p[0] = p[1] if len(p) == 2 else BaseCallNode(p[1], p.slice[3], *p[5]) - - -# def p_base_call_error(self, p): -# '''base_call : error arroba type dot func_call -# | factor arroba error dot func_call''' - -# p[0] = ErrorNode() - -# def p_factor1(self, p): -# '''factor : atom -# | opar expr cpar''' - -# p[0] = p[1] if len(p) == 2 else p[2] - -# def p_factor2(self, p): -# '''factor : factor dot func_call -# | not expr -# | func_call''' - -# if len(p) == 2: -# p[0] = StaticCallNode(*p[1]) -# elif p[1] == 'not': -# p[0] = NotNode(p[2], p.slice[1]) -# else: -# p[0] = CallNode(p[1], *p[3]) - -# def p_factor3(self, p): -# '''factor : isvoid base_call -# | nox base_call''' - -# p[0] = IsVoidNode(p[2], p.slice[1]) if p[1] == 'isvoid' else BinaryNotNode(p[2], p.slice[1]) - - -# def p_expr_let(self, p): -# 'factor : let let_list in expr' - -# p[0] = LetNode(p[2], p[4], p.slice[1]) - - -# def p_expr_case(self, p): -# 'factor : case expr of cases_list esac' - -# p[0] = CaseNode(p[2], p[4], p.slice[1]) - - -# def p_expr_if(self, p): -# 'factor : if expr then expr else expr fi' - -# p[0] = ConditionalNode(p[2], p[4], p[6], p.slice[1]) - - -# def p_expr_while(self, p): -# 'factor : while expr loop expr pool' - -# p[0] = WhileNode(p[2], p[4], p.slice[1]) - - -# def p_atom_num(self, p): -# 'atom : num' - -# p[0] = ConstantNumNode(p.slice[1]) - -# def p_atom_id(self, p): -# 'atom : id' - -# p[0] = VariableNode(p.slice[1]) - -# def p_atom_new(self, p): -# 'atom : new type' - -# p[0] = InstantiateNode(p.slice[2]) - -# def p_atom_block(self, p): -# 'atom : ocur block ccur' - -# p[0] = BlockNode(p[2], p.slice[1]) - -# def p_atom_block_error(self, p): -# '''atom : error block ccur -# | ocur error ccur -# | ocur block error''' - -# p[0] = ErrorNode() - -# def p_atom_boolean(self, p): -# '''atom : true -# | false''' - -# p[0] = ConstantBoolNode(p.slice[1]) - -# def p_atom_string(self, p): -# 'atom : string' - -# p[0] = ConstantStrNode(p.slice[1]) - - -# def p_block(self, p): -# '''block : expr semi -# | expr semi block''' - -# p[0] = [p[1]] if len(p) == 3 else [p[1]] + p[3] - -# def p_block_error(self, p): -# '''block : error block -# | error semi''' - -# p[0] = [ErrorNode()] - - -# def p_func_call(self, p): -# 'func_call : id opar args cpar' - -# p[0] = (p.slice[1], p[3]) - -# def p_func_call_error(self, p): -# '''func_call : id opar error cpar -# | error opar args cpar''' - -# p[0] = (ErrorNode(), ErrorNode()) - - -# def p_args(self, p): -# '''args : arg_list -# | arg_list_empty''' - -# p[0] = p[1] - - -# def p_arg_list(self, p): -# '''arg_list : expr -# | expr comma arg_list''' - -# p[0] = [p[1]] if len(p) == 2 else \ -# [p[1]] + p[3] - - -# def p_arg_list_error(self, p): -# 'arg_list : error arg_list' - -# p[0] = [ErrorNode()] - -# def p_arg_list_empty(self, p): -# 'arg_list_empty : epsilon' - -# p[0] = [] - - -# def p_error(self, p): -# self.errors = True -# if p: -# self.print_error(p) -# else: -# error_text = SyntacticError.ERROR % 'EOF' -# column = find_column(self.lexer.lexer, self.lexer.lexer) -# line = self.lexer.lexer.lineno -# print(SyntacticError(error_text, line, column - 1)) - -# def print_error(self, tok): -# error_text = SyntacticError.ERROR % tok.value -# line, column = tok.lineno, tok.column -# print(SyntacticError(error_text, line, column)) - - -# if __name__ == "__main__": -# s = '''''' -# parser = CoolParser() -# result = parser.parse(s) - -# print(result) - class CoolParser(Parser): def p_program(self, p): 'program : class_list' + p[0] = ProgramNode(p[1]) - def p_epsilon(self, p): - 'epsilon :' - pass - - def p_class_list(self, p): - '''class_list : def_class class_list + '''class_list : def_class class_list | def_class''' - p[0] = [p[1]] if len(p) == 2 else [p[1]] + p[2] - - def p_class_list_error(self, p): - '''class_list : error class_list''' p[0] = [p[1]] if len(p) == 2 else [p[1]] + p[2] + + def p_class_list_error(self, p): + 'class_list : error class_list' + p[0] = [p[1]] if len(p) == 2 else [p[1]] + p[2] + + def p_epsilon(self, p): + 'epsilon :' + pass + def p_def_class(self, p): '''def_class : class type ocur feature_list ccur semi | class type inherits type ocur feature_list ccur semi''' - if len(p) == 7: - p[0] = ClassDeclarationNode(p.slice[2], p[4]) - else: - p[0] = ClassDeclarationNode(p.slice[2], p[6], p.slice[4]) + p[0] = ClassDeclarationNode(p.slice[2], p[4]) if len(p) == 7 else \ + ClassDeclarationNode(p.slice[2], p[6], p.slice[4]) + def p_def_class_error(self, p): '''def_class : class error ocur feature_list ccur semi @@ -437,6 +64,7 @@ def p_def_class_error(self, p): | class error inherits error ocur feature_list ccur semi | class type inherits error ocur feature_list ccur semi | class type inherits type ocur feature_list ccur error''' + p[0] = ErrorNode() @@ -444,21 +72,22 @@ def p_feature_list(self, p): '''feature_list : epsilon | def_attr semi feature_list | def_func semi feature_list''' + p[0] = [] if len(p) == 2 else [p[1]] + p[3] def p_feature_list_error(self, p): 'feature_list : error feature_list' + p[0] = [p[1]] + p[2] def p_def_attr(self, p): '''def_attr : id colon type | id colon type larrow expr''' - if len(p) == 4: - p[0] = AttrDeclarationNode(p.slice[1], p.slice[3]) - else: - p[0] = AttrDeclarationNode(p.slice[1], p.slice[3], p[5]) + + p[0] = AttrDeclarationNode(p.slice[1], p.slice[3]) if len(p) == 4 else \ + AttrDeclarationNode(p.slice[1], p.slice[3], p[5]) def p_def_attr_error(self, p): '''def_attr : error colon type @@ -466,11 +95,13 @@ def p_def_attr_error(self, p): | error colon type larrow expr | id colon error larrow expr | id colon type larrow error''' + p[0] = ErrorNode() def p_def_func(self, p): - 'def_func : id opar formals cpar colon type ocur expr ccur' + 'def_func : id opar formals cpar colon type ocur expr ccur' + p[0] = FuncDeclarationNode(p.slice[1], p[3], p.slice[6], p[8]) def p_def_func_error(self, p): @@ -478,83 +109,80 @@ def p_def_func_error(self, p): | id opar error cpar colon type ocur expr ccur | id opar formals cpar colon error ocur expr ccur | id opar formals cpar colon type ocur error ccur''' + p[0] = ErrorNode() def p_formals(self, p): - '''formals : param_list - | param_list_empty - ''' + '''formals : param_list + | param_list_empty''' + p[0] = p[1] def p_param_list(self, p): '''param_list : param - | param comma param_list''' - p[0] = [p[1]] if len(p) == 2 else [p[1]] + p[3] + | param comma param_list''' - # def p_param_list_error(self, p): - # '''param_list : error comma param_list''' - # p[0] = [ErrorNode()] + p[0] = [p[1]] if len(p) == 2 else [p[1]] + p[3] def p_param_list_empty(self, p): 'param_list_empty : epsilon' + p[0] = [] def p_param(self, p): 'param : id colon type' + p[0] = (p.slice[1], p.slice[3]) def p_let_list(self, p): '''let_list : let_assign | let_assign comma let_list''' - p[0] = [p[1]] if len(p) == 2 else [p[1]] + p[3] - # def p_let_list_error(self, p): - # '''let_list : error let_list - # | error''' - # p[0] = [ErrorNode()] + p[0] = [p[1]] if len(p) == 2 else [p[1]] + p[3] def p_let_assign(self, p): '''let_assign : param larrow expr | param''' - if len(p) == 2: - p[0] = VarDeclarationNode(p[1][0], p[1][1]) - else: - p[0] = VarDeclarationNode(p[1][0], p[1][1], p[3]) + + p[0] = VarDeclarationNode(p[1][0], p[1][1]) if len(p) == 2 else\ + VarDeclarationNode(p[1][0], p[1][1], p[3]) def p_cases_list(self, p): '''cases_list : casep semi | casep semi cases_list''' + p[0] = [p[1]] if len(p) == 3 else [p[1]] + p[3] def p_cases_list_error(self, p): '''cases_list : error cases_list | error semi''' + p[0] = [ErrorNode()] def p_case(self, p): 'casep : id colon type rarrow expr' + p[0] = OptionNode(p.slice[1], p.slice[3], p[5]) def p_expr(self, p): '''expr : id larrow expr - | comp - ''' - if len(p) == 4: - p[0] = AssignNode(p.slice[1], p[3]) - else: - p[0] = p[1] + | comp''' + + p[0] = AssignNode(p.slice[1], p[3]) if len(p) == 4 else p[1] + def p_comp(self, p): '''comp : comp less op | comp lesseq op | comp equal op | op''' + if len(p) == 2: p[0] = p[1] elif p[2] == '<': @@ -564,18 +192,11 @@ def p_comp(self, p): elif p[2] == '=': p[0] = EqualNode(p[1], p[3]) - - # def p_comp_error(self, p): - # '''comp : comp less error - # | comp lesseq error - # | comp equal error''' - # p[0] = ErrorNode() - - def p_op(self, p): '''op : op plus term | op minus term | term''' + if len(p) == 2: p[0] = p[1] elif p[2] == '+': @@ -583,16 +204,11 @@ def p_op(self, p): elif p[2] == '-': p[0] = MinusNode(p[1], p[3]) - # def p_op_error(self, p): - # '''op : op plus error - # | op minus error''' - # p[0] = ErrorNode() - - def p_term(self, p): '''term : term star base_call | term div base_call | base_call''' + if len(p) == 2: p[0] = p[1] elif p[2] == '*': @@ -604,32 +220,34 @@ def p_term(self, p): def p_term_error(self, p): '''term : term star error | term div error''' + p[0] = ErrorNode() def p_base_call(self, p): '''base_call : factor arroba type dot func_call | factor''' - if len(p) == 2: - p[0] = p[1] - else: - p[0] = BaseCallNode(p[1], p.slice[3], *p[5]) + + p[0] = p[1] if len(p) == 2 else BaseCallNode(p[1], p.slice[3], *p[5]) + def p_base_call_error(self, p): '''base_call : error arroba type dot func_call - | factor arroba error dot func_call - ''' + | factor arroba error dot func_call''' + p[0] = ErrorNode() - def p_factor1(self, p): + def p_factor1(self, p): '''factor : atom - | opar expr cpar''' + | opar expr cpar''' + p[0] = p[1] if len(p) == 2 else p[2] def p_factor2(self, p): '''factor : factor dot func_call | not expr | func_call''' + if len(p) == 2: p[0] = StaticCallNode(*p[1]) elif p[1] == 'not': @@ -639,142 +257,125 @@ def p_factor2(self, p): def p_factor3(self, p): '''factor : isvoid base_call - | nox base_call - ''' - if p[1] == 'isvoid': - p[0] = IsVoidNode(p[2], p.slice[1]) - else: - p[0] = BinaryNotNode(p[2], p.slice[1]) - + | nox base_call''' + + p[0] = IsVoidNode(p[2], p.slice[1]) if p[1] == 'isvoid' else BinaryNotNode(p[2], p.slice[1]) + def p_expr_let(self, p): 'factor : let let_list in expr' + p[0] = LetNode(p[2], p[4], p.slice[1]) - # def p_expr_let_error(self, p): - # '''factor : let error in expr - # | let let_list in error - # | let let_list error expr''' - # p[0] = ErrorNode() - - def p_expr_case(self, p): - 'factor : case expr of cases_list esac' + 'factor : case expr of cases_list esac' + p[0] = CaseNode(p[2], p[4], p.slice[1]) - # def p_expr_case_error(self, p): - # '''factor : case error of cases_list esac - # | case expr of error esac - # | case expr error cases_list esac - # | case expr of cases_list error''' - # p[0] = ErrorNode() - def p_expr_if(self, p): 'factor : if expr then expr else expr fi' + p[0] = ConditionalNode(p[2], p[4], p[6], p.slice[1]) - # def p_expr_if_error(self, p): - # '''factor : if error then expr else expr fi - # | if expr then error else expr fi - # | if expr then expr else error fi - # | if expr error expr else expr fi - # | if expr then expr error expr fi - # | if expr then expr else expr error''' - # p[0] = ErrorNode() - def p_expr_while(self, p): 'factor : while expr loop expr pool' + p[0] = WhileNode(p[2], p[4], p.slice[1]) - # def p_expr_while_error(self, p): - # '''factor : while error loop expr pool - # | while expr loop error pool - # | while expr loop expr error - # | while expr error expr pool''' - # p[0] = ErrorNode() - - def p_atom_num(self, p): 'atom : num' + p[0] = ConstantNumNode(p.slice[1]) def p_atom_id(self, p): 'atom : id' + p[0] = VariableNode(p.slice[1]) def p_atom_new(self, p): 'atom : new type' + p[0] = InstantiateNode(p.slice[2]) def p_atom_block(self, p): 'atom : ocur block ccur' + p[0] = BlockNode(p[2], p.slice[1]) def p_atom_block_error(self, p): '''atom : error block ccur | ocur error ccur | ocur block error''' + p[0] = ErrorNode() def p_atom_boolean(self, p): '''atom : true | false''' + p[0] = ConstantBoolNode(p.slice[1]) def p_atom_string(self, p): 'atom : string' + p[0] = ConstantStrNode(p.slice[1]) - def p_block(self, p): + def p_block(self, p): '''block : expr semi | expr semi block''' + p[0] = [p[1]] if len(p) == 3 else [p[1]] + p[3] def p_block_error(self, p): '''block : error block | error semi''' + p[0] = [ErrorNode()] def p_func_call(self, p): 'func_call : id opar args cpar' + p[0] = (p.slice[1], p[3]) def p_func_call_error(self, p): '''func_call : id opar error cpar | error opar args cpar''' + p[0] = (ErrorNode(), ErrorNode()) - def p_args(self, p): + def p_args(self, p): '''args : arg_list - | arg_list_empty - ''' + | arg_list_empty''' + p[0] = p[1] def p_arg_list(self, p): '''arg_list : expr | expr comma arg_list''' - if len(p) == 2: - p[0] = [p[1]] - else: - p[0] = [p[1]] + p[3] + + p[0] = [p[1]] if len(p) == 2 else \ + [p[1]] + p[3] + def p_arg_list_error(self, p): 'arg_list : error arg_list' + p[0] = [ErrorNode()] def p_arg_list_empty(self, p): 'arg_list_empty : epsilon' + p[0] = [] - # Error rule for syntax errors + def p_error(self, p): self.errors = True if p: @@ -793,7 +394,7 @@ def print_error(self, tok): if __name__ == "__main__": s = '''''' - # Parser() parser = CoolParser() result = parser.parse(s) - # print(result) + + print(result) From 535992a08b4502ff4c1b79bd77cc6dca638791a5 Mon Sep 17 00:00:00 2001 From: JCH97 Date: Mon, 20 Sep 2021 15:36:48 -0400 Subject: [PATCH 16/44] refactor(parser): remove print(tokens). add parser lines --- src/cool/__main__.py | 12 +- src/cool/code.cl | 144 +- src/cool/lexer/lexer.py | 4 +- src/cool/parser/output/parselog.txt | 7364 --------------------------- src/cool/utils/logger.py | 2 +- tests/utils/utils.py | 3 +- 6 files changed, 119 insertions(+), 7410 deletions(-) diff --git a/src/cool/__main__.py b/src/cool/__main__.py index cf5ff6df7..1636000c1 100644 --- a/src/cool/__main__.py +++ b/src/cool/__main__.py @@ -8,8 +8,8 @@ # in_ = sys.argv[1] #out_ = sys.argv[2] # print(f'Argv: {sys.argv} ') - # _in = sys.argv[1] if len(sys.argv) > 1 else f'{Path.cwd()}/cool/code.cl' - # _out = sys.argv[2] if len(sys.argv) > 1 else None + _in = sys.argv[1] if len(sys.argv) > 1 else f'{Path.cwd()}/cool/code.cl' + _out = sys.argv[2] if len(sys.argv) > 2 else None # print(_in, _out) # in_ = f'{sys.argv[1]} {sys.argv[2]}' @@ -17,8 +17,8 @@ # print(f'{in_}') - _in = sys.argv[1] - _out = sys.argv[2] + # _in = sys.argv[1] + # _out = sys.argv[2] text: str = '' @@ -29,7 +29,7 @@ # print(lexer) - # parser = CoolParser(lexer) - # result = parser.parse(text) + parser = CoolParser(lexer) + result = parser.parse(text) # print(result) diff --git a/src/cool/code.cl b/src/cool/code.cl index 75b4c5bbd..12cb52beb 100644 --- a/src/cool/code.cl +++ b/src/cool/code.cl @@ -1,37 +1,111 @@ -(* An assignment has the form <- *) +(* Integers, Identifiers, and Special Notation *) -class Main { - main(): Object { - (new Alpha).print() - }; -}; +0007 123 +1 -1 +90 -09 +11113 -4r *a *self* c++ +5! = 120, 2 + 2 = 5 or E = mc2; p + 1 @ p = 1: for x in range(len(b)) +new / <- <<==> {( Int: Objet, Bool; String.string SELF_TYPE isvoid }) +class Class if then else fi testing Testing ~007agent_bond james_007B0N3SS___ +loop pool while tRuE or noT faLsE let in case of ESAC -class Test { - test1: Object; - - testing1(): Int { - 2 + 2 - }; - - test2: Int <- 1; - - test3: String <- "1"; - - testing2(a: Alpha, b: Int): Int { - 2 + 2 - }; - - testing3(): String { - "2 + 2" - }; - - testing4(): String { - Test1 <- "Hello World" -- Identifiers begin with a lower case letter - }; -}; - -class Alpha inherits IO { - print() : Object { - out_string("reached!!\n") - }; -}; \ No newline at end of file +(* +#3 INT_CONST 0007 +#3 INT_CONST 123 +#3 '+' +#3 INT_CONST 1 +#3 '-' +#3 INT_CONST 1 +#3 '+' +#3 INT_CONST 90 +#3 '-' +#3 INT_CONST 09 +#3 '+' +#3 INT_CONST 11113 +#3 '-' +#3 INT_CONST 4 +#3 OBJECTID r +#3 '*' +#3 OBJECTID a +#3 '*' +#3 OBJECTID self +#3 '*' +#3 OBJECTID c +#3 '+' +#3 '+' +#4 INT_CONST 5 +#4 ERROR "!" +#4 '=' +#4 INT_CONST 120 +#4 ',' +#4 INT_CONST 2 +#4 '+' +#4 INT_CONST 2 +#4 '=' +#4 INT_CONST 5 +#4 OBJECTID or +#4 TYPEID E +#4 '=' +#4 OBJECTID mc2 +#4 ';' +#4 OBJECTID p +#4 '+' +#4 INT_CONST 1 +#4 '@' +#4 OBJECTID p +#4 '=' +#4 INT_CONST 1 +#4 ':' +#4 OBJECTID for +#4 OBJECTID x +#4 IN +#4 OBJECTID range +#4 '(' +#4 OBJECTID len +#4 '(' +#4 OBJECTID b +#4 ')' +#4 ')' +#5 NEW +#5 '/' +#5 ASSIGN +#5 '<' +#5 LE +#5 DARROW +#5 '{' +#5 '(' +#5 TYPEID Int +#5 ':' +#5 TYPEID Objet +#5 ',' +#5 TYPEID Bool +#5 ';' +#5 TYPEID String +#5 '.' +#5 OBJECTID string +#5 TYPEID SELF_TYPE +#5 ISVOID +#5 '}' +#5 ')' +#6 CLASS +#6 CLASS +#6 IF +#6 THEN +#6 ELSE +#6 FI +#6 OBJECTID testing +#6 TYPEID Testing +#6 '~' +#6 INT_CONST 007 +#6 OBJECTID agent_bond +#6 OBJECTID james_007B0N3SS___ +#7 LOOP +#7 POOL +#7 WHILE +#7 BOOL_CONST true +#7 OBJECTID or +#7 NOT +#7 BOOL_CONST false +#7 LET +#7 IN +#7 CASE +#7 OF +#7 ESAC +*) \ No newline at end of file diff --git a/src/cool/lexer/lexer.py b/src/cool/lexer/lexer.py index 4a69d633a..dc2d99029 100644 --- a/src/cool/lexer/lexer.py +++ b/src/cool/lexer/lexer.py @@ -288,8 +288,8 @@ def main(text: str, output = None): a = lexer.tokenize(text) - for i in a: - print(i) + # for i in a: + # print(i) if lexer.errors: for e in lexer.errors: diff --git a/src/cool/parser/output/parselog.txt b/src/cool/parser/output/parselog.txt index 6c951fc82..e69de29bb 100644 --- a/src/cool/parser/output/parselog.txt +++ b/src/cool/parser/output/parselog.txt @@ -1,7364 +0,0 @@ - yacc.py:3317:Created by PLY version 3.11 (http://www.dabeaz.com/ply) - yacc.py:3377: - yacc.py:3378:Grammar - yacc.py:3379: - yacc.py:3381:Rule 0 S' -> program - yacc.py:3381:Rule 1 program -> class_list - yacc.py:3381:Rule 2 epsilon -> - yacc.py:3381:Rule 3 class_list -> def_class class_list - yacc.py:3381:Rule 4 class_list -> def_class - yacc.py:3381:Rule 5 class_list -> error class_list - yacc.py:3381:Rule 6 def_class -> class type ocur feature_list ccur semi - yacc.py:3381:Rule 7 def_class -> class type inherits type ocur feature_list ccur semi - yacc.py:3381:Rule 8 def_class -> class error ocur feature_list ccur semi - yacc.py:3381:Rule 9 def_class -> class type ocur feature_list ccur error - yacc.py:3381:Rule 10 def_class -> class error inherits type ocur feature_list ccur semi - yacc.py:3381:Rule 11 def_class -> class error inherits error ocur feature_list ccur semi - yacc.py:3381:Rule 12 def_class -> class type inherits error ocur feature_list ccur semi - yacc.py:3381:Rule 13 def_class -> class type inherits type ocur feature_list ccur error - yacc.py:3381:Rule 14 feature_list -> epsilon - yacc.py:3381:Rule 15 feature_list -> def_attr semi feature_list - yacc.py:3381:Rule 16 feature_list -> def_func semi feature_list - yacc.py:3381:Rule 17 feature_list -> error feature_list - yacc.py:3381:Rule 18 def_attr -> id colon type - yacc.py:3381:Rule 19 def_attr -> id colon type larrow expr - yacc.py:3381:Rule 20 def_attr -> error colon type - yacc.py:3381:Rule 21 def_attr -> id colon error - yacc.py:3381:Rule 22 def_attr -> error colon type larrow expr - yacc.py:3381:Rule 23 def_attr -> id colon error larrow expr - yacc.py:3381:Rule 24 def_attr -> id colon type larrow error - yacc.py:3381:Rule 25 def_func -> id opar formals cpar colon type ocur expr ccur - yacc.py:3381:Rule 26 def_func -> error opar formals cpar colon type ocur expr ccur - yacc.py:3381:Rule 27 def_func -> id opar error cpar colon type ocur expr ccur - yacc.py:3381:Rule 28 def_func -> id opar formals cpar colon error ocur expr ccur - yacc.py:3381:Rule 29 def_func -> id opar formals cpar colon type ocur error ccur - yacc.py:3381:Rule 30 formals -> param_list - yacc.py:3381:Rule 31 formals -> param_list_empty - yacc.py:3381:Rule 32 param_list -> param - yacc.py:3381:Rule 33 param_list -> param comma param_list - yacc.py:3381:Rule 34 param_list_empty -> epsilon - yacc.py:3381:Rule 35 param -> id colon type - yacc.py:3381:Rule 36 let_list -> let_assign - yacc.py:3381:Rule 37 let_list -> let_assign comma let_list - yacc.py:3381:Rule 38 let_assign -> param larrow expr - yacc.py:3381:Rule 39 let_assign -> param - yacc.py:3381:Rule 40 cases_list -> casep semi - yacc.py:3381:Rule 41 cases_list -> casep semi cases_list - yacc.py:3381:Rule 42 cases_list -> error cases_list - yacc.py:3381:Rule 43 cases_list -> error semi - yacc.py:3381:Rule 44 casep -> id colon type rarrow expr - yacc.py:3381:Rule 45 expr -> id larrow expr - yacc.py:3381:Rule 46 expr -> comp - yacc.py:3381:Rule 47 comp -> comp less op - yacc.py:3381:Rule 48 comp -> comp lesseq op - yacc.py:3381:Rule 49 comp -> comp equal op - yacc.py:3381:Rule 50 comp -> op - yacc.py:3381:Rule 51 op -> op plus term - yacc.py:3381:Rule 52 op -> op minus term - yacc.py:3381:Rule 53 op -> term - yacc.py:3381:Rule 54 term -> term star base_call - yacc.py:3381:Rule 55 term -> term div base_call - yacc.py:3381:Rule 56 term -> base_call - yacc.py:3381:Rule 57 term -> term star error - yacc.py:3381:Rule 58 term -> term div error - yacc.py:3381:Rule 59 base_call -> factor arroba type dot func_call - yacc.py:3381:Rule 60 base_call -> factor - yacc.py:3381:Rule 61 base_call -> error arroba type dot func_call - yacc.py:3381:Rule 62 base_call -> factor arroba error dot func_call - yacc.py:3381:Rule 63 factor -> atom - yacc.py:3381:Rule 64 factor -> opar expr cpar - yacc.py:3381:Rule 65 factor -> factor dot func_call - yacc.py:3381:Rule 66 factor -> not expr - yacc.py:3381:Rule 67 factor -> func_call - yacc.py:3381:Rule 68 factor -> isvoid base_call - yacc.py:3381:Rule 69 factor -> nox base_call - yacc.py:3381:Rule 70 factor -> let let_list in expr - yacc.py:3381:Rule 71 factor -> case expr of cases_list esac - yacc.py:3381:Rule 72 factor -> if expr then expr else expr fi - yacc.py:3381:Rule 73 factor -> while expr loop expr pool - yacc.py:3381:Rule 74 atom -> num - yacc.py:3381:Rule 75 atom -> id - yacc.py:3381:Rule 76 atom -> new type - yacc.py:3381:Rule 77 atom -> ocur block ccur - yacc.py:3381:Rule 78 atom -> error block ccur - yacc.py:3381:Rule 79 atom -> ocur error ccur - yacc.py:3381:Rule 80 atom -> ocur block error - yacc.py:3381:Rule 81 atom -> true - yacc.py:3381:Rule 82 atom -> false - yacc.py:3381:Rule 83 atom -> string - yacc.py:3381:Rule 84 block -> expr semi - yacc.py:3381:Rule 85 block -> expr semi block - yacc.py:3381:Rule 86 block -> error block - yacc.py:3381:Rule 87 block -> error semi - yacc.py:3381:Rule 88 func_call -> id opar args cpar - yacc.py:3381:Rule 89 func_call -> id opar error cpar - yacc.py:3381:Rule 90 func_call -> error opar args cpar - yacc.py:3381:Rule 91 args -> arg_list - yacc.py:3381:Rule 92 args -> arg_list_empty - yacc.py:3381:Rule 93 arg_list -> expr - yacc.py:3381:Rule 94 arg_list -> expr comma arg_list - yacc.py:3381:Rule 95 arg_list -> error arg_list - yacc.py:3381:Rule 96 arg_list_empty -> epsilon - yacc.py:3399: - yacc.py:3400:Terminals, with rules where they appear - yacc.py:3401: - yacc.py:3405:arroba : 59 61 62 - yacc.py:3405:case : 71 - yacc.py:3405:ccur : 6 7 8 9 10 11 12 13 25 26 27 28 29 77 78 79 - yacc.py:3405:class : 6 7 8 9 10 11 12 13 - yacc.py:3405:colon : 18 19 20 21 22 23 24 25 26 27 28 29 35 44 - yacc.py:3405:comma : 33 37 94 - yacc.py:3405:cpar : 25 26 27 28 29 64 88 89 90 - yacc.py:3405:div : 55 58 - yacc.py:3405:dot : 59 61 62 65 - yacc.py:3405:else : 72 - yacc.py:3405:equal : 49 - yacc.py:3405:error : 5 8 9 10 11 11 12 13 17 20 21 22 23 24 26 27 28 29 42 43 57 58 61 62 78 79 80 86 87 89 90 95 - yacc.py:3405:esac : 71 - yacc.py:3405:false : 82 - yacc.py:3405:fi : 72 - yacc.py:3405:id : 18 19 21 23 24 25 27 28 29 35 44 45 75 88 89 - yacc.py:3405:if : 72 - yacc.py:3405:in : 70 - yacc.py:3405:inherits : 7 10 11 12 13 - yacc.py:3405:isvoid : 68 - yacc.py:3405:larrow : 19 22 23 24 38 45 - yacc.py:3405:less : 47 - yacc.py:3405:lesseq : 48 - yacc.py:3405:let : 70 - yacc.py:3405:loop : 73 - yacc.py:3405:minus : 52 - yacc.py:3405:new : 76 - yacc.py:3405:not : 66 - yacc.py:3405:nox : 69 - yacc.py:3405:num : 74 - yacc.py:3405:ocur : 6 7 8 9 10 11 12 13 25 26 27 28 29 77 79 80 - yacc.py:3405:of : 71 - yacc.py:3405:opar : 25 26 27 28 29 64 88 89 90 - yacc.py:3405:plus : 51 - yacc.py:3405:pool : 73 - yacc.py:3405:rarrow : 44 - yacc.py:3405:semi : 6 7 8 10 11 12 15 16 40 41 43 84 85 87 - yacc.py:3405:star : 54 57 - yacc.py:3405:string : 83 - yacc.py:3405:then : 72 - yacc.py:3405:true : 81 - yacc.py:3405:type : 6 7 7 9 10 12 13 13 18 19 20 22 24 25 26 27 29 35 44 59 61 76 - yacc.py:3405:while : 73 - yacc.py:3407: - yacc.py:3408:Nonterminals, with rules where they appear - yacc.py:3409: - yacc.py:3413:arg_list : 91 94 95 - yacc.py:3413:arg_list_empty : 92 - yacc.py:3413:args : 88 90 - yacc.py:3413:atom : 63 - yacc.py:3413:base_call : 54 55 56 68 69 - yacc.py:3413:block : 77 78 80 85 86 - yacc.py:3413:casep : 40 41 - yacc.py:3413:cases_list : 41 42 71 - yacc.py:3413:class_list : 1 3 5 - yacc.py:3413:comp : 46 47 48 49 - yacc.py:3413:def_attr : 15 - yacc.py:3413:def_class : 3 4 - yacc.py:3413:def_func : 16 - yacc.py:3413:epsilon : 14 34 96 - yacc.py:3413:expr : 19 22 23 25 26 27 28 38 44 45 64 66 70 71 72 72 72 73 73 84 85 93 94 - yacc.py:3413:factor : 59 60 62 65 - yacc.py:3413:feature_list : 6 7 8 9 10 11 12 13 15 16 17 - yacc.py:3413:formals : 25 26 28 29 - yacc.py:3413:func_call : 59 61 62 65 67 - yacc.py:3413:let_assign : 36 37 - yacc.py:3413:let_list : 37 70 - yacc.py:3413:op : 47 48 49 50 51 52 - yacc.py:3413:param : 32 33 38 39 - yacc.py:3413:param_list : 30 33 - yacc.py:3413:param_list_empty : 31 - yacc.py:3413:program : 0 - yacc.py:3413:term : 51 52 53 54 55 57 58 - yacc.py:3414: - yacc.py:3436:Generating LALR tables - yacc.py:2543:Parsing method: LALR - yacc.py:2561: - yacc.py:2562:state 0 - yacc.py:2563: - yacc.py:2565: (0) S' -> . program - yacc.py:2565: (1) program -> . class_list - yacc.py:2565: (3) class_list -> . def_class class_list - yacc.py:2565: (4) class_list -> . def_class - yacc.py:2565: (5) class_list -> . error class_list - yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi - yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi - yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi - yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error - yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi - yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: error shift and go to state 4 - yacc.py:2687: class shift and go to state 5 - yacc.py:2689: - yacc.py:2714: program shift and go to state 1 - yacc.py:2714: class_list shift and go to state 2 - yacc.py:2714: def_class shift and go to state 3 - yacc.py:2561: - yacc.py:2562:state 1 - yacc.py:2563: - yacc.py:2565: (0) S' -> program . - yacc.py:2566: - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 2 - yacc.py:2563: - yacc.py:2565: (1) program -> class_list . - yacc.py:2566: - yacc.py:2687: $end reduce using rule 1 (program -> class_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 3 - yacc.py:2563: - yacc.py:2565: (3) class_list -> def_class . class_list - yacc.py:2565: (4) class_list -> def_class . - yacc.py:2565: (3) class_list -> . def_class class_list - yacc.py:2565: (4) class_list -> . def_class - yacc.py:2565: (5) class_list -> . error class_list - yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi - yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi - yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi - yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error - yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi - yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: $end reduce using rule 4 (class_list -> def_class .) - yacc.py:2687: error shift and go to state 4 - yacc.py:2687: class shift and go to state 5 - yacc.py:2689: - yacc.py:2714: def_class shift and go to state 3 - yacc.py:2714: class_list shift and go to state 6 - yacc.py:2561: - yacc.py:2562:state 4 - yacc.py:2563: - yacc.py:2565: (5) class_list -> error . class_list - yacc.py:2565: (3) class_list -> . def_class class_list - yacc.py:2565: (4) class_list -> . def_class - yacc.py:2565: (5) class_list -> . error class_list - yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi - yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi - yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi - yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error - yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi - yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: error shift and go to state 4 - yacc.py:2687: class shift and go to state 5 - yacc.py:2689: - yacc.py:2714: class_list shift and go to state 7 - yacc.py:2714: def_class shift and go to state 3 - yacc.py:2561: - yacc.py:2562:state 5 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class . type ocur feature_list ccur semi - yacc.py:2565: (7) def_class -> class . type inherits type ocur feature_list ccur semi - yacc.py:2565: (8) def_class -> class . error ocur feature_list ccur semi - yacc.py:2565: (9) def_class -> class . type ocur feature_list ccur error - yacc.py:2565: (10) def_class -> class . error inherits type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> class . error inherits error ocur feature_list ccur semi - yacc.py:2565: (12) def_class -> class . type inherits error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> class . type inherits type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: type shift and go to state 8 - yacc.py:2687: error shift and go to state 9 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 6 - yacc.py:2563: - yacc.py:2565: (3) class_list -> def_class class_list . - yacc.py:2566: - yacc.py:2687: $end reduce using rule 3 (class_list -> def_class class_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 7 - yacc.py:2563: - yacc.py:2565: (5) class_list -> error class_list . - yacc.py:2566: - yacc.py:2687: $end reduce using rule 5 (class_list -> error class_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 8 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class type . ocur feature_list ccur semi - yacc.py:2565: (7) def_class -> class type . inherits type ocur feature_list ccur semi - yacc.py:2565: (9) def_class -> class type . ocur feature_list ccur error - yacc.py:2565: (12) def_class -> class type . inherits error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> class type . inherits type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 10 - yacc.py:2687: inherits shift and go to state 11 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 9 - yacc.py:2563: - yacc.py:2565: (8) def_class -> class error . ocur feature_list ccur semi - yacc.py:2565: (10) def_class -> class error . inherits type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> class error . inherits error ocur feature_list ccur semi - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 12 - yacc.py:2687: inherits shift and go to state 13 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 10 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class type ocur . feature_list ccur semi - yacc.py:2565: (9) def_class -> class type ocur . feature_list ccur error - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (2) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 14 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 11 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits . type ocur feature_list ccur semi - yacc.py:2565: (12) def_class -> class type inherits . error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> class type inherits . type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: type shift and go to state 20 - yacc.py:2687: error shift and go to state 21 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 12 - yacc.py:2563: - yacc.py:2565: (8) def_class -> class error ocur . feature_list ccur semi - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (2) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 22 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 13 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits . type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> class error inherits . error ocur feature_list ccur semi - yacc.py:2566: - yacc.py:2687: type shift and go to state 24 - yacc.py:2687: error shift and go to state 23 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 14 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class type ocur feature_list . ccur semi - yacc.py:2565: (9) def_class -> class type ocur feature_list . ccur error - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 25 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 15 - yacc.py:2563: - yacc.py:2565: (17) feature_list -> error . feature_list - yacc.py:2565: (20) def_attr -> error . colon type - yacc.py:2565: (22) def_attr -> error . colon type larrow expr - yacc.py:2565: (26) def_func -> error . opar formals cpar colon type ocur expr ccur - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (2) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: colon shift and go to state 27 - yacc.py:2687: opar shift and go to state 28 - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 26 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 16 - yacc.py:2563: - yacc.py:2565: (14) feature_list -> epsilon . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 14 (feature_list -> epsilon .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 17 - yacc.py:2563: - yacc.py:2565: (15) feature_list -> def_attr . semi feature_list - yacc.py:2566: - yacc.py:2687: semi shift and go to state 29 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 18 - yacc.py:2563: - yacc.py:2565: (16) feature_list -> def_func . semi feature_list - yacc.py:2566: - yacc.py:2687: semi shift and go to state 30 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 19 - yacc.py:2563: - yacc.py:2565: (18) def_attr -> id . colon type - yacc.py:2565: (19) def_attr -> id . colon type larrow expr - yacc.py:2565: (21) def_attr -> id . colon error - yacc.py:2565: (23) def_attr -> id . colon error larrow expr - yacc.py:2565: (24) def_attr -> id . colon type larrow error - yacc.py:2565: (25) def_func -> id . opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> id . opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> id . opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> id . opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: colon shift and go to state 31 - yacc.py:2687: opar shift and go to state 32 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 20 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits type . ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> class type inherits type . ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 33 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 21 - yacc.py:2563: - yacc.py:2565: (12) def_class -> class type inherits error . ocur feature_list ccur semi - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 34 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 22 - yacc.py:2563: - yacc.py:2565: (8) def_class -> class error ocur feature_list . ccur semi - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 35 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 23 - yacc.py:2563: - yacc.py:2565: (11) def_class -> class error inherits error . ocur feature_list ccur semi - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 36 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 24 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits type . ocur feature_list ccur semi - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 37 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 25 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class type ocur feature_list ccur . semi - yacc.py:2565: (9) def_class -> class type ocur feature_list ccur . error - yacc.py:2566: - yacc.py:2687: semi shift and go to state 38 - yacc.py:2687: error shift and go to state 39 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 26 - yacc.py:2563: - yacc.py:2565: (17) feature_list -> error feature_list . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 17 (feature_list -> error feature_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 27 - yacc.py:2563: - yacc.py:2565: (20) def_attr -> error colon . type - yacc.py:2565: (22) def_attr -> error colon . type larrow expr - yacc.py:2566: - yacc.py:2687: type shift and go to state 40 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 28 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar . formals cpar colon type ocur expr ccur - yacc.py:2565: (30) formals -> . param_list - yacc.py:2565: (31) formals -> . param_list_empty - yacc.py:2565: (32) param_list -> . param - yacc.py:2565: (33) param_list -> . param comma param_list - yacc.py:2565: (34) param_list_empty -> . epsilon - yacc.py:2565: (35) param -> . id colon type - yacc.py:2565: (2) epsilon -> . - yacc.py:2566: - yacc.py:2687: id shift and go to state 46 - yacc.py:2687: cpar reduce using rule 2 (epsilon -> .) - yacc.py:2689: - yacc.py:2714: formals shift and go to state 41 - yacc.py:2714: param_list shift and go to state 42 - yacc.py:2714: param_list_empty shift and go to state 43 - yacc.py:2714: param shift and go to state 44 - yacc.py:2714: epsilon shift and go to state 45 - yacc.py:2561: - yacc.py:2562:state 29 - yacc.py:2563: - yacc.py:2565: (15) feature_list -> def_attr semi . feature_list - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (2) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: feature_list shift and go to state 47 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 30 - yacc.py:2563: - yacc.py:2565: (16) feature_list -> def_func semi . feature_list - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (2) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2714: feature_list shift and go to state 48 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2561: - yacc.py:2562:state 31 - yacc.py:2563: - yacc.py:2565: (18) def_attr -> id colon . type - yacc.py:2565: (19) def_attr -> id colon . type larrow expr - yacc.py:2565: (21) def_attr -> id colon . error - yacc.py:2565: (23) def_attr -> id colon . error larrow expr - yacc.py:2565: (24) def_attr -> id colon . type larrow error - yacc.py:2566: - yacc.py:2687: type shift and go to state 49 - yacc.py:2687: error shift and go to state 50 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 32 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar . formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> id opar . error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> id opar . formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> id opar . formals cpar colon type ocur error ccur - yacc.py:2565: (30) formals -> . param_list - yacc.py:2565: (31) formals -> . param_list_empty - yacc.py:2565: (32) param_list -> . param - yacc.py:2565: (33) param_list -> . param comma param_list - yacc.py:2565: (34) param_list_empty -> . epsilon - yacc.py:2565: (35) param -> . id colon type - yacc.py:2565: (2) epsilon -> . - yacc.py:2566: - yacc.py:2687: error shift and go to state 52 - yacc.py:2687: id shift and go to state 46 - yacc.py:2687: cpar reduce using rule 2 (epsilon -> .) - yacc.py:2689: - yacc.py:2714: formals shift and go to state 51 - yacc.py:2714: param_list shift and go to state 42 - yacc.py:2714: param_list_empty shift and go to state 43 - yacc.py:2714: param shift and go to state 44 - yacc.py:2714: epsilon shift and go to state 45 - yacc.py:2561: - yacc.py:2562:state 33 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits type ocur . feature_list ccur semi - yacc.py:2565: (13) def_class -> class type inherits type ocur . feature_list ccur error - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (2) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 53 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 34 - yacc.py:2563: - yacc.py:2565: (12) def_class -> class type inherits error ocur . feature_list ccur semi - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (2) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 54 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 35 - yacc.py:2563: - yacc.py:2565: (8) def_class -> class error ocur feature_list ccur . semi - yacc.py:2566: - yacc.py:2687: semi shift and go to state 55 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 36 - yacc.py:2563: - yacc.py:2565: (11) def_class -> class error inherits error ocur . feature_list ccur semi - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (2) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 56 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 37 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits type ocur . feature_list ccur semi - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (2) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 2 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 57 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 38 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class type ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 39 - yacc.py:2563: - yacc.py:2565: (9) def_class -> class type ocur feature_list ccur error . - yacc.py:2566: - yacc.py:2687: error reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) - yacc.py:2687: class reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) - yacc.py:2687: $end reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 40 - yacc.py:2563: - yacc.py:2565: (20) def_attr -> error colon type . - yacc.py:2565: (22) def_attr -> error colon type . larrow expr - yacc.py:2566: - yacc.py:2687: semi reduce using rule 20 (def_attr -> error colon type .) - yacc.py:2687: larrow shift and go to state 58 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 41 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals . cpar colon type ocur expr ccur - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 59 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 42 - yacc.py:2563: - yacc.py:2565: (30) formals -> param_list . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 30 (formals -> param_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 43 - yacc.py:2563: - yacc.py:2565: (31) formals -> param_list_empty . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 31 (formals -> param_list_empty .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 44 - yacc.py:2563: - yacc.py:2565: (32) param_list -> param . - yacc.py:2565: (33) param_list -> param . comma param_list - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 32 (param_list -> param .) - yacc.py:2687: comma shift and go to state 60 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 45 - yacc.py:2563: - yacc.py:2565: (34) param_list_empty -> epsilon . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 34 (param_list_empty -> epsilon .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 46 - yacc.py:2563: - yacc.py:2565: (35) param -> id . colon type - yacc.py:2566: - yacc.py:2687: colon shift and go to state 61 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 47 - yacc.py:2563: - yacc.py:2565: (15) feature_list -> def_attr semi feature_list . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 15 (feature_list -> def_attr semi feature_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 48 - yacc.py:2563: - yacc.py:2565: (16) feature_list -> def_func semi feature_list . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 16 (feature_list -> def_func semi feature_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 49 - yacc.py:2563: - yacc.py:2565: (18) def_attr -> id colon type . - yacc.py:2565: (19) def_attr -> id colon type . larrow expr - yacc.py:2565: (24) def_attr -> id colon type . larrow error - yacc.py:2566: - yacc.py:2687: semi reduce using rule 18 (def_attr -> id colon type .) - yacc.py:2687: larrow shift and go to state 62 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 50 - yacc.py:2563: - yacc.py:2565: (21) def_attr -> id colon error . - yacc.py:2565: (23) def_attr -> id colon error . larrow expr - yacc.py:2566: - yacc.py:2687: semi reduce using rule 21 (def_attr -> id colon error .) - yacc.py:2687: larrow shift and go to state 63 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 51 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals . cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> id opar formals . cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> id opar formals . cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 64 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 52 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error . cpar colon type ocur expr ccur - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 65 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 53 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list . ccur semi - yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list . ccur error - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 66 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 54 - yacc.py:2563: - yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list . ccur semi - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 67 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 55 - yacc.py:2563: - yacc.py:2565: (8) def_class -> class error ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 56 - yacc.py:2563: - yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list . ccur semi - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 68 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 57 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list . ccur semi - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 69 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 58 - yacc.py:2563: - yacc.py:2565: (22) def_attr -> error colon type larrow . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 71 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 59 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar . colon type ocur expr ccur - yacc.py:2566: - yacc.py:2687: colon shift and go to state 94 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 60 - yacc.py:2563: - yacc.py:2565: (33) param_list -> param comma . param_list - yacc.py:2565: (32) param_list -> . param - yacc.py:2565: (33) param_list -> . param comma param_list - yacc.py:2565: (35) param -> . id colon type - yacc.py:2566: - yacc.py:2687: id shift and go to state 46 - yacc.py:2689: - yacc.py:2714: param shift and go to state 44 - yacc.py:2714: param_list shift and go to state 95 - yacc.py:2561: - yacc.py:2562:state 61 - yacc.py:2563: - yacc.py:2565: (35) param -> id colon . type - yacc.py:2566: - yacc.py:2687: type shift and go to state 96 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 62 - yacc.py:2563: - yacc.py:2565: (19) def_attr -> id colon type larrow . expr - yacc.py:2565: (24) def_attr -> id colon type larrow . error - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 98 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 97 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 63 - yacc.py:2563: - yacc.py:2565: (23) def_attr -> id colon error larrow . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 99 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 64 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar . colon type ocur expr ccur - yacc.py:2565: (28) def_func -> id opar formals cpar . colon error ocur expr ccur - yacc.py:2565: (29) def_func -> id opar formals cpar . colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: colon shift and go to state 100 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 65 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar . colon type ocur expr ccur - yacc.py:2566: - yacc.py:2687: colon shift and go to state 101 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 66 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list ccur . semi - yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list ccur . error - yacc.py:2566: - yacc.py:2687: semi shift and go to state 102 - yacc.py:2687: error shift and go to state 103 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 67 - yacc.py:2563: - yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list ccur . semi - yacc.py:2566: - yacc.py:2687: semi shift and go to state 104 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 68 - yacc.py:2563: - yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list ccur . semi - yacc.py:2566: - yacc.py:2687: semi shift and go to state 105 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 69 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list ccur . semi - yacc.py:2566: - yacc.py:2687: semi shift and go to state 106 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 70 - yacc.py:2563: - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 71 - yacc.py:2563: - yacc.py:2565: (22) def_attr -> error colon type larrow expr . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 22 (def_attr -> error colon type larrow expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 72 - yacc.py:2563: - yacc.py:2565: (45) expr -> id . larrow expr - yacc.py:2565: (75) atom -> id . - yacc.py:2565: (88) func_call -> id . opar args cpar - yacc.py:2565: (89) func_call -> id . opar error cpar - yacc.py:2566: - yacc.py:2687: larrow shift and go to state 112 - yacc.py:2687: arroba reduce using rule 75 (atom -> id .) - yacc.py:2687: dot reduce using rule 75 (atom -> id .) - yacc.py:2687: star reduce using rule 75 (atom -> id .) - yacc.py:2687: div reduce using rule 75 (atom -> id .) - yacc.py:2687: plus reduce using rule 75 (atom -> id .) - yacc.py:2687: minus reduce using rule 75 (atom -> id .) - yacc.py:2687: less reduce using rule 75 (atom -> id .) - yacc.py:2687: lesseq reduce using rule 75 (atom -> id .) - yacc.py:2687: equal reduce using rule 75 (atom -> id .) - yacc.py:2687: semi reduce using rule 75 (atom -> id .) - yacc.py:2687: cpar reduce using rule 75 (atom -> id .) - yacc.py:2687: of reduce using rule 75 (atom -> id .) - yacc.py:2687: then reduce using rule 75 (atom -> id .) - yacc.py:2687: loop reduce using rule 75 (atom -> id .) - yacc.py:2687: comma reduce using rule 75 (atom -> id .) - yacc.py:2687: in reduce using rule 75 (atom -> id .) - yacc.py:2687: else reduce using rule 75 (atom -> id .) - yacc.py:2687: pool reduce using rule 75 (atom -> id .) - yacc.py:2687: ccur reduce using rule 75 (atom -> id .) - yacc.py:2687: fi reduce using rule 75 (atom -> id .) - yacc.py:2687: opar shift and go to state 113 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 73 - yacc.py:2563: - yacc.py:2565: (46) expr -> comp . - yacc.py:2565: (47) comp -> comp . less op - yacc.py:2565: (48) comp -> comp . lesseq op - yacc.py:2565: (49) comp -> comp . equal op - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for less resolved as shift - yacc.py:2666: ! shift/reduce conflict for lesseq resolved as shift - yacc.py:2666: ! shift/reduce conflict for equal resolved as shift - yacc.py:2687: semi reduce using rule 46 (expr -> comp .) - yacc.py:2687: cpar reduce using rule 46 (expr -> comp .) - yacc.py:2687: arroba reduce using rule 46 (expr -> comp .) - yacc.py:2687: dot reduce using rule 46 (expr -> comp .) - yacc.py:2687: star reduce using rule 46 (expr -> comp .) - yacc.py:2687: div reduce using rule 46 (expr -> comp .) - yacc.py:2687: plus reduce using rule 46 (expr -> comp .) - yacc.py:2687: minus reduce using rule 46 (expr -> comp .) - yacc.py:2687: of reduce using rule 46 (expr -> comp .) - yacc.py:2687: then reduce using rule 46 (expr -> comp .) - yacc.py:2687: loop reduce using rule 46 (expr -> comp .) - yacc.py:2687: comma reduce using rule 46 (expr -> comp .) - yacc.py:2687: in reduce using rule 46 (expr -> comp .) - yacc.py:2687: else reduce using rule 46 (expr -> comp .) - yacc.py:2687: pool reduce using rule 46 (expr -> comp .) - yacc.py:2687: ccur reduce using rule 46 (expr -> comp .) - yacc.py:2687: fi reduce using rule 46 (expr -> comp .) - yacc.py:2687: less shift and go to state 114 - yacc.py:2687: lesseq shift and go to state 115 - yacc.py:2687: equal shift and go to state 116 - yacc.py:2689: - yacc.py:2696: ! less [ reduce using rule 46 (expr -> comp .) ] - yacc.py:2696: ! lesseq [ reduce using rule 46 (expr -> comp .) ] - yacc.py:2696: ! equal [ reduce using rule 46 (expr -> comp .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 74 - yacc.py:2563: - yacc.py:2565: (50) comp -> op . - yacc.py:2565: (51) op -> op . plus term - yacc.py:2565: (52) op -> op . minus term - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for plus resolved as shift - yacc.py:2666: ! shift/reduce conflict for minus resolved as shift - yacc.py:2687: less reduce using rule 50 (comp -> op .) - yacc.py:2687: lesseq reduce using rule 50 (comp -> op .) - yacc.py:2687: equal reduce using rule 50 (comp -> op .) - yacc.py:2687: semi reduce using rule 50 (comp -> op .) - yacc.py:2687: cpar reduce using rule 50 (comp -> op .) - yacc.py:2687: arroba reduce using rule 50 (comp -> op .) - yacc.py:2687: dot reduce using rule 50 (comp -> op .) - yacc.py:2687: star reduce using rule 50 (comp -> op .) - yacc.py:2687: div reduce using rule 50 (comp -> op .) - yacc.py:2687: of reduce using rule 50 (comp -> op .) - yacc.py:2687: then reduce using rule 50 (comp -> op .) - yacc.py:2687: loop reduce using rule 50 (comp -> op .) - yacc.py:2687: comma reduce using rule 50 (comp -> op .) - yacc.py:2687: in reduce using rule 50 (comp -> op .) - yacc.py:2687: else reduce using rule 50 (comp -> op .) - yacc.py:2687: pool reduce using rule 50 (comp -> op .) - yacc.py:2687: ccur reduce using rule 50 (comp -> op .) - yacc.py:2687: fi reduce using rule 50 (comp -> op .) - yacc.py:2687: plus shift and go to state 117 - yacc.py:2687: minus shift and go to state 118 - yacc.py:2689: - yacc.py:2696: ! plus [ reduce using rule 50 (comp -> op .) ] - yacc.py:2696: ! minus [ reduce using rule 50 (comp -> op .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 75 - yacc.py:2563: - yacc.py:2565: (53) op -> term . - yacc.py:2565: (54) term -> term . star base_call - yacc.py:2565: (55) term -> term . div base_call - yacc.py:2565: (57) term -> term . star error - yacc.py:2565: (58) term -> term . div error - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for star resolved as shift - yacc.py:2666: ! shift/reduce conflict for div resolved as shift - yacc.py:2687: plus reduce using rule 53 (op -> term .) - yacc.py:2687: minus reduce using rule 53 (op -> term .) - yacc.py:2687: less reduce using rule 53 (op -> term .) - yacc.py:2687: lesseq reduce using rule 53 (op -> term .) - yacc.py:2687: equal reduce using rule 53 (op -> term .) - yacc.py:2687: semi reduce using rule 53 (op -> term .) - yacc.py:2687: cpar reduce using rule 53 (op -> term .) - yacc.py:2687: arroba reduce using rule 53 (op -> term .) - yacc.py:2687: dot reduce using rule 53 (op -> term .) - yacc.py:2687: of reduce using rule 53 (op -> term .) - yacc.py:2687: then reduce using rule 53 (op -> term .) - yacc.py:2687: loop reduce using rule 53 (op -> term .) - yacc.py:2687: comma reduce using rule 53 (op -> term .) - yacc.py:2687: in reduce using rule 53 (op -> term .) - yacc.py:2687: else reduce using rule 53 (op -> term .) - yacc.py:2687: pool reduce using rule 53 (op -> term .) - yacc.py:2687: ccur reduce using rule 53 (op -> term .) - yacc.py:2687: fi reduce using rule 53 (op -> term .) - yacc.py:2687: star shift and go to state 119 - yacc.py:2687: div shift and go to state 120 - yacc.py:2689: - yacc.py:2696: ! star [ reduce using rule 53 (op -> term .) ] - yacc.py:2696: ! div [ reduce using rule 53 (op -> term .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 76 - yacc.py:2563: - yacc.py:2565: (56) term -> base_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 56 (term -> base_call .) - yacc.py:2687: div reduce using rule 56 (term -> base_call .) - yacc.py:2687: plus reduce using rule 56 (term -> base_call .) - yacc.py:2687: minus reduce using rule 56 (term -> base_call .) - yacc.py:2687: less reduce using rule 56 (term -> base_call .) - yacc.py:2687: lesseq reduce using rule 56 (term -> base_call .) - yacc.py:2687: equal reduce using rule 56 (term -> base_call .) - yacc.py:2687: semi reduce using rule 56 (term -> base_call .) - yacc.py:2687: cpar reduce using rule 56 (term -> base_call .) - yacc.py:2687: arroba reduce using rule 56 (term -> base_call .) - yacc.py:2687: dot reduce using rule 56 (term -> base_call .) - yacc.py:2687: of reduce using rule 56 (term -> base_call .) - yacc.py:2687: then reduce using rule 56 (term -> base_call .) - yacc.py:2687: loop reduce using rule 56 (term -> base_call .) - yacc.py:2687: comma reduce using rule 56 (term -> base_call .) - yacc.py:2687: in reduce using rule 56 (term -> base_call .) - yacc.py:2687: else reduce using rule 56 (term -> base_call .) - yacc.py:2687: pool reduce using rule 56 (term -> base_call .) - yacc.py:2687: ccur reduce using rule 56 (term -> base_call .) - yacc.py:2687: fi reduce using rule 56 (term -> base_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 77 - yacc.py:2563: - yacc.py:2565: (59) base_call -> factor . arroba type dot func_call - yacc.py:2565: (60) base_call -> factor . - yacc.py:2565: (62) base_call -> factor . arroba error dot func_call - yacc.py:2565: (65) factor -> factor . dot func_call - yacc.py:2566: - yacc.py:2609: ! shift/reduce conflict for arroba resolved as shift - yacc.py:2666: ! shift/reduce conflict for dot resolved as shift - yacc.py:2687: arroba shift and go to state 121 - yacc.py:2687: star reduce using rule 60 (base_call -> factor .) - yacc.py:2687: div reduce using rule 60 (base_call -> factor .) - yacc.py:2687: plus reduce using rule 60 (base_call -> factor .) - yacc.py:2687: minus reduce using rule 60 (base_call -> factor .) - yacc.py:2687: less reduce using rule 60 (base_call -> factor .) - yacc.py:2687: lesseq reduce using rule 60 (base_call -> factor .) - yacc.py:2687: equal reduce using rule 60 (base_call -> factor .) - yacc.py:2687: semi reduce using rule 60 (base_call -> factor .) - yacc.py:2687: cpar reduce using rule 60 (base_call -> factor .) - yacc.py:2687: of reduce using rule 60 (base_call -> factor .) - yacc.py:2687: then reduce using rule 60 (base_call -> factor .) - yacc.py:2687: loop reduce using rule 60 (base_call -> factor .) - yacc.py:2687: comma reduce using rule 60 (base_call -> factor .) - yacc.py:2687: in reduce using rule 60 (base_call -> factor .) - yacc.py:2687: else reduce using rule 60 (base_call -> factor .) - yacc.py:2687: pool reduce using rule 60 (base_call -> factor .) - yacc.py:2687: ccur reduce using rule 60 (base_call -> factor .) - yacc.py:2687: fi reduce using rule 60 (base_call -> factor .) - yacc.py:2687: dot shift and go to state 122 - yacc.py:2689: - yacc.py:2696: ! arroba [ reduce using rule 60 (base_call -> factor .) ] - yacc.py:2696: ! dot [ reduce using rule 60 (base_call -> factor .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 78 - yacc.py:2563: - yacc.py:2565: (67) factor -> func_call . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 67 (factor -> func_call .) - yacc.py:2687: dot reduce using rule 67 (factor -> func_call .) - yacc.py:2687: star reduce using rule 67 (factor -> func_call .) - yacc.py:2687: div reduce using rule 67 (factor -> func_call .) - yacc.py:2687: plus reduce using rule 67 (factor -> func_call .) - yacc.py:2687: minus reduce using rule 67 (factor -> func_call .) - yacc.py:2687: less reduce using rule 67 (factor -> func_call .) - yacc.py:2687: lesseq reduce using rule 67 (factor -> func_call .) - yacc.py:2687: equal reduce using rule 67 (factor -> func_call .) - yacc.py:2687: semi reduce using rule 67 (factor -> func_call .) - yacc.py:2687: cpar reduce using rule 67 (factor -> func_call .) - yacc.py:2687: of reduce using rule 67 (factor -> func_call .) - yacc.py:2687: then reduce using rule 67 (factor -> func_call .) - yacc.py:2687: loop reduce using rule 67 (factor -> func_call .) - yacc.py:2687: comma reduce using rule 67 (factor -> func_call .) - yacc.py:2687: in reduce using rule 67 (factor -> func_call .) - yacc.py:2687: else reduce using rule 67 (factor -> func_call .) - yacc.py:2687: pool reduce using rule 67 (factor -> func_call .) - yacc.py:2687: ccur reduce using rule 67 (factor -> func_call .) - yacc.py:2687: fi reduce using rule 67 (factor -> func_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 79 - yacc.py:2563: - yacc.py:2565: (63) factor -> atom . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 63 (factor -> atom .) - yacc.py:2687: dot reduce using rule 63 (factor -> atom .) - yacc.py:2687: star reduce using rule 63 (factor -> atom .) - yacc.py:2687: div reduce using rule 63 (factor -> atom .) - yacc.py:2687: plus reduce using rule 63 (factor -> atom .) - yacc.py:2687: minus reduce using rule 63 (factor -> atom .) - yacc.py:2687: less reduce using rule 63 (factor -> atom .) - yacc.py:2687: lesseq reduce using rule 63 (factor -> atom .) - yacc.py:2687: equal reduce using rule 63 (factor -> atom .) - yacc.py:2687: semi reduce using rule 63 (factor -> atom .) - yacc.py:2687: cpar reduce using rule 63 (factor -> atom .) - yacc.py:2687: of reduce using rule 63 (factor -> atom .) - yacc.py:2687: then reduce using rule 63 (factor -> atom .) - yacc.py:2687: loop reduce using rule 63 (factor -> atom .) - yacc.py:2687: comma reduce using rule 63 (factor -> atom .) - yacc.py:2687: in reduce using rule 63 (factor -> atom .) - yacc.py:2687: else reduce using rule 63 (factor -> atom .) - yacc.py:2687: pool reduce using rule 63 (factor -> atom .) - yacc.py:2687: ccur reduce using rule 63 (factor -> atom .) - yacc.py:2687: fi reduce using rule 63 (factor -> atom .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 80 - yacc.py:2563: - yacc.py:2565: (64) factor -> opar . expr cpar - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 123 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 81 - yacc.py:2563: - yacc.py:2565: (66) factor -> not . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 124 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 82 - yacc.py:2563: - yacc.py:2565: (68) factor -> isvoid . base_call - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: base_call shift and go to state 125 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 83 - yacc.py:2563: - yacc.py:2565: (69) factor -> nox . base_call - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: base_call shift and go to state 127 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 84 - yacc.py:2563: - yacc.py:2565: (70) factor -> let . let_list in expr - yacc.py:2565: (36) let_list -> . let_assign - yacc.py:2565: (37) let_list -> . let_assign comma let_list - yacc.py:2565: (38) let_assign -> . param larrow expr - yacc.py:2565: (39) let_assign -> . param - yacc.py:2565: (35) param -> . id colon type - yacc.py:2566: - yacc.py:2687: id shift and go to state 46 - yacc.py:2689: - yacc.py:2714: let_list shift and go to state 128 - yacc.py:2714: let_assign shift and go to state 129 - yacc.py:2714: param shift and go to state 130 - yacc.py:2561: - yacc.py:2562:state 85 - yacc.py:2563: - yacc.py:2565: (71) factor -> case . expr of cases_list esac - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 131 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 86 - yacc.py:2563: - yacc.py:2565: (72) factor -> if . expr then expr else expr fi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 132 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 87 - yacc.py:2563: - yacc.py:2565: (73) factor -> while . expr loop expr pool - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 133 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 88 - yacc.py:2563: - yacc.py:2565: (74) atom -> num . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 74 (atom -> num .) - yacc.py:2687: dot reduce using rule 74 (atom -> num .) - yacc.py:2687: star reduce using rule 74 (atom -> num .) - yacc.py:2687: div reduce using rule 74 (atom -> num .) - yacc.py:2687: plus reduce using rule 74 (atom -> num .) - yacc.py:2687: minus reduce using rule 74 (atom -> num .) - yacc.py:2687: less reduce using rule 74 (atom -> num .) - yacc.py:2687: lesseq reduce using rule 74 (atom -> num .) - yacc.py:2687: equal reduce using rule 74 (atom -> num .) - yacc.py:2687: semi reduce using rule 74 (atom -> num .) - yacc.py:2687: cpar reduce using rule 74 (atom -> num .) - yacc.py:2687: of reduce using rule 74 (atom -> num .) - yacc.py:2687: then reduce using rule 74 (atom -> num .) - yacc.py:2687: loop reduce using rule 74 (atom -> num .) - yacc.py:2687: comma reduce using rule 74 (atom -> num .) - yacc.py:2687: in reduce using rule 74 (atom -> num .) - yacc.py:2687: else reduce using rule 74 (atom -> num .) - yacc.py:2687: pool reduce using rule 74 (atom -> num .) - yacc.py:2687: ccur reduce using rule 74 (atom -> num .) - yacc.py:2687: fi reduce using rule 74 (atom -> num .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 89 - yacc.py:2563: - yacc.py:2565: (76) atom -> new . type - yacc.py:2566: - yacc.py:2687: type shift and go to state 134 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 90 - yacc.py:2563: - yacc.py:2565: (77) atom -> ocur . block ccur - yacc.py:2565: (79) atom -> ocur . error ccur - yacc.py:2565: (80) atom -> ocur . block error - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 136 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: block shift and go to state 135 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 91 - yacc.py:2563: - yacc.py:2565: (81) atom -> true . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 81 (atom -> true .) - yacc.py:2687: dot reduce using rule 81 (atom -> true .) - yacc.py:2687: star reduce using rule 81 (atom -> true .) - yacc.py:2687: div reduce using rule 81 (atom -> true .) - yacc.py:2687: plus reduce using rule 81 (atom -> true .) - yacc.py:2687: minus reduce using rule 81 (atom -> true .) - yacc.py:2687: less reduce using rule 81 (atom -> true .) - yacc.py:2687: lesseq reduce using rule 81 (atom -> true .) - yacc.py:2687: equal reduce using rule 81 (atom -> true .) - yacc.py:2687: semi reduce using rule 81 (atom -> true .) - yacc.py:2687: cpar reduce using rule 81 (atom -> true .) - yacc.py:2687: of reduce using rule 81 (atom -> true .) - yacc.py:2687: then reduce using rule 81 (atom -> true .) - yacc.py:2687: loop reduce using rule 81 (atom -> true .) - yacc.py:2687: comma reduce using rule 81 (atom -> true .) - yacc.py:2687: in reduce using rule 81 (atom -> true .) - yacc.py:2687: else reduce using rule 81 (atom -> true .) - yacc.py:2687: pool reduce using rule 81 (atom -> true .) - yacc.py:2687: ccur reduce using rule 81 (atom -> true .) - yacc.py:2687: fi reduce using rule 81 (atom -> true .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 92 - yacc.py:2563: - yacc.py:2565: (82) atom -> false . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 82 (atom -> false .) - yacc.py:2687: dot reduce using rule 82 (atom -> false .) - yacc.py:2687: star reduce using rule 82 (atom -> false .) - yacc.py:2687: div reduce using rule 82 (atom -> false .) - yacc.py:2687: plus reduce using rule 82 (atom -> false .) - yacc.py:2687: minus reduce using rule 82 (atom -> false .) - yacc.py:2687: less reduce using rule 82 (atom -> false .) - yacc.py:2687: lesseq reduce using rule 82 (atom -> false .) - yacc.py:2687: equal reduce using rule 82 (atom -> false .) - yacc.py:2687: semi reduce using rule 82 (atom -> false .) - yacc.py:2687: cpar reduce using rule 82 (atom -> false .) - yacc.py:2687: of reduce using rule 82 (atom -> false .) - yacc.py:2687: then reduce using rule 82 (atom -> false .) - yacc.py:2687: loop reduce using rule 82 (atom -> false .) - yacc.py:2687: comma reduce using rule 82 (atom -> false .) - yacc.py:2687: in reduce using rule 82 (atom -> false .) - yacc.py:2687: else reduce using rule 82 (atom -> false .) - yacc.py:2687: pool reduce using rule 82 (atom -> false .) - yacc.py:2687: ccur reduce using rule 82 (atom -> false .) - yacc.py:2687: fi reduce using rule 82 (atom -> false .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 93 - yacc.py:2563: - yacc.py:2565: (83) atom -> string . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 83 (atom -> string .) - yacc.py:2687: dot reduce using rule 83 (atom -> string .) - yacc.py:2687: star reduce using rule 83 (atom -> string .) - yacc.py:2687: div reduce using rule 83 (atom -> string .) - yacc.py:2687: plus reduce using rule 83 (atom -> string .) - yacc.py:2687: minus reduce using rule 83 (atom -> string .) - yacc.py:2687: less reduce using rule 83 (atom -> string .) - yacc.py:2687: lesseq reduce using rule 83 (atom -> string .) - yacc.py:2687: equal reduce using rule 83 (atom -> string .) - yacc.py:2687: semi reduce using rule 83 (atom -> string .) - yacc.py:2687: cpar reduce using rule 83 (atom -> string .) - yacc.py:2687: of reduce using rule 83 (atom -> string .) - yacc.py:2687: then reduce using rule 83 (atom -> string .) - yacc.py:2687: loop reduce using rule 83 (atom -> string .) - yacc.py:2687: comma reduce using rule 83 (atom -> string .) - yacc.py:2687: in reduce using rule 83 (atom -> string .) - yacc.py:2687: else reduce using rule 83 (atom -> string .) - yacc.py:2687: pool reduce using rule 83 (atom -> string .) - yacc.py:2687: ccur reduce using rule 83 (atom -> string .) - yacc.py:2687: fi reduce using rule 83 (atom -> string .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 94 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar colon . type ocur expr ccur - yacc.py:2566: - yacc.py:2687: type shift and go to state 137 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 95 - yacc.py:2563: - yacc.py:2565: (33) param_list -> param comma param_list . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 33 (param_list -> param comma param_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 96 - yacc.py:2563: - yacc.py:2565: (35) param -> id colon type . - yacc.py:2566: - yacc.py:2687: comma reduce using rule 35 (param -> id colon type .) - yacc.py:2687: cpar reduce using rule 35 (param -> id colon type .) - yacc.py:2687: larrow reduce using rule 35 (param -> id colon type .) - yacc.py:2687: in reduce using rule 35 (param -> id colon type .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 97 - yacc.py:2563: - yacc.py:2565: (19) def_attr -> id colon type larrow expr . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 19 (def_attr -> id colon type larrow expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 98 - yacc.py:2563: - yacc.py:2565: (24) def_attr -> id colon type larrow error . - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: semi reduce using rule 24 (def_attr -> id colon type larrow error .) - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 99 - yacc.py:2563: - yacc.py:2565: (23) def_attr -> id colon error larrow expr . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 23 (def_attr -> id colon error larrow expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 100 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar colon . type ocur expr ccur - yacc.py:2565: (28) def_func -> id opar formals cpar colon . error ocur expr ccur - yacc.py:2565: (29) def_func -> id opar formals cpar colon . type ocur error ccur - yacc.py:2566: - yacc.py:2687: type shift and go to state 138 - yacc.py:2687: error shift and go to state 139 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 101 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar colon . type ocur expr ccur - yacc.py:2566: - yacc.py:2687: type shift and go to state 140 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 102 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 103 - yacc.py:2563: - yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list ccur error . - yacc.py:2566: - yacc.py:2687: error reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) - yacc.py:2687: class reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) - yacc.py:2687: $end reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 104 - yacc.py:2563: - yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 105 - yacc.py:2563: - yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 106 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 107 - yacc.py:2563: - yacc.py:2565: (86) block -> error . block - yacc.py:2565: (87) block -> error . semi - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: semi shift and go to state 142 - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: block shift and go to state 141 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 108 - yacc.py:2563: - yacc.py:2565: (61) base_call -> error arroba . type dot func_call - yacc.py:2566: - yacc.py:2687: type shift and go to state 143 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 109 - yacc.py:2563: - yacc.py:2565: (78) atom -> error block . ccur - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 144 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 110 - yacc.py:2563: - yacc.py:2565: (90) func_call -> error opar . args cpar - yacc.py:2565: (64) factor -> opar . expr cpar - yacc.py:2565: (91) args -> . arg_list - yacc.py:2565: (92) args -> . arg_list_empty - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (96) arg_list_empty -> . epsilon - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (2) epsilon -> . - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 145 - yacc.py:2687: cpar reduce using rule 2 (epsilon -> .) - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: args shift and go to state 146 - yacc.py:2714: expr shift and go to state 147 - yacc.py:2714: arg_list shift and go to state 148 - yacc.py:2714: arg_list_empty shift and go to state 149 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: epsilon shift and go to state 150 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 111 - yacc.py:2563: - yacc.py:2565: (84) block -> expr . semi - yacc.py:2565: (85) block -> expr . semi block - yacc.py:2566: - yacc.py:2687: semi shift and go to state 151 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 112 - yacc.py:2563: - yacc.py:2565: (45) expr -> id larrow . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 152 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 113 - yacc.py:2563: - yacc.py:2565: (88) func_call -> id opar . args cpar - yacc.py:2565: (89) func_call -> id opar . error cpar - yacc.py:2565: (91) args -> . arg_list - yacc.py:2565: (92) args -> . arg_list_empty - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (96) arg_list_empty -> . epsilon - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (2) epsilon -> . - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 154 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: cpar reduce using rule 2 (epsilon -> .) - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: args shift and go to state 153 - yacc.py:2714: arg_list shift and go to state 148 - yacc.py:2714: arg_list_empty shift and go to state 149 - yacc.py:2714: expr shift and go to state 155 - yacc.py:2714: epsilon shift and go to state 150 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 114 - yacc.py:2563: - yacc.py:2565: (47) comp -> comp less . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: op shift and go to state 156 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 115 - yacc.py:2563: - yacc.py:2565: (48) comp -> comp lesseq . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: op shift and go to state 157 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 116 - yacc.py:2563: - yacc.py:2565: (49) comp -> comp equal . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: op shift and go to state 158 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 117 - yacc.py:2563: - yacc.py:2565: (51) op -> op plus . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: term shift and go to state 159 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 118 - yacc.py:2563: - yacc.py:2565: (52) op -> op minus . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: term shift and go to state 160 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 119 - yacc.py:2563: - yacc.py:2565: (54) term -> term star . base_call - yacc.py:2565: (57) term -> term star . error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 162 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: base_call shift and go to state 161 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 120 - yacc.py:2563: - yacc.py:2565: (55) term -> term div . base_call - yacc.py:2565: (58) term -> term div . error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 164 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: base_call shift and go to state 163 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 121 - yacc.py:2563: - yacc.py:2565: (59) base_call -> factor arroba . type dot func_call - yacc.py:2565: (62) base_call -> factor arroba . error dot func_call - yacc.py:2566: - yacc.py:2687: type shift and go to state 165 - yacc.py:2687: error shift and go to state 166 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 122 - yacc.py:2563: - yacc.py:2565: (65) factor -> factor dot . func_call - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 168 - yacc.py:2687: error shift and go to state 169 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 167 - yacc.py:2561: - yacc.py:2562:state 123 - yacc.py:2563: - yacc.py:2565: (64) factor -> opar expr . cpar - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 170 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 124 - yacc.py:2563: - yacc.py:2565: (66) factor -> not expr . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 66 (factor -> not expr .) - yacc.py:2687: dot reduce using rule 66 (factor -> not expr .) - yacc.py:2687: star reduce using rule 66 (factor -> not expr .) - yacc.py:2687: div reduce using rule 66 (factor -> not expr .) - yacc.py:2687: plus reduce using rule 66 (factor -> not expr .) - yacc.py:2687: minus reduce using rule 66 (factor -> not expr .) - yacc.py:2687: less reduce using rule 66 (factor -> not expr .) - yacc.py:2687: lesseq reduce using rule 66 (factor -> not expr .) - yacc.py:2687: equal reduce using rule 66 (factor -> not expr .) - yacc.py:2687: semi reduce using rule 66 (factor -> not expr .) - yacc.py:2687: cpar reduce using rule 66 (factor -> not expr .) - yacc.py:2687: of reduce using rule 66 (factor -> not expr .) - yacc.py:2687: then reduce using rule 66 (factor -> not expr .) - yacc.py:2687: loop reduce using rule 66 (factor -> not expr .) - yacc.py:2687: comma reduce using rule 66 (factor -> not expr .) - yacc.py:2687: in reduce using rule 66 (factor -> not expr .) - yacc.py:2687: else reduce using rule 66 (factor -> not expr .) - yacc.py:2687: pool reduce using rule 66 (factor -> not expr .) - yacc.py:2687: ccur reduce using rule 66 (factor -> not expr .) - yacc.py:2687: fi reduce using rule 66 (factor -> not expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 125 - yacc.py:2563: - yacc.py:2565: (68) factor -> isvoid base_call . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: dot reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: star reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: div reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: plus reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: minus reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: less reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: lesseq reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: equal reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: semi reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: cpar reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: of reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: then reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: loop reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: comma reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: in reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: else reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: pool reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: ccur reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: fi reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 126 - yacc.py:2563: - yacc.py:2565: (75) atom -> id . - yacc.py:2565: (88) func_call -> id . opar args cpar - yacc.py:2565: (89) func_call -> id . opar error cpar - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 75 (atom -> id .) - yacc.py:2687: dot reduce using rule 75 (atom -> id .) - yacc.py:2687: star reduce using rule 75 (atom -> id .) - yacc.py:2687: div reduce using rule 75 (atom -> id .) - yacc.py:2687: plus reduce using rule 75 (atom -> id .) - yacc.py:2687: minus reduce using rule 75 (atom -> id .) - yacc.py:2687: less reduce using rule 75 (atom -> id .) - yacc.py:2687: lesseq reduce using rule 75 (atom -> id .) - yacc.py:2687: equal reduce using rule 75 (atom -> id .) - yacc.py:2687: semi reduce using rule 75 (atom -> id .) - yacc.py:2687: cpar reduce using rule 75 (atom -> id .) - yacc.py:2687: of reduce using rule 75 (atom -> id .) - yacc.py:2687: then reduce using rule 75 (atom -> id .) - yacc.py:2687: loop reduce using rule 75 (atom -> id .) - yacc.py:2687: comma reduce using rule 75 (atom -> id .) - yacc.py:2687: in reduce using rule 75 (atom -> id .) - yacc.py:2687: else reduce using rule 75 (atom -> id .) - yacc.py:2687: pool reduce using rule 75 (atom -> id .) - yacc.py:2687: ccur reduce using rule 75 (atom -> id .) - yacc.py:2687: fi reduce using rule 75 (atom -> id .) - yacc.py:2687: opar shift and go to state 113 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 127 - yacc.py:2563: - yacc.py:2565: (69) factor -> nox base_call . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: dot reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: star reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: div reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: plus reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: minus reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: less reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: lesseq reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: equal reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: semi reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: cpar reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: of reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: then reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: loop reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: comma reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: in reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: else reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: pool reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: ccur reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: fi reduce using rule 69 (factor -> nox base_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 128 - yacc.py:2563: - yacc.py:2565: (70) factor -> let let_list . in expr - yacc.py:2566: - yacc.py:2687: in shift and go to state 171 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 129 - yacc.py:2563: - yacc.py:2565: (36) let_list -> let_assign . - yacc.py:2565: (37) let_list -> let_assign . comma let_list - yacc.py:2566: - yacc.py:2687: in reduce using rule 36 (let_list -> let_assign .) - yacc.py:2687: comma shift and go to state 172 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 130 - yacc.py:2563: - yacc.py:2565: (38) let_assign -> param . larrow expr - yacc.py:2565: (39) let_assign -> param . - yacc.py:2566: - yacc.py:2687: larrow shift and go to state 173 - yacc.py:2687: comma reduce using rule 39 (let_assign -> param .) - yacc.py:2687: in reduce using rule 39 (let_assign -> param .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 131 - yacc.py:2563: - yacc.py:2565: (71) factor -> case expr . of cases_list esac - yacc.py:2566: - yacc.py:2687: of shift and go to state 174 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 132 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr . then expr else expr fi - yacc.py:2566: - yacc.py:2687: then shift and go to state 175 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 133 - yacc.py:2563: - yacc.py:2565: (73) factor -> while expr . loop expr pool - yacc.py:2566: - yacc.py:2687: loop shift and go to state 176 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 134 - yacc.py:2563: - yacc.py:2565: (76) atom -> new type . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 76 (atom -> new type .) - yacc.py:2687: dot reduce using rule 76 (atom -> new type .) - yacc.py:2687: star reduce using rule 76 (atom -> new type .) - yacc.py:2687: div reduce using rule 76 (atom -> new type .) - yacc.py:2687: plus reduce using rule 76 (atom -> new type .) - yacc.py:2687: minus reduce using rule 76 (atom -> new type .) - yacc.py:2687: less reduce using rule 76 (atom -> new type .) - yacc.py:2687: lesseq reduce using rule 76 (atom -> new type .) - yacc.py:2687: equal reduce using rule 76 (atom -> new type .) - yacc.py:2687: semi reduce using rule 76 (atom -> new type .) - yacc.py:2687: cpar reduce using rule 76 (atom -> new type .) - yacc.py:2687: of reduce using rule 76 (atom -> new type .) - yacc.py:2687: then reduce using rule 76 (atom -> new type .) - yacc.py:2687: loop reduce using rule 76 (atom -> new type .) - yacc.py:2687: comma reduce using rule 76 (atom -> new type .) - yacc.py:2687: in reduce using rule 76 (atom -> new type .) - yacc.py:2687: else reduce using rule 76 (atom -> new type .) - yacc.py:2687: pool reduce using rule 76 (atom -> new type .) - yacc.py:2687: ccur reduce using rule 76 (atom -> new type .) - yacc.py:2687: fi reduce using rule 76 (atom -> new type .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 135 - yacc.py:2563: - yacc.py:2565: (77) atom -> ocur block . ccur - yacc.py:2565: (80) atom -> ocur block . error - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 177 - yacc.py:2687: error shift and go to state 178 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 136 - yacc.py:2563: - yacc.py:2565: (79) atom -> ocur error . ccur - yacc.py:2565: (86) block -> error . block - yacc.py:2565: (87) block -> error . semi - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 179 - yacc.py:2687: semi shift and go to state 142 - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: block shift and go to state 141 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 137 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar colon type . ocur expr ccur - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 180 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 138 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar colon type . ocur expr ccur - yacc.py:2565: (29) def_func -> id opar formals cpar colon type . ocur error ccur - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 181 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 139 - yacc.py:2563: - yacc.py:2565: (28) def_func -> id opar formals cpar colon error . ocur expr ccur - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 182 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 140 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar colon type . ocur expr ccur - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 183 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 141 - yacc.py:2563: - yacc.py:2565: (86) block -> error block . - yacc.py:2565: (78) atom -> error block . ccur - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for ccur resolved as shift - yacc.py:2687: error reduce using rule 86 (block -> error block .) - yacc.py:2687: ccur shift and go to state 144 - yacc.py:2689: - yacc.py:2696: ! ccur [ reduce using rule 86 (block -> error block .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 142 - yacc.py:2563: - yacc.py:2565: (87) block -> error semi . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 87 (block -> error semi .) - yacc.py:2687: error reduce using rule 87 (block -> error semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 143 - yacc.py:2563: - yacc.py:2565: (61) base_call -> error arroba type . dot func_call - yacc.py:2566: - yacc.py:2687: dot shift and go to state 184 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 144 - yacc.py:2563: - yacc.py:2565: (78) atom -> error block ccur . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: dot reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: star reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: div reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: plus reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: minus reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: less reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: lesseq reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: equal reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: semi reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: cpar reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: of reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: then reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: loop reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: comma reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: in reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: else reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: pool reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: ccur reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: fi reduce using rule 78 (atom -> error block ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 145 - yacc.py:2563: - yacc.py:2565: (95) arg_list -> error . arg_list - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 185 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: arg_list shift and go to state 186 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 187 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 146 - yacc.py:2563: - yacc.py:2565: (90) func_call -> error opar args . cpar - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 188 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 147 - yacc.py:2563: - yacc.py:2565: (64) factor -> opar expr . cpar - yacc.py:2565: (93) arg_list -> expr . - yacc.py:2565: (94) arg_list -> expr . comma arg_list - yacc.py:2566: - yacc.py:2609: ! shift/reduce conflict for cpar resolved as shift - yacc.py:2687: cpar shift and go to state 170 - yacc.py:2687: comma shift and go to state 189 - yacc.py:2689: - yacc.py:2696: ! cpar [ reduce using rule 93 (arg_list -> expr .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 148 - yacc.py:2563: - yacc.py:2565: (91) args -> arg_list . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 91 (args -> arg_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 149 - yacc.py:2563: - yacc.py:2565: (92) args -> arg_list_empty . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 92 (args -> arg_list_empty .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 150 - yacc.py:2563: - yacc.py:2565: (96) arg_list_empty -> epsilon . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 96 (arg_list_empty -> epsilon .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 151 - yacc.py:2563: - yacc.py:2565: (84) block -> expr semi . - yacc.py:2565: (85) block -> expr semi . block - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for error resolved as shift - yacc.py:2687: ccur reduce using rule 84 (block -> expr semi .) - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2696: ! error [ reduce using rule 84 (block -> expr semi .) ] - yacc.py:2700: - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: block shift and go to state 190 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 152 - yacc.py:2563: - yacc.py:2565: (45) expr -> id larrow expr . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: cpar reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: arroba reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: dot reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: star reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: div reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: plus reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: minus reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: less reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: lesseq reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: equal reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: of reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: then reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: loop reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: comma reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: in reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: else reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: pool reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: ccur reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: fi reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 153 - yacc.py:2563: - yacc.py:2565: (88) func_call -> id opar args . cpar - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 191 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 154 - yacc.py:2563: - yacc.py:2565: (89) func_call -> id opar error . cpar - yacc.py:2565: (95) arg_list -> error . arg_list - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 192 - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 185 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: arg_list shift and go to state 186 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 187 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 155 - yacc.py:2563: - yacc.py:2565: (93) arg_list -> expr . - yacc.py:2565: (94) arg_list -> expr . comma arg_list - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 93 (arg_list -> expr .) - yacc.py:2687: comma shift and go to state 189 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 156 - yacc.py:2563: - yacc.py:2565: (47) comp -> comp less op . - yacc.py:2565: (51) op -> op . plus term - yacc.py:2565: (52) op -> op . minus term - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for plus resolved as shift - yacc.py:2666: ! shift/reduce conflict for minus resolved as shift - yacc.py:2687: less reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: lesseq reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: equal reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: semi reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: cpar reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: arroba reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: dot reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: star reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: div reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: of reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: then reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: loop reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: comma reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: in reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: else reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: pool reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: ccur reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: fi reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: plus shift and go to state 117 - yacc.py:2687: minus shift and go to state 118 - yacc.py:2689: - yacc.py:2696: ! plus [ reduce using rule 47 (comp -> comp less op .) ] - yacc.py:2696: ! minus [ reduce using rule 47 (comp -> comp less op .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 157 - yacc.py:2563: - yacc.py:2565: (48) comp -> comp lesseq op . - yacc.py:2565: (51) op -> op . plus term - yacc.py:2565: (52) op -> op . minus term - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for plus resolved as shift - yacc.py:2666: ! shift/reduce conflict for minus resolved as shift - yacc.py:2687: less reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: lesseq reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: equal reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: semi reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: cpar reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: arroba reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: dot reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: star reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: div reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: of reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: then reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: loop reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: comma reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: in reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: else reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: pool reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: ccur reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: fi reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: plus shift and go to state 117 - yacc.py:2687: minus shift and go to state 118 - yacc.py:2689: - yacc.py:2696: ! plus [ reduce using rule 48 (comp -> comp lesseq op .) ] - yacc.py:2696: ! minus [ reduce using rule 48 (comp -> comp lesseq op .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 158 - yacc.py:2563: - yacc.py:2565: (49) comp -> comp equal op . - yacc.py:2565: (51) op -> op . plus term - yacc.py:2565: (52) op -> op . minus term - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for plus resolved as shift - yacc.py:2666: ! shift/reduce conflict for minus resolved as shift - yacc.py:2687: less reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: lesseq reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: equal reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: semi reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: cpar reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: arroba reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: dot reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: star reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: div reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: of reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: then reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: loop reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: comma reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: in reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: else reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: pool reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: ccur reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: fi reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: plus shift and go to state 117 - yacc.py:2687: minus shift and go to state 118 - yacc.py:2689: - yacc.py:2696: ! plus [ reduce using rule 49 (comp -> comp equal op .) ] - yacc.py:2696: ! minus [ reduce using rule 49 (comp -> comp equal op .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 159 - yacc.py:2563: - yacc.py:2565: (51) op -> op plus term . - yacc.py:2565: (54) term -> term . star base_call - yacc.py:2565: (55) term -> term . div base_call - yacc.py:2565: (57) term -> term . star error - yacc.py:2565: (58) term -> term . div error - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for star resolved as shift - yacc.py:2666: ! shift/reduce conflict for div resolved as shift - yacc.py:2687: plus reduce using rule 51 (op -> op plus term .) - yacc.py:2687: minus reduce using rule 51 (op -> op plus term .) - yacc.py:2687: less reduce using rule 51 (op -> op plus term .) - yacc.py:2687: lesseq reduce using rule 51 (op -> op plus term .) - yacc.py:2687: equal reduce using rule 51 (op -> op plus term .) - yacc.py:2687: semi reduce using rule 51 (op -> op plus term .) - yacc.py:2687: cpar reduce using rule 51 (op -> op plus term .) - yacc.py:2687: arroba reduce using rule 51 (op -> op plus term .) - yacc.py:2687: dot reduce using rule 51 (op -> op plus term .) - yacc.py:2687: of reduce using rule 51 (op -> op plus term .) - yacc.py:2687: then reduce using rule 51 (op -> op plus term .) - yacc.py:2687: loop reduce using rule 51 (op -> op plus term .) - yacc.py:2687: comma reduce using rule 51 (op -> op plus term .) - yacc.py:2687: in reduce using rule 51 (op -> op plus term .) - yacc.py:2687: else reduce using rule 51 (op -> op plus term .) - yacc.py:2687: pool reduce using rule 51 (op -> op plus term .) - yacc.py:2687: ccur reduce using rule 51 (op -> op plus term .) - yacc.py:2687: fi reduce using rule 51 (op -> op plus term .) - yacc.py:2687: star shift and go to state 119 - yacc.py:2687: div shift and go to state 120 - yacc.py:2689: - yacc.py:2696: ! star [ reduce using rule 51 (op -> op plus term .) ] - yacc.py:2696: ! div [ reduce using rule 51 (op -> op plus term .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 160 - yacc.py:2563: - yacc.py:2565: (52) op -> op minus term . - yacc.py:2565: (54) term -> term . star base_call - yacc.py:2565: (55) term -> term . div base_call - yacc.py:2565: (57) term -> term . star error - yacc.py:2565: (58) term -> term . div error - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for star resolved as shift - yacc.py:2666: ! shift/reduce conflict for div resolved as shift - yacc.py:2687: plus reduce using rule 52 (op -> op minus term .) - yacc.py:2687: minus reduce using rule 52 (op -> op minus term .) - yacc.py:2687: less reduce using rule 52 (op -> op minus term .) - yacc.py:2687: lesseq reduce using rule 52 (op -> op minus term .) - yacc.py:2687: equal reduce using rule 52 (op -> op minus term .) - yacc.py:2687: semi reduce using rule 52 (op -> op minus term .) - yacc.py:2687: cpar reduce using rule 52 (op -> op minus term .) - yacc.py:2687: arroba reduce using rule 52 (op -> op minus term .) - yacc.py:2687: dot reduce using rule 52 (op -> op minus term .) - yacc.py:2687: of reduce using rule 52 (op -> op minus term .) - yacc.py:2687: then reduce using rule 52 (op -> op minus term .) - yacc.py:2687: loop reduce using rule 52 (op -> op minus term .) - yacc.py:2687: comma reduce using rule 52 (op -> op minus term .) - yacc.py:2687: in reduce using rule 52 (op -> op minus term .) - yacc.py:2687: else reduce using rule 52 (op -> op minus term .) - yacc.py:2687: pool reduce using rule 52 (op -> op minus term .) - yacc.py:2687: ccur reduce using rule 52 (op -> op minus term .) - yacc.py:2687: fi reduce using rule 52 (op -> op minus term .) - yacc.py:2687: star shift and go to state 119 - yacc.py:2687: div shift and go to state 120 - yacc.py:2689: - yacc.py:2696: ! star [ reduce using rule 52 (op -> op minus term .) ] - yacc.py:2696: ! div [ reduce using rule 52 (op -> op minus term .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 161 - yacc.py:2563: - yacc.py:2565: (54) term -> term star base_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: div reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: plus reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: minus reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: less reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: lesseq reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: equal reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: semi reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: cpar reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: arroba reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: dot reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: of reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: then reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: loop reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: comma reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: in reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: else reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: pool reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: ccur reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: fi reduce using rule 54 (term -> term star base_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 162 - yacc.py:2563: - yacc.py:2565: (57) term -> term star error . - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for arroba resolved as shift - yacc.py:2687: star reduce using rule 57 (term -> term star error .) - yacc.py:2687: div reduce using rule 57 (term -> term star error .) - yacc.py:2687: plus reduce using rule 57 (term -> term star error .) - yacc.py:2687: minus reduce using rule 57 (term -> term star error .) - yacc.py:2687: less reduce using rule 57 (term -> term star error .) - yacc.py:2687: lesseq reduce using rule 57 (term -> term star error .) - yacc.py:2687: equal reduce using rule 57 (term -> term star error .) - yacc.py:2687: semi reduce using rule 57 (term -> term star error .) - yacc.py:2687: cpar reduce using rule 57 (term -> term star error .) - yacc.py:2687: dot reduce using rule 57 (term -> term star error .) - yacc.py:2687: of reduce using rule 57 (term -> term star error .) - yacc.py:2687: then reduce using rule 57 (term -> term star error .) - yacc.py:2687: loop reduce using rule 57 (term -> term star error .) - yacc.py:2687: comma reduce using rule 57 (term -> term star error .) - yacc.py:2687: in reduce using rule 57 (term -> term star error .) - yacc.py:2687: else reduce using rule 57 (term -> term star error .) - yacc.py:2687: pool reduce using rule 57 (term -> term star error .) - yacc.py:2687: ccur reduce using rule 57 (term -> term star error .) - yacc.py:2687: fi reduce using rule 57 (term -> term star error .) - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2696: ! arroba [ reduce using rule 57 (term -> term star error .) ] - yacc.py:2700: - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 163 - yacc.py:2563: - yacc.py:2565: (55) term -> term div base_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: div reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: plus reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: minus reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: less reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: lesseq reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: equal reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: semi reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: cpar reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: arroba reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: dot reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: of reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: then reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: loop reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: comma reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: in reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: else reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: pool reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: ccur reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: fi reduce using rule 55 (term -> term div base_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 164 - yacc.py:2563: - yacc.py:2565: (58) term -> term div error . - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for arroba resolved as shift - yacc.py:2687: star reduce using rule 58 (term -> term div error .) - yacc.py:2687: div reduce using rule 58 (term -> term div error .) - yacc.py:2687: plus reduce using rule 58 (term -> term div error .) - yacc.py:2687: minus reduce using rule 58 (term -> term div error .) - yacc.py:2687: less reduce using rule 58 (term -> term div error .) - yacc.py:2687: lesseq reduce using rule 58 (term -> term div error .) - yacc.py:2687: equal reduce using rule 58 (term -> term div error .) - yacc.py:2687: semi reduce using rule 58 (term -> term div error .) - yacc.py:2687: cpar reduce using rule 58 (term -> term div error .) - yacc.py:2687: dot reduce using rule 58 (term -> term div error .) - yacc.py:2687: of reduce using rule 58 (term -> term div error .) - yacc.py:2687: then reduce using rule 58 (term -> term div error .) - yacc.py:2687: loop reduce using rule 58 (term -> term div error .) - yacc.py:2687: comma reduce using rule 58 (term -> term div error .) - yacc.py:2687: in reduce using rule 58 (term -> term div error .) - yacc.py:2687: else reduce using rule 58 (term -> term div error .) - yacc.py:2687: pool reduce using rule 58 (term -> term div error .) - yacc.py:2687: ccur reduce using rule 58 (term -> term div error .) - yacc.py:2687: fi reduce using rule 58 (term -> term div error .) - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2696: ! arroba [ reduce using rule 58 (term -> term div error .) ] - yacc.py:2700: - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 165 - yacc.py:2563: - yacc.py:2565: (59) base_call -> factor arroba type . dot func_call - yacc.py:2566: - yacc.py:2687: dot shift and go to state 193 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 166 - yacc.py:2563: - yacc.py:2565: (62) base_call -> factor arroba error . dot func_call - yacc.py:2566: - yacc.py:2687: dot shift and go to state 194 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 167 - yacc.py:2563: - yacc.py:2565: (65) factor -> factor dot func_call . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: dot reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: star reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: div reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: plus reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: minus reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: less reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: lesseq reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: equal reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: semi reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: cpar reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: of reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: then reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: loop reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: comma reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: in reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: else reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: pool reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: ccur reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: fi reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 168 - yacc.py:2563: - yacc.py:2565: (88) func_call -> id . opar args cpar - yacc.py:2565: (89) func_call -> id . opar error cpar - yacc.py:2566: - yacc.py:2687: opar shift and go to state 113 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 169 - yacc.py:2563: - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2566: - yacc.py:2687: opar shift and go to state 195 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 170 - yacc.py:2563: - yacc.py:2565: (64) factor -> opar expr cpar . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: dot reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: star reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: div reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: plus reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: minus reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: less reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: lesseq reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: equal reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: semi reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: cpar reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: of reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: then reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: loop reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: comma reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: in reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: else reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: pool reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: ccur reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: fi reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 171 - yacc.py:2563: - yacc.py:2565: (70) factor -> let let_list in . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 196 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 172 - yacc.py:2563: - yacc.py:2565: (37) let_list -> let_assign comma . let_list - yacc.py:2565: (36) let_list -> . let_assign - yacc.py:2565: (37) let_list -> . let_assign comma let_list - yacc.py:2565: (38) let_assign -> . param larrow expr - yacc.py:2565: (39) let_assign -> . param - yacc.py:2565: (35) param -> . id colon type - yacc.py:2566: - yacc.py:2687: id shift and go to state 46 - yacc.py:2689: - yacc.py:2714: let_assign shift and go to state 129 - yacc.py:2714: let_list shift and go to state 197 - yacc.py:2714: param shift and go to state 130 - yacc.py:2561: - yacc.py:2562:state 173 - yacc.py:2563: - yacc.py:2565: (38) let_assign -> param larrow . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 198 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 174 - yacc.py:2563: - yacc.py:2565: (71) factor -> case expr of . cases_list esac - yacc.py:2565: (40) cases_list -> . casep semi - yacc.py:2565: (41) cases_list -> . casep semi cases_list - yacc.py:2565: (42) cases_list -> . error cases_list - yacc.py:2565: (43) cases_list -> . error semi - yacc.py:2565: (44) casep -> . id colon type rarrow expr - yacc.py:2566: - yacc.py:2687: error shift and go to state 201 - yacc.py:2687: id shift and go to state 202 - yacc.py:2689: - yacc.py:2714: cases_list shift and go to state 199 - yacc.py:2714: casep shift and go to state 200 - yacc.py:2561: - yacc.py:2562:state 175 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr then . expr else expr fi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 203 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 176 - yacc.py:2563: - yacc.py:2565: (73) factor -> while expr loop . expr pool - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 204 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 177 - yacc.py:2563: - yacc.py:2565: (77) atom -> ocur block ccur . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: dot reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: star reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: div reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: plus reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: minus reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: less reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: lesseq reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: equal reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: semi reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: cpar reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: of reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: then reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: loop reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: comma reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: in reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: else reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: pool reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: ccur reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: fi reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 178 - yacc.py:2563: - yacc.py:2565: (80) atom -> ocur block error . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: dot reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: star reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: div reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: plus reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: minus reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: less reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: lesseq reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: equal reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: semi reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: cpar reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: of reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: then reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: loop reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: comma reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: in reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: else reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: pool reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: ccur reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: fi reduce using rule 80 (atom -> ocur block error .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 179 - yacc.py:2563: - yacc.py:2565: (79) atom -> ocur error ccur . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: dot reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: star reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: div reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: plus reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: minus reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: less reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: lesseq reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: equal reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: semi reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: cpar reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: of reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: then reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: loop reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: comma reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: in reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: else reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: pool reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: ccur reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: fi reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 180 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur . expr ccur - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 205 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 181 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur . expr ccur - yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur . error ccur - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 207 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 206 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 182 - yacc.py:2563: - yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur . expr ccur - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 208 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 183 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur . expr ccur - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 209 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 184 - yacc.py:2563: - yacc.py:2565: (61) base_call -> error arroba type dot . func_call - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 168 - yacc.py:2687: error shift and go to state 169 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 210 - yacc.py:2561: - yacc.py:2562:state 185 - yacc.py:2563: - yacc.py:2565: (95) arg_list -> error . arg_list - yacc.py:2565: (86) block -> error . block - yacc.py:2565: (87) block -> error . semi - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: semi shift and go to state 142 - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 185 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: arg_list shift and go to state 186 - yacc.py:2714: block shift and go to state 141 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: expr shift and go to state 187 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 186 - yacc.py:2563: - yacc.py:2565: (95) arg_list -> error arg_list . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 95 (arg_list -> error arg_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 187 - yacc.py:2563: - yacc.py:2565: (93) arg_list -> expr . - yacc.py:2565: (94) arg_list -> expr . comma arg_list - yacc.py:2565: (84) block -> expr . semi - yacc.py:2565: (85) block -> expr . semi block - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 93 (arg_list -> expr .) - yacc.py:2687: comma shift and go to state 189 - yacc.py:2687: semi shift and go to state 151 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 188 - yacc.py:2563: - yacc.py:2565: (90) func_call -> error opar args cpar . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: dot reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: star reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: div reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: plus reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: minus reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: less reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: lesseq reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: equal reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: semi reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: cpar reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: of reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: then reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: loop reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: comma reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: in reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: else reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: pool reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: ccur reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: fi reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 189 - yacc.py:2563: - yacc.py:2565: (94) arg_list -> expr comma . arg_list - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 145 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 155 - yacc.py:2714: arg_list shift and go to state 211 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 190 - yacc.py:2563: - yacc.py:2565: (85) block -> expr semi block . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 85 (block -> expr semi block .) - yacc.py:2687: error reduce using rule 85 (block -> expr semi block .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 191 - yacc.py:2563: - yacc.py:2565: (88) func_call -> id opar args cpar . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: dot reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: star reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: div reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: plus reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: minus reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: less reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: lesseq reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: equal reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: semi reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: cpar reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: of reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: then reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: loop reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: comma reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: in reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: else reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: pool reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: ccur reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: fi reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 192 - yacc.py:2563: - yacc.py:2565: (89) func_call -> id opar error cpar . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: dot reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: star reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: div reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: plus reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: minus reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: less reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: lesseq reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: equal reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: semi reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: cpar reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: of reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: then reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: loop reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: comma reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: in reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: else reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: pool reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: ccur reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: fi reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 193 - yacc.py:2563: - yacc.py:2565: (59) base_call -> factor arroba type dot . func_call - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 168 - yacc.py:2687: error shift and go to state 169 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 212 - yacc.py:2561: - yacc.py:2562:state 194 - yacc.py:2563: - yacc.py:2565: (62) base_call -> factor arroba error dot . func_call - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 168 - yacc.py:2687: error shift and go to state 169 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 213 - yacc.py:2561: - yacc.py:2562:state 195 - yacc.py:2563: - yacc.py:2565: (90) func_call -> error opar . args cpar - yacc.py:2565: (91) args -> . arg_list - yacc.py:2565: (92) args -> . arg_list_empty - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (96) arg_list_empty -> . epsilon - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (2) epsilon -> . - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 145 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: cpar reduce using rule 2 (epsilon -> .) - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: args shift and go to state 146 - yacc.py:2714: arg_list shift and go to state 148 - yacc.py:2714: arg_list_empty shift and go to state 149 - yacc.py:2714: expr shift and go to state 155 - yacc.py:2714: epsilon shift and go to state 150 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 196 - yacc.py:2563: - yacc.py:2565: (70) factor -> let let_list in expr . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: dot reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: star reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: div reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: plus reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: minus reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: less reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: lesseq reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: equal reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: semi reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: cpar reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: of reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: then reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: loop reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: comma reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: in reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: else reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: pool reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: ccur reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: fi reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 197 - yacc.py:2563: - yacc.py:2565: (37) let_list -> let_assign comma let_list . - yacc.py:2566: - yacc.py:2687: in reduce using rule 37 (let_list -> let_assign comma let_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 198 - yacc.py:2563: - yacc.py:2565: (38) let_assign -> param larrow expr . - yacc.py:2566: - yacc.py:2687: comma reduce using rule 38 (let_assign -> param larrow expr .) - yacc.py:2687: in reduce using rule 38 (let_assign -> param larrow expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 199 - yacc.py:2563: - yacc.py:2565: (71) factor -> case expr of cases_list . esac - yacc.py:2566: - yacc.py:2687: esac shift and go to state 214 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 200 - yacc.py:2563: - yacc.py:2565: (40) cases_list -> casep . semi - yacc.py:2565: (41) cases_list -> casep . semi cases_list - yacc.py:2566: - yacc.py:2687: semi shift and go to state 215 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 201 - yacc.py:2563: - yacc.py:2565: (42) cases_list -> error . cases_list - yacc.py:2565: (43) cases_list -> error . semi - yacc.py:2565: (40) cases_list -> . casep semi - yacc.py:2565: (41) cases_list -> . casep semi cases_list - yacc.py:2565: (42) cases_list -> . error cases_list - yacc.py:2565: (43) cases_list -> . error semi - yacc.py:2565: (44) casep -> . id colon type rarrow expr - yacc.py:2566: - yacc.py:2687: semi shift and go to state 217 - yacc.py:2687: error shift and go to state 201 - yacc.py:2687: id shift and go to state 202 - yacc.py:2689: - yacc.py:2714: cases_list shift and go to state 216 - yacc.py:2714: casep shift and go to state 200 - yacc.py:2561: - yacc.py:2562:state 202 - yacc.py:2563: - yacc.py:2565: (44) casep -> id . colon type rarrow expr - yacc.py:2566: - yacc.py:2687: colon shift and go to state 218 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 203 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr then expr . else expr fi - yacc.py:2566: - yacc.py:2687: else shift and go to state 219 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 204 - yacc.py:2563: - yacc.py:2565: (73) factor -> while expr loop expr . pool - yacc.py:2566: - yacc.py:2687: pool shift and go to state 220 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 205 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur expr . ccur - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 221 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 206 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur expr . ccur - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 222 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 207 - yacc.py:2563: - yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur error . ccur - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 223 - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 208 - yacc.py:2563: - yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur expr . ccur - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 224 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 209 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur expr . ccur - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 225 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 210 - yacc.py:2563: - yacc.py:2565: (61) base_call -> error arroba type dot func_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: div reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: plus reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: minus reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: less reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: lesseq reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: equal reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: semi reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: cpar reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: arroba reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: dot reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: of reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: then reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: loop reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: comma reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: in reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: else reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: pool reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: ccur reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: fi reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 211 - yacc.py:2563: - yacc.py:2565: (94) arg_list -> expr comma arg_list . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 94 (arg_list -> expr comma arg_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 212 - yacc.py:2563: - yacc.py:2565: (59) base_call -> factor arroba type dot func_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: div reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: plus reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: minus reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: less reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: lesseq reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: equal reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: semi reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: cpar reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: arroba reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: dot reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: of reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: then reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: loop reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: comma reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: in reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: else reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: pool reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: ccur reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: fi reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 213 - yacc.py:2563: - yacc.py:2565: (62) base_call -> factor arroba error dot func_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: div reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: plus reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: minus reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: less reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: lesseq reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: equal reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: semi reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: cpar reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: arroba reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: dot reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: of reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: then reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: loop reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: comma reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: in reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: else reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: pool reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: ccur reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: fi reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 214 - yacc.py:2563: - yacc.py:2565: (71) factor -> case expr of cases_list esac . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: dot reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: star reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: div reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: plus reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: minus reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: less reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: lesseq reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: equal reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: semi reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: cpar reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: of reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: then reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: loop reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: comma reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: in reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: else reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: pool reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: ccur reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: fi reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 215 - yacc.py:2563: - yacc.py:2565: (40) cases_list -> casep semi . - yacc.py:2565: (41) cases_list -> casep semi . cases_list - yacc.py:2565: (40) cases_list -> . casep semi - yacc.py:2565: (41) cases_list -> . casep semi cases_list - yacc.py:2565: (42) cases_list -> . error cases_list - yacc.py:2565: (43) cases_list -> . error semi - yacc.py:2565: (44) casep -> . id colon type rarrow expr - yacc.py:2566: - yacc.py:2687: esac reduce using rule 40 (cases_list -> casep semi .) - yacc.py:2687: error shift and go to state 201 - yacc.py:2687: id shift and go to state 202 - yacc.py:2689: - yacc.py:2714: casep shift and go to state 200 - yacc.py:2714: cases_list shift and go to state 226 - yacc.py:2561: - yacc.py:2562:state 216 - yacc.py:2563: - yacc.py:2565: (42) cases_list -> error cases_list . - yacc.py:2566: - yacc.py:2687: esac reduce using rule 42 (cases_list -> error cases_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 217 - yacc.py:2563: - yacc.py:2565: (43) cases_list -> error semi . - yacc.py:2566: - yacc.py:2687: esac reduce using rule 43 (cases_list -> error semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 218 - yacc.py:2563: - yacc.py:2565: (44) casep -> id colon . type rarrow expr - yacc.py:2566: - yacc.py:2687: type shift and go to state 227 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 219 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr then expr else . expr fi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 228 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 220 - yacc.py:2563: - yacc.py:2565: (73) factor -> while expr loop expr pool . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: dot reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: star reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: div reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: plus reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: minus reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: less reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: lesseq reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: equal reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: semi reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: cpar reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: of reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: then reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: loop reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: comma reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: in reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: else reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: pool reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: ccur reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: fi reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 221 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur expr ccur . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 26 (def_func -> error opar formals cpar colon type ocur expr ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 222 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur expr ccur . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 25 (def_func -> id opar formals cpar colon type ocur expr ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 223 - yacc.py:2563: - yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur error ccur . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 29 (def_func -> id opar formals cpar colon type ocur error ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 224 - yacc.py:2563: - yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur expr ccur . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 28 (def_func -> id opar formals cpar colon error ocur expr ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 225 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur expr ccur . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 27 (def_func -> id opar error cpar colon type ocur expr ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 226 - yacc.py:2563: - yacc.py:2565: (41) cases_list -> casep semi cases_list . - yacc.py:2566: - yacc.py:2687: esac reduce using rule 41 (cases_list -> casep semi cases_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 227 - yacc.py:2563: - yacc.py:2565: (44) casep -> id colon type . rarrow expr - yacc.py:2566: - yacc.py:2687: rarrow shift and go to state 229 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 228 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr then expr else expr . fi - yacc.py:2566: - yacc.py:2687: fi shift and go to state 230 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 229 - yacc.py:2563: - yacc.py:2565: (44) casep -> id colon type rarrow . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 231 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 230 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr then expr else expr fi . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: dot reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: star reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: div reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: plus reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: minus reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: less reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: lesseq reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: equal reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: semi reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: cpar reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: of reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: then reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: loop reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: comma reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: in reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: else reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: pool reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: ccur reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: fi reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 231 - yacc.py:2563: - yacc.py:2565: (44) casep -> id colon type rarrow expr . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 44 (casep -> id colon type rarrow expr .) - yacc.py:2689: - yacc.py:3447:24 shift/reduce conflicts - yacc.py:3457: - yacc.py:3458:Conflicts: - yacc.py:3459: - yacc.py:3462:shift/reduce conflict for less in state 73 resolved as shift - yacc.py:3462:shift/reduce conflict for lesseq in state 73 resolved as shift - yacc.py:3462:shift/reduce conflict for equal in state 73 resolved as shift - yacc.py:3462:shift/reduce conflict for plus in state 74 resolved as shift - yacc.py:3462:shift/reduce conflict for minus in state 74 resolved as shift - yacc.py:3462:shift/reduce conflict for star in state 75 resolved as shift - yacc.py:3462:shift/reduce conflict for div in state 75 resolved as shift - yacc.py:3462:shift/reduce conflict for arroba in state 77 resolved as shift - yacc.py:3462:shift/reduce conflict for dot in state 77 resolved as shift - yacc.py:3462:shift/reduce conflict for ccur in state 141 resolved as shift - yacc.py:3462:shift/reduce conflict for cpar in state 147 resolved as shift - yacc.py:3462:shift/reduce conflict for error in state 151 resolved as shift - yacc.py:3462:shift/reduce conflict for plus in state 156 resolved as shift - yacc.py:3462:shift/reduce conflict for minus in state 156 resolved as shift - yacc.py:3462:shift/reduce conflict for plus in state 157 resolved as shift - yacc.py:3462:shift/reduce conflict for minus in state 157 resolved as shift - yacc.py:3462:shift/reduce conflict for plus in state 158 resolved as shift - yacc.py:3462:shift/reduce conflict for minus in state 158 resolved as shift - yacc.py:3462:shift/reduce conflict for star in state 159 resolved as shift - yacc.py:3462:shift/reduce conflict for div in state 159 resolved as shift - yacc.py:3462:shift/reduce conflict for star in state 160 resolved as shift - yacc.py:3462:shift/reduce conflict for div in state 160 resolved as shift - yacc.py:3462:shift/reduce conflict for arroba in state 162 resolved as shift - yacc.py:3462:shift/reduce conflict for arroba in state 164 resolved as shift - yacc.py:3488:Couldn't create 'src.cool.parser.parsetab'. [Errno 2] No such file or directory: 'parser/output/parsetab.py' - yacc.py: 362:PLY: PARSE DEBUG START - yacc.py: 410: - yacc.py: 411:State : 0 - yacc.py: 434:Stack : . LexToken(class,'class',3,49) - yacc.py: 445:Action : Shift and goto state 5 - yacc.py: 410: - yacc.py: 411:State : 5 - yacc.py: 434:Stack : class . LexToken(type,'Main',3,55) - yacc.py: 445:Action : Shift and goto state 8 - yacc.py: 410: - yacc.py: 411:State : 8 - yacc.py: 434:Stack : class type . LexToken(ocur,'{',3,60) - yacc.py: 445:Action : Shift and goto state 10 - yacc.py: 410: - yacc.py: 411:State : 10 - yacc.py: 434:Stack : class type ocur . LexToken(id,'main',4,66) - yacc.py: 445:Action : Shift and goto state 19 - yacc.py: 410: - yacc.py: 411:State : 19 - yacc.py: 434:Stack : class type ocur id . LexToken(opar,'(',4,70) - yacc.py: 445:Action : Shift and goto state 32 - yacc.py: 410: - yacc.py: 411:State : 32 - yacc.py: 434:Stack : class type ocur id opar . LexToken(cpar,')',4,71) - yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : class type ocur id opar epsilon . LexToken(cpar,')',4,71) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : class type ocur id opar param_list_empty . LexToken(cpar,')',4,71) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : class type ocur id opar formals . LexToken(cpar,')',4,71) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : class type ocur id opar formals cpar . LexToken(colon,':',4,72) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon . LexToken(type,'Object',4,74) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type . LexToken(ocur,'{',4,81) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur . LexToken(opar,'(',5,91) - yacc.py: 445:Action : Shift and goto state 80 - yacc.py: 410: - yacc.py: 411:State : 80 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar . LexToken(new,'new',5,92) - yacc.py: 445:Action : Shift and goto state 89 - yacc.py: 410: - yacc.py: 411:State : 89 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar new . LexToken(type,'Alpha',5,96) - yacc.py: 445:Action : Shift and goto state 134 - yacc.py: 410: - yacc.py: 411:State : 134 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar new type . LexToken(cpar,')',5,101) - yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','Alpha'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 123 - yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 - yacc.py: 506:Result : ( ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar epsilon . LexToken(cpar,')',5,109) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar arg_list_empty . LexToken(cpar,')',5,109) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args . LexToken(cpar,')',5,109) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args cpar . LexToken(ccur,'}',6,115) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['print','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'print',5,103), [])) - yacc.py: 410: - yacc.py: 411:State : 167 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot func_call . LexToken(ccur,'}',6,115) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','Object','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 16 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 16 - yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : class type ocur def_func semi epsilon . LexToken(ccur,'}',7,118) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 48 - yacc.py: 430:Defaulted state 48: Reduce using 16 - yacc.py: 434:Stack : class type ocur def_func semi feature_list . LexToken(ccur,'}',7,118) - yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 14 - yacc.py: 506:Result : ([ class type ocur feature_list ccur semi] with ['class','Main','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( id colon type] with ['test1',':','Object'] and goto state 17 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar epsilon . LexToken(cpar,')',12,172) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar param_list_empty . LexToken(cpar,')',12,172) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals . LexToken(cpar,')',12,172) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar . LexToken(colon,':',12,173) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon . LexToken(type,'Int',12,175) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',12,179) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type ocur . LexToken(num,2.0,13,189) - yacc.py: 445:Action : Shift and goto state 88 - yacc.py: 410: - yacc.py: 411:State : 88 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',13,191) - yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing1','(',[],')',':','Int','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( num] with [1.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( id colon type larrow expr] with ['test2',':','Int','<-',] and goto state 17 - yacc.py: 506:Result : ( string] with ['1'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( id colon type larrow expr] with ['test3',':','String','<-',] and goto state 17 - yacc.py: 506:Result : ( id colon type] with ['a',':','Alpha'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'a',20,265), LexToken(type, ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param . LexToken(comma,',',20,273) - yacc.py: 445:Action : Shift and goto state 60 - yacc.py: 410: - yacc.py: 411:State : 60 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma . LexToken(id,'b',20,275) - yacc.py: 445:Action : Shift and goto state 46 - yacc.py: 410: - yacc.py: 411:State : 46 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id . LexToken(colon,':',20,276) - yacc.py: 445:Action : Shift and goto state 61 - yacc.py: 410: - yacc.py: 411:State : 61 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id colon . LexToken(type,'Int',20,278) - yacc.py: 445:Action : Shift and goto state 96 - yacc.py: 410: - yacc.py: 411:State : 96 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id colon type . LexToken(cpar,')',20,281) - yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['b',':','Int'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'b',20,275), LexToken(type, ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param . LexToken(cpar,')',20,281) - yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 - yacc.py: 506:Result : ([(LexToken(id,'b',20,275), LexToken(type ...) - yacc.py: 410: - yacc.py: 411:State : 95 - yacc.py: 430:Defaulted state 95: Reduce using 33 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param_list . LexToken(cpar,')',20,281) - yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 - yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) - yacc.py: 410: - yacc.py: 411:State : 42 - yacc.py: 430:Defaulted state 42: Reduce using 30 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param_list . LexToken(cpar,')',20,281) - yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 - yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals . LexToken(cpar,')',20,281) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar . LexToken(colon,':',20,282) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon . LexToken(type,'Int',20,284) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',20,288) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur . LexToken(num,2.0,21,298) - yacc.py: 445:Action : Shift and goto state 88 - yacc.py: 410: - yacc.py: 411:State : 88 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',21,300) - yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing2','(',,')',':','Int','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar epsilon . LexToken(cpar,')',24,325) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar param_list_empty . LexToken(cpar,')',24,325) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals . LexToken(cpar,')',24,325) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar . LexToken(colon,':',24,326) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon . LexToken(type,'String',24,328) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',24,335) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur . LexToken(string,'2 + 2',25,351) - yacc.py: 445:Action : Shift and goto state 93 - yacc.py: 410: - yacc.py: 411:State : 93 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur string . LexToken(ccur,'}',26,357) - yacc.py: 469:Action : Reduce rule [atom -> string] with ['2 + 2'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing3','(',[],')',':','String','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',28,374) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',28,374) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals . LexToken(cpar,')',28,374) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',28,375) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'String',28,377) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',28,384) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(type,'Test1',29,394) - yacc.py: 579:Error : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(type,'Test1',29,394) - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur . error - yacc.py: 445:Action : Shift and goto state 207 - yacc.py: 410: - yacc.py: 411:State : 207 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error . LexToken(type,'Test1',29,394) - yacc.py: 579:Error : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error . LexToken(type,'Test1',29,394) - yacc.py: 410: - yacc.py: 411:State : 207 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error . LexToken(larrow,'<-',29,400) - yacc.py: 579:Error : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error . LexToken(larrow,'<-',29,400) - yacc.py: 410: - yacc.py: 411:State : 207 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error . LexToken(string,'Hello World',29,415) - yacc.py: 445:Action : Shift and goto state 93 - yacc.py: 410: - yacc.py: 411:State : 93 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error string . LexToken(ccur,'}',30,467) - yacc.py: 469:Action : Reduce rule [atom -> string] with ['Hello World'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( error semi] with [,';'] and goto state 109 - yacc.py: 506:Result : ([ error block ccur] with [,,'}'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar epsilon . LexToken(cpar,')',34,510) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar arg_list_empty . LexToken(cpar,')',34,510) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar args . LexToken(cpar,')',34,510) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar args cpar . LexToken(colon,':',34,512) - yacc.py: 579:Error : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar args cpar . LexToken(colon,':',34,512) - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar args cpar . error - yacc.py: 579:Error : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar args cpar . error - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar args . error - yacc.py: 579:Error : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar args . error - yacc.py: 410: - yacc.py: 411:State : 113 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar . error - yacc.py: 445:Action : Shift and goto state 154 - yacc.py: 410: - yacc.py: 411:State : 154 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error . LexToken(colon,':',34,512) - yacc.py: 579:Error : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error . LexToken(colon,':',34,512) - yacc.py: 410: - yacc.py: 411:State : 154 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error . LexToken(type,'Object',34,514) - yacc.py: 579:Error : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error . LexToken(type,'Object',34,514) - yacc.py: 410: - yacc.py: 411:State : 154 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error . LexToken(ocur,'{',34,521) - yacc.py: 445:Action : Shift and goto state 90 - yacc.py: 410: - yacc.py: 411:State : 90 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error ocur . LexToken(id,'out_string',35,531) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error ocur id . LexToken(opar,'(',35,541) - yacc.py: 445:Action : Shift and goto state 113 - yacc.py: 410: - yacc.py: 411:State : 113 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error ocur id opar . LexToken(string,'reached!!\\n',35,554) - yacc.py: 445:Action : Shift and goto state 93 - yacc.py: 410: - yacc.py: 411:State : 93 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur error ocur id opar error ocur id opar string . LexToken(cpar,')',35,555) - yacc.py: 469:Action : Reduce rule [atom -> string] with ['reached!!\\n'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'out_string',35,531), [ func_call] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( ocur error ccur] with ['{',,'}'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 187 - yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 109 - yacc.py: 506:Result : ([ error block ccur] with [,,'}'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( Date: Mon, 20 Sep 2021 16:04:55 -0400 Subject: [PATCH 17/44] refactor(parser): throw exception when catch error into parser --- src/cool/__main__.py | 1 + src/cool/code.cl | 164 +- src/cool/parser/output/parselog.txt | 8685 +++++++++++++++++++++++++++ src/cool/parser/parser.py | 9 +- 4 files changed, 8743 insertions(+), 116 deletions(-) diff --git a/src/cool/__main__.py b/src/cool/__main__.py index 1636000c1..2059c78ee 100644 --- a/src/cool/__main__.py +++ b/src/cool/__main__.py @@ -28,6 +28,7 @@ lexer = main(text, _out) # print(lexer) + lexer.lexer.lineno = 1 parser = CoolParser(lexer) result = parser.parse(text) diff --git a/src/cool/code.cl b/src/cool/code.cl index 12cb52beb..0a953e2e6 100644 --- a/src/cool/code.cl +++ b/src/cool/code.cl @@ -1,111 +1,57 @@ -(* Integers, Identifiers, and Special Notation *) +(* There are three forms of dispatch (i.e. method call) in Cool. The three forms differ only in how the called method is selected *) -0007 123 +1 -1 +90 -09 +11113 -4r *a *self* c++ -5! = 120, 2 + 2 = 5 or E = mc2; p + 1 @ p = 1: for x in range(len(b)) -new / <- <<==> {( Int: Objet, Bool; String.string SELF_TYPE isvoid }) -class Class if then else fi testing Testing ~007agent_bond james_007B0N3SS___ -loop pool while tRuE or noT faLsE let in case of ESAC +class Main { + main(): Object { + (new Alpha).print() + }; +}; -(* -#3 INT_CONST 0007 -#3 INT_CONST 123 -#3 '+' -#3 INT_CONST 1 -#3 '-' -#3 INT_CONST 1 -#3 '+' -#3 INT_CONST 90 -#3 '-' -#3 INT_CONST 09 -#3 '+' -#3 INT_CONST 11113 -#3 '-' -#3 INT_CONST 4 -#3 OBJECTID r -#3 '*' -#3 OBJECTID a -#3 '*' -#3 OBJECTID self -#3 '*' -#3 OBJECTID c -#3 '+' -#3 '+' -#4 INT_CONST 5 -#4 ERROR "!" -#4 '=' -#4 INT_CONST 120 -#4 ',' -#4 INT_CONST 2 -#4 '+' -#4 INT_CONST 2 -#4 '=' -#4 INT_CONST 5 -#4 OBJECTID or -#4 TYPEID E -#4 '=' -#4 OBJECTID mc2 -#4 ';' -#4 OBJECTID p -#4 '+' -#4 INT_CONST 1 -#4 '@' -#4 OBJECTID p -#4 '=' -#4 INT_CONST 1 -#4 ':' -#4 OBJECTID for -#4 OBJECTID x -#4 IN -#4 OBJECTID range -#4 '(' -#4 OBJECTID len -#4 '(' -#4 OBJECTID b -#4 ')' -#4 ')' -#5 NEW -#5 '/' -#5 ASSIGN -#5 '<' -#5 LE -#5 DARROW -#5 '{' -#5 '(' -#5 TYPEID Int -#5 ':' -#5 TYPEID Objet -#5 ',' -#5 TYPEID Bool -#5 ';' -#5 TYPEID String -#5 '.' -#5 OBJECTID string -#5 TYPEID SELF_TYPE -#5 ISVOID -#5 '}' -#5 ')' -#6 CLASS -#6 CLASS -#6 IF -#6 THEN -#6 ELSE -#6 FI -#6 OBJECTID testing -#6 TYPEID Testing -#6 '~' -#6 INT_CONST 007 -#6 OBJECTID agent_bond -#6 OBJECTID james_007B0N3SS___ -#7 LOOP -#7 POOL -#7 WHILE -#7 BOOL_CONST true -#7 OBJECTID or -#7 NOT -#7 BOOL_CONST false -#7 LET -#7 IN -#7 CASE -#7 OF -#7 ESAC -*) \ No newline at end of file +class Test { + test1: Object; + + testing1(): Int { + 2 + 2 + }; + + test2: Int <- 1; + + test3: String <- "1"; + + testing2(a: Alpha, b: Int): Int { + 2 + 2 + }; + + testing3(): String { + "2 + 2" + }; + + testing4(x: Int, y: Int): Test { + self + }; +}; + +class Test2 { + test1: Test <- new Test; + + testing1(): Test { + test1.testing4(1 + 1, 1 + 2).testing4(2 + 3, 3 + 5).testing4(5 + 8, 8 + 13) + }; + + testing2(x: Int, y: Int): Test2 { + self + }; + + testing3(): Test2 { + testing2(1 + 1, 1 + 2).testing2(2 + 3, 3 + 5).testing2(5 + 8, true + fALSE) + }; + + testing4(): Object { + test1@object.copy() -- Type identifiers begin with a upper case letter + }; +} + +class Alpha inherits IO { + print() : Object { + out_string("reached!!\n") + }; +}; \ No newline at end of file diff --git a/src/cool/parser/output/parselog.txt b/src/cool/parser/output/parselog.txt index e69de29bb..ecd58e94c 100644 --- a/src/cool/parser/output/parselog.txt +++ b/src/cool/parser/output/parselog.txt @@ -0,0 +1,8685 @@ + yacc.py:3317:Created by PLY version 3.11 (http://www.dabeaz.com/ply) + yacc.py:3377: + yacc.py:3378:Grammar + yacc.py:3379: + yacc.py:3381:Rule 0 S' -> program + yacc.py:3381:Rule 1 program -> class_list + yacc.py:3381:Rule 2 class_list -> def_class class_list + yacc.py:3381:Rule 3 class_list -> def_class + yacc.py:3381:Rule 4 class_list -> error class_list + yacc.py:3381:Rule 5 epsilon -> + yacc.py:3381:Rule 6 def_class -> class type ocur feature_list ccur semi + yacc.py:3381:Rule 7 def_class -> class type inherits type ocur feature_list ccur semi + yacc.py:3381:Rule 8 def_class -> class error ocur feature_list ccur semi + yacc.py:3381:Rule 9 def_class -> class type ocur feature_list ccur error + yacc.py:3381:Rule 10 def_class -> class error inherits type ocur feature_list ccur semi + yacc.py:3381:Rule 11 def_class -> class error inherits error ocur feature_list ccur semi + yacc.py:3381:Rule 12 def_class -> class type inherits error ocur feature_list ccur semi + yacc.py:3381:Rule 13 def_class -> class type inherits type ocur feature_list ccur error + yacc.py:3381:Rule 14 feature_list -> epsilon + yacc.py:3381:Rule 15 feature_list -> def_attr semi feature_list + yacc.py:3381:Rule 16 feature_list -> def_func semi feature_list + yacc.py:3381:Rule 17 feature_list -> error feature_list + yacc.py:3381:Rule 18 def_attr -> id colon type + yacc.py:3381:Rule 19 def_attr -> id colon type larrow expr + yacc.py:3381:Rule 20 def_attr -> error colon type + yacc.py:3381:Rule 21 def_attr -> id colon error + yacc.py:3381:Rule 22 def_attr -> error colon type larrow expr + yacc.py:3381:Rule 23 def_attr -> id colon error larrow expr + yacc.py:3381:Rule 24 def_attr -> id colon type larrow error + yacc.py:3381:Rule 25 def_func -> id opar formals cpar colon type ocur expr ccur + yacc.py:3381:Rule 26 def_func -> error opar formals cpar colon type ocur expr ccur + yacc.py:3381:Rule 27 def_func -> id opar error cpar colon type ocur expr ccur + yacc.py:3381:Rule 28 def_func -> id opar formals cpar colon error ocur expr ccur + yacc.py:3381:Rule 29 def_func -> id opar formals cpar colon type ocur error ccur + yacc.py:3381:Rule 30 formals -> param_list + yacc.py:3381:Rule 31 formals -> param_list_empty + yacc.py:3381:Rule 32 param_list -> param + yacc.py:3381:Rule 33 param_list -> param comma param_list + yacc.py:3381:Rule 34 param_list_empty -> epsilon + yacc.py:3381:Rule 35 param -> id colon type + yacc.py:3381:Rule 36 let_list -> let_assign + yacc.py:3381:Rule 37 let_list -> let_assign comma let_list + yacc.py:3381:Rule 38 let_assign -> param larrow expr + yacc.py:3381:Rule 39 let_assign -> param + yacc.py:3381:Rule 40 cases_list -> casep semi + yacc.py:3381:Rule 41 cases_list -> casep semi cases_list + yacc.py:3381:Rule 42 cases_list -> error cases_list + yacc.py:3381:Rule 43 cases_list -> error semi + yacc.py:3381:Rule 44 casep -> id colon type rarrow expr + yacc.py:3381:Rule 45 expr -> id larrow expr + yacc.py:3381:Rule 46 expr -> comp + yacc.py:3381:Rule 47 comp -> comp less op + yacc.py:3381:Rule 48 comp -> comp lesseq op + yacc.py:3381:Rule 49 comp -> comp equal op + yacc.py:3381:Rule 50 comp -> op + yacc.py:3381:Rule 51 op -> op plus term + yacc.py:3381:Rule 52 op -> op minus term + yacc.py:3381:Rule 53 op -> term + yacc.py:3381:Rule 54 term -> term star base_call + yacc.py:3381:Rule 55 term -> term div base_call + yacc.py:3381:Rule 56 term -> base_call + yacc.py:3381:Rule 57 term -> term star error + yacc.py:3381:Rule 58 term -> term div error + yacc.py:3381:Rule 59 base_call -> factor arroba type dot func_call + yacc.py:3381:Rule 60 base_call -> factor + yacc.py:3381:Rule 61 base_call -> error arroba type dot func_call + yacc.py:3381:Rule 62 base_call -> factor arroba error dot func_call + yacc.py:3381:Rule 63 factor -> atom + yacc.py:3381:Rule 64 factor -> opar expr cpar + yacc.py:3381:Rule 65 factor -> factor dot func_call + yacc.py:3381:Rule 66 factor -> not expr + yacc.py:3381:Rule 67 factor -> func_call + yacc.py:3381:Rule 68 factor -> isvoid base_call + yacc.py:3381:Rule 69 factor -> nox base_call + yacc.py:3381:Rule 70 factor -> let let_list in expr + yacc.py:3381:Rule 71 factor -> case expr of cases_list esac + yacc.py:3381:Rule 72 factor -> if expr then expr else expr fi + yacc.py:3381:Rule 73 factor -> while expr loop expr pool + yacc.py:3381:Rule 74 atom -> num + yacc.py:3381:Rule 75 atom -> id + yacc.py:3381:Rule 76 atom -> new type + yacc.py:3381:Rule 77 atom -> ocur block ccur + yacc.py:3381:Rule 78 atom -> error block ccur + yacc.py:3381:Rule 79 atom -> ocur error ccur + yacc.py:3381:Rule 80 atom -> ocur block error + yacc.py:3381:Rule 81 atom -> true + yacc.py:3381:Rule 82 atom -> false + yacc.py:3381:Rule 83 atom -> string + yacc.py:3381:Rule 84 block -> expr semi + yacc.py:3381:Rule 85 block -> expr semi block + yacc.py:3381:Rule 86 block -> error block + yacc.py:3381:Rule 87 block -> error semi + yacc.py:3381:Rule 88 func_call -> id opar args cpar + yacc.py:3381:Rule 89 func_call -> id opar error cpar + yacc.py:3381:Rule 90 func_call -> error opar args cpar + yacc.py:3381:Rule 91 args -> arg_list + yacc.py:3381:Rule 92 args -> arg_list_empty + yacc.py:3381:Rule 93 arg_list -> expr + yacc.py:3381:Rule 94 arg_list -> expr comma arg_list + yacc.py:3381:Rule 95 arg_list -> error arg_list + yacc.py:3381:Rule 96 arg_list_empty -> epsilon + yacc.py:3399: + yacc.py:3400:Terminals, with rules where they appear + yacc.py:3401: + yacc.py:3405:arroba : 59 61 62 + yacc.py:3405:case : 71 + yacc.py:3405:ccur : 6 7 8 9 10 11 12 13 25 26 27 28 29 77 78 79 + yacc.py:3405:class : 6 7 8 9 10 11 12 13 + yacc.py:3405:colon : 18 19 20 21 22 23 24 25 26 27 28 29 35 44 + yacc.py:3405:comma : 33 37 94 + yacc.py:3405:cpar : 25 26 27 28 29 64 88 89 90 + yacc.py:3405:div : 55 58 + yacc.py:3405:dot : 59 61 62 65 + yacc.py:3405:else : 72 + yacc.py:3405:equal : 49 + yacc.py:3405:error : 4 8 9 10 11 11 12 13 17 20 21 22 23 24 26 27 28 29 42 43 57 58 61 62 78 79 80 86 87 89 90 95 + yacc.py:3405:esac : 71 + yacc.py:3405:false : 82 + yacc.py:3405:fi : 72 + yacc.py:3405:id : 18 19 21 23 24 25 27 28 29 35 44 45 75 88 89 + yacc.py:3405:if : 72 + yacc.py:3405:in : 70 + yacc.py:3405:inherits : 7 10 11 12 13 + yacc.py:3405:isvoid : 68 + yacc.py:3405:larrow : 19 22 23 24 38 45 + yacc.py:3405:less : 47 + yacc.py:3405:lesseq : 48 + yacc.py:3405:let : 70 + yacc.py:3405:loop : 73 + yacc.py:3405:minus : 52 + yacc.py:3405:new : 76 + yacc.py:3405:not : 66 + yacc.py:3405:nox : 69 + yacc.py:3405:num : 74 + yacc.py:3405:ocur : 6 7 8 9 10 11 12 13 25 26 27 28 29 77 79 80 + yacc.py:3405:of : 71 + yacc.py:3405:opar : 25 26 27 28 29 64 88 89 90 + yacc.py:3405:plus : 51 + yacc.py:3405:pool : 73 + yacc.py:3405:rarrow : 44 + yacc.py:3405:semi : 6 7 8 10 11 12 15 16 40 41 43 84 85 87 + yacc.py:3405:star : 54 57 + yacc.py:3405:string : 83 + yacc.py:3405:then : 72 + yacc.py:3405:true : 81 + yacc.py:3405:type : 6 7 7 9 10 12 13 13 18 19 20 22 24 25 26 27 29 35 44 59 61 76 + yacc.py:3405:while : 73 + yacc.py:3407: + yacc.py:3408:Nonterminals, with rules where they appear + yacc.py:3409: + yacc.py:3413:arg_list : 91 94 95 + yacc.py:3413:arg_list_empty : 92 + yacc.py:3413:args : 88 90 + yacc.py:3413:atom : 63 + yacc.py:3413:base_call : 54 55 56 68 69 + yacc.py:3413:block : 77 78 80 85 86 + yacc.py:3413:casep : 40 41 + yacc.py:3413:cases_list : 41 42 71 + yacc.py:3413:class_list : 1 2 4 + yacc.py:3413:comp : 46 47 48 49 + yacc.py:3413:def_attr : 15 + yacc.py:3413:def_class : 2 3 + yacc.py:3413:def_func : 16 + yacc.py:3413:epsilon : 14 34 96 + yacc.py:3413:expr : 19 22 23 25 26 27 28 38 44 45 64 66 70 71 72 72 72 73 73 84 85 93 94 + yacc.py:3413:factor : 59 60 62 65 + yacc.py:3413:feature_list : 6 7 8 9 10 11 12 13 15 16 17 + yacc.py:3413:formals : 25 26 28 29 + yacc.py:3413:func_call : 59 61 62 65 67 + yacc.py:3413:let_assign : 36 37 + yacc.py:3413:let_list : 37 70 + yacc.py:3413:op : 47 48 49 50 51 52 + yacc.py:3413:param : 32 33 38 39 + yacc.py:3413:param_list : 30 33 + yacc.py:3413:param_list_empty : 31 + yacc.py:3413:program : 0 + yacc.py:3413:term : 51 52 53 54 55 57 58 + yacc.py:3414: + yacc.py:3436:Generating LALR tables + yacc.py:2543:Parsing method: LALR + yacc.py:2561: + yacc.py:2562:state 0 + yacc.py:2563: + yacc.py:2565: (0) S' -> . program + yacc.py:2565: (1) program -> . class_list + yacc.py:2565: (2) class_list -> . def_class class_list + yacc.py:2565: (3) class_list -> . def_class + yacc.py:2565: (4) class_list -> . error class_list + yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi + yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error + yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: error shift and go to state 4 + yacc.py:2687: class shift and go to state 5 + yacc.py:2689: + yacc.py:2714: program shift and go to state 1 + yacc.py:2714: class_list shift and go to state 2 + yacc.py:2714: def_class shift and go to state 3 + yacc.py:2561: + yacc.py:2562:state 1 + yacc.py:2563: + yacc.py:2565: (0) S' -> program . + yacc.py:2566: + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 2 + yacc.py:2563: + yacc.py:2565: (1) program -> class_list . + yacc.py:2566: + yacc.py:2687: $end reduce using rule 1 (program -> class_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 3 + yacc.py:2563: + yacc.py:2565: (2) class_list -> def_class . class_list + yacc.py:2565: (3) class_list -> def_class . + yacc.py:2565: (2) class_list -> . def_class class_list + yacc.py:2565: (3) class_list -> . def_class + yacc.py:2565: (4) class_list -> . error class_list + yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi + yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error + yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: $end reduce using rule 3 (class_list -> def_class .) + yacc.py:2687: error shift and go to state 4 + yacc.py:2687: class shift and go to state 5 + yacc.py:2689: + yacc.py:2714: def_class shift and go to state 3 + yacc.py:2714: class_list shift and go to state 6 + yacc.py:2561: + yacc.py:2562:state 4 + yacc.py:2563: + yacc.py:2565: (4) class_list -> error . class_list + yacc.py:2565: (2) class_list -> . def_class class_list + yacc.py:2565: (3) class_list -> . def_class + yacc.py:2565: (4) class_list -> . error class_list + yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi + yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error + yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: error shift and go to state 4 + yacc.py:2687: class shift and go to state 5 + yacc.py:2689: + yacc.py:2714: class_list shift and go to state 7 + yacc.py:2714: def_class shift and go to state 3 + yacc.py:2561: + yacc.py:2562:state 5 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class . type ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> class . type inherits type ocur feature_list ccur semi + yacc.py:2565: (8) def_class -> class . error ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> class . type ocur feature_list ccur error + yacc.py:2565: (10) def_class -> class . error inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> class . error inherits error ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> class . type inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> class . type inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: type shift and go to state 8 + yacc.py:2687: error shift and go to state 9 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 6 + yacc.py:2563: + yacc.py:2565: (2) class_list -> def_class class_list . + yacc.py:2566: + yacc.py:2687: $end reduce using rule 2 (class_list -> def_class class_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 7 + yacc.py:2563: + yacc.py:2565: (4) class_list -> error class_list . + yacc.py:2566: + yacc.py:2687: $end reduce using rule 4 (class_list -> error class_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 8 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type . ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> class type . inherits type ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> class type . ocur feature_list ccur error + yacc.py:2565: (12) def_class -> class type . inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> class type . inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 10 + yacc.py:2687: inherits shift and go to state 11 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 9 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error . ocur feature_list ccur semi + yacc.py:2565: (10) def_class -> class error . inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> class error . inherits error ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 12 + yacc.py:2687: inherits shift and go to state 13 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 10 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type ocur . feature_list ccur semi + yacc.py:2565: (9) def_class -> class type ocur . feature_list ccur error + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 14 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 11 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits . type ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> class type inherits . error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> class type inherits . type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: type shift and go to state 20 + yacc.py:2687: error shift and go to state 21 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 12 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error ocur . feature_list ccur semi + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 22 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 13 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits . type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> class error inherits . error ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: type shift and go to state 24 + yacc.py:2687: error shift and go to state 23 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 14 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type ocur feature_list . ccur semi + yacc.py:2565: (9) def_class -> class type ocur feature_list . ccur error + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 25 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 15 + yacc.py:2563: + yacc.py:2565: (17) feature_list -> error . feature_list + yacc.py:2565: (20) def_attr -> error . colon type + yacc.py:2565: (22) def_attr -> error . colon type larrow expr + yacc.py:2565: (26) def_func -> error . opar formals cpar colon type ocur expr ccur + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 27 + yacc.py:2687: opar shift and go to state 28 + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 26 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 16 + yacc.py:2563: + yacc.py:2565: (14) feature_list -> epsilon . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 14 (feature_list -> epsilon .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 17 + yacc.py:2563: + yacc.py:2565: (15) feature_list -> def_attr . semi feature_list + yacc.py:2566: + yacc.py:2687: semi shift and go to state 29 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 18 + yacc.py:2563: + yacc.py:2565: (16) feature_list -> def_func . semi feature_list + yacc.py:2566: + yacc.py:2687: semi shift and go to state 30 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 19 + yacc.py:2563: + yacc.py:2565: (18) def_attr -> id . colon type + yacc.py:2565: (19) def_attr -> id . colon type larrow expr + yacc.py:2565: (21) def_attr -> id . colon error + yacc.py:2565: (23) def_attr -> id . colon error larrow expr + yacc.py:2565: (24) def_attr -> id . colon type larrow error + yacc.py:2565: (25) def_func -> id . opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> id . opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> id . opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> id . opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 31 + yacc.py:2687: opar shift and go to state 32 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 20 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type . ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> class type inherits type . ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 33 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 21 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error . ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 34 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 22 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error ocur feature_list . ccur semi + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 35 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 23 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error . ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 36 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 24 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type . ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 37 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 25 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type ocur feature_list ccur . semi + yacc.py:2565: (9) def_class -> class type ocur feature_list ccur . error + yacc.py:2566: + yacc.py:2687: semi shift and go to state 38 + yacc.py:2687: error shift and go to state 39 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 26 + yacc.py:2563: + yacc.py:2565: (17) feature_list -> error feature_list . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 17 (feature_list -> error feature_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 27 + yacc.py:2563: + yacc.py:2565: (20) def_attr -> error colon . type + yacc.py:2565: (22) def_attr -> error colon . type larrow expr + yacc.py:2566: + yacc.py:2687: type shift and go to state 40 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 28 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar . formals cpar colon type ocur expr ccur + yacc.py:2565: (30) formals -> . param_list + yacc.py:2565: (31) formals -> . param_list_empty + yacc.py:2565: (32) param_list -> . param + yacc.py:2565: (33) param_list -> . param comma param_list + yacc.py:2565: (34) param_list_empty -> . epsilon + yacc.py:2565: (35) param -> . id colon type + yacc.py:2565: (5) epsilon -> . + yacc.py:2566: + yacc.py:2687: id shift and go to state 46 + yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) + yacc.py:2689: + yacc.py:2714: formals shift and go to state 41 + yacc.py:2714: param_list shift and go to state 42 + yacc.py:2714: param_list_empty shift and go to state 43 + yacc.py:2714: param shift and go to state 44 + yacc.py:2714: epsilon shift and go to state 45 + yacc.py:2561: + yacc.py:2562:state 29 + yacc.py:2563: + yacc.py:2565: (15) feature_list -> def_attr semi . feature_list + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: feature_list shift and go to state 47 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 30 + yacc.py:2563: + yacc.py:2565: (16) feature_list -> def_func semi . feature_list + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2714: feature_list shift and go to state 48 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2561: + yacc.py:2562:state 31 + yacc.py:2563: + yacc.py:2565: (18) def_attr -> id colon . type + yacc.py:2565: (19) def_attr -> id colon . type larrow expr + yacc.py:2565: (21) def_attr -> id colon . error + yacc.py:2565: (23) def_attr -> id colon . error larrow expr + yacc.py:2565: (24) def_attr -> id colon . type larrow error + yacc.py:2566: + yacc.py:2687: type shift and go to state 49 + yacc.py:2687: error shift and go to state 50 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 32 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar . formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> id opar . error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> id opar . formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> id opar . formals cpar colon type ocur error ccur + yacc.py:2565: (30) formals -> . param_list + yacc.py:2565: (31) formals -> . param_list_empty + yacc.py:2565: (32) param_list -> . param + yacc.py:2565: (33) param_list -> . param comma param_list + yacc.py:2565: (34) param_list_empty -> . epsilon + yacc.py:2565: (35) param -> . id colon type + yacc.py:2565: (5) epsilon -> . + yacc.py:2566: + yacc.py:2687: error shift and go to state 52 + yacc.py:2687: id shift and go to state 46 + yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) + yacc.py:2689: + yacc.py:2714: formals shift and go to state 51 + yacc.py:2714: param_list shift and go to state 42 + yacc.py:2714: param_list_empty shift and go to state 43 + yacc.py:2714: param shift and go to state 44 + yacc.py:2714: epsilon shift and go to state 45 + yacc.py:2561: + yacc.py:2562:state 33 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type ocur . feature_list ccur semi + yacc.py:2565: (13) def_class -> class type inherits type ocur . feature_list ccur error + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 53 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 34 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error ocur . feature_list ccur semi + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 54 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 35 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error ocur feature_list ccur . semi + yacc.py:2566: + yacc.py:2687: semi shift and go to state 55 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 36 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error ocur . feature_list ccur semi + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 56 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 37 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type ocur . feature_list ccur semi + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 57 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 38 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 39 + yacc.py:2563: + yacc.py:2565: (9) def_class -> class type ocur feature_list ccur error . + yacc.py:2566: + yacc.py:2687: error reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) + yacc.py:2687: class reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) + yacc.py:2687: $end reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 40 + yacc.py:2563: + yacc.py:2565: (20) def_attr -> error colon type . + yacc.py:2565: (22) def_attr -> error colon type . larrow expr + yacc.py:2566: + yacc.py:2687: semi reduce using rule 20 (def_attr -> error colon type .) + yacc.py:2687: larrow shift and go to state 58 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 41 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals . cpar colon type ocur expr ccur + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 59 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 42 + yacc.py:2563: + yacc.py:2565: (30) formals -> param_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 30 (formals -> param_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 43 + yacc.py:2563: + yacc.py:2565: (31) formals -> param_list_empty . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 31 (formals -> param_list_empty .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 44 + yacc.py:2563: + yacc.py:2565: (32) param_list -> param . + yacc.py:2565: (33) param_list -> param . comma param_list + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 32 (param_list -> param .) + yacc.py:2687: comma shift and go to state 60 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 45 + yacc.py:2563: + yacc.py:2565: (34) param_list_empty -> epsilon . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 34 (param_list_empty -> epsilon .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 46 + yacc.py:2563: + yacc.py:2565: (35) param -> id . colon type + yacc.py:2566: + yacc.py:2687: colon shift and go to state 61 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 47 + yacc.py:2563: + yacc.py:2565: (15) feature_list -> def_attr semi feature_list . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 15 (feature_list -> def_attr semi feature_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 48 + yacc.py:2563: + yacc.py:2565: (16) feature_list -> def_func semi feature_list . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 16 (feature_list -> def_func semi feature_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 49 + yacc.py:2563: + yacc.py:2565: (18) def_attr -> id colon type . + yacc.py:2565: (19) def_attr -> id colon type . larrow expr + yacc.py:2565: (24) def_attr -> id colon type . larrow error + yacc.py:2566: + yacc.py:2687: semi reduce using rule 18 (def_attr -> id colon type .) + yacc.py:2687: larrow shift and go to state 62 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 50 + yacc.py:2563: + yacc.py:2565: (21) def_attr -> id colon error . + yacc.py:2565: (23) def_attr -> id colon error . larrow expr + yacc.py:2566: + yacc.py:2687: semi reduce using rule 21 (def_attr -> id colon error .) + yacc.py:2687: larrow shift and go to state 63 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 51 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals . cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> id opar formals . cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> id opar formals . cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 64 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 52 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error . cpar colon type ocur expr ccur + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 65 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 53 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list . ccur semi + yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list . ccur error + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 66 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 54 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list . ccur semi + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 67 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 55 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 56 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list . ccur semi + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 68 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 57 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list . ccur semi + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 69 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 58 + yacc.py:2563: + yacc.py:2565: (22) def_attr -> error colon type larrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 71 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 59 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar . colon type ocur expr ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 94 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 60 + yacc.py:2563: + yacc.py:2565: (33) param_list -> param comma . param_list + yacc.py:2565: (32) param_list -> . param + yacc.py:2565: (33) param_list -> . param comma param_list + yacc.py:2565: (35) param -> . id colon type + yacc.py:2566: + yacc.py:2687: id shift and go to state 46 + yacc.py:2689: + yacc.py:2714: param shift and go to state 44 + yacc.py:2714: param_list shift and go to state 95 + yacc.py:2561: + yacc.py:2562:state 61 + yacc.py:2563: + yacc.py:2565: (35) param -> id colon . type + yacc.py:2566: + yacc.py:2687: type shift and go to state 96 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 62 + yacc.py:2563: + yacc.py:2565: (19) def_attr -> id colon type larrow . expr + yacc.py:2565: (24) def_attr -> id colon type larrow . error + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 98 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 97 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 63 + yacc.py:2563: + yacc.py:2565: (23) def_attr -> id colon error larrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 99 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 64 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar . colon type ocur expr ccur + yacc.py:2565: (28) def_func -> id opar formals cpar . colon error ocur expr ccur + yacc.py:2565: (29) def_func -> id opar formals cpar . colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 100 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 65 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar . colon type ocur expr ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 101 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 66 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list ccur . semi + yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list ccur . error + yacc.py:2566: + yacc.py:2687: semi shift and go to state 102 + yacc.py:2687: error shift and go to state 103 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 67 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list ccur . semi + yacc.py:2566: + yacc.py:2687: semi shift and go to state 104 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 68 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list ccur . semi + yacc.py:2566: + yacc.py:2687: semi shift and go to state 105 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 69 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list ccur . semi + yacc.py:2566: + yacc.py:2687: semi shift and go to state 106 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 70 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 71 + yacc.py:2563: + yacc.py:2565: (22) def_attr -> error colon type larrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 22 (def_attr -> error colon type larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 72 + yacc.py:2563: + yacc.py:2565: (45) expr -> id . larrow expr + yacc.py:2565: (75) atom -> id . + yacc.py:2565: (88) func_call -> id . opar args cpar + yacc.py:2565: (89) func_call -> id . opar error cpar + yacc.py:2566: + yacc.py:2687: larrow shift and go to state 112 + yacc.py:2687: arroba reduce using rule 75 (atom -> id .) + yacc.py:2687: dot reduce using rule 75 (atom -> id .) + yacc.py:2687: star reduce using rule 75 (atom -> id .) + yacc.py:2687: div reduce using rule 75 (atom -> id .) + yacc.py:2687: plus reduce using rule 75 (atom -> id .) + yacc.py:2687: minus reduce using rule 75 (atom -> id .) + yacc.py:2687: less reduce using rule 75 (atom -> id .) + yacc.py:2687: lesseq reduce using rule 75 (atom -> id .) + yacc.py:2687: equal reduce using rule 75 (atom -> id .) + yacc.py:2687: semi reduce using rule 75 (atom -> id .) + yacc.py:2687: cpar reduce using rule 75 (atom -> id .) + yacc.py:2687: of reduce using rule 75 (atom -> id .) + yacc.py:2687: then reduce using rule 75 (atom -> id .) + yacc.py:2687: loop reduce using rule 75 (atom -> id .) + yacc.py:2687: comma reduce using rule 75 (atom -> id .) + yacc.py:2687: in reduce using rule 75 (atom -> id .) + yacc.py:2687: else reduce using rule 75 (atom -> id .) + yacc.py:2687: pool reduce using rule 75 (atom -> id .) + yacc.py:2687: ccur reduce using rule 75 (atom -> id .) + yacc.py:2687: fi reduce using rule 75 (atom -> id .) + yacc.py:2687: opar shift and go to state 113 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 73 + yacc.py:2563: + yacc.py:2565: (46) expr -> comp . + yacc.py:2565: (47) comp -> comp . less op + yacc.py:2565: (48) comp -> comp . lesseq op + yacc.py:2565: (49) comp -> comp . equal op + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for less resolved as shift + yacc.py:2666: ! shift/reduce conflict for lesseq resolved as shift + yacc.py:2666: ! shift/reduce conflict for equal resolved as shift + yacc.py:2687: semi reduce using rule 46 (expr -> comp .) + yacc.py:2687: cpar reduce using rule 46 (expr -> comp .) + yacc.py:2687: arroba reduce using rule 46 (expr -> comp .) + yacc.py:2687: dot reduce using rule 46 (expr -> comp .) + yacc.py:2687: star reduce using rule 46 (expr -> comp .) + yacc.py:2687: div reduce using rule 46 (expr -> comp .) + yacc.py:2687: plus reduce using rule 46 (expr -> comp .) + yacc.py:2687: minus reduce using rule 46 (expr -> comp .) + yacc.py:2687: of reduce using rule 46 (expr -> comp .) + yacc.py:2687: then reduce using rule 46 (expr -> comp .) + yacc.py:2687: loop reduce using rule 46 (expr -> comp .) + yacc.py:2687: comma reduce using rule 46 (expr -> comp .) + yacc.py:2687: in reduce using rule 46 (expr -> comp .) + yacc.py:2687: else reduce using rule 46 (expr -> comp .) + yacc.py:2687: pool reduce using rule 46 (expr -> comp .) + yacc.py:2687: ccur reduce using rule 46 (expr -> comp .) + yacc.py:2687: fi reduce using rule 46 (expr -> comp .) + yacc.py:2687: less shift and go to state 114 + yacc.py:2687: lesseq shift and go to state 115 + yacc.py:2687: equal shift and go to state 116 + yacc.py:2689: + yacc.py:2696: ! less [ reduce using rule 46 (expr -> comp .) ] + yacc.py:2696: ! lesseq [ reduce using rule 46 (expr -> comp .) ] + yacc.py:2696: ! equal [ reduce using rule 46 (expr -> comp .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 74 + yacc.py:2563: + yacc.py:2565: (50) comp -> op . + yacc.py:2565: (51) op -> op . plus term + yacc.py:2565: (52) op -> op . minus term + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for plus resolved as shift + yacc.py:2666: ! shift/reduce conflict for minus resolved as shift + yacc.py:2687: less reduce using rule 50 (comp -> op .) + yacc.py:2687: lesseq reduce using rule 50 (comp -> op .) + yacc.py:2687: equal reduce using rule 50 (comp -> op .) + yacc.py:2687: semi reduce using rule 50 (comp -> op .) + yacc.py:2687: cpar reduce using rule 50 (comp -> op .) + yacc.py:2687: arroba reduce using rule 50 (comp -> op .) + yacc.py:2687: dot reduce using rule 50 (comp -> op .) + yacc.py:2687: star reduce using rule 50 (comp -> op .) + yacc.py:2687: div reduce using rule 50 (comp -> op .) + yacc.py:2687: of reduce using rule 50 (comp -> op .) + yacc.py:2687: then reduce using rule 50 (comp -> op .) + yacc.py:2687: loop reduce using rule 50 (comp -> op .) + yacc.py:2687: comma reduce using rule 50 (comp -> op .) + yacc.py:2687: in reduce using rule 50 (comp -> op .) + yacc.py:2687: else reduce using rule 50 (comp -> op .) + yacc.py:2687: pool reduce using rule 50 (comp -> op .) + yacc.py:2687: ccur reduce using rule 50 (comp -> op .) + yacc.py:2687: fi reduce using rule 50 (comp -> op .) + yacc.py:2687: plus shift and go to state 117 + yacc.py:2687: minus shift and go to state 118 + yacc.py:2689: + yacc.py:2696: ! plus [ reduce using rule 50 (comp -> op .) ] + yacc.py:2696: ! minus [ reduce using rule 50 (comp -> op .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 75 + yacc.py:2563: + yacc.py:2565: (53) op -> term . + yacc.py:2565: (54) term -> term . star base_call + yacc.py:2565: (55) term -> term . div base_call + yacc.py:2565: (57) term -> term . star error + yacc.py:2565: (58) term -> term . div error + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for star resolved as shift + yacc.py:2666: ! shift/reduce conflict for div resolved as shift + yacc.py:2687: plus reduce using rule 53 (op -> term .) + yacc.py:2687: minus reduce using rule 53 (op -> term .) + yacc.py:2687: less reduce using rule 53 (op -> term .) + yacc.py:2687: lesseq reduce using rule 53 (op -> term .) + yacc.py:2687: equal reduce using rule 53 (op -> term .) + yacc.py:2687: semi reduce using rule 53 (op -> term .) + yacc.py:2687: cpar reduce using rule 53 (op -> term .) + yacc.py:2687: arroba reduce using rule 53 (op -> term .) + yacc.py:2687: dot reduce using rule 53 (op -> term .) + yacc.py:2687: of reduce using rule 53 (op -> term .) + yacc.py:2687: then reduce using rule 53 (op -> term .) + yacc.py:2687: loop reduce using rule 53 (op -> term .) + yacc.py:2687: comma reduce using rule 53 (op -> term .) + yacc.py:2687: in reduce using rule 53 (op -> term .) + yacc.py:2687: else reduce using rule 53 (op -> term .) + yacc.py:2687: pool reduce using rule 53 (op -> term .) + yacc.py:2687: ccur reduce using rule 53 (op -> term .) + yacc.py:2687: fi reduce using rule 53 (op -> term .) + yacc.py:2687: star shift and go to state 119 + yacc.py:2687: div shift and go to state 120 + yacc.py:2689: + yacc.py:2696: ! star [ reduce using rule 53 (op -> term .) ] + yacc.py:2696: ! div [ reduce using rule 53 (op -> term .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 76 + yacc.py:2563: + yacc.py:2565: (56) term -> base_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 56 (term -> base_call .) + yacc.py:2687: div reduce using rule 56 (term -> base_call .) + yacc.py:2687: plus reduce using rule 56 (term -> base_call .) + yacc.py:2687: minus reduce using rule 56 (term -> base_call .) + yacc.py:2687: less reduce using rule 56 (term -> base_call .) + yacc.py:2687: lesseq reduce using rule 56 (term -> base_call .) + yacc.py:2687: equal reduce using rule 56 (term -> base_call .) + yacc.py:2687: semi reduce using rule 56 (term -> base_call .) + yacc.py:2687: cpar reduce using rule 56 (term -> base_call .) + yacc.py:2687: arroba reduce using rule 56 (term -> base_call .) + yacc.py:2687: dot reduce using rule 56 (term -> base_call .) + yacc.py:2687: of reduce using rule 56 (term -> base_call .) + yacc.py:2687: then reduce using rule 56 (term -> base_call .) + yacc.py:2687: loop reduce using rule 56 (term -> base_call .) + yacc.py:2687: comma reduce using rule 56 (term -> base_call .) + yacc.py:2687: in reduce using rule 56 (term -> base_call .) + yacc.py:2687: else reduce using rule 56 (term -> base_call .) + yacc.py:2687: pool reduce using rule 56 (term -> base_call .) + yacc.py:2687: ccur reduce using rule 56 (term -> base_call .) + yacc.py:2687: fi reduce using rule 56 (term -> base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 77 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor . arroba type dot func_call + yacc.py:2565: (60) base_call -> factor . + yacc.py:2565: (62) base_call -> factor . arroba error dot func_call + yacc.py:2565: (65) factor -> factor . dot func_call + yacc.py:2566: + yacc.py:2609: ! shift/reduce conflict for arroba resolved as shift + yacc.py:2666: ! shift/reduce conflict for dot resolved as shift + yacc.py:2687: arroba shift and go to state 121 + yacc.py:2687: star reduce using rule 60 (base_call -> factor .) + yacc.py:2687: div reduce using rule 60 (base_call -> factor .) + yacc.py:2687: plus reduce using rule 60 (base_call -> factor .) + yacc.py:2687: minus reduce using rule 60 (base_call -> factor .) + yacc.py:2687: less reduce using rule 60 (base_call -> factor .) + yacc.py:2687: lesseq reduce using rule 60 (base_call -> factor .) + yacc.py:2687: equal reduce using rule 60 (base_call -> factor .) + yacc.py:2687: semi reduce using rule 60 (base_call -> factor .) + yacc.py:2687: cpar reduce using rule 60 (base_call -> factor .) + yacc.py:2687: of reduce using rule 60 (base_call -> factor .) + yacc.py:2687: then reduce using rule 60 (base_call -> factor .) + yacc.py:2687: loop reduce using rule 60 (base_call -> factor .) + yacc.py:2687: comma reduce using rule 60 (base_call -> factor .) + yacc.py:2687: in reduce using rule 60 (base_call -> factor .) + yacc.py:2687: else reduce using rule 60 (base_call -> factor .) + yacc.py:2687: pool reduce using rule 60 (base_call -> factor .) + yacc.py:2687: ccur reduce using rule 60 (base_call -> factor .) + yacc.py:2687: fi reduce using rule 60 (base_call -> factor .) + yacc.py:2687: dot shift and go to state 122 + yacc.py:2689: + yacc.py:2696: ! arroba [ reduce using rule 60 (base_call -> factor .) ] + yacc.py:2696: ! dot [ reduce using rule 60 (base_call -> factor .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 78 + yacc.py:2563: + yacc.py:2565: (67) factor -> func_call . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 67 (factor -> func_call .) + yacc.py:2687: dot reduce using rule 67 (factor -> func_call .) + yacc.py:2687: star reduce using rule 67 (factor -> func_call .) + yacc.py:2687: div reduce using rule 67 (factor -> func_call .) + yacc.py:2687: plus reduce using rule 67 (factor -> func_call .) + yacc.py:2687: minus reduce using rule 67 (factor -> func_call .) + yacc.py:2687: less reduce using rule 67 (factor -> func_call .) + yacc.py:2687: lesseq reduce using rule 67 (factor -> func_call .) + yacc.py:2687: equal reduce using rule 67 (factor -> func_call .) + yacc.py:2687: semi reduce using rule 67 (factor -> func_call .) + yacc.py:2687: cpar reduce using rule 67 (factor -> func_call .) + yacc.py:2687: of reduce using rule 67 (factor -> func_call .) + yacc.py:2687: then reduce using rule 67 (factor -> func_call .) + yacc.py:2687: loop reduce using rule 67 (factor -> func_call .) + yacc.py:2687: comma reduce using rule 67 (factor -> func_call .) + yacc.py:2687: in reduce using rule 67 (factor -> func_call .) + yacc.py:2687: else reduce using rule 67 (factor -> func_call .) + yacc.py:2687: pool reduce using rule 67 (factor -> func_call .) + yacc.py:2687: ccur reduce using rule 67 (factor -> func_call .) + yacc.py:2687: fi reduce using rule 67 (factor -> func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 79 + yacc.py:2563: + yacc.py:2565: (63) factor -> atom . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 63 (factor -> atom .) + yacc.py:2687: dot reduce using rule 63 (factor -> atom .) + yacc.py:2687: star reduce using rule 63 (factor -> atom .) + yacc.py:2687: div reduce using rule 63 (factor -> atom .) + yacc.py:2687: plus reduce using rule 63 (factor -> atom .) + yacc.py:2687: minus reduce using rule 63 (factor -> atom .) + yacc.py:2687: less reduce using rule 63 (factor -> atom .) + yacc.py:2687: lesseq reduce using rule 63 (factor -> atom .) + yacc.py:2687: equal reduce using rule 63 (factor -> atom .) + yacc.py:2687: semi reduce using rule 63 (factor -> atom .) + yacc.py:2687: cpar reduce using rule 63 (factor -> atom .) + yacc.py:2687: of reduce using rule 63 (factor -> atom .) + yacc.py:2687: then reduce using rule 63 (factor -> atom .) + yacc.py:2687: loop reduce using rule 63 (factor -> atom .) + yacc.py:2687: comma reduce using rule 63 (factor -> atom .) + yacc.py:2687: in reduce using rule 63 (factor -> atom .) + yacc.py:2687: else reduce using rule 63 (factor -> atom .) + yacc.py:2687: pool reduce using rule 63 (factor -> atom .) + yacc.py:2687: ccur reduce using rule 63 (factor -> atom .) + yacc.py:2687: fi reduce using rule 63 (factor -> atom .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 80 + yacc.py:2563: + yacc.py:2565: (64) factor -> opar . expr cpar + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 123 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 81 + yacc.py:2563: + yacc.py:2565: (66) factor -> not . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 124 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 82 + yacc.py:2563: + yacc.py:2565: (68) factor -> isvoid . base_call + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: base_call shift and go to state 125 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 83 + yacc.py:2563: + yacc.py:2565: (69) factor -> nox . base_call + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: base_call shift and go to state 127 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 84 + yacc.py:2563: + yacc.py:2565: (70) factor -> let . let_list in expr + yacc.py:2565: (36) let_list -> . let_assign + yacc.py:2565: (37) let_list -> . let_assign comma let_list + yacc.py:2565: (38) let_assign -> . param larrow expr + yacc.py:2565: (39) let_assign -> . param + yacc.py:2565: (35) param -> . id colon type + yacc.py:2566: + yacc.py:2687: id shift and go to state 46 + yacc.py:2689: + yacc.py:2714: let_list shift and go to state 128 + yacc.py:2714: let_assign shift and go to state 129 + yacc.py:2714: param shift and go to state 130 + yacc.py:2561: + yacc.py:2562:state 85 + yacc.py:2563: + yacc.py:2565: (71) factor -> case . expr of cases_list esac + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 131 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 86 + yacc.py:2563: + yacc.py:2565: (72) factor -> if . expr then expr else expr fi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 132 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 87 + yacc.py:2563: + yacc.py:2565: (73) factor -> while . expr loop expr pool + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 133 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 88 + yacc.py:2563: + yacc.py:2565: (74) atom -> num . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 74 (atom -> num .) + yacc.py:2687: dot reduce using rule 74 (atom -> num .) + yacc.py:2687: star reduce using rule 74 (atom -> num .) + yacc.py:2687: div reduce using rule 74 (atom -> num .) + yacc.py:2687: plus reduce using rule 74 (atom -> num .) + yacc.py:2687: minus reduce using rule 74 (atom -> num .) + yacc.py:2687: less reduce using rule 74 (atom -> num .) + yacc.py:2687: lesseq reduce using rule 74 (atom -> num .) + yacc.py:2687: equal reduce using rule 74 (atom -> num .) + yacc.py:2687: semi reduce using rule 74 (atom -> num .) + yacc.py:2687: cpar reduce using rule 74 (atom -> num .) + yacc.py:2687: of reduce using rule 74 (atom -> num .) + yacc.py:2687: then reduce using rule 74 (atom -> num .) + yacc.py:2687: loop reduce using rule 74 (atom -> num .) + yacc.py:2687: comma reduce using rule 74 (atom -> num .) + yacc.py:2687: in reduce using rule 74 (atom -> num .) + yacc.py:2687: else reduce using rule 74 (atom -> num .) + yacc.py:2687: pool reduce using rule 74 (atom -> num .) + yacc.py:2687: ccur reduce using rule 74 (atom -> num .) + yacc.py:2687: fi reduce using rule 74 (atom -> num .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 89 + yacc.py:2563: + yacc.py:2565: (76) atom -> new . type + yacc.py:2566: + yacc.py:2687: type shift and go to state 134 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 90 + yacc.py:2563: + yacc.py:2565: (77) atom -> ocur . block ccur + yacc.py:2565: (79) atom -> ocur . error ccur + yacc.py:2565: (80) atom -> ocur . block error + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 136 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: block shift and go to state 135 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 91 + yacc.py:2563: + yacc.py:2565: (81) atom -> true . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 81 (atom -> true .) + yacc.py:2687: dot reduce using rule 81 (atom -> true .) + yacc.py:2687: star reduce using rule 81 (atom -> true .) + yacc.py:2687: div reduce using rule 81 (atom -> true .) + yacc.py:2687: plus reduce using rule 81 (atom -> true .) + yacc.py:2687: minus reduce using rule 81 (atom -> true .) + yacc.py:2687: less reduce using rule 81 (atom -> true .) + yacc.py:2687: lesseq reduce using rule 81 (atom -> true .) + yacc.py:2687: equal reduce using rule 81 (atom -> true .) + yacc.py:2687: semi reduce using rule 81 (atom -> true .) + yacc.py:2687: cpar reduce using rule 81 (atom -> true .) + yacc.py:2687: of reduce using rule 81 (atom -> true .) + yacc.py:2687: then reduce using rule 81 (atom -> true .) + yacc.py:2687: loop reduce using rule 81 (atom -> true .) + yacc.py:2687: comma reduce using rule 81 (atom -> true .) + yacc.py:2687: in reduce using rule 81 (atom -> true .) + yacc.py:2687: else reduce using rule 81 (atom -> true .) + yacc.py:2687: pool reduce using rule 81 (atom -> true .) + yacc.py:2687: ccur reduce using rule 81 (atom -> true .) + yacc.py:2687: fi reduce using rule 81 (atom -> true .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 92 + yacc.py:2563: + yacc.py:2565: (82) atom -> false . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 82 (atom -> false .) + yacc.py:2687: dot reduce using rule 82 (atom -> false .) + yacc.py:2687: star reduce using rule 82 (atom -> false .) + yacc.py:2687: div reduce using rule 82 (atom -> false .) + yacc.py:2687: plus reduce using rule 82 (atom -> false .) + yacc.py:2687: minus reduce using rule 82 (atom -> false .) + yacc.py:2687: less reduce using rule 82 (atom -> false .) + yacc.py:2687: lesseq reduce using rule 82 (atom -> false .) + yacc.py:2687: equal reduce using rule 82 (atom -> false .) + yacc.py:2687: semi reduce using rule 82 (atom -> false .) + yacc.py:2687: cpar reduce using rule 82 (atom -> false .) + yacc.py:2687: of reduce using rule 82 (atom -> false .) + yacc.py:2687: then reduce using rule 82 (atom -> false .) + yacc.py:2687: loop reduce using rule 82 (atom -> false .) + yacc.py:2687: comma reduce using rule 82 (atom -> false .) + yacc.py:2687: in reduce using rule 82 (atom -> false .) + yacc.py:2687: else reduce using rule 82 (atom -> false .) + yacc.py:2687: pool reduce using rule 82 (atom -> false .) + yacc.py:2687: ccur reduce using rule 82 (atom -> false .) + yacc.py:2687: fi reduce using rule 82 (atom -> false .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 93 + yacc.py:2563: + yacc.py:2565: (83) atom -> string . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 83 (atom -> string .) + yacc.py:2687: dot reduce using rule 83 (atom -> string .) + yacc.py:2687: star reduce using rule 83 (atom -> string .) + yacc.py:2687: div reduce using rule 83 (atom -> string .) + yacc.py:2687: plus reduce using rule 83 (atom -> string .) + yacc.py:2687: minus reduce using rule 83 (atom -> string .) + yacc.py:2687: less reduce using rule 83 (atom -> string .) + yacc.py:2687: lesseq reduce using rule 83 (atom -> string .) + yacc.py:2687: equal reduce using rule 83 (atom -> string .) + yacc.py:2687: semi reduce using rule 83 (atom -> string .) + yacc.py:2687: cpar reduce using rule 83 (atom -> string .) + yacc.py:2687: of reduce using rule 83 (atom -> string .) + yacc.py:2687: then reduce using rule 83 (atom -> string .) + yacc.py:2687: loop reduce using rule 83 (atom -> string .) + yacc.py:2687: comma reduce using rule 83 (atom -> string .) + yacc.py:2687: in reduce using rule 83 (atom -> string .) + yacc.py:2687: else reduce using rule 83 (atom -> string .) + yacc.py:2687: pool reduce using rule 83 (atom -> string .) + yacc.py:2687: ccur reduce using rule 83 (atom -> string .) + yacc.py:2687: fi reduce using rule 83 (atom -> string .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 94 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon . type ocur expr ccur + yacc.py:2566: + yacc.py:2687: type shift and go to state 137 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 95 + yacc.py:2563: + yacc.py:2565: (33) param_list -> param comma param_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 33 (param_list -> param comma param_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 96 + yacc.py:2563: + yacc.py:2565: (35) param -> id colon type . + yacc.py:2566: + yacc.py:2687: comma reduce using rule 35 (param -> id colon type .) + yacc.py:2687: cpar reduce using rule 35 (param -> id colon type .) + yacc.py:2687: larrow reduce using rule 35 (param -> id colon type .) + yacc.py:2687: in reduce using rule 35 (param -> id colon type .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 97 + yacc.py:2563: + yacc.py:2565: (19) def_attr -> id colon type larrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 19 (def_attr -> id colon type larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 98 + yacc.py:2563: + yacc.py:2565: (24) def_attr -> id colon type larrow error . + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: semi reduce using rule 24 (def_attr -> id colon type larrow error .) + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 99 + yacc.py:2563: + yacc.py:2565: (23) def_attr -> id colon error larrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 23 (def_attr -> id colon error larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 100 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon . type ocur expr ccur + yacc.py:2565: (28) def_func -> id opar formals cpar colon . error ocur expr ccur + yacc.py:2565: (29) def_func -> id opar formals cpar colon . type ocur error ccur + yacc.py:2566: + yacc.py:2687: type shift and go to state 138 + yacc.py:2687: error shift and go to state 139 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 101 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon . type ocur expr ccur + yacc.py:2566: + yacc.py:2687: type shift and go to state 140 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 102 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 103 + yacc.py:2563: + yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list ccur error . + yacc.py:2566: + yacc.py:2687: error reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) + yacc.py:2687: class reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) + yacc.py:2687: $end reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 104 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 105 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 106 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 107 + yacc.py:2563: + yacc.py:2565: (86) block -> error . block + yacc.py:2565: (87) block -> error . semi + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: semi shift and go to state 142 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: block shift and go to state 141 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 108 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error arroba . type dot func_call + yacc.py:2566: + yacc.py:2687: type shift and go to state 143 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 109 + yacc.py:2563: + yacc.py:2565: (78) atom -> error block . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 144 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 110 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error opar . args cpar + yacc.py:2565: (64) factor -> opar . expr cpar + yacc.py:2565: (91) args -> . arg_list + yacc.py:2565: (92) args -> . arg_list_empty + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (96) arg_list_empty -> . epsilon + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 145 + yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: args shift and go to state 146 + yacc.py:2714: expr shift and go to state 147 + yacc.py:2714: arg_list shift and go to state 148 + yacc.py:2714: arg_list_empty shift and go to state 149 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: epsilon shift and go to state 150 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 111 + yacc.py:2563: + yacc.py:2565: (84) block -> expr . semi + yacc.py:2565: (85) block -> expr . semi block + yacc.py:2566: + yacc.py:2687: semi shift and go to state 151 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 112 + yacc.py:2563: + yacc.py:2565: (45) expr -> id larrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 152 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 113 + yacc.py:2563: + yacc.py:2565: (88) func_call -> id opar . args cpar + yacc.py:2565: (89) func_call -> id opar . error cpar + yacc.py:2565: (91) args -> . arg_list + yacc.py:2565: (92) args -> . arg_list_empty + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (96) arg_list_empty -> . epsilon + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 154 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: args shift and go to state 153 + yacc.py:2714: arg_list shift and go to state 148 + yacc.py:2714: arg_list_empty shift and go to state 149 + yacc.py:2714: expr shift and go to state 155 + yacc.py:2714: epsilon shift and go to state 150 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 114 + yacc.py:2563: + yacc.py:2565: (47) comp -> comp less . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: op shift and go to state 156 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 115 + yacc.py:2563: + yacc.py:2565: (48) comp -> comp lesseq . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: op shift and go to state 157 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 116 + yacc.py:2563: + yacc.py:2565: (49) comp -> comp equal . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: op shift and go to state 158 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 117 + yacc.py:2563: + yacc.py:2565: (51) op -> op plus . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: term shift and go to state 159 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 118 + yacc.py:2563: + yacc.py:2565: (52) op -> op minus . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: term shift and go to state 160 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 119 + yacc.py:2563: + yacc.py:2565: (54) term -> term star . base_call + yacc.py:2565: (57) term -> term star . error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 162 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: base_call shift and go to state 161 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 120 + yacc.py:2563: + yacc.py:2565: (55) term -> term div . base_call + yacc.py:2565: (58) term -> term div . error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 164 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: base_call shift and go to state 163 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 121 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor arroba . type dot func_call + yacc.py:2565: (62) base_call -> factor arroba . error dot func_call + yacc.py:2566: + yacc.py:2687: type shift and go to state 165 + yacc.py:2687: error shift and go to state 166 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 122 + yacc.py:2563: + yacc.py:2565: (65) factor -> factor dot . func_call + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 168 + yacc.py:2687: error shift and go to state 169 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 167 + yacc.py:2561: + yacc.py:2562:state 123 + yacc.py:2563: + yacc.py:2565: (64) factor -> opar expr . cpar + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 170 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 124 + yacc.py:2563: + yacc.py:2565: (66) factor -> not expr . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 66 (factor -> not expr .) + yacc.py:2687: dot reduce using rule 66 (factor -> not expr .) + yacc.py:2687: star reduce using rule 66 (factor -> not expr .) + yacc.py:2687: div reduce using rule 66 (factor -> not expr .) + yacc.py:2687: plus reduce using rule 66 (factor -> not expr .) + yacc.py:2687: minus reduce using rule 66 (factor -> not expr .) + yacc.py:2687: less reduce using rule 66 (factor -> not expr .) + yacc.py:2687: lesseq reduce using rule 66 (factor -> not expr .) + yacc.py:2687: equal reduce using rule 66 (factor -> not expr .) + yacc.py:2687: semi reduce using rule 66 (factor -> not expr .) + yacc.py:2687: cpar reduce using rule 66 (factor -> not expr .) + yacc.py:2687: of reduce using rule 66 (factor -> not expr .) + yacc.py:2687: then reduce using rule 66 (factor -> not expr .) + yacc.py:2687: loop reduce using rule 66 (factor -> not expr .) + yacc.py:2687: comma reduce using rule 66 (factor -> not expr .) + yacc.py:2687: in reduce using rule 66 (factor -> not expr .) + yacc.py:2687: else reduce using rule 66 (factor -> not expr .) + yacc.py:2687: pool reduce using rule 66 (factor -> not expr .) + yacc.py:2687: ccur reduce using rule 66 (factor -> not expr .) + yacc.py:2687: fi reduce using rule 66 (factor -> not expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 125 + yacc.py:2563: + yacc.py:2565: (68) factor -> isvoid base_call . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: dot reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: star reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: div reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: plus reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: minus reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: less reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: lesseq reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: equal reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: semi reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: cpar reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: of reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: then reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: loop reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: comma reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: in reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: else reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: pool reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: ccur reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: fi reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 126 + yacc.py:2563: + yacc.py:2565: (75) atom -> id . + yacc.py:2565: (88) func_call -> id . opar args cpar + yacc.py:2565: (89) func_call -> id . opar error cpar + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 75 (atom -> id .) + yacc.py:2687: dot reduce using rule 75 (atom -> id .) + yacc.py:2687: star reduce using rule 75 (atom -> id .) + yacc.py:2687: div reduce using rule 75 (atom -> id .) + yacc.py:2687: plus reduce using rule 75 (atom -> id .) + yacc.py:2687: minus reduce using rule 75 (atom -> id .) + yacc.py:2687: less reduce using rule 75 (atom -> id .) + yacc.py:2687: lesseq reduce using rule 75 (atom -> id .) + yacc.py:2687: equal reduce using rule 75 (atom -> id .) + yacc.py:2687: semi reduce using rule 75 (atom -> id .) + yacc.py:2687: cpar reduce using rule 75 (atom -> id .) + yacc.py:2687: of reduce using rule 75 (atom -> id .) + yacc.py:2687: then reduce using rule 75 (atom -> id .) + yacc.py:2687: loop reduce using rule 75 (atom -> id .) + yacc.py:2687: comma reduce using rule 75 (atom -> id .) + yacc.py:2687: in reduce using rule 75 (atom -> id .) + yacc.py:2687: else reduce using rule 75 (atom -> id .) + yacc.py:2687: pool reduce using rule 75 (atom -> id .) + yacc.py:2687: ccur reduce using rule 75 (atom -> id .) + yacc.py:2687: fi reduce using rule 75 (atom -> id .) + yacc.py:2687: opar shift and go to state 113 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 127 + yacc.py:2563: + yacc.py:2565: (69) factor -> nox base_call . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: dot reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: star reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: div reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: plus reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: minus reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: less reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: lesseq reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: equal reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: semi reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: cpar reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: of reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: then reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: loop reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: comma reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: in reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: else reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: pool reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: ccur reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: fi reduce using rule 69 (factor -> nox base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 128 + yacc.py:2563: + yacc.py:2565: (70) factor -> let let_list . in expr + yacc.py:2566: + yacc.py:2687: in shift and go to state 171 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 129 + yacc.py:2563: + yacc.py:2565: (36) let_list -> let_assign . + yacc.py:2565: (37) let_list -> let_assign . comma let_list + yacc.py:2566: + yacc.py:2687: in reduce using rule 36 (let_list -> let_assign .) + yacc.py:2687: comma shift and go to state 172 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 130 + yacc.py:2563: + yacc.py:2565: (38) let_assign -> param . larrow expr + yacc.py:2565: (39) let_assign -> param . + yacc.py:2566: + yacc.py:2687: larrow shift and go to state 173 + yacc.py:2687: comma reduce using rule 39 (let_assign -> param .) + yacc.py:2687: in reduce using rule 39 (let_assign -> param .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 131 + yacc.py:2563: + yacc.py:2565: (71) factor -> case expr . of cases_list esac + yacc.py:2566: + yacc.py:2687: of shift and go to state 174 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 132 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr . then expr else expr fi + yacc.py:2566: + yacc.py:2687: then shift and go to state 175 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 133 + yacc.py:2563: + yacc.py:2565: (73) factor -> while expr . loop expr pool + yacc.py:2566: + yacc.py:2687: loop shift and go to state 176 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 134 + yacc.py:2563: + yacc.py:2565: (76) atom -> new type . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 76 (atom -> new type .) + yacc.py:2687: dot reduce using rule 76 (atom -> new type .) + yacc.py:2687: star reduce using rule 76 (atom -> new type .) + yacc.py:2687: div reduce using rule 76 (atom -> new type .) + yacc.py:2687: plus reduce using rule 76 (atom -> new type .) + yacc.py:2687: minus reduce using rule 76 (atom -> new type .) + yacc.py:2687: less reduce using rule 76 (atom -> new type .) + yacc.py:2687: lesseq reduce using rule 76 (atom -> new type .) + yacc.py:2687: equal reduce using rule 76 (atom -> new type .) + yacc.py:2687: semi reduce using rule 76 (atom -> new type .) + yacc.py:2687: cpar reduce using rule 76 (atom -> new type .) + yacc.py:2687: of reduce using rule 76 (atom -> new type .) + yacc.py:2687: then reduce using rule 76 (atom -> new type .) + yacc.py:2687: loop reduce using rule 76 (atom -> new type .) + yacc.py:2687: comma reduce using rule 76 (atom -> new type .) + yacc.py:2687: in reduce using rule 76 (atom -> new type .) + yacc.py:2687: else reduce using rule 76 (atom -> new type .) + yacc.py:2687: pool reduce using rule 76 (atom -> new type .) + yacc.py:2687: ccur reduce using rule 76 (atom -> new type .) + yacc.py:2687: fi reduce using rule 76 (atom -> new type .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 135 + yacc.py:2563: + yacc.py:2565: (77) atom -> ocur block . ccur + yacc.py:2565: (80) atom -> ocur block . error + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 177 + yacc.py:2687: error shift and go to state 178 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 136 + yacc.py:2563: + yacc.py:2565: (79) atom -> ocur error . ccur + yacc.py:2565: (86) block -> error . block + yacc.py:2565: (87) block -> error . semi + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 179 + yacc.py:2687: semi shift and go to state 142 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: block shift and go to state 141 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 137 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon type . ocur expr ccur + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 180 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 138 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon type . ocur expr ccur + yacc.py:2565: (29) def_func -> id opar formals cpar colon type . ocur error ccur + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 181 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 139 + yacc.py:2563: + yacc.py:2565: (28) def_func -> id opar formals cpar colon error . ocur expr ccur + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 182 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 140 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon type . ocur expr ccur + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 183 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 141 + yacc.py:2563: + yacc.py:2565: (86) block -> error block . + yacc.py:2565: (78) atom -> error block . ccur + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for ccur resolved as shift + yacc.py:2687: error reduce using rule 86 (block -> error block .) + yacc.py:2687: ccur shift and go to state 144 + yacc.py:2689: + yacc.py:2696: ! ccur [ reduce using rule 86 (block -> error block .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 142 + yacc.py:2563: + yacc.py:2565: (87) block -> error semi . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 87 (block -> error semi .) + yacc.py:2687: error reduce using rule 87 (block -> error semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 143 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error arroba type . dot func_call + yacc.py:2566: + yacc.py:2687: dot shift and go to state 184 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 144 + yacc.py:2563: + yacc.py:2565: (78) atom -> error block ccur . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: dot reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: star reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: div reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: plus reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: minus reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: less reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: lesseq reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: equal reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: semi reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: cpar reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: of reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: then reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: loop reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: comma reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: in reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: else reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: pool reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: ccur reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: fi reduce using rule 78 (atom -> error block ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 145 + yacc.py:2563: + yacc.py:2565: (95) arg_list -> error . arg_list + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 185 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: arg_list shift and go to state 186 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 187 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 146 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error opar args . cpar + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 188 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 147 + yacc.py:2563: + yacc.py:2565: (64) factor -> opar expr . cpar + yacc.py:2565: (93) arg_list -> expr . + yacc.py:2565: (94) arg_list -> expr . comma arg_list + yacc.py:2566: + yacc.py:2609: ! shift/reduce conflict for cpar resolved as shift + yacc.py:2687: cpar shift and go to state 170 + yacc.py:2687: comma shift and go to state 189 + yacc.py:2689: + yacc.py:2696: ! cpar [ reduce using rule 93 (arg_list -> expr .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 148 + yacc.py:2563: + yacc.py:2565: (91) args -> arg_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 91 (args -> arg_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 149 + yacc.py:2563: + yacc.py:2565: (92) args -> arg_list_empty . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 92 (args -> arg_list_empty .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 150 + yacc.py:2563: + yacc.py:2565: (96) arg_list_empty -> epsilon . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 96 (arg_list_empty -> epsilon .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 151 + yacc.py:2563: + yacc.py:2565: (84) block -> expr semi . + yacc.py:2565: (85) block -> expr semi . block + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for error resolved as shift + yacc.py:2687: ccur reduce using rule 84 (block -> expr semi .) + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2696: ! error [ reduce using rule 84 (block -> expr semi .) ] + yacc.py:2700: + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: block shift and go to state 190 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 152 + yacc.py:2563: + yacc.py:2565: (45) expr -> id larrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: cpar reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: arroba reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: dot reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: star reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: div reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: plus reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: minus reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: less reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: lesseq reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: equal reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: of reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: then reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: loop reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: comma reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: in reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: else reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: pool reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: ccur reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: fi reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 153 + yacc.py:2563: + yacc.py:2565: (88) func_call -> id opar args . cpar + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 191 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 154 + yacc.py:2563: + yacc.py:2565: (89) func_call -> id opar error . cpar + yacc.py:2565: (95) arg_list -> error . arg_list + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 192 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 185 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: arg_list shift and go to state 186 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 187 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 155 + yacc.py:2563: + yacc.py:2565: (93) arg_list -> expr . + yacc.py:2565: (94) arg_list -> expr . comma arg_list + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 93 (arg_list -> expr .) + yacc.py:2687: comma shift and go to state 189 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 156 + yacc.py:2563: + yacc.py:2565: (47) comp -> comp less op . + yacc.py:2565: (51) op -> op . plus term + yacc.py:2565: (52) op -> op . minus term + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for plus resolved as shift + yacc.py:2666: ! shift/reduce conflict for minus resolved as shift + yacc.py:2687: less reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: lesseq reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: equal reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: semi reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: cpar reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: arroba reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: dot reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: star reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: div reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: of reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: then reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: loop reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: comma reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: in reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: else reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: pool reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: ccur reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: fi reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: plus shift and go to state 117 + yacc.py:2687: minus shift and go to state 118 + yacc.py:2689: + yacc.py:2696: ! plus [ reduce using rule 47 (comp -> comp less op .) ] + yacc.py:2696: ! minus [ reduce using rule 47 (comp -> comp less op .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 157 + yacc.py:2563: + yacc.py:2565: (48) comp -> comp lesseq op . + yacc.py:2565: (51) op -> op . plus term + yacc.py:2565: (52) op -> op . minus term + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for plus resolved as shift + yacc.py:2666: ! shift/reduce conflict for minus resolved as shift + yacc.py:2687: less reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: lesseq reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: equal reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: semi reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: cpar reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: arroba reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: dot reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: star reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: div reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: of reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: then reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: loop reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: comma reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: in reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: else reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: pool reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: ccur reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: fi reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: plus shift and go to state 117 + yacc.py:2687: minus shift and go to state 118 + yacc.py:2689: + yacc.py:2696: ! plus [ reduce using rule 48 (comp -> comp lesseq op .) ] + yacc.py:2696: ! minus [ reduce using rule 48 (comp -> comp lesseq op .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 158 + yacc.py:2563: + yacc.py:2565: (49) comp -> comp equal op . + yacc.py:2565: (51) op -> op . plus term + yacc.py:2565: (52) op -> op . minus term + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for plus resolved as shift + yacc.py:2666: ! shift/reduce conflict for minus resolved as shift + yacc.py:2687: less reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: lesseq reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: equal reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: semi reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: cpar reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: arroba reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: dot reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: star reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: div reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: of reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: then reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: loop reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: comma reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: in reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: else reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: pool reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: ccur reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: fi reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: plus shift and go to state 117 + yacc.py:2687: minus shift and go to state 118 + yacc.py:2689: + yacc.py:2696: ! plus [ reduce using rule 49 (comp -> comp equal op .) ] + yacc.py:2696: ! minus [ reduce using rule 49 (comp -> comp equal op .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 159 + yacc.py:2563: + yacc.py:2565: (51) op -> op plus term . + yacc.py:2565: (54) term -> term . star base_call + yacc.py:2565: (55) term -> term . div base_call + yacc.py:2565: (57) term -> term . star error + yacc.py:2565: (58) term -> term . div error + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for star resolved as shift + yacc.py:2666: ! shift/reduce conflict for div resolved as shift + yacc.py:2687: plus reduce using rule 51 (op -> op plus term .) + yacc.py:2687: minus reduce using rule 51 (op -> op plus term .) + yacc.py:2687: less reduce using rule 51 (op -> op plus term .) + yacc.py:2687: lesseq reduce using rule 51 (op -> op plus term .) + yacc.py:2687: equal reduce using rule 51 (op -> op plus term .) + yacc.py:2687: semi reduce using rule 51 (op -> op plus term .) + yacc.py:2687: cpar reduce using rule 51 (op -> op plus term .) + yacc.py:2687: arroba reduce using rule 51 (op -> op plus term .) + yacc.py:2687: dot reduce using rule 51 (op -> op plus term .) + yacc.py:2687: of reduce using rule 51 (op -> op plus term .) + yacc.py:2687: then reduce using rule 51 (op -> op plus term .) + yacc.py:2687: loop reduce using rule 51 (op -> op plus term .) + yacc.py:2687: comma reduce using rule 51 (op -> op plus term .) + yacc.py:2687: in reduce using rule 51 (op -> op plus term .) + yacc.py:2687: else reduce using rule 51 (op -> op plus term .) + yacc.py:2687: pool reduce using rule 51 (op -> op plus term .) + yacc.py:2687: ccur reduce using rule 51 (op -> op plus term .) + yacc.py:2687: fi reduce using rule 51 (op -> op plus term .) + yacc.py:2687: star shift and go to state 119 + yacc.py:2687: div shift and go to state 120 + yacc.py:2689: + yacc.py:2696: ! star [ reduce using rule 51 (op -> op plus term .) ] + yacc.py:2696: ! div [ reduce using rule 51 (op -> op plus term .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 160 + yacc.py:2563: + yacc.py:2565: (52) op -> op minus term . + yacc.py:2565: (54) term -> term . star base_call + yacc.py:2565: (55) term -> term . div base_call + yacc.py:2565: (57) term -> term . star error + yacc.py:2565: (58) term -> term . div error + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for star resolved as shift + yacc.py:2666: ! shift/reduce conflict for div resolved as shift + yacc.py:2687: plus reduce using rule 52 (op -> op minus term .) + yacc.py:2687: minus reduce using rule 52 (op -> op minus term .) + yacc.py:2687: less reduce using rule 52 (op -> op minus term .) + yacc.py:2687: lesseq reduce using rule 52 (op -> op minus term .) + yacc.py:2687: equal reduce using rule 52 (op -> op minus term .) + yacc.py:2687: semi reduce using rule 52 (op -> op minus term .) + yacc.py:2687: cpar reduce using rule 52 (op -> op minus term .) + yacc.py:2687: arroba reduce using rule 52 (op -> op minus term .) + yacc.py:2687: dot reduce using rule 52 (op -> op minus term .) + yacc.py:2687: of reduce using rule 52 (op -> op minus term .) + yacc.py:2687: then reduce using rule 52 (op -> op minus term .) + yacc.py:2687: loop reduce using rule 52 (op -> op minus term .) + yacc.py:2687: comma reduce using rule 52 (op -> op minus term .) + yacc.py:2687: in reduce using rule 52 (op -> op minus term .) + yacc.py:2687: else reduce using rule 52 (op -> op minus term .) + yacc.py:2687: pool reduce using rule 52 (op -> op minus term .) + yacc.py:2687: ccur reduce using rule 52 (op -> op minus term .) + yacc.py:2687: fi reduce using rule 52 (op -> op minus term .) + yacc.py:2687: star shift and go to state 119 + yacc.py:2687: div shift and go to state 120 + yacc.py:2689: + yacc.py:2696: ! star [ reduce using rule 52 (op -> op minus term .) ] + yacc.py:2696: ! div [ reduce using rule 52 (op -> op minus term .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 161 + yacc.py:2563: + yacc.py:2565: (54) term -> term star base_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: div reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: plus reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: minus reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: less reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: lesseq reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: equal reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: semi reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: cpar reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: arroba reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: dot reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: of reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: then reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: loop reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: comma reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: in reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: else reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: pool reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: ccur reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: fi reduce using rule 54 (term -> term star base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 162 + yacc.py:2563: + yacc.py:2565: (57) term -> term star error . + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for arroba resolved as shift + yacc.py:2687: star reduce using rule 57 (term -> term star error .) + yacc.py:2687: div reduce using rule 57 (term -> term star error .) + yacc.py:2687: plus reduce using rule 57 (term -> term star error .) + yacc.py:2687: minus reduce using rule 57 (term -> term star error .) + yacc.py:2687: less reduce using rule 57 (term -> term star error .) + yacc.py:2687: lesseq reduce using rule 57 (term -> term star error .) + yacc.py:2687: equal reduce using rule 57 (term -> term star error .) + yacc.py:2687: semi reduce using rule 57 (term -> term star error .) + yacc.py:2687: cpar reduce using rule 57 (term -> term star error .) + yacc.py:2687: dot reduce using rule 57 (term -> term star error .) + yacc.py:2687: of reduce using rule 57 (term -> term star error .) + yacc.py:2687: then reduce using rule 57 (term -> term star error .) + yacc.py:2687: loop reduce using rule 57 (term -> term star error .) + yacc.py:2687: comma reduce using rule 57 (term -> term star error .) + yacc.py:2687: in reduce using rule 57 (term -> term star error .) + yacc.py:2687: else reduce using rule 57 (term -> term star error .) + yacc.py:2687: pool reduce using rule 57 (term -> term star error .) + yacc.py:2687: ccur reduce using rule 57 (term -> term star error .) + yacc.py:2687: fi reduce using rule 57 (term -> term star error .) + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2696: ! arroba [ reduce using rule 57 (term -> term star error .) ] + yacc.py:2700: + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 163 + yacc.py:2563: + yacc.py:2565: (55) term -> term div base_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: div reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: plus reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: minus reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: less reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: lesseq reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: equal reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: semi reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: cpar reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: arroba reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: dot reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: of reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: then reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: loop reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: comma reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: in reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: else reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: pool reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: ccur reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: fi reduce using rule 55 (term -> term div base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 164 + yacc.py:2563: + yacc.py:2565: (58) term -> term div error . + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for arroba resolved as shift + yacc.py:2687: star reduce using rule 58 (term -> term div error .) + yacc.py:2687: div reduce using rule 58 (term -> term div error .) + yacc.py:2687: plus reduce using rule 58 (term -> term div error .) + yacc.py:2687: minus reduce using rule 58 (term -> term div error .) + yacc.py:2687: less reduce using rule 58 (term -> term div error .) + yacc.py:2687: lesseq reduce using rule 58 (term -> term div error .) + yacc.py:2687: equal reduce using rule 58 (term -> term div error .) + yacc.py:2687: semi reduce using rule 58 (term -> term div error .) + yacc.py:2687: cpar reduce using rule 58 (term -> term div error .) + yacc.py:2687: dot reduce using rule 58 (term -> term div error .) + yacc.py:2687: of reduce using rule 58 (term -> term div error .) + yacc.py:2687: then reduce using rule 58 (term -> term div error .) + yacc.py:2687: loop reduce using rule 58 (term -> term div error .) + yacc.py:2687: comma reduce using rule 58 (term -> term div error .) + yacc.py:2687: in reduce using rule 58 (term -> term div error .) + yacc.py:2687: else reduce using rule 58 (term -> term div error .) + yacc.py:2687: pool reduce using rule 58 (term -> term div error .) + yacc.py:2687: ccur reduce using rule 58 (term -> term div error .) + yacc.py:2687: fi reduce using rule 58 (term -> term div error .) + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2696: ! arroba [ reduce using rule 58 (term -> term div error .) ] + yacc.py:2700: + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 165 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor arroba type . dot func_call + yacc.py:2566: + yacc.py:2687: dot shift and go to state 193 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 166 + yacc.py:2563: + yacc.py:2565: (62) base_call -> factor arroba error . dot func_call + yacc.py:2566: + yacc.py:2687: dot shift and go to state 194 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 167 + yacc.py:2563: + yacc.py:2565: (65) factor -> factor dot func_call . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: dot reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: star reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: div reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: plus reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: minus reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: less reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: lesseq reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: equal reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: semi reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: cpar reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: of reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: then reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: loop reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: comma reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: in reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: else reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: pool reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: ccur reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: fi reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 168 + yacc.py:2563: + yacc.py:2565: (88) func_call -> id . opar args cpar + yacc.py:2565: (89) func_call -> id . opar error cpar + yacc.py:2566: + yacc.py:2687: opar shift and go to state 113 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 169 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2566: + yacc.py:2687: opar shift and go to state 195 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 170 + yacc.py:2563: + yacc.py:2565: (64) factor -> opar expr cpar . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: dot reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: star reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: div reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: plus reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: minus reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: less reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: lesseq reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: equal reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: semi reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: cpar reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: of reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: then reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: loop reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: comma reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: in reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: else reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: pool reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: ccur reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: fi reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 171 + yacc.py:2563: + yacc.py:2565: (70) factor -> let let_list in . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 196 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 172 + yacc.py:2563: + yacc.py:2565: (37) let_list -> let_assign comma . let_list + yacc.py:2565: (36) let_list -> . let_assign + yacc.py:2565: (37) let_list -> . let_assign comma let_list + yacc.py:2565: (38) let_assign -> . param larrow expr + yacc.py:2565: (39) let_assign -> . param + yacc.py:2565: (35) param -> . id colon type + yacc.py:2566: + yacc.py:2687: id shift and go to state 46 + yacc.py:2689: + yacc.py:2714: let_assign shift and go to state 129 + yacc.py:2714: let_list shift and go to state 197 + yacc.py:2714: param shift and go to state 130 + yacc.py:2561: + yacc.py:2562:state 173 + yacc.py:2563: + yacc.py:2565: (38) let_assign -> param larrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 198 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 174 + yacc.py:2563: + yacc.py:2565: (71) factor -> case expr of . cases_list esac + yacc.py:2565: (40) cases_list -> . casep semi + yacc.py:2565: (41) cases_list -> . casep semi cases_list + yacc.py:2565: (42) cases_list -> . error cases_list + yacc.py:2565: (43) cases_list -> . error semi + yacc.py:2565: (44) casep -> . id colon type rarrow expr + yacc.py:2566: + yacc.py:2687: error shift and go to state 201 + yacc.py:2687: id shift and go to state 202 + yacc.py:2689: + yacc.py:2714: cases_list shift and go to state 199 + yacc.py:2714: casep shift and go to state 200 + yacc.py:2561: + yacc.py:2562:state 175 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then . expr else expr fi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 203 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 176 + yacc.py:2563: + yacc.py:2565: (73) factor -> while expr loop . expr pool + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 204 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 177 + yacc.py:2563: + yacc.py:2565: (77) atom -> ocur block ccur . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: dot reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: star reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: div reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: plus reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: minus reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: less reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: lesseq reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: equal reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: semi reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: cpar reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: of reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: then reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: loop reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: comma reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: in reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: else reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: pool reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: ccur reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: fi reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 178 + yacc.py:2563: + yacc.py:2565: (80) atom -> ocur block error . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: dot reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: star reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: div reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: plus reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: minus reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: less reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: lesseq reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: equal reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: semi reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: cpar reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: of reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: then reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: loop reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: comma reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: in reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: else reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: pool reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: ccur reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: fi reduce using rule 80 (atom -> ocur block error .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 179 + yacc.py:2563: + yacc.py:2565: (79) atom -> ocur error ccur . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: dot reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: star reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: div reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: plus reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: minus reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: less reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: lesseq reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: equal reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: semi reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: cpar reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: of reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: then reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: loop reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: comma reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: in reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: else reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: pool reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: ccur reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: fi reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 180 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur . expr ccur + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 205 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 181 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur . expr ccur + yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur . error ccur + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 207 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 206 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 182 + yacc.py:2563: + yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur . expr ccur + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 208 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 183 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur . expr ccur + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 209 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 184 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error arroba type dot . func_call + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 168 + yacc.py:2687: error shift and go to state 169 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 210 + yacc.py:2561: + yacc.py:2562:state 185 + yacc.py:2563: + yacc.py:2565: (95) arg_list -> error . arg_list + yacc.py:2565: (86) block -> error . block + yacc.py:2565: (87) block -> error . semi + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: semi shift and go to state 142 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 185 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: arg_list shift and go to state 186 + yacc.py:2714: block shift and go to state 141 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: expr shift and go to state 187 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 186 + yacc.py:2563: + yacc.py:2565: (95) arg_list -> error arg_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 95 (arg_list -> error arg_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 187 + yacc.py:2563: + yacc.py:2565: (93) arg_list -> expr . + yacc.py:2565: (94) arg_list -> expr . comma arg_list + yacc.py:2565: (84) block -> expr . semi + yacc.py:2565: (85) block -> expr . semi block + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 93 (arg_list -> expr .) + yacc.py:2687: comma shift and go to state 189 + yacc.py:2687: semi shift and go to state 151 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 188 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error opar args cpar . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: dot reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: star reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: div reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: plus reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: minus reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: less reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: lesseq reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: equal reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: semi reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: cpar reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: of reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: then reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: loop reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: comma reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: in reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: else reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: pool reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: ccur reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: fi reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 189 + yacc.py:2563: + yacc.py:2565: (94) arg_list -> expr comma . arg_list + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 145 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 155 + yacc.py:2714: arg_list shift and go to state 211 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 190 + yacc.py:2563: + yacc.py:2565: (85) block -> expr semi block . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 85 (block -> expr semi block .) + yacc.py:2687: error reduce using rule 85 (block -> expr semi block .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 191 + yacc.py:2563: + yacc.py:2565: (88) func_call -> id opar args cpar . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: dot reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: star reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: div reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: plus reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: minus reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: less reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: lesseq reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: equal reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: semi reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: cpar reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: of reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: then reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: loop reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: comma reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: in reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: else reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: pool reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: ccur reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: fi reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 192 + yacc.py:2563: + yacc.py:2565: (89) func_call -> id opar error cpar . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: dot reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: star reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: div reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: plus reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: minus reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: less reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: lesseq reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: equal reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: semi reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: cpar reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: of reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: then reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: loop reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: comma reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: in reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: else reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: pool reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: ccur reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: fi reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 193 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor arroba type dot . func_call + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 168 + yacc.py:2687: error shift and go to state 169 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 212 + yacc.py:2561: + yacc.py:2562:state 194 + yacc.py:2563: + yacc.py:2565: (62) base_call -> factor arroba error dot . func_call + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 168 + yacc.py:2687: error shift and go to state 169 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 213 + yacc.py:2561: + yacc.py:2562:state 195 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error opar . args cpar + yacc.py:2565: (91) args -> . arg_list + yacc.py:2565: (92) args -> . arg_list_empty + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (96) arg_list_empty -> . epsilon + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 145 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: args shift and go to state 146 + yacc.py:2714: arg_list shift and go to state 148 + yacc.py:2714: arg_list_empty shift and go to state 149 + yacc.py:2714: expr shift and go to state 155 + yacc.py:2714: epsilon shift and go to state 150 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 196 + yacc.py:2563: + yacc.py:2565: (70) factor -> let let_list in expr . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: dot reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: star reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: div reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: plus reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: minus reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: less reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: lesseq reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: equal reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: semi reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: cpar reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: of reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: then reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: loop reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: comma reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: in reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: else reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: pool reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: ccur reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: fi reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 197 + yacc.py:2563: + yacc.py:2565: (37) let_list -> let_assign comma let_list . + yacc.py:2566: + yacc.py:2687: in reduce using rule 37 (let_list -> let_assign comma let_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 198 + yacc.py:2563: + yacc.py:2565: (38) let_assign -> param larrow expr . + yacc.py:2566: + yacc.py:2687: comma reduce using rule 38 (let_assign -> param larrow expr .) + yacc.py:2687: in reduce using rule 38 (let_assign -> param larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 199 + yacc.py:2563: + yacc.py:2565: (71) factor -> case expr of cases_list . esac + yacc.py:2566: + yacc.py:2687: esac shift and go to state 214 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 200 + yacc.py:2563: + yacc.py:2565: (40) cases_list -> casep . semi + yacc.py:2565: (41) cases_list -> casep . semi cases_list + yacc.py:2566: + yacc.py:2687: semi shift and go to state 215 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 201 + yacc.py:2563: + yacc.py:2565: (42) cases_list -> error . cases_list + yacc.py:2565: (43) cases_list -> error . semi + yacc.py:2565: (40) cases_list -> . casep semi + yacc.py:2565: (41) cases_list -> . casep semi cases_list + yacc.py:2565: (42) cases_list -> . error cases_list + yacc.py:2565: (43) cases_list -> . error semi + yacc.py:2565: (44) casep -> . id colon type rarrow expr + yacc.py:2566: + yacc.py:2687: semi shift and go to state 217 + yacc.py:2687: error shift and go to state 201 + yacc.py:2687: id shift and go to state 202 + yacc.py:2689: + yacc.py:2714: cases_list shift and go to state 216 + yacc.py:2714: casep shift and go to state 200 + yacc.py:2561: + yacc.py:2562:state 202 + yacc.py:2563: + yacc.py:2565: (44) casep -> id . colon type rarrow expr + yacc.py:2566: + yacc.py:2687: colon shift and go to state 218 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 203 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then expr . else expr fi + yacc.py:2566: + yacc.py:2687: else shift and go to state 219 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 204 + yacc.py:2563: + yacc.py:2565: (73) factor -> while expr loop expr . pool + yacc.py:2566: + yacc.py:2687: pool shift and go to state 220 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 205 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur expr . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 221 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 206 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur expr . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 222 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 207 + yacc.py:2563: + yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur error . ccur + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 223 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 208 + yacc.py:2563: + yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur expr . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 224 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 209 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur expr . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 225 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 210 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error arroba type dot func_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: div reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: plus reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: minus reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: less reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: lesseq reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: equal reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: semi reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: cpar reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: arroba reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: dot reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: of reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: then reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: loop reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: comma reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: in reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: else reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: pool reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: ccur reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: fi reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 211 + yacc.py:2563: + yacc.py:2565: (94) arg_list -> expr comma arg_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 94 (arg_list -> expr comma arg_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 212 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor arroba type dot func_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: div reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: plus reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: minus reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: less reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: lesseq reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: equal reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: semi reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: cpar reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: arroba reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: dot reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: of reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: then reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: loop reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: comma reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: in reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: else reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: pool reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: ccur reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: fi reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 213 + yacc.py:2563: + yacc.py:2565: (62) base_call -> factor arroba error dot func_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: div reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: plus reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: minus reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: less reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: lesseq reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: equal reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: semi reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: cpar reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: arroba reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: dot reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: of reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: then reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: loop reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: comma reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: in reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: else reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: pool reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: ccur reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: fi reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 214 + yacc.py:2563: + yacc.py:2565: (71) factor -> case expr of cases_list esac . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: dot reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: star reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: div reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: plus reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: minus reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: less reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: lesseq reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: equal reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: semi reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: cpar reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: of reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: then reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: loop reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: comma reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: in reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: else reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: pool reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: ccur reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: fi reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 215 + yacc.py:2563: + yacc.py:2565: (40) cases_list -> casep semi . + yacc.py:2565: (41) cases_list -> casep semi . cases_list + yacc.py:2565: (40) cases_list -> . casep semi + yacc.py:2565: (41) cases_list -> . casep semi cases_list + yacc.py:2565: (42) cases_list -> . error cases_list + yacc.py:2565: (43) cases_list -> . error semi + yacc.py:2565: (44) casep -> . id colon type rarrow expr + yacc.py:2566: + yacc.py:2687: esac reduce using rule 40 (cases_list -> casep semi .) + yacc.py:2687: error shift and go to state 201 + yacc.py:2687: id shift and go to state 202 + yacc.py:2689: + yacc.py:2714: casep shift and go to state 200 + yacc.py:2714: cases_list shift and go to state 226 + yacc.py:2561: + yacc.py:2562:state 216 + yacc.py:2563: + yacc.py:2565: (42) cases_list -> error cases_list . + yacc.py:2566: + yacc.py:2687: esac reduce using rule 42 (cases_list -> error cases_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 217 + yacc.py:2563: + yacc.py:2565: (43) cases_list -> error semi . + yacc.py:2566: + yacc.py:2687: esac reduce using rule 43 (cases_list -> error semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 218 + yacc.py:2563: + yacc.py:2565: (44) casep -> id colon . type rarrow expr + yacc.py:2566: + yacc.py:2687: type shift and go to state 227 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 219 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then expr else . expr fi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 228 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 220 + yacc.py:2563: + yacc.py:2565: (73) factor -> while expr loop expr pool . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: dot reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: star reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: div reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: plus reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: minus reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: less reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: lesseq reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: equal reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: semi reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: cpar reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: of reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: then reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: loop reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: comma reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: in reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: else reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: pool reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: ccur reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: fi reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 221 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur expr ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 26 (def_func -> error opar formals cpar colon type ocur expr ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 222 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur expr ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 25 (def_func -> id opar formals cpar colon type ocur expr ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 223 + yacc.py:2563: + yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur error ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 29 (def_func -> id opar formals cpar colon type ocur error ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 224 + yacc.py:2563: + yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur expr ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 28 (def_func -> id opar formals cpar colon error ocur expr ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 225 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur expr ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 27 (def_func -> id opar error cpar colon type ocur expr ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 226 + yacc.py:2563: + yacc.py:2565: (41) cases_list -> casep semi cases_list . + yacc.py:2566: + yacc.py:2687: esac reduce using rule 41 (cases_list -> casep semi cases_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 227 + yacc.py:2563: + yacc.py:2565: (44) casep -> id colon type . rarrow expr + yacc.py:2566: + yacc.py:2687: rarrow shift and go to state 229 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 228 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then expr else expr . fi + yacc.py:2566: + yacc.py:2687: fi shift and go to state 230 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 229 + yacc.py:2563: + yacc.py:2565: (44) casep -> id colon type rarrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 231 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 230 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then expr else expr fi . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: dot reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: star reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: div reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: plus reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: minus reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: less reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: lesseq reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: equal reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: semi reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: cpar reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: of reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: then reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: loop reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: comma reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: in reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: else reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: pool reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: ccur reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: fi reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 231 + yacc.py:2563: + yacc.py:2565: (44) casep -> id colon type rarrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 44 (casep -> id colon type rarrow expr .) + yacc.py:2689: + yacc.py:3447:24 shift/reduce conflicts + yacc.py:3457: + yacc.py:3458:Conflicts: + yacc.py:3459: + yacc.py:3462:shift/reduce conflict for less in state 73 resolved as shift + yacc.py:3462:shift/reduce conflict for lesseq in state 73 resolved as shift + yacc.py:3462:shift/reduce conflict for equal in state 73 resolved as shift + yacc.py:3462:shift/reduce conflict for plus in state 74 resolved as shift + yacc.py:3462:shift/reduce conflict for minus in state 74 resolved as shift + yacc.py:3462:shift/reduce conflict for star in state 75 resolved as shift + yacc.py:3462:shift/reduce conflict for div in state 75 resolved as shift + yacc.py:3462:shift/reduce conflict for arroba in state 77 resolved as shift + yacc.py:3462:shift/reduce conflict for dot in state 77 resolved as shift + yacc.py:3462:shift/reduce conflict for ccur in state 141 resolved as shift + yacc.py:3462:shift/reduce conflict for cpar in state 147 resolved as shift + yacc.py:3462:shift/reduce conflict for error in state 151 resolved as shift + yacc.py:3462:shift/reduce conflict for plus in state 156 resolved as shift + yacc.py:3462:shift/reduce conflict for minus in state 156 resolved as shift + yacc.py:3462:shift/reduce conflict for plus in state 157 resolved as shift + yacc.py:3462:shift/reduce conflict for minus in state 157 resolved as shift + yacc.py:3462:shift/reduce conflict for plus in state 158 resolved as shift + yacc.py:3462:shift/reduce conflict for minus in state 158 resolved as shift + yacc.py:3462:shift/reduce conflict for star in state 159 resolved as shift + yacc.py:3462:shift/reduce conflict for div in state 159 resolved as shift + yacc.py:3462:shift/reduce conflict for star in state 160 resolved as shift + yacc.py:3462:shift/reduce conflict for div in state 160 resolved as shift + yacc.py:3462:shift/reduce conflict for arroba in state 162 resolved as shift + yacc.py:3462:shift/reduce conflict for arroba in state 164 resolved as shift + yacc.py:3488:Couldn't create 'cool.parser.parsetab'. [Errno 2] No such file or directory: 'parser/output/parsetab.py' + yacc.py: 362:PLY: PARSE DEBUG START + yacc.py: 410: + yacc.py: 411:State : 0 + yacc.py: 434:Stack : . LexToken(class,'class',3,134) + yacc.py: 445:Action : Shift and goto state 5 + yacc.py: 410: + yacc.py: 411:State : 5 + yacc.py: 434:Stack : class . LexToken(type,'Main',3,140) + yacc.py: 445:Action : Shift and goto state 8 + yacc.py: 410: + yacc.py: 411:State : 8 + yacc.py: 434:Stack : class type . LexToken(ocur,'{',3,145) + yacc.py: 445:Action : Shift and goto state 10 + yacc.py: 410: + yacc.py: 411:State : 10 + yacc.py: 434:Stack : class type ocur . LexToken(id,'main',4,151) + yacc.py: 445:Action : Shift and goto state 19 + yacc.py: 410: + yacc.py: 411:State : 19 + yacc.py: 434:Stack : class type ocur id . LexToken(opar,'(',4,155) + yacc.py: 445:Action : Shift and goto state 32 + yacc.py: 410: + yacc.py: 411:State : 32 + yacc.py: 434:Stack : class type ocur id opar . LexToken(cpar,')',4,156) + yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : class type ocur id opar epsilon . LexToken(cpar,')',4,156) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : class type ocur id opar param_list_empty . LexToken(cpar,')',4,156) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : class type ocur id opar formals . LexToken(cpar,')',4,156) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : class type ocur id opar formals cpar . LexToken(colon,':',4,157) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon . LexToken(type,'Object',4,159) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type . LexToken(ocur,'{',4,166) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur . LexToken(opar,'(',5,176) + yacc.py: 445:Action : Shift and goto state 80 + yacc.py: 410: + yacc.py: 411:State : 80 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar . LexToken(new,'new',5,177) + yacc.py: 445:Action : Shift and goto state 89 + yacc.py: 410: + yacc.py: 411:State : 89 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar new . LexToken(type,'Alpha',5,181) + yacc.py: 445:Action : Shift and goto state 134 + yacc.py: 410: + yacc.py: 411:State : 134 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar new type . LexToken(cpar,')',5,186) + yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','Alpha'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 123 + yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar epsilon . LexToken(cpar,')',5,194) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar arg_list_empty . LexToken(cpar,')',5,194) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 153 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args . LexToken(cpar,')',5,194) + yacc.py: 445:Action : Shift and goto state 191 + yacc.py: 410: + yacc.py: 411:State : 191 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args cpar . LexToken(ccur,'}',6,200) + yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['print','(',[],')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'print',5,188), [])) + yacc.py: 410: + yacc.py: 411:State : 167 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot func_call . LexToken(ccur,'}',6,200) + yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','Object','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 16 + yacc.py: 430:Defaulted state 16: Reduce using 14 + yacc.py: 434:Stack : class type ocur def_func semi epsilon . LexToken(ccur,'}',7,203) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 48 + yacc.py: 430:Defaulted state 48: Reduce using 16 + yacc.py: 434:Stack : class type ocur def_func semi feature_list . LexToken(ccur,'}',7,203) + yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 14 + yacc.py: 506:Result : ([ class type ocur feature_list ccur semi] with ['class','Main','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( id colon type] with ['test1',':','Object'] and goto state 17 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar epsilon . LexToken(cpar,')',12,257) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar param_list_empty . LexToken(cpar,')',12,257) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals . LexToken(cpar,')',12,257) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar . LexToken(colon,':',12,258) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon . LexToken(type,'Int',12,260) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',12,264) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type ocur . LexToken(num,2.0,13,274) + yacc.py: 445:Action : Shift and goto state 88 + yacc.py: 410: + yacc.py: 411:State : 88 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',13,276) + yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing1','(',[],')',':','Int','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( num] with [1.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test2',':','Int','<-',] and goto state 17 + yacc.py: 506:Result : ( string] with ['1'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test3',':','String','<-',] and goto state 17 + yacc.py: 506:Result : ( id colon type] with ['a',':','Alpha'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'a',20,350), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param . LexToken(comma,',',20,358) + yacc.py: 445:Action : Shift and goto state 60 + yacc.py: 410: + yacc.py: 411:State : 60 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma . LexToken(id,'b',20,360) + yacc.py: 445:Action : Shift and goto state 46 + yacc.py: 410: + yacc.py: 411:State : 46 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id . LexToken(colon,':',20,361) + yacc.py: 445:Action : Shift and goto state 61 + yacc.py: 410: + yacc.py: 411:State : 61 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id colon . LexToken(type,'Int',20,363) + yacc.py: 445:Action : Shift and goto state 96 + yacc.py: 410: + yacc.py: 411:State : 96 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id colon type . LexToken(cpar,')',20,366) + yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['b',':','Int'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'b',20,360), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param . LexToken(cpar,')',20,366) + yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 + yacc.py: 506:Result : ([(LexToken(id,'b',20,360), LexToken(type ...) + yacc.py: 410: + yacc.py: 411:State : 95 + yacc.py: 430:Defaulted state 95: Reduce using 33 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param_list . LexToken(cpar,')',20,366) + yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 + yacc.py: 506:Result : ([(LexToken(id,'a',20,350), LexToken(type ...) + yacc.py: 410: + yacc.py: 411:State : 42 + yacc.py: 430:Defaulted state 42: Reduce using 30 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param_list . LexToken(cpar,')',20,366) + yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 + yacc.py: 506:Result : ([(LexToken(id,'a',20,350), LexToken(type ...) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals . LexToken(cpar,')',20,366) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar . LexToken(colon,':',20,367) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon . LexToken(type,'Int',20,369) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',20,373) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur . LexToken(num,2.0,21,383) + yacc.py: 445:Action : Shift and goto state 88 + yacc.py: 410: + yacc.py: 411:State : 88 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',21,385) + yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing2','(',,')',':','Int','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar epsilon . LexToken(cpar,')',24,410) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar param_list_empty . LexToken(cpar,')',24,410) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals . LexToken(cpar,')',24,410) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar . LexToken(colon,':',24,411) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon . LexToken(type,'String',24,413) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',24,420) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur . LexToken(string,'2 + 2',25,436) + yacc.py: 445:Action : Shift and goto state 93 + yacc.py: 410: + yacc.py: 411:State : 93 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur string . LexToken(ccur,'}',26,442) + yacc.py: 469:Action : Reduce rule [atom -> string] with ['2 + 2'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing3','(',[],')',':','String','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( id colon type] with ['x',':','Int'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'x',28,459), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param . LexToken(comma,',',28,465) + yacc.py: 445:Action : Shift and goto state 60 + yacc.py: 410: + yacc.py: 411:State : 60 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param comma . LexToken(id,'y',28,467) + yacc.py: 445:Action : Shift and goto state 46 + yacc.py: 410: + yacc.py: 411:State : 46 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param comma id . LexToken(colon,':',28,468) + yacc.py: 445:Action : Shift and goto state 61 + yacc.py: 410: + yacc.py: 411:State : 61 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param comma id colon . LexToken(type,'Int',28,470) + yacc.py: 445:Action : Shift and goto state 96 + yacc.py: 410: + yacc.py: 411:State : 96 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param comma id colon type . LexToken(cpar,')',28,473) + yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['y',':','Int'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'y',28,467), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param comma param . LexToken(cpar,')',28,473) + yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 + yacc.py: 506:Result : ([(LexToken(id,'y',28,467), LexToken(type ...) + yacc.py: 410: + yacc.py: 411:State : 95 + yacc.py: 430:Defaulted state 95: Reduce using 33 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param comma param_list . LexToken(cpar,')',28,473) + yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 + yacc.py: 506:Result : ([(LexToken(id,'x',28,459), LexToken(type ...) + yacc.py: 410: + yacc.py: 411:State : 42 + yacc.py: 430:Defaulted state 42: Reduce using 30 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param_list . LexToken(cpar,')',28,473) + yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 + yacc.py: 506:Result : ([(LexToken(id,'x',28,459), LexToken(type ...) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals . LexToken(cpar,')',28,473) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',28,474) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'Test',28,476) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',28,481) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(id,'self',29,491) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur id . LexToken(ccur,'}',30,500) + yacc.py: 469:Action : Reduce rule [atom -> id] with ['self'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing4','(',,')',':','Test','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 16 + yacc.py: 430:Defaulted state 16: Reduce using 14 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi def_func semi epsilon . LexToken(ccur,'}',31,503) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 48 + yacc.py: 430:Defaulted state 48: Reduce using 16 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi def_func semi feature_list . LexToken(ccur,'}',31,503) + yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 47 + yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 47 + yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 47 + yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 14 + yacc.py: 506:Result : ([ class type ocur feature_list ccur semi] with ['class','Test','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( new type] with ['new','Test'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test1',':','Test','<-',] and goto state 17 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi id opar epsilon . LexToken(cpar,')',36,564) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi id opar param_list_empty . LexToken(cpar,')',36,564) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi id opar formals . LexToken(cpar,')',36,564) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi id opar formals cpar . LexToken(colon,':',36,565) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi id opar formals cpar colon . LexToken(type,'Test',36,567) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',36,572) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur . LexToken(id,'test1',37,582) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur id . LexToken(dot,'.',37,587) + yacc.py: 469:Action : Reduce rule [atom -> id] with ['test1'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( num] with [1.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [1.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( num] with [1.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 211 + yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['testing4','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'testing4',37,588), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [3.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( num] with [3.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [5.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 211 + yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['testing4','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'testing4',37,611), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( num] with [5.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [8.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( num] with [8.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [13.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 211 + yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['testing4','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'testing4',37,634), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing1','(',[],')',':','Test','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( id colon type] with ['x',':','Int'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'x',40,679), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar param . LexToken(comma,',',40,685) + yacc.py: 445:Action : Shift and goto state 60 + yacc.py: 410: + yacc.py: 411:State : 60 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar param comma . LexToken(id,'y',40,687) + yacc.py: 445:Action : Shift and goto state 46 + yacc.py: 410: + yacc.py: 411:State : 46 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar param comma id . LexToken(colon,':',40,688) + yacc.py: 445:Action : Shift and goto state 61 + yacc.py: 410: + yacc.py: 411:State : 61 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar param comma id colon . LexToken(type,'Int',40,690) + yacc.py: 445:Action : Shift and goto state 96 + yacc.py: 410: + yacc.py: 411:State : 96 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar param comma id colon type . LexToken(cpar,')',40,693) + yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['y',':','Int'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'y',40,687), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar param comma param . LexToken(cpar,')',40,693) + yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 + yacc.py: 506:Result : ([(LexToken(id,'y',40,687), LexToken(type ...) + yacc.py: 410: + yacc.py: 411:State : 95 + yacc.py: 430:Defaulted state 95: Reduce using 33 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar param comma param_list . LexToken(cpar,')',40,693) + yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 + yacc.py: 506:Result : ([(LexToken(id,'x',40,679), LexToken(type ...) + yacc.py: 410: + yacc.py: 411:State : 42 + yacc.py: 430:Defaulted state 42: Reduce using 30 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar param_list . LexToken(cpar,')',40,693) + yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 + yacc.py: 506:Result : ([(LexToken(id,'x',40,679), LexToken(type ...) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar formals . LexToken(cpar,')',40,693) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar formals cpar . LexToken(colon,':',40,694) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar formals cpar colon . LexToken(type,'Test2',40,696) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',40,702) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar formals cpar colon type ocur . LexToken(id,'self',41,712) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar formals cpar colon type ocur id . LexToken(ccur,'}',42,721) + yacc.py: 469:Action : Reduce rule [atom -> id] with ['self'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing2','(',,')',':','Test2','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',44,738) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',44,738) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar formals . LexToken(cpar,')',44,738) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',44,739) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'Test2',44,741) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',44,747) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(id,'testing2',45,757) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur id . LexToken(opar,'(',45,765) + yacc.py: 445:Action : Shift and goto state 113 + yacc.py: 410: + yacc.py: 411:State : 113 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur id opar . LexToken(num,1.0,45,766) + yacc.py: 445:Action : Shift and goto state 88 + yacc.py: 410: + yacc.py: 411:State : 88 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur id opar num . LexToken(plus,'+',45,768) + yacc.py: 469:Action : Reduce rule [atom -> num] with [1.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [1.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( num] with [1.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 211 + yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['testing2','(',,')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'testing2',45,757), [ func_call] with [] and goto state 77 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [3.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( num] with [3.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [5.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 211 + yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['testing2','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'testing2',45,780), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( num] with [5.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [8.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( true] with ['true'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( false] with ['fALSE'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 211 + yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['testing2','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'testing2',45,803), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing3','(',[],')',':','Test2','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',48,854) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',48,854) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi def_func semi id opar formals . LexToken(cpar,')',48,854) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',48,855) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'Object',48,857) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',48,864) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(id,'test1',49,874) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur id . LexToken(arroba,'@',49,879) + yacc.py: 469:Action : Reduce rule [atom -> id] with ['test1'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( Date: Tue, 12 Oct 2021 14:41:42 -0400 Subject: [PATCH 18/44] feat(parser): temporal commit --- .idea/.gitignore | 8 + .idea/cool-compiler-2021.iml | 21 + .../inspectionProfiles/profiles_settings.xml | 6 + .idea/misc.xml | 4 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + src/__main__.py | 31 +- src/cool/__main__.py | 1 + src/cool/code.cl | 58 +- src/cool/lexer/lexer.py | 4 +- src/cool/parser/output/parselog.txt | 8685 ----------------- src/cool/utils/logger.py | 27 +- 12 files changed, 87 insertions(+), 8772 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/cool-compiler-2021.iml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 000000000..13566b81b --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/cool-compiler-2021.iml b/.idea/cool-compiler-2021.iml new file mode 100644 index 000000000..66163359c --- /dev/null +++ b/.idea/cool-compiler-2021.iml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 000000000..105ce2da2 --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 000000000..b3f665d63 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 000000000..b174ac29c --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 000000000..94a25f7f4 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/__main__.py b/src/__main__.py index 06b7f311f..161049525 100644 --- a/src/__main__.py +++ b/src/__main__.py @@ -1,23 +1,13 @@ import sys from pathlib import Path -from .cool.lexer import CoolLexer, main -from .cool.parser import CoolParser +from cool.lexer import CoolLexer, main +from cool.parser import CoolParser if __name__ == '__main__': - # in_ = sys.argv[1] - #out_ = sys.argv[2] # print(f'Argv: {sys.argv} ') - # _in = sys.argv[1] if len(sys.argv) > 1 else f'{Path.cwd()}/src/cool/code.cl' - # _out = sys.argv[2] if len(sys.argv) > 1 else None - - # in_ = f'{sys.argv[1]} {sys.argv[2]}' - # out_ = f'{sys.argv[3]} {sys.argv[4]}' - - # print(f'{in_}') - - _in = sys.argv[1] - _out = sys.argv[2] + _in = sys.argv[1] if len(sys.argv) > 1 else f'{Path.cwd()}/src/cool/code.cl' + _out = sys.argv[2] if len(sys.argv) > 2 else None text: str = '' @@ -25,12 +15,13 @@ text = file.read() lexer = main(text, _out) - + # print(lexer) - # lexer.lexer.lineno = 1 - - # parser = CoolParser(lexer) - # result = parser.parse(text) - + lexer.lexer.lineno = 1 + lexer.lexer.linestart = 0 + + parser = CoolParser() + result = parser.parse(text) + # print(result) diff --git a/src/cool/__main__.py b/src/cool/__main__.py index 2059c78ee..5cca90757 100644 --- a/src/cool/__main__.py +++ b/src/cool/__main__.py @@ -29,6 +29,7 @@ # print(lexer) lexer.lexer.lineno = 1 + lexer.lexer.linestart = 0 parser = CoolParser(lexer) result = parser.parse(text) diff --git a/src/cool/code.cl b/src/cool/code.cl index 0a953e2e6..8e5cf617f 100644 --- a/src/cool/code.cl +++ b/src/cool/code.cl @@ -1,57 +1 @@ -(* There are three forms of dispatch (i.e. method call) in Cool. The three forms differ only in how the called method is selected *) - -class Main { - main(): Object { - (new Alpha).print() - }; -}; - -class Test { - test1: Object; - - testing1(): Int { - 2 + 2 - }; - - test2: Int <- 1; - - test3: String <- "1"; - - testing2(a: Alpha, b: Int): Int { - 2 + 2 - }; - - testing3(): String { - "2 + 2" - }; - - testing4(x: Int, y: Int): Test { - self - }; -}; - -class Test2 { - test1: Test <- new Test; - - testing1(): Test { - test1.testing4(1 + 1, 1 + 2).testing4(2 + 3, 3 + 5).testing4(5 + 8, 8 + 13) - }; - - testing2(x: Int, y: Int): Test2 { - self - }; - - testing3(): Test2 { - testing2(1 + 1, 1 + 2).testing2(2 + 3, 3 + 5).testing2(5 + 8, true + fALSE) - }; - - testing4(): Object { - test1@object.copy() -- Type identifiers begin with a upper case letter - }; -} - -class Alpha inherits IO { - print() : Object { - out_string("reached!!\n") - }; -}; \ No newline at end of file +(* A Cool program can't be empty *) \ No newline at end of file diff --git a/src/cool/lexer/lexer.py b/src/cool/lexer/lexer.py index dc2d99029..4a69d633a 100644 --- a/src/cool/lexer/lexer.py +++ b/src/cool/lexer/lexer.py @@ -288,8 +288,8 @@ def main(text: str, output = None): a = lexer.tokenize(text) - # for i in a: - # print(i) + for i in a: + print(i) if lexer.errors: for e in lexer.errors: diff --git a/src/cool/parser/output/parselog.txt b/src/cool/parser/output/parselog.txt index ecd58e94c..e69de29bb 100644 --- a/src/cool/parser/output/parselog.txt +++ b/src/cool/parser/output/parselog.txt @@ -1,8685 +0,0 @@ - yacc.py:3317:Created by PLY version 3.11 (http://www.dabeaz.com/ply) - yacc.py:3377: - yacc.py:3378:Grammar - yacc.py:3379: - yacc.py:3381:Rule 0 S' -> program - yacc.py:3381:Rule 1 program -> class_list - yacc.py:3381:Rule 2 class_list -> def_class class_list - yacc.py:3381:Rule 3 class_list -> def_class - yacc.py:3381:Rule 4 class_list -> error class_list - yacc.py:3381:Rule 5 epsilon -> - yacc.py:3381:Rule 6 def_class -> class type ocur feature_list ccur semi - yacc.py:3381:Rule 7 def_class -> class type inherits type ocur feature_list ccur semi - yacc.py:3381:Rule 8 def_class -> class error ocur feature_list ccur semi - yacc.py:3381:Rule 9 def_class -> class type ocur feature_list ccur error - yacc.py:3381:Rule 10 def_class -> class error inherits type ocur feature_list ccur semi - yacc.py:3381:Rule 11 def_class -> class error inherits error ocur feature_list ccur semi - yacc.py:3381:Rule 12 def_class -> class type inherits error ocur feature_list ccur semi - yacc.py:3381:Rule 13 def_class -> class type inherits type ocur feature_list ccur error - yacc.py:3381:Rule 14 feature_list -> epsilon - yacc.py:3381:Rule 15 feature_list -> def_attr semi feature_list - yacc.py:3381:Rule 16 feature_list -> def_func semi feature_list - yacc.py:3381:Rule 17 feature_list -> error feature_list - yacc.py:3381:Rule 18 def_attr -> id colon type - yacc.py:3381:Rule 19 def_attr -> id colon type larrow expr - yacc.py:3381:Rule 20 def_attr -> error colon type - yacc.py:3381:Rule 21 def_attr -> id colon error - yacc.py:3381:Rule 22 def_attr -> error colon type larrow expr - yacc.py:3381:Rule 23 def_attr -> id colon error larrow expr - yacc.py:3381:Rule 24 def_attr -> id colon type larrow error - yacc.py:3381:Rule 25 def_func -> id opar formals cpar colon type ocur expr ccur - yacc.py:3381:Rule 26 def_func -> error opar formals cpar colon type ocur expr ccur - yacc.py:3381:Rule 27 def_func -> id opar error cpar colon type ocur expr ccur - yacc.py:3381:Rule 28 def_func -> id opar formals cpar colon error ocur expr ccur - yacc.py:3381:Rule 29 def_func -> id opar formals cpar colon type ocur error ccur - yacc.py:3381:Rule 30 formals -> param_list - yacc.py:3381:Rule 31 formals -> param_list_empty - yacc.py:3381:Rule 32 param_list -> param - yacc.py:3381:Rule 33 param_list -> param comma param_list - yacc.py:3381:Rule 34 param_list_empty -> epsilon - yacc.py:3381:Rule 35 param -> id colon type - yacc.py:3381:Rule 36 let_list -> let_assign - yacc.py:3381:Rule 37 let_list -> let_assign comma let_list - yacc.py:3381:Rule 38 let_assign -> param larrow expr - yacc.py:3381:Rule 39 let_assign -> param - yacc.py:3381:Rule 40 cases_list -> casep semi - yacc.py:3381:Rule 41 cases_list -> casep semi cases_list - yacc.py:3381:Rule 42 cases_list -> error cases_list - yacc.py:3381:Rule 43 cases_list -> error semi - yacc.py:3381:Rule 44 casep -> id colon type rarrow expr - yacc.py:3381:Rule 45 expr -> id larrow expr - yacc.py:3381:Rule 46 expr -> comp - yacc.py:3381:Rule 47 comp -> comp less op - yacc.py:3381:Rule 48 comp -> comp lesseq op - yacc.py:3381:Rule 49 comp -> comp equal op - yacc.py:3381:Rule 50 comp -> op - yacc.py:3381:Rule 51 op -> op plus term - yacc.py:3381:Rule 52 op -> op minus term - yacc.py:3381:Rule 53 op -> term - yacc.py:3381:Rule 54 term -> term star base_call - yacc.py:3381:Rule 55 term -> term div base_call - yacc.py:3381:Rule 56 term -> base_call - yacc.py:3381:Rule 57 term -> term star error - yacc.py:3381:Rule 58 term -> term div error - yacc.py:3381:Rule 59 base_call -> factor arroba type dot func_call - yacc.py:3381:Rule 60 base_call -> factor - yacc.py:3381:Rule 61 base_call -> error arroba type dot func_call - yacc.py:3381:Rule 62 base_call -> factor arroba error dot func_call - yacc.py:3381:Rule 63 factor -> atom - yacc.py:3381:Rule 64 factor -> opar expr cpar - yacc.py:3381:Rule 65 factor -> factor dot func_call - yacc.py:3381:Rule 66 factor -> not expr - yacc.py:3381:Rule 67 factor -> func_call - yacc.py:3381:Rule 68 factor -> isvoid base_call - yacc.py:3381:Rule 69 factor -> nox base_call - yacc.py:3381:Rule 70 factor -> let let_list in expr - yacc.py:3381:Rule 71 factor -> case expr of cases_list esac - yacc.py:3381:Rule 72 factor -> if expr then expr else expr fi - yacc.py:3381:Rule 73 factor -> while expr loop expr pool - yacc.py:3381:Rule 74 atom -> num - yacc.py:3381:Rule 75 atom -> id - yacc.py:3381:Rule 76 atom -> new type - yacc.py:3381:Rule 77 atom -> ocur block ccur - yacc.py:3381:Rule 78 atom -> error block ccur - yacc.py:3381:Rule 79 atom -> ocur error ccur - yacc.py:3381:Rule 80 atom -> ocur block error - yacc.py:3381:Rule 81 atom -> true - yacc.py:3381:Rule 82 atom -> false - yacc.py:3381:Rule 83 atom -> string - yacc.py:3381:Rule 84 block -> expr semi - yacc.py:3381:Rule 85 block -> expr semi block - yacc.py:3381:Rule 86 block -> error block - yacc.py:3381:Rule 87 block -> error semi - yacc.py:3381:Rule 88 func_call -> id opar args cpar - yacc.py:3381:Rule 89 func_call -> id opar error cpar - yacc.py:3381:Rule 90 func_call -> error opar args cpar - yacc.py:3381:Rule 91 args -> arg_list - yacc.py:3381:Rule 92 args -> arg_list_empty - yacc.py:3381:Rule 93 arg_list -> expr - yacc.py:3381:Rule 94 arg_list -> expr comma arg_list - yacc.py:3381:Rule 95 arg_list -> error arg_list - yacc.py:3381:Rule 96 arg_list_empty -> epsilon - yacc.py:3399: - yacc.py:3400:Terminals, with rules where they appear - yacc.py:3401: - yacc.py:3405:arroba : 59 61 62 - yacc.py:3405:case : 71 - yacc.py:3405:ccur : 6 7 8 9 10 11 12 13 25 26 27 28 29 77 78 79 - yacc.py:3405:class : 6 7 8 9 10 11 12 13 - yacc.py:3405:colon : 18 19 20 21 22 23 24 25 26 27 28 29 35 44 - yacc.py:3405:comma : 33 37 94 - yacc.py:3405:cpar : 25 26 27 28 29 64 88 89 90 - yacc.py:3405:div : 55 58 - yacc.py:3405:dot : 59 61 62 65 - yacc.py:3405:else : 72 - yacc.py:3405:equal : 49 - yacc.py:3405:error : 4 8 9 10 11 11 12 13 17 20 21 22 23 24 26 27 28 29 42 43 57 58 61 62 78 79 80 86 87 89 90 95 - yacc.py:3405:esac : 71 - yacc.py:3405:false : 82 - yacc.py:3405:fi : 72 - yacc.py:3405:id : 18 19 21 23 24 25 27 28 29 35 44 45 75 88 89 - yacc.py:3405:if : 72 - yacc.py:3405:in : 70 - yacc.py:3405:inherits : 7 10 11 12 13 - yacc.py:3405:isvoid : 68 - yacc.py:3405:larrow : 19 22 23 24 38 45 - yacc.py:3405:less : 47 - yacc.py:3405:lesseq : 48 - yacc.py:3405:let : 70 - yacc.py:3405:loop : 73 - yacc.py:3405:minus : 52 - yacc.py:3405:new : 76 - yacc.py:3405:not : 66 - yacc.py:3405:nox : 69 - yacc.py:3405:num : 74 - yacc.py:3405:ocur : 6 7 8 9 10 11 12 13 25 26 27 28 29 77 79 80 - yacc.py:3405:of : 71 - yacc.py:3405:opar : 25 26 27 28 29 64 88 89 90 - yacc.py:3405:plus : 51 - yacc.py:3405:pool : 73 - yacc.py:3405:rarrow : 44 - yacc.py:3405:semi : 6 7 8 10 11 12 15 16 40 41 43 84 85 87 - yacc.py:3405:star : 54 57 - yacc.py:3405:string : 83 - yacc.py:3405:then : 72 - yacc.py:3405:true : 81 - yacc.py:3405:type : 6 7 7 9 10 12 13 13 18 19 20 22 24 25 26 27 29 35 44 59 61 76 - yacc.py:3405:while : 73 - yacc.py:3407: - yacc.py:3408:Nonterminals, with rules where they appear - yacc.py:3409: - yacc.py:3413:arg_list : 91 94 95 - yacc.py:3413:arg_list_empty : 92 - yacc.py:3413:args : 88 90 - yacc.py:3413:atom : 63 - yacc.py:3413:base_call : 54 55 56 68 69 - yacc.py:3413:block : 77 78 80 85 86 - yacc.py:3413:casep : 40 41 - yacc.py:3413:cases_list : 41 42 71 - yacc.py:3413:class_list : 1 2 4 - yacc.py:3413:comp : 46 47 48 49 - yacc.py:3413:def_attr : 15 - yacc.py:3413:def_class : 2 3 - yacc.py:3413:def_func : 16 - yacc.py:3413:epsilon : 14 34 96 - yacc.py:3413:expr : 19 22 23 25 26 27 28 38 44 45 64 66 70 71 72 72 72 73 73 84 85 93 94 - yacc.py:3413:factor : 59 60 62 65 - yacc.py:3413:feature_list : 6 7 8 9 10 11 12 13 15 16 17 - yacc.py:3413:formals : 25 26 28 29 - yacc.py:3413:func_call : 59 61 62 65 67 - yacc.py:3413:let_assign : 36 37 - yacc.py:3413:let_list : 37 70 - yacc.py:3413:op : 47 48 49 50 51 52 - yacc.py:3413:param : 32 33 38 39 - yacc.py:3413:param_list : 30 33 - yacc.py:3413:param_list_empty : 31 - yacc.py:3413:program : 0 - yacc.py:3413:term : 51 52 53 54 55 57 58 - yacc.py:3414: - yacc.py:3436:Generating LALR tables - yacc.py:2543:Parsing method: LALR - yacc.py:2561: - yacc.py:2562:state 0 - yacc.py:2563: - yacc.py:2565: (0) S' -> . program - yacc.py:2565: (1) program -> . class_list - yacc.py:2565: (2) class_list -> . def_class class_list - yacc.py:2565: (3) class_list -> . def_class - yacc.py:2565: (4) class_list -> . error class_list - yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi - yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi - yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi - yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error - yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi - yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: error shift and go to state 4 - yacc.py:2687: class shift and go to state 5 - yacc.py:2689: - yacc.py:2714: program shift and go to state 1 - yacc.py:2714: class_list shift and go to state 2 - yacc.py:2714: def_class shift and go to state 3 - yacc.py:2561: - yacc.py:2562:state 1 - yacc.py:2563: - yacc.py:2565: (0) S' -> program . - yacc.py:2566: - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 2 - yacc.py:2563: - yacc.py:2565: (1) program -> class_list . - yacc.py:2566: - yacc.py:2687: $end reduce using rule 1 (program -> class_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 3 - yacc.py:2563: - yacc.py:2565: (2) class_list -> def_class . class_list - yacc.py:2565: (3) class_list -> def_class . - yacc.py:2565: (2) class_list -> . def_class class_list - yacc.py:2565: (3) class_list -> . def_class - yacc.py:2565: (4) class_list -> . error class_list - yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi - yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi - yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi - yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error - yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi - yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: $end reduce using rule 3 (class_list -> def_class .) - yacc.py:2687: error shift and go to state 4 - yacc.py:2687: class shift and go to state 5 - yacc.py:2689: - yacc.py:2714: def_class shift and go to state 3 - yacc.py:2714: class_list shift and go to state 6 - yacc.py:2561: - yacc.py:2562:state 4 - yacc.py:2563: - yacc.py:2565: (4) class_list -> error . class_list - yacc.py:2565: (2) class_list -> . def_class class_list - yacc.py:2565: (3) class_list -> . def_class - yacc.py:2565: (4) class_list -> . error class_list - yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi - yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi - yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi - yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error - yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi - yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: error shift and go to state 4 - yacc.py:2687: class shift and go to state 5 - yacc.py:2689: - yacc.py:2714: class_list shift and go to state 7 - yacc.py:2714: def_class shift and go to state 3 - yacc.py:2561: - yacc.py:2562:state 5 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class . type ocur feature_list ccur semi - yacc.py:2565: (7) def_class -> class . type inherits type ocur feature_list ccur semi - yacc.py:2565: (8) def_class -> class . error ocur feature_list ccur semi - yacc.py:2565: (9) def_class -> class . type ocur feature_list ccur error - yacc.py:2565: (10) def_class -> class . error inherits type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> class . error inherits error ocur feature_list ccur semi - yacc.py:2565: (12) def_class -> class . type inherits error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> class . type inherits type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: type shift and go to state 8 - yacc.py:2687: error shift and go to state 9 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 6 - yacc.py:2563: - yacc.py:2565: (2) class_list -> def_class class_list . - yacc.py:2566: - yacc.py:2687: $end reduce using rule 2 (class_list -> def_class class_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 7 - yacc.py:2563: - yacc.py:2565: (4) class_list -> error class_list . - yacc.py:2566: - yacc.py:2687: $end reduce using rule 4 (class_list -> error class_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 8 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class type . ocur feature_list ccur semi - yacc.py:2565: (7) def_class -> class type . inherits type ocur feature_list ccur semi - yacc.py:2565: (9) def_class -> class type . ocur feature_list ccur error - yacc.py:2565: (12) def_class -> class type . inherits error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> class type . inherits type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 10 - yacc.py:2687: inherits shift and go to state 11 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 9 - yacc.py:2563: - yacc.py:2565: (8) def_class -> class error . ocur feature_list ccur semi - yacc.py:2565: (10) def_class -> class error . inherits type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> class error . inherits error ocur feature_list ccur semi - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 12 - yacc.py:2687: inherits shift and go to state 13 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 10 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class type ocur . feature_list ccur semi - yacc.py:2565: (9) def_class -> class type ocur . feature_list ccur error - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 14 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 11 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits . type ocur feature_list ccur semi - yacc.py:2565: (12) def_class -> class type inherits . error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> class type inherits . type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: type shift and go to state 20 - yacc.py:2687: error shift and go to state 21 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 12 - yacc.py:2563: - yacc.py:2565: (8) def_class -> class error ocur . feature_list ccur semi - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 22 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 13 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits . type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> class error inherits . error ocur feature_list ccur semi - yacc.py:2566: - yacc.py:2687: type shift and go to state 24 - yacc.py:2687: error shift and go to state 23 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 14 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class type ocur feature_list . ccur semi - yacc.py:2565: (9) def_class -> class type ocur feature_list . ccur error - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 25 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 15 - yacc.py:2563: - yacc.py:2565: (17) feature_list -> error . feature_list - yacc.py:2565: (20) def_attr -> error . colon type - yacc.py:2565: (22) def_attr -> error . colon type larrow expr - yacc.py:2565: (26) def_func -> error . opar formals cpar colon type ocur expr ccur - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: colon shift and go to state 27 - yacc.py:2687: opar shift and go to state 28 - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 26 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 16 - yacc.py:2563: - yacc.py:2565: (14) feature_list -> epsilon . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 14 (feature_list -> epsilon .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 17 - yacc.py:2563: - yacc.py:2565: (15) feature_list -> def_attr . semi feature_list - yacc.py:2566: - yacc.py:2687: semi shift and go to state 29 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 18 - yacc.py:2563: - yacc.py:2565: (16) feature_list -> def_func . semi feature_list - yacc.py:2566: - yacc.py:2687: semi shift and go to state 30 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 19 - yacc.py:2563: - yacc.py:2565: (18) def_attr -> id . colon type - yacc.py:2565: (19) def_attr -> id . colon type larrow expr - yacc.py:2565: (21) def_attr -> id . colon error - yacc.py:2565: (23) def_attr -> id . colon error larrow expr - yacc.py:2565: (24) def_attr -> id . colon type larrow error - yacc.py:2565: (25) def_func -> id . opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> id . opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> id . opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> id . opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: colon shift and go to state 31 - yacc.py:2687: opar shift and go to state 32 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 20 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits type . ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> class type inherits type . ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 33 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 21 - yacc.py:2563: - yacc.py:2565: (12) def_class -> class type inherits error . ocur feature_list ccur semi - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 34 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 22 - yacc.py:2563: - yacc.py:2565: (8) def_class -> class error ocur feature_list . ccur semi - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 35 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 23 - yacc.py:2563: - yacc.py:2565: (11) def_class -> class error inherits error . ocur feature_list ccur semi - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 36 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 24 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits type . ocur feature_list ccur semi - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 37 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 25 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class type ocur feature_list ccur . semi - yacc.py:2565: (9) def_class -> class type ocur feature_list ccur . error - yacc.py:2566: - yacc.py:2687: semi shift and go to state 38 - yacc.py:2687: error shift and go to state 39 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 26 - yacc.py:2563: - yacc.py:2565: (17) feature_list -> error feature_list . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 17 (feature_list -> error feature_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 27 - yacc.py:2563: - yacc.py:2565: (20) def_attr -> error colon . type - yacc.py:2565: (22) def_attr -> error colon . type larrow expr - yacc.py:2566: - yacc.py:2687: type shift and go to state 40 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 28 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar . formals cpar colon type ocur expr ccur - yacc.py:2565: (30) formals -> . param_list - yacc.py:2565: (31) formals -> . param_list_empty - yacc.py:2565: (32) param_list -> . param - yacc.py:2565: (33) param_list -> . param comma param_list - yacc.py:2565: (34) param_list_empty -> . epsilon - yacc.py:2565: (35) param -> . id colon type - yacc.py:2565: (5) epsilon -> . - yacc.py:2566: - yacc.py:2687: id shift and go to state 46 - yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) - yacc.py:2689: - yacc.py:2714: formals shift and go to state 41 - yacc.py:2714: param_list shift and go to state 42 - yacc.py:2714: param_list_empty shift and go to state 43 - yacc.py:2714: param shift and go to state 44 - yacc.py:2714: epsilon shift and go to state 45 - yacc.py:2561: - yacc.py:2562:state 29 - yacc.py:2563: - yacc.py:2565: (15) feature_list -> def_attr semi . feature_list - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: feature_list shift and go to state 47 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 30 - yacc.py:2563: - yacc.py:2565: (16) feature_list -> def_func semi . feature_list - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2714: feature_list shift and go to state 48 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2561: - yacc.py:2562:state 31 - yacc.py:2563: - yacc.py:2565: (18) def_attr -> id colon . type - yacc.py:2565: (19) def_attr -> id colon . type larrow expr - yacc.py:2565: (21) def_attr -> id colon . error - yacc.py:2565: (23) def_attr -> id colon . error larrow expr - yacc.py:2565: (24) def_attr -> id colon . type larrow error - yacc.py:2566: - yacc.py:2687: type shift and go to state 49 - yacc.py:2687: error shift and go to state 50 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 32 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar . formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> id opar . error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> id opar . formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> id opar . formals cpar colon type ocur error ccur - yacc.py:2565: (30) formals -> . param_list - yacc.py:2565: (31) formals -> . param_list_empty - yacc.py:2565: (32) param_list -> . param - yacc.py:2565: (33) param_list -> . param comma param_list - yacc.py:2565: (34) param_list_empty -> . epsilon - yacc.py:2565: (35) param -> . id colon type - yacc.py:2565: (5) epsilon -> . - yacc.py:2566: - yacc.py:2687: error shift and go to state 52 - yacc.py:2687: id shift and go to state 46 - yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) - yacc.py:2689: - yacc.py:2714: formals shift and go to state 51 - yacc.py:2714: param_list shift and go to state 42 - yacc.py:2714: param_list_empty shift and go to state 43 - yacc.py:2714: param shift and go to state 44 - yacc.py:2714: epsilon shift and go to state 45 - yacc.py:2561: - yacc.py:2562:state 33 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits type ocur . feature_list ccur semi - yacc.py:2565: (13) def_class -> class type inherits type ocur . feature_list ccur error - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 53 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 34 - yacc.py:2563: - yacc.py:2565: (12) def_class -> class type inherits error ocur . feature_list ccur semi - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 54 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 35 - yacc.py:2563: - yacc.py:2565: (8) def_class -> class error ocur feature_list ccur . semi - yacc.py:2566: - yacc.py:2687: semi shift and go to state 55 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 36 - yacc.py:2563: - yacc.py:2565: (11) def_class -> class error inherits error ocur . feature_list ccur semi - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 56 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 37 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits type ocur . feature_list ccur semi - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 57 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 38 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class type ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 39 - yacc.py:2563: - yacc.py:2565: (9) def_class -> class type ocur feature_list ccur error . - yacc.py:2566: - yacc.py:2687: error reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) - yacc.py:2687: class reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) - yacc.py:2687: $end reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 40 - yacc.py:2563: - yacc.py:2565: (20) def_attr -> error colon type . - yacc.py:2565: (22) def_attr -> error colon type . larrow expr - yacc.py:2566: - yacc.py:2687: semi reduce using rule 20 (def_attr -> error colon type .) - yacc.py:2687: larrow shift and go to state 58 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 41 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals . cpar colon type ocur expr ccur - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 59 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 42 - yacc.py:2563: - yacc.py:2565: (30) formals -> param_list . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 30 (formals -> param_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 43 - yacc.py:2563: - yacc.py:2565: (31) formals -> param_list_empty . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 31 (formals -> param_list_empty .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 44 - yacc.py:2563: - yacc.py:2565: (32) param_list -> param . - yacc.py:2565: (33) param_list -> param . comma param_list - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 32 (param_list -> param .) - yacc.py:2687: comma shift and go to state 60 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 45 - yacc.py:2563: - yacc.py:2565: (34) param_list_empty -> epsilon . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 34 (param_list_empty -> epsilon .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 46 - yacc.py:2563: - yacc.py:2565: (35) param -> id . colon type - yacc.py:2566: - yacc.py:2687: colon shift and go to state 61 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 47 - yacc.py:2563: - yacc.py:2565: (15) feature_list -> def_attr semi feature_list . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 15 (feature_list -> def_attr semi feature_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 48 - yacc.py:2563: - yacc.py:2565: (16) feature_list -> def_func semi feature_list . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 16 (feature_list -> def_func semi feature_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 49 - yacc.py:2563: - yacc.py:2565: (18) def_attr -> id colon type . - yacc.py:2565: (19) def_attr -> id colon type . larrow expr - yacc.py:2565: (24) def_attr -> id colon type . larrow error - yacc.py:2566: - yacc.py:2687: semi reduce using rule 18 (def_attr -> id colon type .) - yacc.py:2687: larrow shift and go to state 62 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 50 - yacc.py:2563: - yacc.py:2565: (21) def_attr -> id colon error . - yacc.py:2565: (23) def_attr -> id colon error . larrow expr - yacc.py:2566: - yacc.py:2687: semi reduce using rule 21 (def_attr -> id colon error .) - yacc.py:2687: larrow shift and go to state 63 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 51 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals . cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> id opar formals . cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> id opar formals . cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 64 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 52 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error . cpar colon type ocur expr ccur - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 65 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 53 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list . ccur semi - yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list . ccur error - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 66 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 54 - yacc.py:2563: - yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list . ccur semi - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 67 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 55 - yacc.py:2563: - yacc.py:2565: (8) def_class -> class error ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 56 - yacc.py:2563: - yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list . ccur semi - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 68 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 57 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list . ccur semi - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 69 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 58 - yacc.py:2563: - yacc.py:2565: (22) def_attr -> error colon type larrow . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 71 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 59 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar . colon type ocur expr ccur - yacc.py:2566: - yacc.py:2687: colon shift and go to state 94 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 60 - yacc.py:2563: - yacc.py:2565: (33) param_list -> param comma . param_list - yacc.py:2565: (32) param_list -> . param - yacc.py:2565: (33) param_list -> . param comma param_list - yacc.py:2565: (35) param -> . id colon type - yacc.py:2566: - yacc.py:2687: id shift and go to state 46 - yacc.py:2689: - yacc.py:2714: param shift and go to state 44 - yacc.py:2714: param_list shift and go to state 95 - yacc.py:2561: - yacc.py:2562:state 61 - yacc.py:2563: - yacc.py:2565: (35) param -> id colon . type - yacc.py:2566: - yacc.py:2687: type shift and go to state 96 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 62 - yacc.py:2563: - yacc.py:2565: (19) def_attr -> id colon type larrow . expr - yacc.py:2565: (24) def_attr -> id colon type larrow . error - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 98 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 97 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 63 - yacc.py:2563: - yacc.py:2565: (23) def_attr -> id colon error larrow . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 99 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 64 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar . colon type ocur expr ccur - yacc.py:2565: (28) def_func -> id opar formals cpar . colon error ocur expr ccur - yacc.py:2565: (29) def_func -> id opar formals cpar . colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: colon shift and go to state 100 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 65 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar . colon type ocur expr ccur - yacc.py:2566: - yacc.py:2687: colon shift and go to state 101 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 66 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list ccur . semi - yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list ccur . error - yacc.py:2566: - yacc.py:2687: semi shift and go to state 102 - yacc.py:2687: error shift and go to state 103 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 67 - yacc.py:2563: - yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list ccur . semi - yacc.py:2566: - yacc.py:2687: semi shift and go to state 104 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 68 - yacc.py:2563: - yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list ccur . semi - yacc.py:2566: - yacc.py:2687: semi shift and go to state 105 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 69 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list ccur . semi - yacc.py:2566: - yacc.py:2687: semi shift and go to state 106 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 70 - yacc.py:2563: - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 71 - yacc.py:2563: - yacc.py:2565: (22) def_attr -> error colon type larrow expr . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 22 (def_attr -> error colon type larrow expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 72 - yacc.py:2563: - yacc.py:2565: (45) expr -> id . larrow expr - yacc.py:2565: (75) atom -> id . - yacc.py:2565: (88) func_call -> id . opar args cpar - yacc.py:2565: (89) func_call -> id . opar error cpar - yacc.py:2566: - yacc.py:2687: larrow shift and go to state 112 - yacc.py:2687: arroba reduce using rule 75 (atom -> id .) - yacc.py:2687: dot reduce using rule 75 (atom -> id .) - yacc.py:2687: star reduce using rule 75 (atom -> id .) - yacc.py:2687: div reduce using rule 75 (atom -> id .) - yacc.py:2687: plus reduce using rule 75 (atom -> id .) - yacc.py:2687: minus reduce using rule 75 (atom -> id .) - yacc.py:2687: less reduce using rule 75 (atom -> id .) - yacc.py:2687: lesseq reduce using rule 75 (atom -> id .) - yacc.py:2687: equal reduce using rule 75 (atom -> id .) - yacc.py:2687: semi reduce using rule 75 (atom -> id .) - yacc.py:2687: cpar reduce using rule 75 (atom -> id .) - yacc.py:2687: of reduce using rule 75 (atom -> id .) - yacc.py:2687: then reduce using rule 75 (atom -> id .) - yacc.py:2687: loop reduce using rule 75 (atom -> id .) - yacc.py:2687: comma reduce using rule 75 (atom -> id .) - yacc.py:2687: in reduce using rule 75 (atom -> id .) - yacc.py:2687: else reduce using rule 75 (atom -> id .) - yacc.py:2687: pool reduce using rule 75 (atom -> id .) - yacc.py:2687: ccur reduce using rule 75 (atom -> id .) - yacc.py:2687: fi reduce using rule 75 (atom -> id .) - yacc.py:2687: opar shift and go to state 113 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 73 - yacc.py:2563: - yacc.py:2565: (46) expr -> comp . - yacc.py:2565: (47) comp -> comp . less op - yacc.py:2565: (48) comp -> comp . lesseq op - yacc.py:2565: (49) comp -> comp . equal op - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for less resolved as shift - yacc.py:2666: ! shift/reduce conflict for lesseq resolved as shift - yacc.py:2666: ! shift/reduce conflict for equal resolved as shift - yacc.py:2687: semi reduce using rule 46 (expr -> comp .) - yacc.py:2687: cpar reduce using rule 46 (expr -> comp .) - yacc.py:2687: arroba reduce using rule 46 (expr -> comp .) - yacc.py:2687: dot reduce using rule 46 (expr -> comp .) - yacc.py:2687: star reduce using rule 46 (expr -> comp .) - yacc.py:2687: div reduce using rule 46 (expr -> comp .) - yacc.py:2687: plus reduce using rule 46 (expr -> comp .) - yacc.py:2687: minus reduce using rule 46 (expr -> comp .) - yacc.py:2687: of reduce using rule 46 (expr -> comp .) - yacc.py:2687: then reduce using rule 46 (expr -> comp .) - yacc.py:2687: loop reduce using rule 46 (expr -> comp .) - yacc.py:2687: comma reduce using rule 46 (expr -> comp .) - yacc.py:2687: in reduce using rule 46 (expr -> comp .) - yacc.py:2687: else reduce using rule 46 (expr -> comp .) - yacc.py:2687: pool reduce using rule 46 (expr -> comp .) - yacc.py:2687: ccur reduce using rule 46 (expr -> comp .) - yacc.py:2687: fi reduce using rule 46 (expr -> comp .) - yacc.py:2687: less shift and go to state 114 - yacc.py:2687: lesseq shift and go to state 115 - yacc.py:2687: equal shift and go to state 116 - yacc.py:2689: - yacc.py:2696: ! less [ reduce using rule 46 (expr -> comp .) ] - yacc.py:2696: ! lesseq [ reduce using rule 46 (expr -> comp .) ] - yacc.py:2696: ! equal [ reduce using rule 46 (expr -> comp .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 74 - yacc.py:2563: - yacc.py:2565: (50) comp -> op . - yacc.py:2565: (51) op -> op . plus term - yacc.py:2565: (52) op -> op . minus term - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for plus resolved as shift - yacc.py:2666: ! shift/reduce conflict for minus resolved as shift - yacc.py:2687: less reduce using rule 50 (comp -> op .) - yacc.py:2687: lesseq reduce using rule 50 (comp -> op .) - yacc.py:2687: equal reduce using rule 50 (comp -> op .) - yacc.py:2687: semi reduce using rule 50 (comp -> op .) - yacc.py:2687: cpar reduce using rule 50 (comp -> op .) - yacc.py:2687: arroba reduce using rule 50 (comp -> op .) - yacc.py:2687: dot reduce using rule 50 (comp -> op .) - yacc.py:2687: star reduce using rule 50 (comp -> op .) - yacc.py:2687: div reduce using rule 50 (comp -> op .) - yacc.py:2687: of reduce using rule 50 (comp -> op .) - yacc.py:2687: then reduce using rule 50 (comp -> op .) - yacc.py:2687: loop reduce using rule 50 (comp -> op .) - yacc.py:2687: comma reduce using rule 50 (comp -> op .) - yacc.py:2687: in reduce using rule 50 (comp -> op .) - yacc.py:2687: else reduce using rule 50 (comp -> op .) - yacc.py:2687: pool reduce using rule 50 (comp -> op .) - yacc.py:2687: ccur reduce using rule 50 (comp -> op .) - yacc.py:2687: fi reduce using rule 50 (comp -> op .) - yacc.py:2687: plus shift and go to state 117 - yacc.py:2687: minus shift and go to state 118 - yacc.py:2689: - yacc.py:2696: ! plus [ reduce using rule 50 (comp -> op .) ] - yacc.py:2696: ! minus [ reduce using rule 50 (comp -> op .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 75 - yacc.py:2563: - yacc.py:2565: (53) op -> term . - yacc.py:2565: (54) term -> term . star base_call - yacc.py:2565: (55) term -> term . div base_call - yacc.py:2565: (57) term -> term . star error - yacc.py:2565: (58) term -> term . div error - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for star resolved as shift - yacc.py:2666: ! shift/reduce conflict for div resolved as shift - yacc.py:2687: plus reduce using rule 53 (op -> term .) - yacc.py:2687: minus reduce using rule 53 (op -> term .) - yacc.py:2687: less reduce using rule 53 (op -> term .) - yacc.py:2687: lesseq reduce using rule 53 (op -> term .) - yacc.py:2687: equal reduce using rule 53 (op -> term .) - yacc.py:2687: semi reduce using rule 53 (op -> term .) - yacc.py:2687: cpar reduce using rule 53 (op -> term .) - yacc.py:2687: arroba reduce using rule 53 (op -> term .) - yacc.py:2687: dot reduce using rule 53 (op -> term .) - yacc.py:2687: of reduce using rule 53 (op -> term .) - yacc.py:2687: then reduce using rule 53 (op -> term .) - yacc.py:2687: loop reduce using rule 53 (op -> term .) - yacc.py:2687: comma reduce using rule 53 (op -> term .) - yacc.py:2687: in reduce using rule 53 (op -> term .) - yacc.py:2687: else reduce using rule 53 (op -> term .) - yacc.py:2687: pool reduce using rule 53 (op -> term .) - yacc.py:2687: ccur reduce using rule 53 (op -> term .) - yacc.py:2687: fi reduce using rule 53 (op -> term .) - yacc.py:2687: star shift and go to state 119 - yacc.py:2687: div shift and go to state 120 - yacc.py:2689: - yacc.py:2696: ! star [ reduce using rule 53 (op -> term .) ] - yacc.py:2696: ! div [ reduce using rule 53 (op -> term .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 76 - yacc.py:2563: - yacc.py:2565: (56) term -> base_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 56 (term -> base_call .) - yacc.py:2687: div reduce using rule 56 (term -> base_call .) - yacc.py:2687: plus reduce using rule 56 (term -> base_call .) - yacc.py:2687: minus reduce using rule 56 (term -> base_call .) - yacc.py:2687: less reduce using rule 56 (term -> base_call .) - yacc.py:2687: lesseq reduce using rule 56 (term -> base_call .) - yacc.py:2687: equal reduce using rule 56 (term -> base_call .) - yacc.py:2687: semi reduce using rule 56 (term -> base_call .) - yacc.py:2687: cpar reduce using rule 56 (term -> base_call .) - yacc.py:2687: arroba reduce using rule 56 (term -> base_call .) - yacc.py:2687: dot reduce using rule 56 (term -> base_call .) - yacc.py:2687: of reduce using rule 56 (term -> base_call .) - yacc.py:2687: then reduce using rule 56 (term -> base_call .) - yacc.py:2687: loop reduce using rule 56 (term -> base_call .) - yacc.py:2687: comma reduce using rule 56 (term -> base_call .) - yacc.py:2687: in reduce using rule 56 (term -> base_call .) - yacc.py:2687: else reduce using rule 56 (term -> base_call .) - yacc.py:2687: pool reduce using rule 56 (term -> base_call .) - yacc.py:2687: ccur reduce using rule 56 (term -> base_call .) - yacc.py:2687: fi reduce using rule 56 (term -> base_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 77 - yacc.py:2563: - yacc.py:2565: (59) base_call -> factor . arroba type dot func_call - yacc.py:2565: (60) base_call -> factor . - yacc.py:2565: (62) base_call -> factor . arroba error dot func_call - yacc.py:2565: (65) factor -> factor . dot func_call - yacc.py:2566: - yacc.py:2609: ! shift/reduce conflict for arroba resolved as shift - yacc.py:2666: ! shift/reduce conflict for dot resolved as shift - yacc.py:2687: arroba shift and go to state 121 - yacc.py:2687: star reduce using rule 60 (base_call -> factor .) - yacc.py:2687: div reduce using rule 60 (base_call -> factor .) - yacc.py:2687: plus reduce using rule 60 (base_call -> factor .) - yacc.py:2687: minus reduce using rule 60 (base_call -> factor .) - yacc.py:2687: less reduce using rule 60 (base_call -> factor .) - yacc.py:2687: lesseq reduce using rule 60 (base_call -> factor .) - yacc.py:2687: equal reduce using rule 60 (base_call -> factor .) - yacc.py:2687: semi reduce using rule 60 (base_call -> factor .) - yacc.py:2687: cpar reduce using rule 60 (base_call -> factor .) - yacc.py:2687: of reduce using rule 60 (base_call -> factor .) - yacc.py:2687: then reduce using rule 60 (base_call -> factor .) - yacc.py:2687: loop reduce using rule 60 (base_call -> factor .) - yacc.py:2687: comma reduce using rule 60 (base_call -> factor .) - yacc.py:2687: in reduce using rule 60 (base_call -> factor .) - yacc.py:2687: else reduce using rule 60 (base_call -> factor .) - yacc.py:2687: pool reduce using rule 60 (base_call -> factor .) - yacc.py:2687: ccur reduce using rule 60 (base_call -> factor .) - yacc.py:2687: fi reduce using rule 60 (base_call -> factor .) - yacc.py:2687: dot shift and go to state 122 - yacc.py:2689: - yacc.py:2696: ! arroba [ reduce using rule 60 (base_call -> factor .) ] - yacc.py:2696: ! dot [ reduce using rule 60 (base_call -> factor .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 78 - yacc.py:2563: - yacc.py:2565: (67) factor -> func_call . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 67 (factor -> func_call .) - yacc.py:2687: dot reduce using rule 67 (factor -> func_call .) - yacc.py:2687: star reduce using rule 67 (factor -> func_call .) - yacc.py:2687: div reduce using rule 67 (factor -> func_call .) - yacc.py:2687: plus reduce using rule 67 (factor -> func_call .) - yacc.py:2687: minus reduce using rule 67 (factor -> func_call .) - yacc.py:2687: less reduce using rule 67 (factor -> func_call .) - yacc.py:2687: lesseq reduce using rule 67 (factor -> func_call .) - yacc.py:2687: equal reduce using rule 67 (factor -> func_call .) - yacc.py:2687: semi reduce using rule 67 (factor -> func_call .) - yacc.py:2687: cpar reduce using rule 67 (factor -> func_call .) - yacc.py:2687: of reduce using rule 67 (factor -> func_call .) - yacc.py:2687: then reduce using rule 67 (factor -> func_call .) - yacc.py:2687: loop reduce using rule 67 (factor -> func_call .) - yacc.py:2687: comma reduce using rule 67 (factor -> func_call .) - yacc.py:2687: in reduce using rule 67 (factor -> func_call .) - yacc.py:2687: else reduce using rule 67 (factor -> func_call .) - yacc.py:2687: pool reduce using rule 67 (factor -> func_call .) - yacc.py:2687: ccur reduce using rule 67 (factor -> func_call .) - yacc.py:2687: fi reduce using rule 67 (factor -> func_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 79 - yacc.py:2563: - yacc.py:2565: (63) factor -> atom . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 63 (factor -> atom .) - yacc.py:2687: dot reduce using rule 63 (factor -> atom .) - yacc.py:2687: star reduce using rule 63 (factor -> atom .) - yacc.py:2687: div reduce using rule 63 (factor -> atom .) - yacc.py:2687: plus reduce using rule 63 (factor -> atom .) - yacc.py:2687: minus reduce using rule 63 (factor -> atom .) - yacc.py:2687: less reduce using rule 63 (factor -> atom .) - yacc.py:2687: lesseq reduce using rule 63 (factor -> atom .) - yacc.py:2687: equal reduce using rule 63 (factor -> atom .) - yacc.py:2687: semi reduce using rule 63 (factor -> atom .) - yacc.py:2687: cpar reduce using rule 63 (factor -> atom .) - yacc.py:2687: of reduce using rule 63 (factor -> atom .) - yacc.py:2687: then reduce using rule 63 (factor -> atom .) - yacc.py:2687: loop reduce using rule 63 (factor -> atom .) - yacc.py:2687: comma reduce using rule 63 (factor -> atom .) - yacc.py:2687: in reduce using rule 63 (factor -> atom .) - yacc.py:2687: else reduce using rule 63 (factor -> atom .) - yacc.py:2687: pool reduce using rule 63 (factor -> atom .) - yacc.py:2687: ccur reduce using rule 63 (factor -> atom .) - yacc.py:2687: fi reduce using rule 63 (factor -> atom .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 80 - yacc.py:2563: - yacc.py:2565: (64) factor -> opar . expr cpar - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 123 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 81 - yacc.py:2563: - yacc.py:2565: (66) factor -> not . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 124 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 82 - yacc.py:2563: - yacc.py:2565: (68) factor -> isvoid . base_call - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: base_call shift and go to state 125 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 83 - yacc.py:2563: - yacc.py:2565: (69) factor -> nox . base_call - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: base_call shift and go to state 127 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 84 - yacc.py:2563: - yacc.py:2565: (70) factor -> let . let_list in expr - yacc.py:2565: (36) let_list -> . let_assign - yacc.py:2565: (37) let_list -> . let_assign comma let_list - yacc.py:2565: (38) let_assign -> . param larrow expr - yacc.py:2565: (39) let_assign -> . param - yacc.py:2565: (35) param -> . id colon type - yacc.py:2566: - yacc.py:2687: id shift and go to state 46 - yacc.py:2689: - yacc.py:2714: let_list shift and go to state 128 - yacc.py:2714: let_assign shift and go to state 129 - yacc.py:2714: param shift and go to state 130 - yacc.py:2561: - yacc.py:2562:state 85 - yacc.py:2563: - yacc.py:2565: (71) factor -> case . expr of cases_list esac - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 131 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 86 - yacc.py:2563: - yacc.py:2565: (72) factor -> if . expr then expr else expr fi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 132 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 87 - yacc.py:2563: - yacc.py:2565: (73) factor -> while . expr loop expr pool - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 133 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 88 - yacc.py:2563: - yacc.py:2565: (74) atom -> num . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 74 (atom -> num .) - yacc.py:2687: dot reduce using rule 74 (atom -> num .) - yacc.py:2687: star reduce using rule 74 (atom -> num .) - yacc.py:2687: div reduce using rule 74 (atom -> num .) - yacc.py:2687: plus reduce using rule 74 (atom -> num .) - yacc.py:2687: minus reduce using rule 74 (atom -> num .) - yacc.py:2687: less reduce using rule 74 (atom -> num .) - yacc.py:2687: lesseq reduce using rule 74 (atom -> num .) - yacc.py:2687: equal reduce using rule 74 (atom -> num .) - yacc.py:2687: semi reduce using rule 74 (atom -> num .) - yacc.py:2687: cpar reduce using rule 74 (atom -> num .) - yacc.py:2687: of reduce using rule 74 (atom -> num .) - yacc.py:2687: then reduce using rule 74 (atom -> num .) - yacc.py:2687: loop reduce using rule 74 (atom -> num .) - yacc.py:2687: comma reduce using rule 74 (atom -> num .) - yacc.py:2687: in reduce using rule 74 (atom -> num .) - yacc.py:2687: else reduce using rule 74 (atom -> num .) - yacc.py:2687: pool reduce using rule 74 (atom -> num .) - yacc.py:2687: ccur reduce using rule 74 (atom -> num .) - yacc.py:2687: fi reduce using rule 74 (atom -> num .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 89 - yacc.py:2563: - yacc.py:2565: (76) atom -> new . type - yacc.py:2566: - yacc.py:2687: type shift and go to state 134 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 90 - yacc.py:2563: - yacc.py:2565: (77) atom -> ocur . block ccur - yacc.py:2565: (79) atom -> ocur . error ccur - yacc.py:2565: (80) atom -> ocur . block error - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 136 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: block shift and go to state 135 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 91 - yacc.py:2563: - yacc.py:2565: (81) atom -> true . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 81 (atom -> true .) - yacc.py:2687: dot reduce using rule 81 (atom -> true .) - yacc.py:2687: star reduce using rule 81 (atom -> true .) - yacc.py:2687: div reduce using rule 81 (atom -> true .) - yacc.py:2687: plus reduce using rule 81 (atom -> true .) - yacc.py:2687: minus reduce using rule 81 (atom -> true .) - yacc.py:2687: less reduce using rule 81 (atom -> true .) - yacc.py:2687: lesseq reduce using rule 81 (atom -> true .) - yacc.py:2687: equal reduce using rule 81 (atom -> true .) - yacc.py:2687: semi reduce using rule 81 (atom -> true .) - yacc.py:2687: cpar reduce using rule 81 (atom -> true .) - yacc.py:2687: of reduce using rule 81 (atom -> true .) - yacc.py:2687: then reduce using rule 81 (atom -> true .) - yacc.py:2687: loop reduce using rule 81 (atom -> true .) - yacc.py:2687: comma reduce using rule 81 (atom -> true .) - yacc.py:2687: in reduce using rule 81 (atom -> true .) - yacc.py:2687: else reduce using rule 81 (atom -> true .) - yacc.py:2687: pool reduce using rule 81 (atom -> true .) - yacc.py:2687: ccur reduce using rule 81 (atom -> true .) - yacc.py:2687: fi reduce using rule 81 (atom -> true .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 92 - yacc.py:2563: - yacc.py:2565: (82) atom -> false . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 82 (atom -> false .) - yacc.py:2687: dot reduce using rule 82 (atom -> false .) - yacc.py:2687: star reduce using rule 82 (atom -> false .) - yacc.py:2687: div reduce using rule 82 (atom -> false .) - yacc.py:2687: plus reduce using rule 82 (atom -> false .) - yacc.py:2687: minus reduce using rule 82 (atom -> false .) - yacc.py:2687: less reduce using rule 82 (atom -> false .) - yacc.py:2687: lesseq reduce using rule 82 (atom -> false .) - yacc.py:2687: equal reduce using rule 82 (atom -> false .) - yacc.py:2687: semi reduce using rule 82 (atom -> false .) - yacc.py:2687: cpar reduce using rule 82 (atom -> false .) - yacc.py:2687: of reduce using rule 82 (atom -> false .) - yacc.py:2687: then reduce using rule 82 (atom -> false .) - yacc.py:2687: loop reduce using rule 82 (atom -> false .) - yacc.py:2687: comma reduce using rule 82 (atom -> false .) - yacc.py:2687: in reduce using rule 82 (atom -> false .) - yacc.py:2687: else reduce using rule 82 (atom -> false .) - yacc.py:2687: pool reduce using rule 82 (atom -> false .) - yacc.py:2687: ccur reduce using rule 82 (atom -> false .) - yacc.py:2687: fi reduce using rule 82 (atom -> false .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 93 - yacc.py:2563: - yacc.py:2565: (83) atom -> string . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 83 (atom -> string .) - yacc.py:2687: dot reduce using rule 83 (atom -> string .) - yacc.py:2687: star reduce using rule 83 (atom -> string .) - yacc.py:2687: div reduce using rule 83 (atom -> string .) - yacc.py:2687: plus reduce using rule 83 (atom -> string .) - yacc.py:2687: minus reduce using rule 83 (atom -> string .) - yacc.py:2687: less reduce using rule 83 (atom -> string .) - yacc.py:2687: lesseq reduce using rule 83 (atom -> string .) - yacc.py:2687: equal reduce using rule 83 (atom -> string .) - yacc.py:2687: semi reduce using rule 83 (atom -> string .) - yacc.py:2687: cpar reduce using rule 83 (atom -> string .) - yacc.py:2687: of reduce using rule 83 (atom -> string .) - yacc.py:2687: then reduce using rule 83 (atom -> string .) - yacc.py:2687: loop reduce using rule 83 (atom -> string .) - yacc.py:2687: comma reduce using rule 83 (atom -> string .) - yacc.py:2687: in reduce using rule 83 (atom -> string .) - yacc.py:2687: else reduce using rule 83 (atom -> string .) - yacc.py:2687: pool reduce using rule 83 (atom -> string .) - yacc.py:2687: ccur reduce using rule 83 (atom -> string .) - yacc.py:2687: fi reduce using rule 83 (atom -> string .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 94 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar colon . type ocur expr ccur - yacc.py:2566: - yacc.py:2687: type shift and go to state 137 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 95 - yacc.py:2563: - yacc.py:2565: (33) param_list -> param comma param_list . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 33 (param_list -> param comma param_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 96 - yacc.py:2563: - yacc.py:2565: (35) param -> id colon type . - yacc.py:2566: - yacc.py:2687: comma reduce using rule 35 (param -> id colon type .) - yacc.py:2687: cpar reduce using rule 35 (param -> id colon type .) - yacc.py:2687: larrow reduce using rule 35 (param -> id colon type .) - yacc.py:2687: in reduce using rule 35 (param -> id colon type .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 97 - yacc.py:2563: - yacc.py:2565: (19) def_attr -> id colon type larrow expr . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 19 (def_attr -> id colon type larrow expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 98 - yacc.py:2563: - yacc.py:2565: (24) def_attr -> id colon type larrow error . - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: semi reduce using rule 24 (def_attr -> id colon type larrow error .) - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 99 - yacc.py:2563: - yacc.py:2565: (23) def_attr -> id colon error larrow expr . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 23 (def_attr -> id colon error larrow expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 100 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar colon . type ocur expr ccur - yacc.py:2565: (28) def_func -> id opar formals cpar colon . error ocur expr ccur - yacc.py:2565: (29) def_func -> id opar formals cpar colon . type ocur error ccur - yacc.py:2566: - yacc.py:2687: type shift and go to state 138 - yacc.py:2687: error shift and go to state 139 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 101 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar colon . type ocur expr ccur - yacc.py:2566: - yacc.py:2687: type shift and go to state 140 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 102 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 103 - yacc.py:2563: - yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list ccur error . - yacc.py:2566: - yacc.py:2687: error reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) - yacc.py:2687: class reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) - yacc.py:2687: $end reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 104 - yacc.py:2563: - yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 105 - yacc.py:2563: - yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 106 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 107 - yacc.py:2563: - yacc.py:2565: (86) block -> error . block - yacc.py:2565: (87) block -> error . semi - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: semi shift and go to state 142 - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: block shift and go to state 141 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 108 - yacc.py:2563: - yacc.py:2565: (61) base_call -> error arroba . type dot func_call - yacc.py:2566: - yacc.py:2687: type shift and go to state 143 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 109 - yacc.py:2563: - yacc.py:2565: (78) atom -> error block . ccur - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 144 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 110 - yacc.py:2563: - yacc.py:2565: (90) func_call -> error opar . args cpar - yacc.py:2565: (64) factor -> opar . expr cpar - yacc.py:2565: (91) args -> . arg_list - yacc.py:2565: (92) args -> . arg_list_empty - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (96) arg_list_empty -> . epsilon - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 145 - yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: args shift and go to state 146 - yacc.py:2714: expr shift and go to state 147 - yacc.py:2714: arg_list shift and go to state 148 - yacc.py:2714: arg_list_empty shift and go to state 149 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: epsilon shift and go to state 150 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 111 - yacc.py:2563: - yacc.py:2565: (84) block -> expr . semi - yacc.py:2565: (85) block -> expr . semi block - yacc.py:2566: - yacc.py:2687: semi shift and go to state 151 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 112 - yacc.py:2563: - yacc.py:2565: (45) expr -> id larrow . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 152 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 113 - yacc.py:2563: - yacc.py:2565: (88) func_call -> id opar . args cpar - yacc.py:2565: (89) func_call -> id opar . error cpar - yacc.py:2565: (91) args -> . arg_list - yacc.py:2565: (92) args -> . arg_list_empty - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (96) arg_list_empty -> . epsilon - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 154 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: args shift and go to state 153 - yacc.py:2714: arg_list shift and go to state 148 - yacc.py:2714: arg_list_empty shift and go to state 149 - yacc.py:2714: expr shift and go to state 155 - yacc.py:2714: epsilon shift and go to state 150 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 114 - yacc.py:2563: - yacc.py:2565: (47) comp -> comp less . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: op shift and go to state 156 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 115 - yacc.py:2563: - yacc.py:2565: (48) comp -> comp lesseq . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: op shift and go to state 157 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 116 - yacc.py:2563: - yacc.py:2565: (49) comp -> comp equal . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: op shift and go to state 158 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 117 - yacc.py:2563: - yacc.py:2565: (51) op -> op plus . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: term shift and go to state 159 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 118 - yacc.py:2563: - yacc.py:2565: (52) op -> op minus . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: term shift and go to state 160 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 119 - yacc.py:2563: - yacc.py:2565: (54) term -> term star . base_call - yacc.py:2565: (57) term -> term star . error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 162 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: base_call shift and go to state 161 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 120 - yacc.py:2563: - yacc.py:2565: (55) term -> term div . base_call - yacc.py:2565: (58) term -> term div . error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 164 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: base_call shift and go to state 163 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 121 - yacc.py:2563: - yacc.py:2565: (59) base_call -> factor arroba . type dot func_call - yacc.py:2565: (62) base_call -> factor arroba . error dot func_call - yacc.py:2566: - yacc.py:2687: type shift and go to state 165 - yacc.py:2687: error shift and go to state 166 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 122 - yacc.py:2563: - yacc.py:2565: (65) factor -> factor dot . func_call - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 168 - yacc.py:2687: error shift and go to state 169 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 167 - yacc.py:2561: - yacc.py:2562:state 123 - yacc.py:2563: - yacc.py:2565: (64) factor -> opar expr . cpar - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 170 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 124 - yacc.py:2563: - yacc.py:2565: (66) factor -> not expr . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 66 (factor -> not expr .) - yacc.py:2687: dot reduce using rule 66 (factor -> not expr .) - yacc.py:2687: star reduce using rule 66 (factor -> not expr .) - yacc.py:2687: div reduce using rule 66 (factor -> not expr .) - yacc.py:2687: plus reduce using rule 66 (factor -> not expr .) - yacc.py:2687: minus reduce using rule 66 (factor -> not expr .) - yacc.py:2687: less reduce using rule 66 (factor -> not expr .) - yacc.py:2687: lesseq reduce using rule 66 (factor -> not expr .) - yacc.py:2687: equal reduce using rule 66 (factor -> not expr .) - yacc.py:2687: semi reduce using rule 66 (factor -> not expr .) - yacc.py:2687: cpar reduce using rule 66 (factor -> not expr .) - yacc.py:2687: of reduce using rule 66 (factor -> not expr .) - yacc.py:2687: then reduce using rule 66 (factor -> not expr .) - yacc.py:2687: loop reduce using rule 66 (factor -> not expr .) - yacc.py:2687: comma reduce using rule 66 (factor -> not expr .) - yacc.py:2687: in reduce using rule 66 (factor -> not expr .) - yacc.py:2687: else reduce using rule 66 (factor -> not expr .) - yacc.py:2687: pool reduce using rule 66 (factor -> not expr .) - yacc.py:2687: ccur reduce using rule 66 (factor -> not expr .) - yacc.py:2687: fi reduce using rule 66 (factor -> not expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 125 - yacc.py:2563: - yacc.py:2565: (68) factor -> isvoid base_call . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: dot reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: star reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: div reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: plus reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: minus reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: less reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: lesseq reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: equal reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: semi reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: cpar reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: of reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: then reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: loop reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: comma reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: in reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: else reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: pool reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: ccur reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: fi reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 126 - yacc.py:2563: - yacc.py:2565: (75) atom -> id . - yacc.py:2565: (88) func_call -> id . opar args cpar - yacc.py:2565: (89) func_call -> id . opar error cpar - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 75 (atom -> id .) - yacc.py:2687: dot reduce using rule 75 (atom -> id .) - yacc.py:2687: star reduce using rule 75 (atom -> id .) - yacc.py:2687: div reduce using rule 75 (atom -> id .) - yacc.py:2687: plus reduce using rule 75 (atom -> id .) - yacc.py:2687: minus reduce using rule 75 (atom -> id .) - yacc.py:2687: less reduce using rule 75 (atom -> id .) - yacc.py:2687: lesseq reduce using rule 75 (atom -> id .) - yacc.py:2687: equal reduce using rule 75 (atom -> id .) - yacc.py:2687: semi reduce using rule 75 (atom -> id .) - yacc.py:2687: cpar reduce using rule 75 (atom -> id .) - yacc.py:2687: of reduce using rule 75 (atom -> id .) - yacc.py:2687: then reduce using rule 75 (atom -> id .) - yacc.py:2687: loop reduce using rule 75 (atom -> id .) - yacc.py:2687: comma reduce using rule 75 (atom -> id .) - yacc.py:2687: in reduce using rule 75 (atom -> id .) - yacc.py:2687: else reduce using rule 75 (atom -> id .) - yacc.py:2687: pool reduce using rule 75 (atom -> id .) - yacc.py:2687: ccur reduce using rule 75 (atom -> id .) - yacc.py:2687: fi reduce using rule 75 (atom -> id .) - yacc.py:2687: opar shift and go to state 113 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 127 - yacc.py:2563: - yacc.py:2565: (69) factor -> nox base_call . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: dot reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: star reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: div reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: plus reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: minus reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: less reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: lesseq reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: equal reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: semi reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: cpar reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: of reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: then reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: loop reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: comma reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: in reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: else reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: pool reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: ccur reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: fi reduce using rule 69 (factor -> nox base_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 128 - yacc.py:2563: - yacc.py:2565: (70) factor -> let let_list . in expr - yacc.py:2566: - yacc.py:2687: in shift and go to state 171 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 129 - yacc.py:2563: - yacc.py:2565: (36) let_list -> let_assign . - yacc.py:2565: (37) let_list -> let_assign . comma let_list - yacc.py:2566: - yacc.py:2687: in reduce using rule 36 (let_list -> let_assign .) - yacc.py:2687: comma shift and go to state 172 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 130 - yacc.py:2563: - yacc.py:2565: (38) let_assign -> param . larrow expr - yacc.py:2565: (39) let_assign -> param . - yacc.py:2566: - yacc.py:2687: larrow shift and go to state 173 - yacc.py:2687: comma reduce using rule 39 (let_assign -> param .) - yacc.py:2687: in reduce using rule 39 (let_assign -> param .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 131 - yacc.py:2563: - yacc.py:2565: (71) factor -> case expr . of cases_list esac - yacc.py:2566: - yacc.py:2687: of shift and go to state 174 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 132 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr . then expr else expr fi - yacc.py:2566: - yacc.py:2687: then shift and go to state 175 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 133 - yacc.py:2563: - yacc.py:2565: (73) factor -> while expr . loop expr pool - yacc.py:2566: - yacc.py:2687: loop shift and go to state 176 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 134 - yacc.py:2563: - yacc.py:2565: (76) atom -> new type . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 76 (atom -> new type .) - yacc.py:2687: dot reduce using rule 76 (atom -> new type .) - yacc.py:2687: star reduce using rule 76 (atom -> new type .) - yacc.py:2687: div reduce using rule 76 (atom -> new type .) - yacc.py:2687: plus reduce using rule 76 (atom -> new type .) - yacc.py:2687: minus reduce using rule 76 (atom -> new type .) - yacc.py:2687: less reduce using rule 76 (atom -> new type .) - yacc.py:2687: lesseq reduce using rule 76 (atom -> new type .) - yacc.py:2687: equal reduce using rule 76 (atom -> new type .) - yacc.py:2687: semi reduce using rule 76 (atom -> new type .) - yacc.py:2687: cpar reduce using rule 76 (atom -> new type .) - yacc.py:2687: of reduce using rule 76 (atom -> new type .) - yacc.py:2687: then reduce using rule 76 (atom -> new type .) - yacc.py:2687: loop reduce using rule 76 (atom -> new type .) - yacc.py:2687: comma reduce using rule 76 (atom -> new type .) - yacc.py:2687: in reduce using rule 76 (atom -> new type .) - yacc.py:2687: else reduce using rule 76 (atom -> new type .) - yacc.py:2687: pool reduce using rule 76 (atom -> new type .) - yacc.py:2687: ccur reduce using rule 76 (atom -> new type .) - yacc.py:2687: fi reduce using rule 76 (atom -> new type .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 135 - yacc.py:2563: - yacc.py:2565: (77) atom -> ocur block . ccur - yacc.py:2565: (80) atom -> ocur block . error - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 177 - yacc.py:2687: error shift and go to state 178 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 136 - yacc.py:2563: - yacc.py:2565: (79) atom -> ocur error . ccur - yacc.py:2565: (86) block -> error . block - yacc.py:2565: (87) block -> error . semi - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 179 - yacc.py:2687: semi shift and go to state 142 - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: block shift and go to state 141 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 137 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar colon type . ocur expr ccur - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 180 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 138 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar colon type . ocur expr ccur - yacc.py:2565: (29) def_func -> id opar formals cpar colon type . ocur error ccur - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 181 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 139 - yacc.py:2563: - yacc.py:2565: (28) def_func -> id opar formals cpar colon error . ocur expr ccur - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 182 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 140 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar colon type . ocur expr ccur - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 183 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 141 - yacc.py:2563: - yacc.py:2565: (86) block -> error block . - yacc.py:2565: (78) atom -> error block . ccur - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for ccur resolved as shift - yacc.py:2687: error reduce using rule 86 (block -> error block .) - yacc.py:2687: ccur shift and go to state 144 - yacc.py:2689: - yacc.py:2696: ! ccur [ reduce using rule 86 (block -> error block .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 142 - yacc.py:2563: - yacc.py:2565: (87) block -> error semi . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 87 (block -> error semi .) - yacc.py:2687: error reduce using rule 87 (block -> error semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 143 - yacc.py:2563: - yacc.py:2565: (61) base_call -> error arroba type . dot func_call - yacc.py:2566: - yacc.py:2687: dot shift and go to state 184 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 144 - yacc.py:2563: - yacc.py:2565: (78) atom -> error block ccur . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: dot reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: star reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: div reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: plus reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: minus reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: less reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: lesseq reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: equal reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: semi reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: cpar reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: of reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: then reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: loop reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: comma reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: in reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: else reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: pool reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: ccur reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: fi reduce using rule 78 (atom -> error block ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 145 - yacc.py:2563: - yacc.py:2565: (95) arg_list -> error . arg_list - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 185 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: arg_list shift and go to state 186 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 187 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 146 - yacc.py:2563: - yacc.py:2565: (90) func_call -> error opar args . cpar - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 188 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 147 - yacc.py:2563: - yacc.py:2565: (64) factor -> opar expr . cpar - yacc.py:2565: (93) arg_list -> expr . - yacc.py:2565: (94) arg_list -> expr . comma arg_list - yacc.py:2566: - yacc.py:2609: ! shift/reduce conflict for cpar resolved as shift - yacc.py:2687: cpar shift and go to state 170 - yacc.py:2687: comma shift and go to state 189 - yacc.py:2689: - yacc.py:2696: ! cpar [ reduce using rule 93 (arg_list -> expr .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 148 - yacc.py:2563: - yacc.py:2565: (91) args -> arg_list . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 91 (args -> arg_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 149 - yacc.py:2563: - yacc.py:2565: (92) args -> arg_list_empty . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 92 (args -> arg_list_empty .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 150 - yacc.py:2563: - yacc.py:2565: (96) arg_list_empty -> epsilon . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 96 (arg_list_empty -> epsilon .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 151 - yacc.py:2563: - yacc.py:2565: (84) block -> expr semi . - yacc.py:2565: (85) block -> expr semi . block - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for error resolved as shift - yacc.py:2687: ccur reduce using rule 84 (block -> expr semi .) - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2696: ! error [ reduce using rule 84 (block -> expr semi .) ] - yacc.py:2700: - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: block shift and go to state 190 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 152 - yacc.py:2563: - yacc.py:2565: (45) expr -> id larrow expr . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: cpar reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: arroba reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: dot reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: star reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: div reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: plus reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: minus reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: less reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: lesseq reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: equal reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: of reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: then reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: loop reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: comma reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: in reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: else reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: pool reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: ccur reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: fi reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 153 - yacc.py:2563: - yacc.py:2565: (88) func_call -> id opar args . cpar - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 191 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 154 - yacc.py:2563: - yacc.py:2565: (89) func_call -> id opar error . cpar - yacc.py:2565: (95) arg_list -> error . arg_list - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 192 - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 185 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: arg_list shift and go to state 186 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 187 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 155 - yacc.py:2563: - yacc.py:2565: (93) arg_list -> expr . - yacc.py:2565: (94) arg_list -> expr . comma arg_list - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 93 (arg_list -> expr .) - yacc.py:2687: comma shift and go to state 189 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 156 - yacc.py:2563: - yacc.py:2565: (47) comp -> comp less op . - yacc.py:2565: (51) op -> op . plus term - yacc.py:2565: (52) op -> op . minus term - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for plus resolved as shift - yacc.py:2666: ! shift/reduce conflict for minus resolved as shift - yacc.py:2687: less reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: lesseq reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: equal reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: semi reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: cpar reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: arroba reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: dot reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: star reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: div reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: of reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: then reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: loop reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: comma reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: in reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: else reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: pool reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: ccur reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: fi reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: plus shift and go to state 117 - yacc.py:2687: minus shift and go to state 118 - yacc.py:2689: - yacc.py:2696: ! plus [ reduce using rule 47 (comp -> comp less op .) ] - yacc.py:2696: ! minus [ reduce using rule 47 (comp -> comp less op .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 157 - yacc.py:2563: - yacc.py:2565: (48) comp -> comp lesseq op . - yacc.py:2565: (51) op -> op . plus term - yacc.py:2565: (52) op -> op . minus term - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for plus resolved as shift - yacc.py:2666: ! shift/reduce conflict for minus resolved as shift - yacc.py:2687: less reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: lesseq reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: equal reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: semi reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: cpar reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: arroba reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: dot reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: star reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: div reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: of reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: then reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: loop reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: comma reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: in reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: else reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: pool reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: ccur reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: fi reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: plus shift and go to state 117 - yacc.py:2687: minus shift and go to state 118 - yacc.py:2689: - yacc.py:2696: ! plus [ reduce using rule 48 (comp -> comp lesseq op .) ] - yacc.py:2696: ! minus [ reduce using rule 48 (comp -> comp lesseq op .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 158 - yacc.py:2563: - yacc.py:2565: (49) comp -> comp equal op . - yacc.py:2565: (51) op -> op . plus term - yacc.py:2565: (52) op -> op . minus term - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for plus resolved as shift - yacc.py:2666: ! shift/reduce conflict for minus resolved as shift - yacc.py:2687: less reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: lesseq reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: equal reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: semi reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: cpar reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: arroba reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: dot reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: star reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: div reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: of reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: then reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: loop reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: comma reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: in reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: else reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: pool reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: ccur reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: fi reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: plus shift and go to state 117 - yacc.py:2687: minus shift and go to state 118 - yacc.py:2689: - yacc.py:2696: ! plus [ reduce using rule 49 (comp -> comp equal op .) ] - yacc.py:2696: ! minus [ reduce using rule 49 (comp -> comp equal op .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 159 - yacc.py:2563: - yacc.py:2565: (51) op -> op plus term . - yacc.py:2565: (54) term -> term . star base_call - yacc.py:2565: (55) term -> term . div base_call - yacc.py:2565: (57) term -> term . star error - yacc.py:2565: (58) term -> term . div error - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for star resolved as shift - yacc.py:2666: ! shift/reduce conflict for div resolved as shift - yacc.py:2687: plus reduce using rule 51 (op -> op plus term .) - yacc.py:2687: minus reduce using rule 51 (op -> op plus term .) - yacc.py:2687: less reduce using rule 51 (op -> op plus term .) - yacc.py:2687: lesseq reduce using rule 51 (op -> op plus term .) - yacc.py:2687: equal reduce using rule 51 (op -> op plus term .) - yacc.py:2687: semi reduce using rule 51 (op -> op plus term .) - yacc.py:2687: cpar reduce using rule 51 (op -> op plus term .) - yacc.py:2687: arroba reduce using rule 51 (op -> op plus term .) - yacc.py:2687: dot reduce using rule 51 (op -> op plus term .) - yacc.py:2687: of reduce using rule 51 (op -> op plus term .) - yacc.py:2687: then reduce using rule 51 (op -> op plus term .) - yacc.py:2687: loop reduce using rule 51 (op -> op plus term .) - yacc.py:2687: comma reduce using rule 51 (op -> op plus term .) - yacc.py:2687: in reduce using rule 51 (op -> op plus term .) - yacc.py:2687: else reduce using rule 51 (op -> op plus term .) - yacc.py:2687: pool reduce using rule 51 (op -> op plus term .) - yacc.py:2687: ccur reduce using rule 51 (op -> op plus term .) - yacc.py:2687: fi reduce using rule 51 (op -> op plus term .) - yacc.py:2687: star shift and go to state 119 - yacc.py:2687: div shift and go to state 120 - yacc.py:2689: - yacc.py:2696: ! star [ reduce using rule 51 (op -> op plus term .) ] - yacc.py:2696: ! div [ reduce using rule 51 (op -> op plus term .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 160 - yacc.py:2563: - yacc.py:2565: (52) op -> op minus term . - yacc.py:2565: (54) term -> term . star base_call - yacc.py:2565: (55) term -> term . div base_call - yacc.py:2565: (57) term -> term . star error - yacc.py:2565: (58) term -> term . div error - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for star resolved as shift - yacc.py:2666: ! shift/reduce conflict for div resolved as shift - yacc.py:2687: plus reduce using rule 52 (op -> op minus term .) - yacc.py:2687: minus reduce using rule 52 (op -> op minus term .) - yacc.py:2687: less reduce using rule 52 (op -> op minus term .) - yacc.py:2687: lesseq reduce using rule 52 (op -> op minus term .) - yacc.py:2687: equal reduce using rule 52 (op -> op minus term .) - yacc.py:2687: semi reduce using rule 52 (op -> op minus term .) - yacc.py:2687: cpar reduce using rule 52 (op -> op minus term .) - yacc.py:2687: arroba reduce using rule 52 (op -> op minus term .) - yacc.py:2687: dot reduce using rule 52 (op -> op minus term .) - yacc.py:2687: of reduce using rule 52 (op -> op minus term .) - yacc.py:2687: then reduce using rule 52 (op -> op minus term .) - yacc.py:2687: loop reduce using rule 52 (op -> op minus term .) - yacc.py:2687: comma reduce using rule 52 (op -> op minus term .) - yacc.py:2687: in reduce using rule 52 (op -> op minus term .) - yacc.py:2687: else reduce using rule 52 (op -> op minus term .) - yacc.py:2687: pool reduce using rule 52 (op -> op minus term .) - yacc.py:2687: ccur reduce using rule 52 (op -> op minus term .) - yacc.py:2687: fi reduce using rule 52 (op -> op minus term .) - yacc.py:2687: star shift and go to state 119 - yacc.py:2687: div shift and go to state 120 - yacc.py:2689: - yacc.py:2696: ! star [ reduce using rule 52 (op -> op minus term .) ] - yacc.py:2696: ! div [ reduce using rule 52 (op -> op minus term .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 161 - yacc.py:2563: - yacc.py:2565: (54) term -> term star base_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: div reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: plus reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: minus reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: less reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: lesseq reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: equal reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: semi reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: cpar reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: arroba reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: dot reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: of reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: then reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: loop reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: comma reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: in reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: else reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: pool reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: ccur reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: fi reduce using rule 54 (term -> term star base_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 162 - yacc.py:2563: - yacc.py:2565: (57) term -> term star error . - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for arroba resolved as shift - yacc.py:2687: star reduce using rule 57 (term -> term star error .) - yacc.py:2687: div reduce using rule 57 (term -> term star error .) - yacc.py:2687: plus reduce using rule 57 (term -> term star error .) - yacc.py:2687: minus reduce using rule 57 (term -> term star error .) - yacc.py:2687: less reduce using rule 57 (term -> term star error .) - yacc.py:2687: lesseq reduce using rule 57 (term -> term star error .) - yacc.py:2687: equal reduce using rule 57 (term -> term star error .) - yacc.py:2687: semi reduce using rule 57 (term -> term star error .) - yacc.py:2687: cpar reduce using rule 57 (term -> term star error .) - yacc.py:2687: dot reduce using rule 57 (term -> term star error .) - yacc.py:2687: of reduce using rule 57 (term -> term star error .) - yacc.py:2687: then reduce using rule 57 (term -> term star error .) - yacc.py:2687: loop reduce using rule 57 (term -> term star error .) - yacc.py:2687: comma reduce using rule 57 (term -> term star error .) - yacc.py:2687: in reduce using rule 57 (term -> term star error .) - yacc.py:2687: else reduce using rule 57 (term -> term star error .) - yacc.py:2687: pool reduce using rule 57 (term -> term star error .) - yacc.py:2687: ccur reduce using rule 57 (term -> term star error .) - yacc.py:2687: fi reduce using rule 57 (term -> term star error .) - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2696: ! arroba [ reduce using rule 57 (term -> term star error .) ] - yacc.py:2700: - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 163 - yacc.py:2563: - yacc.py:2565: (55) term -> term div base_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: div reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: plus reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: minus reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: less reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: lesseq reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: equal reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: semi reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: cpar reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: arroba reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: dot reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: of reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: then reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: loop reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: comma reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: in reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: else reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: pool reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: ccur reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: fi reduce using rule 55 (term -> term div base_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 164 - yacc.py:2563: - yacc.py:2565: (58) term -> term div error . - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for arroba resolved as shift - yacc.py:2687: star reduce using rule 58 (term -> term div error .) - yacc.py:2687: div reduce using rule 58 (term -> term div error .) - yacc.py:2687: plus reduce using rule 58 (term -> term div error .) - yacc.py:2687: minus reduce using rule 58 (term -> term div error .) - yacc.py:2687: less reduce using rule 58 (term -> term div error .) - yacc.py:2687: lesseq reduce using rule 58 (term -> term div error .) - yacc.py:2687: equal reduce using rule 58 (term -> term div error .) - yacc.py:2687: semi reduce using rule 58 (term -> term div error .) - yacc.py:2687: cpar reduce using rule 58 (term -> term div error .) - yacc.py:2687: dot reduce using rule 58 (term -> term div error .) - yacc.py:2687: of reduce using rule 58 (term -> term div error .) - yacc.py:2687: then reduce using rule 58 (term -> term div error .) - yacc.py:2687: loop reduce using rule 58 (term -> term div error .) - yacc.py:2687: comma reduce using rule 58 (term -> term div error .) - yacc.py:2687: in reduce using rule 58 (term -> term div error .) - yacc.py:2687: else reduce using rule 58 (term -> term div error .) - yacc.py:2687: pool reduce using rule 58 (term -> term div error .) - yacc.py:2687: ccur reduce using rule 58 (term -> term div error .) - yacc.py:2687: fi reduce using rule 58 (term -> term div error .) - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2696: ! arroba [ reduce using rule 58 (term -> term div error .) ] - yacc.py:2700: - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 165 - yacc.py:2563: - yacc.py:2565: (59) base_call -> factor arroba type . dot func_call - yacc.py:2566: - yacc.py:2687: dot shift and go to state 193 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 166 - yacc.py:2563: - yacc.py:2565: (62) base_call -> factor arroba error . dot func_call - yacc.py:2566: - yacc.py:2687: dot shift and go to state 194 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 167 - yacc.py:2563: - yacc.py:2565: (65) factor -> factor dot func_call . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: dot reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: star reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: div reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: plus reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: minus reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: less reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: lesseq reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: equal reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: semi reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: cpar reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: of reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: then reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: loop reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: comma reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: in reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: else reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: pool reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: ccur reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: fi reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 168 - yacc.py:2563: - yacc.py:2565: (88) func_call -> id . opar args cpar - yacc.py:2565: (89) func_call -> id . opar error cpar - yacc.py:2566: - yacc.py:2687: opar shift and go to state 113 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 169 - yacc.py:2563: - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2566: - yacc.py:2687: opar shift and go to state 195 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 170 - yacc.py:2563: - yacc.py:2565: (64) factor -> opar expr cpar . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: dot reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: star reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: div reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: plus reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: minus reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: less reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: lesseq reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: equal reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: semi reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: cpar reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: of reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: then reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: loop reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: comma reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: in reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: else reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: pool reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: ccur reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: fi reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 171 - yacc.py:2563: - yacc.py:2565: (70) factor -> let let_list in . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 196 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 172 - yacc.py:2563: - yacc.py:2565: (37) let_list -> let_assign comma . let_list - yacc.py:2565: (36) let_list -> . let_assign - yacc.py:2565: (37) let_list -> . let_assign comma let_list - yacc.py:2565: (38) let_assign -> . param larrow expr - yacc.py:2565: (39) let_assign -> . param - yacc.py:2565: (35) param -> . id colon type - yacc.py:2566: - yacc.py:2687: id shift and go to state 46 - yacc.py:2689: - yacc.py:2714: let_assign shift and go to state 129 - yacc.py:2714: let_list shift and go to state 197 - yacc.py:2714: param shift and go to state 130 - yacc.py:2561: - yacc.py:2562:state 173 - yacc.py:2563: - yacc.py:2565: (38) let_assign -> param larrow . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 198 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 174 - yacc.py:2563: - yacc.py:2565: (71) factor -> case expr of . cases_list esac - yacc.py:2565: (40) cases_list -> . casep semi - yacc.py:2565: (41) cases_list -> . casep semi cases_list - yacc.py:2565: (42) cases_list -> . error cases_list - yacc.py:2565: (43) cases_list -> . error semi - yacc.py:2565: (44) casep -> . id colon type rarrow expr - yacc.py:2566: - yacc.py:2687: error shift and go to state 201 - yacc.py:2687: id shift and go to state 202 - yacc.py:2689: - yacc.py:2714: cases_list shift and go to state 199 - yacc.py:2714: casep shift and go to state 200 - yacc.py:2561: - yacc.py:2562:state 175 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr then . expr else expr fi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 203 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 176 - yacc.py:2563: - yacc.py:2565: (73) factor -> while expr loop . expr pool - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 204 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 177 - yacc.py:2563: - yacc.py:2565: (77) atom -> ocur block ccur . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: dot reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: star reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: div reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: plus reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: minus reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: less reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: lesseq reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: equal reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: semi reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: cpar reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: of reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: then reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: loop reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: comma reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: in reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: else reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: pool reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: ccur reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: fi reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 178 - yacc.py:2563: - yacc.py:2565: (80) atom -> ocur block error . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: dot reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: star reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: div reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: plus reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: minus reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: less reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: lesseq reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: equal reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: semi reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: cpar reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: of reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: then reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: loop reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: comma reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: in reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: else reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: pool reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: ccur reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: fi reduce using rule 80 (atom -> ocur block error .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 179 - yacc.py:2563: - yacc.py:2565: (79) atom -> ocur error ccur . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: dot reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: star reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: div reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: plus reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: minus reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: less reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: lesseq reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: equal reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: semi reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: cpar reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: of reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: then reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: loop reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: comma reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: in reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: else reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: pool reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: ccur reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: fi reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 180 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur . expr ccur - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 205 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 181 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur . expr ccur - yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur . error ccur - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 207 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 206 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 182 - yacc.py:2563: - yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur . expr ccur - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 208 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 183 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur . expr ccur - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 209 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 184 - yacc.py:2563: - yacc.py:2565: (61) base_call -> error arroba type dot . func_call - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 168 - yacc.py:2687: error shift and go to state 169 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 210 - yacc.py:2561: - yacc.py:2562:state 185 - yacc.py:2563: - yacc.py:2565: (95) arg_list -> error . arg_list - yacc.py:2565: (86) block -> error . block - yacc.py:2565: (87) block -> error . semi - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: semi shift and go to state 142 - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 185 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: arg_list shift and go to state 186 - yacc.py:2714: block shift and go to state 141 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: expr shift and go to state 187 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 186 - yacc.py:2563: - yacc.py:2565: (95) arg_list -> error arg_list . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 95 (arg_list -> error arg_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 187 - yacc.py:2563: - yacc.py:2565: (93) arg_list -> expr . - yacc.py:2565: (94) arg_list -> expr . comma arg_list - yacc.py:2565: (84) block -> expr . semi - yacc.py:2565: (85) block -> expr . semi block - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 93 (arg_list -> expr .) - yacc.py:2687: comma shift and go to state 189 - yacc.py:2687: semi shift and go to state 151 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 188 - yacc.py:2563: - yacc.py:2565: (90) func_call -> error opar args cpar . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: dot reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: star reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: div reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: plus reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: minus reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: less reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: lesseq reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: equal reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: semi reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: cpar reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: of reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: then reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: loop reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: comma reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: in reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: else reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: pool reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: ccur reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: fi reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 189 - yacc.py:2563: - yacc.py:2565: (94) arg_list -> expr comma . arg_list - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 145 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 155 - yacc.py:2714: arg_list shift and go to state 211 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 190 - yacc.py:2563: - yacc.py:2565: (85) block -> expr semi block . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 85 (block -> expr semi block .) - yacc.py:2687: error reduce using rule 85 (block -> expr semi block .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 191 - yacc.py:2563: - yacc.py:2565: (88) func_call -> id opar args cpar . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: dot reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: star reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: div reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: plus reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: minus reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: less reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: lesseq reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: equal reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: semi reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: cpar reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: of reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: then reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: loop reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: comma reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: in reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: else reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: pool reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: ccur reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: fi reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 192 - yacc.py:2563: - yacc.py:2565: (89) func_call -> id opar error cpar . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: dot reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: star reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: div reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: plus reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: minus reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: less reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: lesseq reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: equal reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: semi reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: cpar reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: of reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: then reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: loop reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: comma reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: in reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: else reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: pool reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: ccur reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: fi reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 193 - yacc.py:2563: - yacc.py:2565: (59) base_call -> factor arroba type dot . func_call - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 168 - yacc.py:2687: error shift and go to state 169 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 212 - yacc.py:2561: - yacc.py:2562:state 194 - yacc.py:2563: - yacc.py:2565: (62) base_call -> factor arroba error dot . func_call - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 168 - yacc.py:2687: error shift and go to state 169 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 213 - yacc.py:2561: - yacc.py:2562:state 195 - yacc.py:2563: - yacc.py:2565: (90) func_call -> error opar . args cpar - yacc.py:2565: (91) args -> . arg_list - yacc.py:2565: (92) args -> . arg_list_empty - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (96) arg_list_empty -> . epsilon - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 145 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: args shift and go to state 146 - yacc.py:2714: arg_list shift and go to state 148 - yacc.py:2714: arg_list_empty shift and go to state 149 - yacc.py:2714: expr shift and go to state 155 - yacc.py:2714: epsilon shift and go to state 150 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 196 - yacc.py:2563: - yacc.py:2565: (70) factor -> let let_list in expr . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: dot reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: star reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: div reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: plus reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: minus reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: less reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: lesseq reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: equal reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: semi reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: cpar reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: of reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: then reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: loop reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: comma reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: in reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: else reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: pool reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: ccur reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: fi reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 197 - yacc.py:2563: - yacc.py:2565: (37) let_list -> let_assign comma let_list . - yacc.py:2566: - yacc.py:2687: in reduce using rule 37 (let_list -> let_assign comma let_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 198 - yacc.py:2563: - yacc.py:2565: (38) let_assign -> param larrow expr . - yacc.py:2566: - yacc.py:2687: comma reduce using rule 38 (let_assign -> param larrow expr .) - yacc.py:2687: in reduce using rule 38 (let_assign -> param larrow expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 199 - yacc.py:2563: - yacc.py:2565: (71) factor -> case expr of cases_list . esac - yacc.py:2566: - yacc.py:2687: esac shift and go to state 214 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 200 - yacc.py:2563: - yacc.py:2565: (40) cases_list -> casep . semi - yacc.py:2565: (41) cases_list -> casep . semi cases_list - yacc.py:2566: - yacc.py:2687: semi shift and go to state 215 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 201 - yacc.py:2563: - yacc.py:2565: (42) cases_list -> error . cases_list - yacc.py:2565: (43) cases_list -> error . semi - yacc.py:2565: (40) cases_list -> . casep semi - yacc.py:2565: (41) cases_list -> . casep semi cases_list - yacc.py:2565: (42) cases_list -> . error cases_list - yacc.py:2565: (43) cases_list -> . error semi - yacc.py:2565: (44) casep -> . id colon type rarrow expr - yacc.py:2566: - yacc.py:2687: semi shift and go to state 217 - yacc.py:2687: error shift and go to state 201 - yacc.py:2687: id shift and go to state 202 - yacc.py:2689: - yacc.py:2714: cases_list shift and go to state 216 - yacc.py:2714: casep shift and go to state 200 - yacc.py:2561: - yacc.py:2562:state 202 - yacc.py:2563: - yacc.py:2565: (44) casep -> id . colon type rarrow expr - yacc.py:2566: - yacc.py:2687: colon shift and go to state 218 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 203 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr then expr . else expr fi - yacc.py:2566: - yacc.py:2687: else shift and go to state 219 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 204 - yacc.py:2563: - yacc.py:2565: (73) factor -> while expr loop expr . pool - yacc.py:2566: - yacc.py:2687: pool shift and go to state 220 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 205 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur expr . ccur - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 221 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 206 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur expr . ccur - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 222 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 207 - yacc.py:2563: - yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur error . ccur - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 223 - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 208 - yacc.py:2563: - yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur expr . ccur - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 224 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 209 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur expr . ccur - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 225 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 210 - yacc.py:2563: - yacc.py:2565: (61) base_call -> error arroba type dot func_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: div reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: plus reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: minus reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: less reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: lesseq reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: equal reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: semi reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: cpar reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: arroba reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: dot reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: of reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: then reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: loop reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: comma reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: in reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: else reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: pool reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: ccur reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: fi reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 211 - yacc.py:2563: - yacc.py:2565: (94) arg_list -> expr comma arg_list . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 94 (arg_list -> expr comma arg_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 212 - yacc.py:2563: - yacc.py:2565: (59) base_call -> factor arroba type dot func_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: div reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: plus reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: minus reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: less reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: lesseq reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: equal reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: semi reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: cpar reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: arroba reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: dot reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: of reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: then reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: loop reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: comma reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: in reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: else reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: pool reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: ccur reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: fi reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 213 - yacc.py:2563: - yacc.py:2565: (62) base_call -> factor arroba error dot func_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: div reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: plus reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: minus reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: less reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: lesseq reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: equal reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: semi reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: cpar reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: arroba reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: dot reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: of reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: then reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: loop reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: comma reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: in reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: else reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: pool reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: ccur reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: fi reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 214 - yacc.py:2563: - yacc.py:2565: (71) factor -> case expr of cases_list esac . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: dot reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: star reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: div reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: plus reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: minus reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: less reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: lesseq reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: equal reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: semi reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: cpar reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: of reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: then reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: loop reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: comma reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: in reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: else reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: pool reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: ccur reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: fi reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 215 - yacc.py:2563: - yacc.py:2565: (40) cases_list -> casep semi . - yacc.py:2565: (41) cases_list -> casep semi . cases_list - yacc.py:2565: (40) cases_list -> . casep semi - yacc.py:2565: (41) cases_list -> . casep semi cases_list - yacc.py:2565: (42) cases_list -> . error cases_list - yacc.py:2565: (43) cases_list -> . error semi - yacc.py:2565: (44) casep -> . id colon type rarrow expr - yacc.py:2566: - yacc.py:2687: esac reduce using rule 40 (cases_list -> casep semi .) - yacc.py:2687: error shift and go to state 201 - yacc.py:2687: id shift and go to state 202 - yacc.py:2689: - yacc.py:2714: casep shift and go to state 200 - yacc.py:2714: cases_list shift and go to state 226 - yacc.py:2561: - yacc.py:2562:state 216 - yacc.py:2563: - yacc.py:2565: (42) cases_list -> error cases_list . - yacc.py:2566: - yacc.py:2687: esac reduce using rule 42 (cases_list -> error cases_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 217 - yacc.py:2563: - yacc.py:2565: (43) cases_list -> error semi . - yacc.py:2566: - yacc.py:2687: esac reduce using rule 43 (cases_list -> error semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 218 - yacc.py:2563: - yacc.py:2565: (44) casep -> id colon . type rarrow expr - yacc.py:2566: - yacc.py:2687: type shift and go to state 227 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 219 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr then expr else . expr fi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 228 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 220 - yacc.py:2563: - yacc.py:2565: (73) factor -> while expr loop expr pool . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: dot reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: star reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: div reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: plus reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: minus reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: less reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: lesseq reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: equal reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: semi reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: cpar reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: of reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: then reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: loop reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: comma reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: in reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: else reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: pool reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: ccur reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: fi reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 221 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur expr ccur . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 26 (def_func -> error opar formals cpar colon type ocur expr ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 222 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur expr ccur . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 25 (def_func -> id opar formals cpar colon type ocur expr ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 223 - yacc.py:2563: - yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur error ccur . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 29 (def_func -> id opar formals cpar colon type ocur error ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 224 - yacc.py:2563: - yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur expr ccur . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 28 (def_func -> id opar formals cpar colon error ocur expr ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 225 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur expr ccur . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 27 (def_func -> id opar error cpar colon type ocur expr ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 226 - yacc.py:2563: - yacc.py:2565: (41) cases_list -> casep semi cases_list . - yacc.py:2566: - yacc.py:2687: esac reduce using rule 41 (cases_list -> casep semi cases_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 227 - yacc.py:2563: - yacc.py:2565: (44) casep -> id colon type . rarrow expr - yacc.py:2566: - yacc.py:2687: rarrow shift and go to state 229 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 228 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr then expr else expr . fi - yacc.py:2566: - yacc.py:2687: fi shift and go to state 230 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 229 - yacc.py:2563: - yacc.py:2565: (44) casep -> id colon type rarrow . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 231 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 230 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr then expr else expr fi . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: dot reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: star reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: div reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: plus reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: minus reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: less reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: lesseq reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: equal reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: semi reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: cpar reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: of reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: then reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: loop reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: comma reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: in reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: else reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: pool reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: ccur reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: fi reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 231 - yacc.py:2563: - yacc.py:2565: (44) casep -> id colon type rarrow expr . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 44 (casep -> id colon type rarrow expr .) - yacc.py:2689: - yacc.py:3447:24 shift/reduce conflicts - yacc.py:3457: - yacc.py:3458:Conflicts: - yacc.py:3459: - yacc.py:3462:shift/reduce conflict for less in state 73 resolved as shift - yacc.py:3462:shift/reduce conflict for lesseq in state 73 resolved as shift - yacc.py:3462:shift/reduce conflict for equal in state 73 resolved as shift - yacc.py:3462:shift/reduce conflict for plus in state 74 resolved as shift - yacc.py:3462:shift/reduce conflict for minus in state 74 resolved as shift - yacc.py:3462:shift/reduce conflict for star in state 75 resolved as shift - yacc.py:3462:shift/reduce conflict for div in state 75 resolved as shift - yacc.py:3462:shift/reduce conflict for arroba in state 77 resolved as shift - yacc.py:3462:shift/reduce conflict for dot in state 77 resolved as shift - yacc.py:3462:shift/reduce conflict for ccur in state 141 resolved as shift - yacc.py:3462:shift/reduce conflict for cpar in state 147 resolved as shift - yacc.py:3462:shift/reduce conflict for error in state 151 resolved as shift - yacc.py:3462:shift/reduce conflict for plus in state 156 resolved as shift - yacc.py:3462:shift/reduce conflict for minus in state 156 resolved as shift - yacc.py:3462:shift/reduce conflict for plus in state 157 resolved as shift - yacc.py:3462:shift/reduce conflict for minus in state 157 resolved as shift - yacc.py:3462:shift/reduce conflict for plus in state 158 resolved as shift - yacc.py:3462:shift/reduce conflict for minus in state 158 resolved as shift - yacc.py:3462:shift/reduce conflict for star in state 159 resolved as shift - yacc.py:3462:shift/reduce conflict for div in state 159 resolved as shift - yacc.py:3462:shift/reduce conflict for star in state 160 resolved as shift - yacc.py:3462:shift/reduce conflict for div in state 160 resolved as shift - yacc.py:3462:shift/reduce conflict for arroba in state 162 resolved as shift - yacc.py:3462:shift/reduce conflict for arroba in state 164 resolved as shift - yacc.py:3488:Couldn't create 'cool.parser.parsetab'. [Errno 2] No such file or directory: 'parser/output/parsetab.py' - yacc.py: 362:PLY: PARSE DEBUG START - yacc.py: 410: - yacc.py: 411:State : 0 - yacc.py: 434:Stack : . LexToken(class,'class',3,134) - yacc.py: 445:Action : Shift and goto state 5 - yacc.py: 410: - yacc.py: 411:State : 5 - yacc.py: 434:Stack : class . LexToken(type,'Main',3,140) - yacc.py: 445:Action : Shift and goto state 8 - yacc.py: 410: - yacc.py: 411:State : 8 - yacc.py: 434:Stack : class type . LexToken(ocur,'{',3,145) - yacc.py: 445:Action : Shift and goto state 10 - yacc.py: 410: - yacc.py: 411:State : 10 - yacc.py: 434:Stack : class type ocur . LexToken(id,'main',4,151) - yacc.py: 445:Action : Shift and goto state 19 - yacc.py: 410: - yacc.py: 411:State : 19 - yacc.py: 434:Stack : class type ocur id . LexToken(opar,'(',4,155) - yacc.py: 445:Action : Shift and goto state 32 - yacc.py: 410: - yacc.py: 411:State : 32 - yacc.py: 434:Stack : class type ocur id opar . LexToken(cpar,')',4,156) - yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : class type ocur id opar epsilon . LexToken(cpar,')',4,156) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : class type ocur id opar param_list_empty . LexToken(cpar,')',4,156) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : class type ocur id opar formals . LexToken(cpar,')',4,156) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : class type ocur id opar formals cpar . LexToken(colon,':',4,157) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon . LexToken(type,'Object',4,159) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type . LexToken(ocur,'{',4,166) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur . LexToken(opar,'(',5,176) - yacc.py: 445:Action : Shift and goto state 80 - yacc.py: 410: - yacc.py: 411:State : 80 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar . LexToken(new,'new',5,177) - yacc.py: 445:Action : Shift and goto state 89 - yacc.py: 410: - yacc.py: 411:State : 89 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar new . LexToken(type,'Alpha',5,181) - yacc.py: 445:Action : Shift and goto state 134 - yacc.py: 410: - yacc.py: 411:State : 134 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar new type . LexToken(cpar,')',5,186) - yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','Alpha'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 123 - yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 - yacc.py: 506:Result : ( ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar epsilon . LexToken(cpar,')',5,194) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar arg_list_empty . LexToken(cpar,')',5,194) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args . LexToken(cpar,')',5,194) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args cpar . LexToken(ccur,'}',6,200) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['print','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'print',5,188), [])) - yacc.py: 410: - yacc.py: 411:State : 167 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot func_call . LexToken(ccur,'}',6,200) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','Object','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 16 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 16 - yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : class type ocur def_func semi epsilon . LexToken(ccur,'}',7,203) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 48 - yacc.py: 430:Defaulted state 48: Reduce using 16 - yacc.py: 434:Stack : class type ocur def_func semi feature_list . LexToken(ccur,'}',7,203) - yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 14 - yacc.py: 506:Result : ([ class type ocur feature_list ccur semi] with ['class','Main','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( id colon type] with ['test1',':','Object'] and goto state 17 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar epsilon . LexToken(cpar,')',12,257) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar param_list_empty . LexToken(cpar,')',12,257) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals . LexToken(cpar,')',12,257) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar . LexToken(colon,':',12,258) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon . LexToken(type,'Int',12,260) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',12,264) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type ocur . LexToken(num,2.0,13,274) - yacc.py: 445:Action : Shift and goto state 88 - yacc.py: 410: - yacc.py: 411:State : 88 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',13,276) - yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing1','(',[],')',':','Int','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( num] with [1.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( id colon type larrow expr] with ['test2',':','Int','<-',] and goto state 17 - yacc.py: 506:Result : ( string] with ['1'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( id colon type larrow expr] with ['test3',':','String','<-',] and goto state 17 - yacc.py: 506:Result : ( id colon type] with ['a',':','Alpha'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'a',20,350), LexToken(type, ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param . LexToken(comma,',',20,358) - yacc.py: 445:Action : Shift and goto state 60 - yacc.py: 410: - yacc.py: 411:State : 60 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma . LexToken(id,'b',20,360) - yacc.py: 445:Action : Shift and goto state 46 - yacc.py: 410: - yacc.py: 411:State : 46 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id . LexToken(colon,':',20,361) - yacc.py: 445:Action : Shift and goto state 61 - yacc.py: 410: - yacc.py: 411:State : 61 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id colon . LexToken(type,'Int',20,363) - yacc.py: 445:Action : Shift and goto state 96 - yacc.py: 410: - yacc.py: 411:State : 96 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id colon type . LexToken(cpar,')',20,366) - yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['b',':','Int'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'b',20,360), LexToken(type, ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param . LexToken(cpar,')',20,366) - yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 - yacc.py: 506:Result : ([(LexToken(id,'b',20,360), LexToken(type ...) - yacc.py: 410: - yacc.py: 411:State : 95 - yacc.py: 430:Defaulted state 95: Reduce using 33 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param_list . LexToken(cpar,')',20,366) - yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 - yacc.py: 506:Result : ([(LexToken(id,'a',20,350), LexToken(type ...) - yacc.py: 410: - yacc.py: 411:State : 42 - yacc.py: 430:Defaulted state 42: Reduce using 30 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param_list . LexToken(cpar,')',20,366) - yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 - yacc.py: 506:Result : ([(LexToken(id,'a',20,350), LexToken(type ...) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals . LexToken(cpar,')',20,366) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar . LexToken(colon,':',20,367) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon . LexToken(type,'Int',20,369) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',20,373) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur . LexToken(num,2.0,21,383) - yacc.py: 445:Action : Shift and goto state 88 - yacc.py: 410: - yacc.py: 411:State : 88 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',21,385) - yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing2','(',,')',':','Int','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar epsilon . LexToken(cpar,')',24,410) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar param_list_empty . LexToken(cpar,')',24,410) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals . LexToken(cpar,')',24,410) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar . LexToken(colon,':',24,411) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon . LexToken(type,'String',24,413) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',24,420) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur . LexToken(string,'2 + 2',25,436) - yacc.py: 445:Action : Shift and goto state 93 - yacc.py: 410: - yacc.py: 411:State : 93 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur string . LexToken(ccur,'}',26,442) - yacc.py: 469:Action : Reduce rule [atom -> string] with ['2 + 2'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing3','(',[],')',':','String','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id colon type] with ['x',':','Int'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'x',28,459), LexToken(type, ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param . LexToken(comma,',',28,465) - yacc.py: 445:Action : Shift and goto state 60 - yacc.py: 410: - yacc.py: 411:State : 60 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param comma . LexToken(id,'y',28,467) - yacc.py: 445:Action : Shift and goto state 46 - yacc.py: 410: - yacc.py: 411:State : 46 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param comma id . LexToken(colon,':',28,468) - yacc.py: 445:Action : Shift and goto state 61 - yacc.py: 410: - yacc.py: 411:State : 61 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param comma id colon . LexToken(type,'Int',28,470) - yacc.py: 445:Action : Shift and goto state 96 - yacc.py: 410: - yacc.py: 411:State : 96 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param comma id colon type . LexToken(cpar,')',28,473) - yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['y',':','Int'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'y',28,467), LexToken(type, ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param comma param . LexToken(cpar,')',28,473) - yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 - yacc.py: 506:Result : ([(LexToken(id,'y',28,467), LexToken(type ...) - yacc.py: 410: - yacc.py: 411:State : 95 - yacc.py: 430:Defaulted state 95: Reduce using 33 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param comma param_list . LexToken(cpar,')',28,473) - yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 - yacc.py: 506:Result : ([(LexToken(id,'x',28,459), LexToken(type ...) - yacc.py: 410: - yacc.py: 411:State : 42 - yacc.py: 430:Defaulted state 42: Reduce using 30 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param_list . LexToken(cpar,')',28,473) - yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 - yacc.py: 506:Result : ([(LexToken(id,'x',28,459), LexToken(type ...) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals . LexToken(cpar,')',28,473) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',28,474) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'Test',28,476) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',28,481) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(id,'self',29,491) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur id . LexToken(ccur,'}',30,500) - yacc.py: 469:Action : Reduce rule [atom -> id] with ['self'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing4','(',,')',':','Test','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 16 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 16 - yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi def_func semi epsilon . LexToken(ccur,'}',31,503) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 48 - yacc.py: 430:Defaulted state 48: Reduce using 16 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi def_func semi feature_list . LexToken(ccur,'}',31,503) - yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 48 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 48 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 47 - yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 47 - yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 48 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 47 - yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 14 - yacc.py: 506:Result : ([ class type ocur feature_list ccur semi] with ['class','Test','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( new type] with ['new','Test'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( id colon type larrow expr] with ['test1',':','Test','<-',] and goto state 17 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi id opar epsilon . LexToken(cpar,')',36,564) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi id opar param_list_empty . LexToken(cpar,')',36,564) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi id opar formals . LexToken(cpar,')',36,564) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi id opar formals cpar . LexToken(colon,':',36,565) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi id opar formals cpar colon . LexToken(type,'Test',36,567) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',36,572) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur . LexToken(id,'test1',37,582) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur id . LexToken(dot,'.',37,587) - yacc.py: 469:Action : Reduce rule [atom -> id] with ['test1'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( num] with [1.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( num] with [1.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( num] with [1.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 211 - yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['testing4','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'testing4',37,588), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( num] with [3.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( num] with [3.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( num] with [5.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 211 - yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['testing4','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'testing4',37,611), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( num] with [5.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( num] with [8.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( num] with [8.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( num] with [13.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 211 - yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['testing4','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'testing4',37,634), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing1','(',[],')',':','Test','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id colon type] with ['x',':','Int'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'x',40,679), LexToken(type, ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar param . LexToken(comma,',',40,685) - yacc.py: 445:Action : Shift and goto state 60 - yacc.py: 410: - yacc.py: 411:State : 60 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar param comma . LexToken(id,'y',40,687) - yacc.py: 445:Action : Shift and goto state 46 - yacc.py: 410: - yacc.py: 411:State : 46 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar param comma id . LexToken(colon,':',40,688) - yacc.py: 445:Action : Shift and goto state 61 - yacc.py: 410: - yacc.py: 411:State : 61 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar param comma id colon . LexToken(type,'Int',40,690) - yacc.py: 445:Action : Shift and goto state 96 - yacc.py: 410: - yacc.py: 411:State : 96 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar param comma id colon type . LexToken(cpar,')',40,693) - yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['y',':','Int'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'y',40,687), LexToken(type, ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar param comma param . LexToken(cpar,')',40,693) - yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 - yacc.py: 506:Result : ([(LexToken(id,'y',40,687), LexToken(type ...) - yacc.py: 410: - yacc.py: 411:State : 95 - yacc.py: 430:Defaulted state 95: Reduce using 33 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar param comma param_list . LexToken(cpar,')',40,693) - yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 - yacc.py: 506:Result : ([(LexToken(id,'x',40,679), LexToken(type ...) - yacc.py: 410: - yacc.py: 411:State : 42 - yacc.py: 430:Defaulted state 42: Reduce using 30 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar param_list . LexToken(cpar,')',40,693) - yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 - yacc.py: 506:Result : ([(LexToken(id,'x',40,679), LexToken(type ...) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar formals . LexToken(cpar,')',40,693) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar formals cpar . LexToken(colon,':',40,694) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar formals cpar colon . LexToken(type,'Test2',40,696) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',40,702) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar formals cpar colon type ocur . LexToken(id,'self',41,712) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi id opar formals cpar colon type ocur id . LexToken(ccur,'}',42,721) - yacc.py: 469:Action : Reduce rule [atom -> id] with ['self'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing2','(',,')',':','Test2','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',44,738) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',44,738) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar formals . LexToken(cpar,')',44,738) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',44,739) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'Test2',44,741) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',44,747) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(id,'testing2',45,757) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur id . LexToken(opar,'(',45,765) - yacc.py: 445:Action : Shift and goto state 113 - yacc.py: 410: - yacc.py: 411:State : 113 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur id opar . LexToken(num,1.0,45,766) - yacc.py: 445:Action : Shift and goto state 88 - yacc.py: 410: - yacc.py: 411:State : 88 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur id opar num . LexToken(plus,'+',45,768) - yacc.py: 469:Action : Reduce rule [atom -> num] with [1.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( num] with [1.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( num] with [1.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 211 - yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['testing2','(',,')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'testing2',45,757), [ func_call] with [] and goto state 77 - yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( num] with [3.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( num] with [3.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( num] with [5.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 211 - yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['testing2','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'testing2',45,780), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( num] with [5.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( num] with [8.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( true] with ['true'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( false] with ['fALSE'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 211 - yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['testing2','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'testing2',45,803), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing3','(',[],')',':','Test2','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',48,854) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',48,854) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi def_func semi id opar formals . LexToken(cpar,')',48,854) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',48,855) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'Object',48,857) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',48,864) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(id,'test1',49,874) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class def_class class type ocur def_attr semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur id . LexToken(arroba,'@',49,879) - yacc.py: 469:Action : Reduce rule [atom -> id] with ['test1'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( Date: Tue, 12 Oct 2021 14:49:36 -0400 Subject: [PATCH 19/44] fix(lexer): remove print tokens --- src/cool/__init__.py | 2 +- src/cool/code.cl | 121 ++++++++++++++++++++++++++++++++++++- src/cool/lexer/lexer.py | 96 +++++++++++++++-------------- src/cool/parser/parser.py | 111 +++++++++++++--------------------- src/cool/utils/__init__.py | 2 +- 5 files changed, 212 insertions(+), 120 deletions(-) diff --git a/src/cool/__init__.py b/src/cool/__init__.py index 882a6b38a..121babf04 100644 --- a/src/cool/__init__.py +++ b/src/cool/__init__.py @@ -1,2 +1,2 @@ from .utils import * -from .lexer import * \ No newline at end of file +from .lexer import * diff --git a/src/cool/code.cl b/src/cool/code.cl index 8e5cf617f..e64a9060f 100644 --- a/src/cool/code.cl +++ b/src/cool/code.cl @@ -1 +1,120 @@ -(* A Cool program can't be empty *) \ No newline at end of file +(* Integers, Identifiers, and Special Notation *) + +0007 123 +1 -1 +90 -09 +11113 -4r *a *self* c++ +class Class if then else fi testing Testing ~007agent_bond james_007bones___ + + +new / <- <<==> {( Int: Objet, Bool; String.string SELF_TYPE isvoid }) +loop pool while tRuE or noT faLsE let in case of ESAC + +factorial(5) = 120, 2 + 2 = 5? or E = mc2; p + 1 resto p = 1: (@ for x in range(len(b))) + +(* +#3 INT_CONST 0007 +#3 INT_CONST 123 +#3 '+' +#3 INT_CONST 1 +#3 '-' +#3 INT_CONST 1 +#3 '+' +#3 INT_CONST 90 +#3 '-' +#3 INT_CONST 09 +#3 '+' +#3 INT_CONST 11113 +#3 '-' +#3 INT_CONST 4 +#3 OBJECTID r +#3 '*' +#3 OBJECTID a +#3 '*' +#3 OBJECTID self +#3 '*' +#3 OBJECTID c +#3 '+' +#3 '+' +#4 CLASS +#4 CLASS +#4 IF +#4 THEN +#4 ELSE +#4 FI +#4 OBJECTID testing +#4 TYPEID Testing +#4 '~' +#4 INT_CONST 007 +#4 OBJECTID agent_bond +#4 OBJECTID james_007bones___ +#7 NEW +#7 '/' +#7 ASSIGN +#7 '<' +#7 LE +#7 DARROW +#7 '{' +#7 '(' +#7 TYPEID Int +#7 ':' +#7 TYPEID Objet +#7 ',' +#7 TYPEID Bool +#7 ';' +#7 TYPEID String +#7 '.' +#7 OBJECTID string +#7 TYPEID SELF_TYPE +#7 ISVOID +#7 '}' +#7 ')' +#8 LOOP +#8 POOL +#8 WHILE +#8 BOOL_CONST true +#8 OBJECTID or +#8 NOT +#8 BOOL_CONST false +#8 LET +#8 IN +#8 CASE +#8 OF +#8 ESAC +#10 OBJECTID factorial +#10 '(' +#10 INT_CONST 5 +#10 ')' +#10 '=' +#10 INT_CONST 120 +#10 ',' +#10 INT_CONST 2 +#10 '+' +#10 INT_CONST 2 +#10 '=' +#10 INT_CONST 5 +#10 ERROR "?" +#10 OBJECTID or +#10 TYPEID E +#10 '=' +#10 OBJECTID mc2 +#10 ';' +#10 OBJECTID p +#10 '+' +#10 INT_CONST 1 +#10 OBJECTID resto +#10 OBJECTID p +#10 '=' +#10 INT_CONST 1 +#10 ':' +#10 '(' +#10 '@' +#10 OBJECTID for +#10 OBJECTID x +#10 IN +#10 OBJECTID range +#10 '(' +#10 OBJECTID len +#10 '(' +#10 OBJECTID b +#10 ')' +#10 ')' +#10 ')' +*) diff --git a/src/cool/lexer/lexer.py b/src/cool/lexer/lexer.py index 4a69d633a..673059d70 100644 --- a/src/cool/lexer/lexer.py +++ b/src/cool/lexer/lexer.py @@ -15,10 +15,10 @@ def __init__(self, **kwargs): self.lexer = lex.lex(self, **kwargs) self.lexer.lineno = 1 self.lexer.linestart = 0 - + def updateColumn(self, t): t.column = t.lexpos - t.lexer.linestart + 1 - + states = ( ('comments', 'exclusive'), ('strings', 'exclusive') @@ -28,9 +28,9 @@ def updateColumn(self, t): def t_comment(self, t): r'--.*($|\n)' t.lexer.lineno += 1 - t.lexer.linestart = t.lexer.lexpos + t.lexer.linestart = t.lexer.lexpos - def t_comments(self,t): + def t_comments(self, t): r'\(\*' t.lexer.level = 1 t.lexer.begin('comments') @@ -38,7 +38,7 @@ def t_comments(self,t): def t_comments_open(self, t): r'\(\*' t.lexer.level += 1 - + def t_comments_close(self, t): r'\*\)' t.lexer.level -= 1 @@ -59,9 +59,9 @@ def t_comments_error(self, t): def t_comments_eof(self, t): self.updateColumn(t) if t.lexer.level > 0: - error_text = errors.LexicographicError.EOF_COMMENT + error_text = errors.LexicographicError.EOF_COMMENT self.errors.append(errors.LexicographicError(error_text, t.lineno, t.column)) - + # Strings t_strings_ignore = '' @@ -76,21 +76,21 @@ def t_strings_end(self, t): r'\"' self.updateColumn(t) - if t.lexer.backslash : + if t.lexer.backslash: t.lexer.myString += '"' t.lexer.backslash = False else: - t.value = t.lexer.myString + t.value = t.lexer.myString t.type = 'string' - t.lexer.begin('INITIAL') + t.lexer.begin('INITIAL') return t def t_strings_newline(self, t): r'\n' t.lexer.lineno += 1 self.updateColumn(t) - - t.lexer.linestart = t.lexer.lexpos + + t.lexer.linestart = t.lexer.lexpos if not t.lexer.backslash: error_text = errors.LexicographicError.UNDETERMINED_STRING @@ -101,36 +101,36 @@ def t_strings_nill(self, t): r'\0' error_text = errors.LexicographicError.NULL_STRING self.updateColumn(t) - + self.errors.append(errors.LexicographicError(error_text, t.lineno, t.column)) def t_strings_consume(self, t): r'[^\n]' - if t.lexer.backslash : + if t.lexer.backslash: if t.value in ['b', 't', 'f', 'n', '\\']: t.lexer.myString += f'\{t.value}' - else: - t.lexer.myString += t.value + else: + t.lexer.myString += t.value t.lexer.backslash = False else: if t.value != '\\': t.lexer.myString += t.value else: - t.lexer.backslash = True + t.lexer.backslash = True def t_strings_error(self, t): pass def t_strings_eof(self, t): self.updateColumn(t) - + error_text = errors.LexicographicError.EOF_STRING self.errors.append(errors.LexicographicError(error_text, t.lineno, t.column)) - + t_ignore = ' \t\f\r\t\v' - + def t_semi(self, t): r';' self.updateColumn(t) @@ -150,32 +150,32 @@ def t_dot(self, t): r'\.' self.updateColumn(t) return t - + def t_opar(self, t): r'\(' self.updateColumn(t) return t - + def t_cpar(self, t): r'\)' self.updateColumn(t) return t - + def t_ocur(self, t): r'\{' self.updateColumn(t) return t - + def t_ccur(self, t): r'\}' self.updateColumn(t) return t - + def t_larrow(self, t): r'<-' self.updateColumn(t) return t - + def t_arroba(self, t): r'@' self.updateColumn(t) @@ -190,47 +190,47 @@ def t_nox(self, t): r'~' self.updateColumn(t) return t - + def t_equal(self, t): r'=' self.updateColumn(t) return t - + def t_plus(self, t): r'\+' self.updateColumn(t) return t - + def t_of(self, t): r'of' self.updateColumn(t) return t - + def t_minus(self, t): r'-' self.updateColumn(t) return t - + def t_star(self, t): r'\*' self.updateColumn(t) return t - + def t_div(self, t): r'/' self.updateColumn(t) return t - + def t_lesseq(self, t): r'<=' self.updateColumn(t) return t - + def t_less(self, t): r'<' self.updateColumn(t) return t - + def t_inherits(self, t): r'inherits' self.updateColumn(t) @@ -260,36 +260,38 @@ def t_num(self, t): def t_newline(self, t): r'\n+' t.lexer.lineno += len(t.value) - t.lexer.linestart = t.lexer.lexpos + t.lexer.linestart = t.lexer.lexpos + + # Error handling rule - # Error handling rule def t_error(self, t): self.updateColumn(t) error_text = errors.LexicographicError.UNKNOWN_TOKEN % t.value[0] - + self.errors.append(errors.LexicographicError(error_text, t.lineno, t.column)) - #print(f'Report Error {len(self.errors)} {self.errors[0]}') + # print(f'Report Error {len(self.errors)} {self.errors[0]}') t.lexer.skip(1) - #t.lexer.skip(len(t.value)) - + # t.lexer.skip(len(t.value)) + def tokenize(self, text: str) -> List[Token]: self.lexer.input(text) tokens: List[Token] = [] for t in self.lexer: tokens.append(Token(t.type, t.value, t.lineno, t.column)) - + return tokens -def main(text: str, output = None): + +def main(text: str, output=None): lexer = CoolLexer() # print(f'Path: {input}') a = lexer.tokenize(text) - - for i in a: - print(i) + + # for i in a: + # print(i) if lexer.errors: for e in lexer.errors: @@ -297,7 +299,7 @@ def main(text: str, output = None): raise Exception() return lexer - + if __name__ == '__main__': main() diff --git a/src/cool/parser/parser.py b/src/cool/parser/parser.py index d7b7be671..57d8a1137 100644 --- a/src/cool/parser/parser.py +++ b/src/cool/parser/parser.py @@ -9,27 +9,27 @@ class Parser: - def __init__(self, lexer = None): + def __init__(self, lexer=None): self.lexer = lexer if lexer else CoolLexer() self.outputdir = 'parser/output' self.tokens = tokens self.errors = False - self.parser = yacc.yacc(start = 'program', - module = self, - outputdir = self.outputdir, - optimize = 1, - debuglog = log, - errorlog = log) - - - def parse(self, program, debug = False): + self.parser = yacc.yacc(start='program', + module=self, + outputdir=self.outputdir, + optimize=1, + debuglog=log, + errorlog=log) + + def parse(self, program, debug=False): self.errors = False - return self.parser.parse(program, self.lexer.lexer, debug = log) + return self.parser.parse(program, self.lexer.lexer, debug=log) + class CoolParser(Parser): def p_program(self, p): 'program : class_list' - + p[0] = ProgramNode(p[1]) def p_class_list(self, p): @@ -37,25 +37,22 @@ def p_class_list(self, p): | def_class''' p[0] = [p[1]] if len(p) == 2 else [p[1]] + p[2] - + def p_class_list_error(self, p): 'class_list : error class_list' p[0] = [p[1]] if len(p) == 2 else [p[1]] + p[2] - def p_epsilon(self, p): 'epsilon :' pass - def p_def_class(self, p): '''def_class : class type ocur feature_list ccur semi | class type inherits type ocur feature_list ccur semi''' p[0] = ClassDeclarationNode(p.slice[2], p[4]) if len(p) == 7 else \ - ClassDeclarationNode(p.slice[2], p[6], p.slice[4]) - + ClassDeclarationNode(p.slice[2], p[6], p.slice[4]) def p_def_class_error(self, p): '''def_class : class error ocur feature_list ccur semi @@ -67,7 +64,6 @@ def p_def_class_error(self, p): p[0] = ErrorNode() - def p_feature_list(self, p): '''feature_list : epsilon | def_attr semi feature_list @@ -75,19 +71,17 @@ def p_feature_list(self, p): p[0] = [] if len(p) == 2 else [p[1]] + p[3] - def p_feature_list_error(self, p): 'feature_list : error feature_list' p[0] = [p[1]] + p[2] - def p_def_attr(self, p): '''def_attr : id colon type | id colon type larrow expr''' p[0] = AttrDeclarationNode(p.slice[1], p.slice[3]) if len(p) == 4 else \ - AttrDeclarationNode(p.slice[1], p.slice[3], p[5]) + AttrDeclarationNode(p.slice[1], p.slice[3], p[5]) def p_def_attr_error(self, p): '''def_attr : error colon type @@ -95,13 +89,12 @@ def p_def_attr_error(self, p): | error colon type larrow expr | id colon error larrow expr | id colon type larrow error''' - - p[0] = ErrorNode() + p[0] = ErrorNode() def p_def_func(self, p): 'def_func : id opar formals cpar colon type ocur expr ccur' - + p[0] = FuncDeclarationNode(p.slice[1], p[3], p.slice[6], p[8]) def p_def_func_error(self, p): @@ -112,31 +105,27 @@ def p_def_func_error(self, p): p[0] = ErrorNode() - def p_formals(self, p): '''formals : param_list | param_list_empty''' p[0] = p[1] - def p_param_list(self, p): '''param_list : param | param comma param_list''' p[0] = [p[1]] if len(p) == 2 else [p[1]] + p[3] - def p_param_list_empty(self, p): 'param_list_empty : epsilon' - + p[0] = [] def p_param(self, p): 'param : id colon type' - - p[0] = (p.slice[1], p.slice[3]) + p[0] = (p.slice[1], p.slice[3]) def p_let_list(self, p): '''let_list : let_assign @@ -148,9 +137,8 @@ def p_let_assign(self, p): '''let_assign : param larrow expr | param''' - p[0] = VarDeclarationNode(p[1][0], p[1][1]) if len(p) == 2 else\ - VarDeclarationNode(p[1][0], p[1][1], p[3]) - + p[0] = VarDeclarationNode(p[1][0], p[1][1]) if len(p) == 2 else \ + VarDeclarationNode(p[1][0], p[1][1], p[3]) def p_cases_list(self, p): '''cases_list : casep semi @@ -166,9 +154,8 @@ def p_cases_list_error(self, p): def p_case(self, p): 'casep : id colon type rarrow expr' - - p[0] = OptionNode(p.slice[1], p.slice[3], p[5]) + p[0] = OptionNode(p.slice[1], p.slice[3], p[5]) def p_expr(self, p): '''expr : id larrow expr @@ -176,7 +163,6 @@ def p_expr(self, p): p[0] = AssignNode(p.slice[1], p[3]) if len(p) == 4 else p[1] - def p_comp(self, p): '''comp : comp less op | comp lesseq op @@ -203,7 +189,7 @@ def p_op(self, p): p[0] = PlusNode(p[1], p[3]) elif p[2] == '-': p[0] = MinusNode(p[1], p[3]) - + def p_term(self, p): '''term : term star base_call | term div base_call @@ -213,16 +199,14 @@ def p_term(self, p): p[0] = p[1] elif p[2] == '*': p[0] = StarNode(p[1], p[3]) - elif p[2] == '/': + elif p[2] == '/': p[0] = DivNode(p[1], p[3]) - def p_term_error(self, p): '''term : term star error | term div error''' p[0] = ErrorNode() - def p_base_call(self, p): '''base_call : factor arroba type dot func_call @@ -230,19 +214,18 @@ def p_base_call(self, p): p[0] = p[1] if len(p) == 2 else BaseCallNode(p[1], p.slice[3], *p[5]) - def p_base_call_error(self, p): '''base_call : error arroba type dot func_call | factor arroba error dot func_call''' p[0] = ErrorNode() - def p_factor1(self, p): + def p_factor1(self, p): '''factor : atom | opar expr cpar''' p[0] = p[1] if len(p) == 2 else p[2] - + def p_factor2(self, p): '''factor : factor dot func_call | not expr @@ -261,39 +244,34 @@ def p_factor3(self, p): p[0] = IsVoidNode(p[2], p.slice[1]) if p[1] == 'isvoid' else BinaryNotNode(p[2], p.slice[1]) - def p_expr_let(self, p): 'factor : let let_list in expr' - - p[0] = LetNode(p[2], p[4], p.slice[1]) + p[0] = LetNode(p[2], p[4], p.slice[1]) def p_expr_case(self, p): 'factor : case expr of cases_list esac' - - p[0] = CaseNode(p[2], p[4], p.slice[1]) + p[0] = CaseNode(p[2], p[4], p.slice[1]) def p_expr_if(self, p): 'factor : if expr then expr else expr fi' - - p[0] = ConditionalNode(p[2], p[4], p[6], p.slice[1]) + p[0] = ConditionalNode(p[2], p[4], p[6], p.slice[1]) def p_expr_while(self, p): 'factor : while expr loop expr pool' - - p[0] = WhileNode(p[2], p[4], p.slice[1]) + p[0] = WhileNode(p[2], p[4], p.slice[1]) def p_atom_num(self, p): 'atom : num' - + p[0] = ConstantNumNode(p.slice[1]) - + def p_atom_id(self, p): 'atom : id' - + p[0] = VariableNode(p.slice[1]) def p_atom_new(self, p): @@ -321,11 +299,10 @@ def p_atom_boolean(self, p): def p_atom_string(self, p): 'atom : string' - - p[0] = ConstantStrNode(p.slice[1]) + p[0] = ConstantStrNode(p.slice[1]) - def p_block(self, p): + def p_block(self, p): '''block : expr semi | expr semi block''' @@ -337,10 +314,9 @@ def p_block_error(self, p): p[0] = [ErrorNode()] - def p_func_call(self, p): 'func_call : id opar args cpar' - + p[0] = (p.slice[1], p[3]) def p_func_call_error(self, p): @@ -349,32 +325,28 @@ def p_func_call_error(self, p): p[0] = (ErrorNode(), ErrorNode()) - - def p_args(self, p): + def p_args(self, p): '''args : arg_list | arg_list_empty''' p[0] = p[1] - def p_arg_list(self, p): '''arg_list : expr | expr comma arg_list''' p[0] = [p[1]] if len(p) == 2 else \ - [p[1]] + p[3] - + [p[1]] + p[3] def p_arg_list_error(self, p): 'arg_list : error arg_list' - + p[0] = [ErrorNode()] def p_arg_list_empty(self, p): 'arg_list_empty : epsilon' - - p[0] = [] + p[0] = [] def p_error(self, p): self.errors = True @@ -388,8 +360,7 @@ def p_error(self, p): raise Exception() - def print_error(self, tok): + def print_error(self, tok): error_text = SyntacticError.ERROR % tok.value line, column = tok.lineno, tok.column print(SyntacticError(error_text, line, column)) - diff --git a/src/cool/utils/__init__.py b/src/cool/utils/__init__.py index 1d87120b9..8f02134fb 100644 --- a/src/cool/utils/__init__.py +++ b/src/cool/utils/__init__.py @@ -1,4 +1,4 @@ from .ast import * from .tokens import * from .visitor import * -from .errors import * \ No newline at end of file +from .errors import * From 49717182fe43fd49981091f26a4b4d62602116ec Mon Sep 17 00:00:00 2001 From: JCH97 Date: Sun, 17 Oct 2021 22:24:30 -0400 Subject: [PATCH 20/44] fix(parser): test commit --- src/__main__.py | 24 ++++-- src/cool/code.cl | 121 +-------------------------- src/cool/lexer/__init__.py | 2 +- src/cool/lexer/lexer.py | 2 +- src/cool/parser/__init__.py | 2 +- src/cool/parser/output/parsetab.py | 126 +++++++++++++++++++++++++++++ src/cool/parser/parser.py | 12 +-- src/cool/utils/logger.py | 31 ++++--- src/coolc.sh | 2 +- 9 files changed, 170 insertions(+), 152 deletions(-) diff --git a/src/__main__.py b/src/__main__.py index 161049525..a91c85801 100644 --- a/src/__main__.py +++ b/src/__main__.py @@ -1,12 +1,17 @@ import sys from pathlib import Path -from cool.lexer import CoolLexer, main -from cool.parser import CoolParser +from src.cool.lexer import CoolLexer, main +from src.cool.parser.parser import CoolParser +from src.cool.utils.errors import SyntacticError if __name__ == '__main__': # print(f'Argv: {sys.argv} ') - _in = sys.argv[1] if len(sys.argv) > 1 else f'{Path.cwd()}/src/cool/code.cl' + + # path: str = f"{Path.cwd()}/cool/code.cl" # debug mode + path: str = f"{Path.cwd()}/src/cool/code.cl" # normal mode + + _in = sys.argv[1] if len(sys.argv) > 1 else path _out = sys.argv[2] if len(sys.argv) > 2 else None text: str = '' @@ -16,12 +21,19 @@ lexer = main(text, _out) + tokens = lexer.tokenize(text) + + if len(tokens) == 0: + error_text = SyntacticError.ERROR % 'EOF' + print(SyntacticError(error_text, 0, 0)) + raise Exception() + # print(lexer) - lexer.lexer.lineno = 1 - lexer.lexer.linestart = 0 + # lexer.lexer.lineno = 1 + # lexer.lexer.linestart = 0 - parser = CoolParser() + parser = CoolParser(lexer) result = parser.parse(text) # print(result) diff --git a/src/cool/code.cl b/src/cool/code.cl index e64a9060f..8e5cf617f 100644 --- a/src/cool/code.cl +++ b/src/cool/code.cl @@ -1,120 +1 @@ -(* Integers, Identifiers, and Special Notation *) - -0007 123 +1 -1 +90 -09 +11113 -4r *a *self* c++ -class Class if then else fi testing Testing ~007agent_bond james_007bones___ - - -new / <- <<==> {( Int: Objet, Bool; String.string SELF_TYPE isvoid }) -loop pool while tRuE or noT faLsE let in case of ESAC - -factorial(5) = 120, 2 + 2 = 5? or E = mc2; p + 1 resto p = 1: (@ for x in range(len(b))) - -(* -#3 INT_CONST 0007 -#3 INT_CONST 123 -#3 '+' -#3 INT_CONST 1 -#3 '-' -#3 INT_CONST 1 -#3 '+' -#3 INT_CONST 90 -#3 '-' -#3 INT_CONST 09 -#3 '+' -#3 INT_CONST 11113 -#3 '-' -#3 INT_CONST 4 -#3 OBJECTID r -#3 '*' -#3 OBJECTID a -#3 '*' -#3 OBJECTID self -#3 '*' -#3 OBJECTID c -#3 '+' -#3 '+' -#4 CLASS -#4 CLASS -#4 IF -#4 THEN -#4 ELSE -#4 FI -#4 OBJECTID testing -#4 TYPEID Testing -#4 '~' -#4 INT_CONST 007 -#4 OBJECTID agent_bond -#4 OBJECTID james_007bones___ -#7 NEW -#7 '/' -#7 ASSIGN -#7 '<' -#7 LE -#7 DARROW -#7 '{' -#7 '(' -#7 TYPEID Int -#7 ':' -#7 TYPEID Objet -#7 ',' -#7 TYPEID Bool -#7 ';' -#7 TYPEID String -#7 '.' -#7 OBJECTID string -#7 TYPEID SELF_TYPE -#7 ISVOID -#7 '}' -#7 ')' -#8 LOOP -#8 POOL -#8 WHILE -#8 BOOL_CONST true -#8 OBJECTID or -#8 NOT -#8 BOOL_CONST false -#8 LET -#8 IN -#8 CASE -#8 OF -#8 ESAC -#10 OBJECTID factorial -#10 '(' -#10 INT_CONST 5 -#10 ')' -#10 '=' -#10 INT_CONST 120 -#10 ',' -#10 INT_CONST 2 -#10 '+' -#10 INT_CONST 2 -#10 '=' -#10 INT_CONST 5 -#10 ERROR "?" -#10 OBJECTID or -#10 TYPEID E -#10 '=' -#10 OBJECTID mc2 -#10 ';' -#10 OBJECTID p -#10 '+' -#10 INT_CONST 1 -#10 OBJECTID resto -#10 OBJECTID p -#10 '=' -#10 INT_CONST 1 -#10 ':' -#10 '(' -#10 '@' -#10 OBJECTID for -#10 OBJECTID x -#10 IN -#10 OBJECTID range -#10 '(' -#10 OBJECTID len -#10 '(' -#10 OBJECTID b -#10 ')' -#10 ')' -#10 ')' -*) +(* A Cool program can't be empty *) \ No newline at end of file diff --git a/src/cool/lexer/__init__.py b/src/cool/lexer/__init__.py index 193ee3c3e..df84368f5 100644 --- a/src/cool/lexer/__init__.py +++ b/src/cool/lexer/__init__.py @@ -1 +1 @@ -from .lexer import * \ No newline at end of file +from .lexer import * diff --git a/src/cool/lexer/lexer.py b/src/cool/lexer/lexer.py index 673059d70..250b6f21c 100644 --- a/src/cool/lexer/lexer.py +++ b/src/cool/lexer/lexer.py @@ -4,7 +4,7 @@ import ply.lex as lex -from ..utils import Token, errors, ignored, literals, reservedKeywords, tokens +from src.cool.utils import Token, errors, ignored, literals, reservedKeywords, tokens class CoolLexer: diff --git a/src/cool/parser/__init__.py b/src/cool/parser/__init__.py index 8c76936af..2a0224cb8 100644 --- a/src/cool/parser/__init__.py +++ b/src/cool/parser/__init__.py @@ -1 +1 @@ -from .parser import * \ No newline at end of file +from src.cool.parser import * diff --git a/src/cool/parser/output/parsetab.py b/src/cool/parser/output/parsetab.py index e69de29bb..bae5bc43e 100644 --- a/src/cool/parser/output/parsetab.py +++ b/src/cool/parser/output/parsetab.py @@ -0,0 +1,126 @@ + +# parsetab.py +# This file is automatically generated. Do not edit. +# pylint: disable=W,C,R +_tabversion = '3.10' + +_lr_method = 'LALR' + +_lr_signature = 'programarroba case ccur class colon comma cpar div dot else equal esac false fi id if in inherits isvoid larrow less lesseq let loop minus new not nox num ocur of opar plus pool rarrow semi star string then true type whileprogram : class_listclass_list : def_class class_list\n | def_classclass_list : error class_listepsilon :def_class : class type ocur feature_list ccur semi \n | class type inherits type ocur feature_list ccur semidef_class : class error ocur feature_list ccur semi \n | class type ocur feature_list ccur error \n | class error inherits type ocur feature_list ccur semi\n | class error inherits error ocur feature_list ccur semi\n | class type inherits error ocur feature_list ccur semi\n | class type inherits type ocur feature_list ccur errorfeature_list : epsilon\n | def_attr semi feature_list\n | def_func semi feature_listfeature_list : error feature_listdef_attr : id colon type\n | id colon type larrow exprdef_attr : error colon type\n | id colon error\n | error colon type larrow expr\n | id colon error larrow expr\n | id colon type larrow errordef_func : id opar formals cpar colon type ocur expr ccurdef_func : error opar formals cpar colon type ocur expr ccur\n | id opar error cpar colon type ocur expr ccur\n | id opar formals cpar colon error ocur expr ccur\n | id opar formals cpar colon type ocur error ccurformals : param_list\n | param_list_emptyparam_list : param\n | param comma param_listparam_list_empty : epsilonparam : id colon typelet_list : let_assign\n | let_assign comma let_listlet_assign : param larrow expr\n | paramcases_list : casep semi\n | casep semi cases_listcases_list : error cases_list\n | error semicasep : id colon type rarrow exprexpr : id larrow expr\n | compcomp : comp less op\n | comp lesseq op\n | comp equal op\n | opop : op plus term\n | op minus term\n | termterm : term star base_call\n | term div base_call\n | base_callterm : term star error\n | term div errorbase_call : factor arroba type dot func_call\n | factorbase_call : error arroba type dot func_call\n | factor arroba error dot func_callfactor : atom\n | opar expr cparfactor : factor dot func_call\n | not expr\n | func_callfactor : isvoid base_call\n | nox base_callfactor : let let_list in exprfactor : case expr of cases_list esacfactor : if expr then expr else expr fifactor : while expr loop expr poolatom : numatom : idatom : new typeatom : ocur block ccuratom : error block ccur\n | ocur error ccur\n | ocur block erroratom : true\n | falseatom : stringblock : expr semi\n | expr semi blockblock : error block\n | error semifunc_call : id opar args cparfunc_call : id opar error cpar\n | error opar args cparargs : arg_list\n | arg_list_emptyarg_list : expr \n | expr comma arg_listarg_list : error arg_listarg_list_empty : epsilon' + +_lr_action_items = {'error':([0,3,4,5,10,11,12,13,15,25,29,30,31,32,33,34,36,37,38,39,55,58,62,63,66,70,80,81,82,83,85,86,87,90,98,100,102,103,104,105,106,107,110,112,113,114,115,116,117,118,119,120,121,122,135,136,141,142,145,151,154,162,164,171,173,174,175,176,180,181,182,183,184,185,189,190,193,194,195,201,207,215,219,229,],[4,4,4,9,15,21,15,23,15,39,15,15,50,52,15,15,15,15,-6,-9,-8,70,98,70,103,107,70,70,70,70,70,70,70,136,107,139,-7,-13,-12,-11,-10,107,145,70,154,70,70,70,70,70,162,164,166,169,178,107,-86,-87,185,107,185,107,107,70,70,201,70,70,70,207,70,70,169,185,145,-85,169,169,145,201,107,201,70,70,]),'class':([0,3,4,38,39,55,102,103,104,105,106,],[5,5,5,-6,-9,-8,-7,-13,-12,-11,-10,]),'$end':([1,2,3,6,7,38,39,55,102,103,104,105,106,],[0,-1,-3,-2,-4,-6,-9,-8,-7,-13,-12,-11,-10,]),'type':([5,11,13,27,31,61,89,94,100,101,108,121,218,],[8,20,24,40,49,96,134,137,138,140,143,165,227,]),'ocur':([8,9,20,21,23,24,58,62,63,70,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,136,137,138,139,140,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[10,12,33,34,36,37,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,180,181,182,183,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,]),'inherits':([8,9,],[11,13,]),'ccur':([10,12,14,15,16,22,26,29,30,33,34,36,37,47,48,53,54,56,57,72,73,74,75,76,77,78,79,88,91,92,93,109,124,125,126,127,134,135,136,141,142,144,151,152,156,157,158,159,160,161,162,163,164,167,170,177,178,179,188,190,191,192,196,205,206,207,208,209,210,212,213,214,220,230,],[-5,-5,25,-5,-14,35,-17,-5,-5,-5,-5,-5,-5,-15,-16,66,67,68,69,-75,-46,-50,-53,-56,-60,-67,-63,-74,-81,-82,-83,144,-66,-68,-75,-69,-76,177,179,144,-87,-78,-84,-45,-47,-48,-49,-51,-52,-54,-57,-55,-58,-65,-64,-77,-80,-79,-90,-85,-88,-89,-70,221,222,223,224,225,-61,-59,-62,-71,-73,-72,]),'id':([10,12,15,28,29,30,32,33,34,36,37,58,60,62,63,70,80,81,82,83,84,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,122,136,145,151,154,162,164,171,172,173,174,175,176,180,181,182,183,184,185,189,193,194,195,201,207,215,219,229,],[19,19,19,46,19,19,46,19,19,19,19,72,46,72,72,72,72,72,126,126,46,72,72,72,72,72,72,72,72,72,126,126,126,126,126,126,126,168,72,72,72,72,72,72,72,46,72,202,72,72,72,72,72,72,168,72,72,168,168,72,202,72,202,72,72,]),'colon':([15,19,46,59,64,65,202,],[27,31,61,94,100,101,218,]),'opar':([15,19,58,62,63,70,72,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,126,136,145,151,154,162,164,168,169,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[28,32,80,80,80,110,113,80,80,80,80,80,80,80,80,110,110,80,80,80,80,80,80,80,80,80,80,113,110,110,80,110,110,110,113,195,80,80,80,80,80,80,80,80,110,80,80,110,80,80,]),'semi':([17,18,25,35,40,49,50,66,67,68,69,71,72,73,74,75,76,77,78,79,88,91,92,93,97,98,99,107,111,124,125,126,127,134,136,144,152,156,157,158,159,160,161,162,163,164,167,170,177,178,179,185,187,188,191,192,196,200,201,210,212,213,214,220,221,222,223,224,225,230,231,],[29,30,38,55,-20,-18,-21,102,104,105,106,-22,-75,-46,-50,-53,-56,-60,-67,-63,-74,-81,-82,-83,-19,-24,-23,142,151,-66,-68,-75,-69,-76,142,-78,-45,-47,-48,-49,-51,-52,-54,-57,-55,-58,-65,-64,-77,-80,-79,142,151,-90,-88,-89,-70,215,217,-61,-59,-62,-71,-73,-26,-25,-29,-28,-27,-72,-44,]),'cpar':([28,32,41,42,43,44,45,51,52,72,73,74,75,76,77,78,79,88,91,92,93,95,96,110,113,123,124,125,126,127,134,144,146,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162,163,164,167,170,177,178,179,186,187,188,191,192,195,196,210,211,212,213,214,220,230,],[-5,-5,59,-30,-31,-32,-34,64,65,-75,-46,-50,-53,-56,-60,-67,-63,-74,-81,-82,-83,-33,-35,-5,-5,170,-66,-68,-75,-69,-76,-78,188,170,-91,-92,-96,-45,191,192,-93,-47,-48,-49,-51,-52,-54,-57,-55,-58,-65,-64,-77,-80,-79,-95,-93,-90,-88,-89,-5,-70,-61,-94,-59,-62,-71,-73,-72,]),'larrow':([40,49,50,72,96,130,],[58,62,63,112,-35,173,]),'comma':([44,72,73,74,75,76,77,78,79,88,91,92,93,96,124,125,126,127,129,130,134,144,147,152,155,156,157,158,159,160,161,162,163,164,167,170,177,178,179,187,188,191,192,196,198,210,212,213,214,220,230,],[60,-75,-46,-50,-53,-56,-60,-67,-63,-74,-81,-82,-83,-35,-66,-68,-75,-69,172,-39,-76,-78,189,-45,189,-47,-48,-49,-51,-52,-54,-57,-55,-58,-65,-64,-77,-80,-79,189,-90,-88,-89,-70,-38,-61,-59,-62,-71,-73,-72,]),'not':([58,62,63,70,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,]),'isvoid':([58,62,63,70,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,]),'nox':([58,62,63,70,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,]),'let':([58,62,63,70,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,]),'case':([58,62,63,70,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,]),'if':([58,62,63,70,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,]),'while':([58,62,63,70,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,]),'num':([58,62,63,70,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,]),'new':([58,62,63,70,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,]),'true':([58,62,63,70,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,]),'false':([58,62,63,70,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,]),'string':([58,62,63,70,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,]),'arroba':([70,72,73,74,75,76,77,78,79,88,91,92,93,98,107,124,125,126,127,134,136,144,145,152,154,156,157,158,159,160,161,162,163,164,167,170,177,178,179,185,188,191,192,196,207,210,212,213,214,220,230,],[108,-75,-46,-50,-53,-56,121,-67,-63,-74,-81,-82,-83,108,108,-66,-68,-75,-69,-76,108,-78,108,-45,108,-47,-48,-49,-51,-52,-54,108,-55,108,-65,-64,-77,-80,-79,108,-90,-88,-89,-70,108,-61,-59,-62,-71,-73,-72,]),'dot':([72,73,74,75,76,77,78,79,88,91,92,93,124,125,126,127,134,143,144,152,156,157,158,159,160,161,162,163,164,165,166,167,170,177,178,179,188,191,192,196,210,212,213,214,220,230,],[-75,-46,-50,-53,-56,122,-67,-63,-74,-81,-82,-83,-66,-68,-75,-69,-76,184,-78,-45,-47,-48,-49,-51,-52,-54,-57,-55,-58,193,194,-65,-64,-77,-80,-79,-90,-88,-89,-70,-61,-59,-62,-71,-73,-72,]),'star':([72,73,74,75,76,77,78,79,88,91,92,93,124,125,126,127,134,144,152,156,157,158,159,160,161,162,163,164,167,170,177,178,179,188,191,192,196,210,212,213,214,220,230,],[-75,-46,-50,119,-56,-60,-67,-63,-74,-81,-82,-83,-66,-68,-75,-69,-76,-78,-45,-47,-48,-49,119,119,-54,-57,-55,-58,-65,-64,-77,-80,-79,-90,-88,-89,-70,-61,-59,-62,-71,-73,-72,]),'div':([72,73,74,75,76,77,78,79,88,91,92,93,124,125,126,127,134,144,152,156,157,158,159,160,161,162,163,164,167,170,177,178,179,188,191,192,196,210,212,213,214,220,230,],[-75,-46,-50,120,-56,-60,-67,-63,-74,-81,-82,-83,-66,-68,-75,-69,-76,-78,-45,-47,-48,-49,120,120,-54,-57,-55,-58,-65,-64,-77,-80,-79,-90,-88,-89,-70,-61,-59,-62,-71,-73,-72,]),'plus':([72,73,74,75,76,77,78,79,88,91,92,93,124,125,126,127,134,144,152,156,157,158,159,160,161,162,163,164,167,170,177,178,179,188,191,192,196,210,212,213,214,220,230,],[-75,-46,117,-53,-56,-60,-67,-63,-74,-81,-82,-83,-66,-68,-75,-69,-76,-78,-45,117,117,117,-51,-52,-54,-57,-55,-58,-65,-64,-77,-80,-79,-90,-88,-89,-70,-61,-59,-62,-71,-73,-72,]),'minus':([72,73,74,75,76,77,78,79,88,91,92,93,124,125,126,127,134,144,152,156,157,158,159,160,161,162,163,164,167,170,177,178,179,188,191,192,196,210,212,213,214,220,230,],[-75,-46,118,-53,-56,-60,-67,-63,-74,-81,-82,-83,-66,-68,-75,-69,-76,-78,-45,118,118,118,-51,-52,-54,-57,-55,-58,-65,-64,-77,-80,-79,-90,-88,-89,-70,-61,-59,-62,-71,-73,-72,]),'less':([72,73,74,75,76,77,78,79,88,91,92,93,124,125,126,127,134,144,152,156,157,158,159,160,161,162,163,164,167,170,177,178,179,188,191,192,196,210,212,213,214,220,230,],[-75,114,-50,-53,-56,-60,-67,-63,-74,-81,-82,-83,-66,-68,-75,-69,-76,-78,-45,-47,-48,-49,-51,-52,-54,-57,-55,-58,-65,-64,-77,-80,-79,-90,-88,-89,-70,-61,-59,-62,-71,-73,-72,]),'lesseq':([72,73,74,75,76,77,78,79,88,91,92,93,124,125,126,127,134,144,152,156,157,158,159,160,161,162,163,164,167,170,177,178,179,188,191,192,196,210,212,213,214,220,230,],[-75,115,-50,-53,-56,-60,-67,-63,-74,-81,-82,-83,-66,-68,-75,-69,-76,-78,-45,-47,-48,-49,-51,-52,-54,-57,-55,-58,-65,-64,-77,-80,-79,-90,-88,-89,-70,-61,-59,-62,-71,-73,-72,]),'equal':([72,73,74,75,76,77,78,79,88,91,92,93,124,125,126,127,134,144,152,156,157,158,159,160,161,162,163,164,167,170,177,178,179,188,191,192,196,210,212,213,214,220,230,],[-75,116,-50,-53,-56,-60,-67,-63,-74,-81,-82,-83,-66,-68,-75,-69,-76,-78,-45,-47,-48,-49,-51,-52,-54,-57,-55,-58,-65,-64,-77,-80,-79,-90,-88,-89,-70,-61,-59,-62,-71,-73,-72,]),'of':([72,73,74,75,76,77,78,79,88,91,92,93,124,125,126,127,131,134,144,152,156,157,158,159,160,161,162,163,164,167,170,177,178,179,188,191,192,196,210,212,213,214,220,230,],[-75,-46,-50,-53,-56,-60,-67,-63,-74,-81,-82,-83,-66,-68,-75,-69,174,-76,-78,-45,-47,-48,-49,-51,-52,-54,-57,-55,-58,-65,-64,-77,-80,-79,-90,-88,-89,-70,-61,-59,-62,-71,-73,-72,]),'then':([72,73,74,75,76,77,78,79,88,91,92,93,124,125,126,127,132,134,144,152,156,157,158,159,160,161,162,163,164,167,170,177,178,179,188,191,192,196,210,212,213,214,220,230,],[-75,-46,-50,-53,-56,-60,-67,-63,-74,-81,-82,-83,-66,-68,-75,-69,175,-76,-78,-45,-47,-48,-49,-51,-52,-54,-57,-55,-58,-65,-64,-77,-80,-79,-90,-88,-89,-70,-61,-59,-62,-71,-73,-72,]),'loop':([72,73,74,75,76,77,78,79,88,91,92,93,124,125,126,127,133,134,144,152,156,157,158,159,160,161,162,163,164,167,170,177,178,179,188,191,192,196,210,212,213,214,220,230,],[-75,-46,-50,-53,-56,-60,-67,-63,-74,-81,-82,-83,-66,-68,-75,-69,176,-76,-78,-45,-47,-48,-49,-51,-52,-54,-57,-55,-58,-65,-64,-77,-80,-79,-90,-88,-89,-70,-61,-59,-62,-71,-73,-72,]),'in':([72,73,74,75,76,77,78,79,88,91,92,93,96,124,125,126,127,128,129,130,134,144,152,156,157,158,159,160,161,162,163,164,167,170,177,178,179,188,191,192,196,197,198,210,212,213,214,220,230,],[-75,-46,-50,-53,-56,-60,-67,-63,-74,-81,-82,-83,-35,-66,-68,-75,-69,171,-36,-39,-76,-78,-45,-47,-48,-49,-51,-52,-54,-57,-55,-58,-65,-64,-77,-80,-79,-90,-88,-89,-70,-37,-38,-61,-59,-62,-71,-73,-72,]),'else':([72,73,74,75,76,77,78,79,88,91,92,93,124,125,126,127,134,144,152,156,157,158,159,160,161,162,163,164,167,170,177,178,179,188,191,192,196,203,210,212,213,214,220,230,],[-75,-46,-50,-53,-56,-60,-67,-63,-74,-81,-82,-83,-66,-68,-75,-69,-76,-78,-45,-47,-48,-49,-51,-52,-54,-57,-55,-58,-65,-64,-77,-80,-79,-90,-88,-89,-70,219,-61,-59,-62,-71,-73,-72,]),'pool':([72,73,74,75,76,77,78,79,88,91,92,93,124,125,126,127,134,144,152,156,157,158,159,160,161,162,163,164,167,170,177,178,179,188,191,192,196,204,210,212,213,214,220,230,],[-75,-46,-50,-53,-56,-60,-67,-63,-74,-81,-82,-83,-66,-68,-75,-69,-76,-78,-45,-47,-48,-49,-51,-52,-54,-57,-55,-58,-65,-64,-77,-80,-79,-90,-88,-89,-70,220,-61,-59,-62,-71,-73,-72,]),'fi':([72,73,74,75,76,77,78,79,88,91,92,93,124,125,126,127,134,144,152,156,157,158,159,160,161,162,163,164,167,170,177,178,179,188,191,192,196,210,212,213,214,220,228,230,],[-75,-46,-50,-53,-56,-60,-67,-63,-74,-81,-82,-83,-66,-68,-75,-69,-76,-78,-45,-47,-48,-49,-51,-52,-54,-57,-55,-58,-65,-64,-77,-80,-79,-90,-88,-89,-70,-61,-59,-62,-71,-73,230,-72,]),'esac':([199,215,216,217,226,],[214,-40,-42,-43,-41,]),'rarrow':([227,],[229,]),} + +_lr_action = {} +for _k, _v in _lr_action_items.items(): + for _x,_y in zip(_v[0],_v[1]): + if not _x in _lr_action: _lr_action[_x] = {} + _lr_action[_x][_k] = _y +del _lr_action_items + +_lr_goto_items = {'program':([0,],[1,]),'class_list':([0,3,4,],[2,6,7,]),'def_class':([0,3,4,],[3,3,3,]),'feature_list':([10,12,15,29,30,33,34,36,37,],[14,22,26,47,48,53,54,56,57,]),'epsilon':([10,12,15,28,29,30,32,33,34,36,37,110,113,195,],[16,16,16,45,16,16,45,16,16,16,16,150,150,150,]),'def_attr':([10,12,15,29,30,33,34,36,37,],[17,17,17,17,17,17,17,17,17,]),'def_func':([10,12,15,29,30,33,34,36,37,],[18,18,18,18,18,18,18,18,18,]),'formals':([28,32,],[41,51,]),'param_list':([28,32,60,],[42,42,95,]),'param_list_empty':([28,32,],[43,43,]),'param':([28,32,60,84,172,],[44,44,44,130,130,]),'expr':([58,62,63,70,80,81,85,86,87,90,98,107,110,112,113,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[71,97,99,111,123,124,131,132,133,111,111,111,147,152,155,111,187,111,187,111,111,196,198,203,204,205,206,208,209,187,155,155,111,228,231,]),'comp':([58,62,63,70,80,81,85,86,87,90,98,107,110,112,113,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,]),'op':([58,62,63,70,80,81,85,86,87,90,98,107,110,112,113,114,115,116,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,156,157,158,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,]),'term':([58,62,63,70,80,81,85,86,87,90,98,107,110,112,113,114,115,116,117,118,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,159,160,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,]),'base_call':([58,62,63,70,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[76,76,76,76,76,76,125,127,76,76,76,76,76,76,76,76,76,76,76,76,76,76,161,163,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,]),'factor':([58,62,63,70,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,]),'func_call':([58,62,63,70,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,122,136,145,151,154,162,164,171,173,175,176,180,181,182,183,184,185,189,193,194,195,207,219,229,],[78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,167,78,78,78,78,78,78,78,78,78,78,78,78,78,78,210,78,78,212,213,78,78,78,78,]),'atom':([58,62,63,70,80,81,82,83,85,86,87,90,98,107,110,112,113,114,115,116,117,118,119,120,136,145,151,154,162,164,171,173,175,176,180,181,182,183,185,189,195,207,219,229,],[79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,]),'block':([70,90,98,107,136,145,151,154,162,164,185,207,],[109,135,109,141,141,109,190,109,109,109,141,109,]),'let_list':([84,172,],[128,197,]),'let_assign':([84,172,],[129,129,]),'args':([110,113,195,],[146,153,146,]),'arg_list':([110,113,145,154,185,189,195,],[148,148,186,186,186,211,148,]),'arg_list_empty':([110,113,195,],[149,149,149,]),'cases_list':([174,201,215,],[199,216,226,]),'casep':([174,201,215,],[200,200,200,]),} + +_lr_goto = {} +for _k, _v in _lr_goto_items.items(): + for _x, _y in zip(_v[0], _v[1]): + if not _x in _lr_goto: _lr_goto[_x] = {} + _lr_goto[_x][_k] = _y +del _lr_goto_items +_lr_productions = [ + ("S' -> program","S'",1,None,None,None), + ('program -> class_list','program',1,'p_program','parser.py',30), + ('class_list -> def_class class_list','class_list',2,'p_class_list','parser.py',35), + ('class_list -> def_class','class_list',1,'p_class_list','parser.py',36), + ('class_list -> error class_list','class_list',2,'p_class_list_error','parser.py',41), + ('epsilon -> ','epsilon',0,'p_epsilon','parser.py',46), + ('def_class -> class type ocur feature_list ccur semi','def_class',6,'p_def_class','parser.py',50), + ('def_class -> class type inherits type ocur feature_list ccur semi','def_class',8,'p_def_class','parser.py',51), + ('def_class -> class error ocur feature_list ccur semi','def_class',6,'p_def_class_error','parser.py',57), + ('def_class -> class type ocur feature_list ccur error','def_class',6,'p_def_class_error','parser.py',58), + ('def_class -> class error inherits type ocur feature_list ccur semi','def_class',8,'p_def_class_error','parser.py',59), + ('def_class -> class error inherits error ocur feature_list ccur semi','def_class',8,'p_def_class_error','parser.py',60), + ('def_class -> class type inherits error ocur feature_list ccur semi','def_class',8,'p_def_class_error','parser.py',61), + ('def_class -> class type inherits type ocur feature_list ccur error','def_class',8,'p_def_class_error','parser.py',62), + ('feature_list -> epsilon','feature_list',1,'p_feature_list','parser.py',67), + ('feature_list -> def_attr semi feature_list','feature_list',3,'p_feature_list','parser.py',68), + ('feature_list -> def_func semi feature_list','feature_list',3,'p_feature_list','parser.py',69), + ('feature_list -> error feature_list','feature_list',2,'p_feature_list_error','parser.py',74), + ('def_attr -> id colon type','def_attr',3,'p_def_attr','parser.py',79), + ('def_attr -> id colon type larrow expr','def_attr',5,'p_def_attr','parser.py',80), + ('def_attr -> error colon type','def_attr',3,'p_def_attr_error','parser.py',86), + ('def_attr -> id colon error','def_attr',3,'p_def_attr_error','parser.py',87), + ('def_attr -> error colon type larrow expr','def_attr',5,'p_def_attr_error','parser.py',88), + ('def_attr -> id colon error larrow expr','def_attr',5,'p_def_attr_error','parser.py',89), + ('def_attr -> id colon type larrow error','def_attr',5,'p_def_attr_error','parser.py',90), + ('def_func -> id opar formals cpar colon type ocur expr ccur','def_func',9,'p_def_func','parser.py',95), + ('def_func -> error opar formals cpar colon type ocur expr ccur','def_func',9,'p_def_func_error','parser.py',100), + ('def_func -> id opar error cpar colon type ocur expr ccur','def_func',9,'p_def_func_error','parser.py',101), + ('def_func -> id opar formals cpar colon error ocur expr ccur','def_func',9,'p_def_func_error','parser.py',102), + ('def_func -> id opar formals cpar colon type ocur error ccur','def_func',9,'p_def_func_error','parser.py',103), + ('formals -> param_list','formals',1,'p_formals','parser.py',108), + ('formals -> param_list_empty','formals',1,'p_formals','parser.py',109), + ('param_list -> param','param_list',1,'p_param_list','parser.py',114), + ('param_list -> param comma param_list','param_list',3,'p_param_list','parser.py',115), + ('param_list_empty -> epsilon','param_list_empty',1,'p_param_list_empty','parser.py',120), + ('param -> id colon type','param',3,'p_param','parser.py',125), + ('let_list -> let_assign','let_list',1,'p_let_list','parser.py',130), + ('let_list -> let_assign comma let_list','let_list',3,'p_let_list','parser.py',131), + ('let_assign -> param larrow expr','let_assign',3,'p_let_assign','parser.py',136), + ('let_assign -> param','let_assign',1,'p_let_assign','parser.py',137), + ('cases_list -> casep semi','cases_list',2,'p_cases_list','parser.py',143), + ('cases_list -> casep semi cases_list','cases_list',3,'p_cases_list','parser.py',144), + ('cases_list -> error cases_list','cases_list',2,'p_cases_list_error','parser.py',149), + ('cases_list -> error semi','cases_list',2,'p_cases_list_error','parser.py',150), + ('casep -> id colon type rarrow expr','casep',5,'p_case','parser.py',155), + ('expr -> id larrow expr','expr',3,'p_expr','parser.py',160), + ('expr -> comp','expr',1,'p_expr','parser.py',161), + ('comp -> comp less op','comp',3,'p_comp','parser.py',166), + ('comp -> comp lesseq op','comp',3,'p_comp','parser.py',167), + ('comp -> comp equal op','comp',3,'p_comp','parser.py',168), + ('comp -> op','comp',1,'p_comp','parser.py',169), + ('op -> op plus term','op',3,'p_op','parser.py',181), + ('op -> op minus term','op',3,'p_op','parser.py',182), + ('op -> term','op',1,'p_op','parser.py',183), + ('term -> term star base_call','term',3,'p_term','parser.py',193), + ('term -> term div base_call','term',3,'p_term','parser.py',194), + ('term -> base_call','term',1,'p_term','parser.py',195), + ('term -> term star error','term',3,'p_term_error','parser.py',205), + ('term -> term div error','term',3,'p_term_error','parser.py',206), + ('base_call -> factor arroba type dot func_call','base_call',5,'p_base_call','parser.py',211), + ('base_call -> factor','base_call',1,'p_base_call','parser.py',212), + ('base_call -> error arroba type dot func_call','base_call',5,'p_base_call_error','parser.py',217), + ('base_call -> factor arroba error dot func_call','base_call',5,'p_base_call_error','parser.py',218), + ('factor -> atom','factor',1,'p_factor1','parser.py',223), + ('factor -> opar expr cpar','factor',3,'p_factor1','parser.py',224), + ('factor -> factor dot func_call','factor',3,'p_factor2','parser.py',229), + ('factor -> not expr','factor',2,'p_factor2','parser.py',230), + ('factor -> func_call','factor',1,'p_factor2','parser.py',231), + ('factor -> isvoid base_call','factor',2,'p_factor3','parser.py',241), + ('factor -> nox base_call','factor',2,'p_factor3','parser.py',242), + ('factor -> let let_list in expr','factor',4,'p_expr_let','parser.py',247), + ('factor -> case expr of cases_list esac','factor',5,'p_expr_case','parser.py',252), + ('factor -> if expr then expr else expr fi','factor',7,'p_expr_if','parser.py',257), + ('factor -> while expr loop expr pool','factor',5,'p_expr_while','parser.py',262), + ('atom -> num','atom',1,'p_atom_num','parser.py',267), + ('atom -> id','atom',1,'p_atom_id','parser.py',272), + ('atom -> new type','atom',2,'p_atom_new','parser.py',277), + ('atom -> ocur block ccur','atom',3,'p_atom_block','parser.py',282), + ('atom -> error block ccur','atom',3,'p_atom_block_error','parser.py',287), + ('atom -> ocur error ccur','atom',3,'p_atom_block_error','parser.py',288), + ('atom -> ocur block error','atom',3,'p_atom_block_error','parser.py',289), + ('atom -> true','atom',1,'p_atom_boolean','parser.py',294), + ('atom -> false','atom',1,'p_atom_boolean','parser.py',295), + ('atom -> string','atom',1,'p_atom_string','parser.py',300), + ('block -> expr semi','block',2,'p_block','parser.py',305), + ('block -> expr semi block','block',3,'p_block','parser.py',306), + ('block -> error block','block',2,'p_block_error','parser.py',311), + ('block -> error semi','block',2,'p_block_error','parser.py',312), + ('func_call -> id opar args cpar','func_call',4,'p_func_call','parser.py',317), + ('func_call -> id opar error cpar','func_call',4,'p_func_call_error','parser.py',322), + ('func_call -> error opar args cpar','func_call',4,'p_func_call_error','parser.py',323), + ('args -> arg_list','args',1,'p_args','parser.py',328), + ('args -> arg_list_empty','args',1,'p_args','parser.py',329), + ('arg_list -> expr','arg_list',1,'p_arg_list','parser.py',334), + ('arg_list -> expr comma arg_list','arg_list',3,'p_arg_list','parser.py',335), + ('arg_list -> error arg_list','arg_list',2,'p_arg_list_error','parser.py',341), + ('arg_list_empty -> epsilon','arg_list_empty',1,'p_arg_list_empty','parser.py',346), +] diff --git a/src/cool/parser/parser.py b/src/cool/parser/parser.py index 57d8a1137..70100da44 100644 --- a/src/cool/parser/parser.py +++ b/src/cool/parser/parser.py @@ -1,11 +1,11 @@ import ply.yacc as yacc -from ..lexer.lexer import CoolLexer -from ..utils.ast import * -from ..utils.errors import SyntacticError -from ..utils.helpers import find_column -from ..utils.logger import log -from ..utils.tokens import tokens +from src.cool.lexer.lexer import CoolLexer +from src.cool.utils.ast import * +from src.cool.utils.errors import SyntacticError +from src.cool.utils.helpers import find_column +from src.cool.utils.tokens import tokens +from src.cool.utils.logger import log class Parser: diff --git a/src/cool/utils/logger.py b/src/cool/utils/logger.py index 6bb082bbe..43680baf4 100644 --- a/src/cool/utils/logger.py +++ b/src/cool/utils/logger.py @@ -3,22 +3,21 @@ cwd = os.getcwd() - try: - logging.basicConfig( - level = logging.DEBUG, - filename = f"{cwd}/src/cool/parser/output/parselog.txt", - filemode = "w", - format = "%(filename)10s:%(lineno)4d:%(message)s" - ) + logging.basicConfig( + level=logging.DEBUG, + filename=f"{cwd}/src/cool/parser/output/parselog.txt", + filemode="w", + format="%(filename)10s:%(lineno)4d:%(message)s" + ) - log = logging.getLogger() + log = logging.getLogger() except: - logging.basicConfig( - level = logging.DEBUG, - filename = f"{cwd}/cool/parser/output/parselog.txt", - filemode = "w", - format = "%(filename)10s:%(lineno)4d:%(message)s" - ) - - log = logging.getLogger() + logging.basicConfig( + level=logging.DEBUG, + filename=f"{cwd}/cool/parser/output/parselog.txt", + filemode="w", + format="%(filename)10s:%(lineno)4d:%(message)s" + ) + + log = logging.getLogger() diff --git a/src/coolc.sh b/src/coolc.sh index 20e97e845..e00550bba 100755 --- a/src/coolc.sh +++ b/src/coolc.sh @@ -7,6 +7,6 @@ OUTPUT_FILE=${INPUT_FILE:0: -2}mips echo "Cool Compiler 2021 v1" # TODO: Recuerde cambiar estas echo "Copyright (c): Jose Carlos Hdez" # TODO: líneas a los valores correctos -FILE="cool" +FILE="src" python -m ${FILE} $INPUT_FILE $OUTPUT_FILE \ No newline at end of file From 5642ec1dbf6bb682796f5f274c6ded1dbd3c7e97 Mon Sep 17 00:00:00 2001 From: JCH97 Date: Sun, 17 Oct 2021 22:48:12 -0400 Subject: [PATCH 21/44] (testing): run lexer tests --- src/__main__.py | 16 +++--- src/cool/__main__.py | 37 ------------- src/cool/code.cl | 112 +++++++++++++++++++++++++++++++++++++++- src/cool/lexer/lexer.py | 2 +- 4 files changed, 120 insertions(+), 47 deletions(-) delete mode 100644 src/cool/__main__.py diff --git a/src/__main__.py b/src/__main__.py index a91c85801..1b0172fde 100644 --- a/src/__main__.py +++ b/src/__main__.py @@ -21,19 +21,19 @@ lexer = main(text, _out) - tokens = lexer.tokenize(text) - - if len(tokens) == 0: - error_text = SyntacticError.ERROR % 'EOF' - print(SyntacticError(error_text, 0, 0)) - raise Exception() + # tokens = lexer.tokenize(text) + # + # if len(tokens) == 0: + # error_text = SyntacticError.ERROR % 'EOF' + # print(SyntacticError(error_text, 0, 0)) + # raise Exception() # print(lexer) # lexer.lexer.lineno = 1 # lexer.lexer.linestart = 0 - parser = CoolParser(lexer) - result = parser.parse(text) + # parser = CoolParser(lexer) + # result = parser.parse(text) # print(result) diff --git a/src/cool/__main__.py b/src/cool/__main__.py deleted file mode 100644 index 5cca90757..000000000 --- a/src/cool/__main__.py +++ /dev/null @@ -1,37 +0,0 @@ -import sys -from pathlib import Path - -from .lexer import CoolLexer, main -from .parser import CoolParser - -if __name__ == '__main__': - # in_ = sys.argv[1] - #out_ = sys.argv[2] - # print(f'Argv: {sys.argv} ') - _in = sys.argv[1] if len(sys.argv) > 1 else f'{Path.cwd()}/cool/code.cl' - _out = sys.argv[2] if len(sys.argv) > 2 else None - - # print(_in, _out) - # in_ = f'{sys.argv[1]} {sys.argv[2]}' - # out_ = f'{sys.argv[3]} {sys.argv[4]}' - - # print(f'{in_}') - - # _in = sys.argv[1] - # _out = sys.argv[2] - - text: str = '' - - with open(_in) as file: - text = file.read() - - lexer = main(text, _out) - - # print(lexer) - lexer.lexer.lineno = 1 - lexer.lexer.linestart = 0 - - parser = CoolParser(lexer) - result = parser.parse(text) - - # print(result) diff --git a/src/cool/code.cl b/src/cool/code.cl index 8e5cf617f..12cb52beb 100644 --- a/src/cool/code.cl +++ b/src/cool/code.cl @@ -1 +1,111 @@ -(* A Cool program can't be empty *) \ No newline at end of file +(* Integers, Identifiers, and Special Notation *) + +0007 123 +1 -1 +90 -09 +11113 -4r *a *self* c++ +5! = 120, 2 + 2 = 5 or E = mc2; p + 1 @ p = 1: for x in range(len(b)) +new / <- <<==> {( Int: Objet, Bool; String.string SELF_TYPE isvoid }) +class Class if then else fi testing Testing ~007agent_bond james_007B0N3SS___ +loop pool while tRuE or noT faLsE let in case of ESAC + +(* +#3 INT_CONST 0007 +#3 INT_CONST 123 +#3 '+' +#3 INT_CONST 1 +#3 '-' +#3 INT_CONST 1 +#3 '+' +#3 INT_CONST 90 +#3 '-' +#3 INT_CONST 09 +#3 '+' +#3 INT_CONST 11113 +#3 '-' +#3 INT_CONST 4 +#3 OBJECTID r +#3 '*' +#3 OBJECTID a +#3 '*' +#3 OBJECTID self +#3 '*' +#3 OBJECTID c +#3 '+' +#3 '+' +#4 INT_CONST 5 +#4 ERROR "!" +#4 '=' +#4 INT_CONST 120 +#4 ',' +#4 INT_CONST 2 +#4 '+' +#4 INT_CONST 2 +#4 '=' +#4 INT_CONST 5 +#4 OBJECTID or +#4 TYPEID E +#4 '=' +#4 OBJECTID mc2 +#4 ';' +#4 OBJECTID p +#4 '+' +#4 INT_CONST 1 +#4 '@' +#4 OBJECTID p +#4 '=' +#4 INT_CONST 1 +#4 ':' +#4 OBJECTID for +#4 OBJECTID x +#4 IN +#4 OBJECTID range +#4 '(' +#4 OBJECTID len +#4 '(' +#4 OBJECTID b +#4 ')' +#4 ')' +#5 NEW +#5 '/' +#5 ASSIGN +#5 '<' +#5 LE +#5 DARROW +#5 '{' +#5 '(' +#5 TYPEID Int +#5 ':' +#5 TYPEID Objet +#5 ',' +#5 TYPEID Bool +#5 ';' +#5 TYPEID String +#5 '.' +#5 OBJECTID string +#5 TYPEID SELF_TYPE +#5 ISVOID +#5 '}' +#5 ')' +#6 CLASS +#6 CLASS +#6 IF +#6 THEN +#6 ELSE +#6 FI +#6 OBJECTID testing +#6 TYPEID Testing +#6 '~' +#6 INT_CONST 007 +#6 OBJECTID agent_bond +#6 OBJECTID james_007B0N3SS___ +#7 LOOP +#7 POOL +#7 WHILE +#7 BOOL_CONST true +#7 OBJECTID or +#7 NOT +#7 BOOL_CONST false +#7 LET +#7 IN +#7 CASE +#7 OF +#7 ESAC +*) \ No newline at end of file diff --git a/src/cool/lexer/lexer.py b/src/cool/lexer/lexer.py index 250b6f21c..5b8e8726a 100644 --- a/src/cool/lexer/lexer.py +++ b/src/cool/lexer/lexer.py @@ -291,7 +291,7 @@ def main(text: str, output=None): a = lexer.tokenize(text) # for i in a: - # print(i) + # print(i) if lexer.errors: for e in lexer.errors: From a3a13457c6a2d7336b79c8c92b5aaff8f2015f9a Mon Sep 17 00:00:00 2001 From: JCH97 Date: Sun, 17 Oct 2021 23:25:09 -0400 Subject: [PATCH 22/44] (testing): run lexer tests --- .idea/.idea/.gitignore | 8 ++++++++ .idea/.idea/.idea.iml | 8 ++++++++ .../.idea/inspectionProfiles/Project_Default.xml | 12 ++++++++++++ .../inspectionProfiles/profiles_settings.xml | 6 ++++++ .idea/.idea/misc.xml | 4 ++++ .idea/.idea/modules.xml | 8 ++++++++ .idea/cool-compiler-2021.iml | 4 ++-- .idea/main.py | 16 ++++++++++++++++ src/cool/lexer/lexer.py | 6 ++---- src/cool/parser/__init__.py | 2 +- src/cool/parser/parser.py | 12 ++++++------ src/coolc.sh | 4 ++-- src/{__main__.py => main.py} | 8 ++++---- 13 files changed, 79 insertions(+), 19 deletions(-) create mode 100644 .idea/.idea/.gitignore create mode 100644 .idea/.idea/.idea.iml create mode 100644 .idea/.idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/.idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/.idea/misc.xml create mode 100644 .idea/.idea/modules.xml create mode 100644 .idea/main.py rename src/{__main__.py => main.py} (78%) diff --git a/.idea/.idea/.gitignore b/.idea/.idea/.gitignore new file mode 100644 index 000000000..73f69e095 --- /dev/null +++ b/.idea/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/.idea/.idea.iml b/.idea/.idea/.idea.iml new file mode 100644 index 000000000..d0876a78d --- /dev/null +++ b/.idea/.idea/.idea.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea/inspectionProfiles/Project_Default.xml b/.idea/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 000000000..ea07b7d32 --- /dev/null +++ b/.idea/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea/inspectionProfiles/profiles_settings.xml b/.idea/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 000000000..105ce2da2 --- /dev/null +++ b/.idea/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea/misc.xml b/.idea/.idea/misc.xml new file mode 100644 index 000000000..d1e22ecb8 --- /dev/null +++ b/.idea/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea/modules.xml b/.idea/.idea/modules.xml new file mode 100644 index 000000000..08f54a6d3 --- /dev/null +++ b/.idea/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/cool-compiler-2021.iml b/.idea/cool-compiler-2021.iml index 66163359c..84f7de6ae 100644 --- a/.idea/cool-compiler-2021.iml +++ b/.idea/cool-compiler-2021.iml @@ -2,7 +2,7 @@ - + @@ -14,7 +14,7 @@ diff --git a/.idea/main.py b/.idea/main.py new file mode 100644 index 000000000..2b1173faa --- /dev/null +++ b/.idea/main.py @@ -0,0 +1,16 @@ +# This is a sample Python script. + +# Press Ctrl+F5 to execute it or replace it with your code. +# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings. + + +def print_hi(name): + # Use a breakpoint in the code line below to debug your script. + print(f'Hi, {name}') # Press F9 to toggle the breakpoint. + + +# Press the green button in the gutter to run the script. +if __name__ == '__main__': + print_hi('PyCharm') + +# See PyCharm help at https://www.jetbrains.com/help/pycharm/ diff --git a/src/cool/lexer/lexer.py b/src/cool/lexer/lexer.py index 5b8e8726a..ad15a32a4 100644 --- a/src/cool/lexer/lexer.py +++ b/src/cool/lexer/lexer.py @@ -1,10 +1,8 @@ from pathlib import Path from pprint import pprint from typing import List - import ply.lex as lex - -from src.cool.utils import Token, errors, ignored, literals, reservedKeywords, tokens +from ..utils import Token, errors, ignored, literals, reservedKeywords, tokens class CoolLexer: @@ -291,7 +289,7 @@ def main(text: str, output=None): a = lexer.tokenize(text) # for i in a: - # print(i) + # print(i) if lexer.errors: for e in lexer.errors: diff --git a/src/cool/parser/__init__.py b/src/cool/parser/__init__.py index 2a0224cb8..bd753cc34 100644 --- a/src/cool/parser/__init__.py +++ b/src/cool/parser/__init__.py @@ -1 +1 @@ -from src.cool.parser import * +from .parser import * diff --git a/src/cool/parser/parser.py b/src/cool/parser/parser.py index 70100da44..a6e1d7f6b 100644 --- a/src/cool/parser/parser.py +++ b/src/cool/parser/parser.py @@ -1,11 +1,11 @@ import ply.yacc as yacc -from src.cool.lexer.lexer import CoolLexer -from src.cool.utils.ast import * -from src.cool.utils.errors import SyntacticError -from src.cool.utils.helpers import find_column -from src.cool.utils.tokens import tokens -from src.cool.utils.logger import log +from ..lexer.lexer import CoolLexer +from ..utils.ast import * +from ..utils.errors import SyntacticError +from ..utils.helpers import find_column +from ..utils.tokens import tokens +from ..utils.logger import log class Parser: diff --git a/src/coolc.sh b/src/coolc.sh index e00550bba..60f8dcb90 100755 --- a/src/coolc.sh +++ b/src/coolc.sh @@ -7,6 +7,6 @@ OUTPUT_FILE=${INPUT_FILE:0: -2}mips echo "Cool Compiler 2021 v1" # TODO: Recuerde cambiar estas echo "Copyright (c): Jose Carlos Hdez" # TODO: líneas a los valores correctos -FILE="src" +FILE="main.py" -python -m ${FILE} $INPUT_FILE $OUTPUT_FILE \ No newline at end of file +python ${FILE} $INPUT_FILE $OUTPUT_FILE \ No newline at end of file diff --git a/src/__main__.py b/src/main.py similarity index 78% rename from src/__main__.py rename to src/main.py index 1b0172fde..acd76b299 100644 --- a/src/__main__.py +++ b/src/main.py @@ -1,15 +1,15 @@ import sys from pathlib import Path -from src.cool.lexer import CoolLexer, main -from src.cool.parser.parser import CoolParser -from src.cool.utils.errors import SyntacticError +from cool.lexer import CoolLexer, main +from cool.parser.parser import CoolParser +from cool.utils.errors import SyntacticError if __name__ == '__main__': # print(f'Argv: {sys.argv} ') # path: str = f"{Path.cwd()}/cool/code.cl" # debug mode - path: str = f"{Path.cwd()}/src/cool/code.cl" # normal mode + path: str = f"{Path.cwd()}/cool/code.cl" # normal mode _in = sys.argv[1] if len(sys.argv) > 1 else path _out = sys.argv[2] if len(sys.argv) > 2 else None From 4574f2b377bbd9f7733e5e92def35a27f8841204 Mon Sep 17 00:00:00 2001 From: JCH97 Date: Sun, 17 Oct 2021 23:30:02 -0400 Subject: [PATCH 23/44] (feat): remove comments, run parser tests --- src/main.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/main.py b/src/main.py index acd76b299..849a5eab5 100644 --- a/src/main.py +++ b/src/main.py @@ -6,9 +6,6 @@ from cool.utils.errors import SyntacticError if __name__ == '__main__': - # print(f'Argv: {sys.argv} ') - - # path: str = f"{Path.cwd()}/cool/code.cl" # debug mode path: str = f"{Path.cwd()}/cool/code.cl" # normal mode _in = sys.argv[1] if len(sys.argv) > 1 else path @@ -21,19 +18,19 @@ lexer = main(text, _out) - # tokens = lexer.tokenize(text) - # - # if len(tokens) == 0: - # error_text = SyntacticError.ERROR % 'EOF' - # print(SyntacticError(error_text, 0, 0)) - # raise Exception() + tokens = lexer.tokenize(text) + + if len(tokens) == 0: + error_text = SyntacticError.ERROR % 'EOF' + print(SyntacticError(error_text, 0, 0)) + raise Exception() # print(lexer) # lexer.lexer.lineno = 1 # lexer.lexer.linestart = 0 - # parser = CoolParser(lexer) - # result = parser.parse(text) + parser = CoolParser(lexer) + result = parser.parse(text) # print(result) From 870a2286789bd78702ff701482be1d42e138d571 Mon Sep 17 00:00:00 2001 From: JCH97 Date: Sun, 17 Oct 2021 23:33:31 -0400 Subject: [PATCH 24/44] (feat): set explicit line number after lexer. --- src/cool/code.cl | 144 +- src/cool/parser/output/parselog.txt | 6940 +++++++++++++++++++++++++++ src/main.py | 4 +- 3 files changed, 6977 insertions(+), 111 deletions(-) diff --git a/src/cool/code.cl b/src/cool/code.cl index 12cb52beb..75b4c5bbd 100644 --- a/src/cool/code.cl +++ b/src/cool/code.cl @@ -1,111 +1,37 @@ -(* Integers, Identifiers, and Special Notation *) +(* An assignment has the form <- *) -0007 123 +1 -1 +90 -09 +11113 -4r *a *self* c++ -5! = 120, 2 + 2 = 5 or E = mc2; p + 1 @ p = 1: for x in range(len(b)) -new / <- <<==> {( Int: Objet, Bool; String.string SELF_TYPE isvoid }) -class Class if then else fi testing Testing ~007agent_bond james_007B0N3SS___ -loop pool while tRuE or noT faLsE let in case of ESAC +class Main { + main(): Object { + (new Alpha).print() + }; +}; -(* -#3 INT_CONST 0007 -#3 INT_CONST 123 -#3 '+' -#3 INT_CONST 1 -#3 '-' -#3 INT_CONST 1 -#3 '+' -#3 INT_CONST 90 -#3 '-' -#3 INT_CONST 09 -#3 '+' -#3 INT_CONST 11113 -#3 '-' -#3 INT_CONST 4 -#3 OBJECTID r -#3 '*' -#3 OBJECTID a -#3 '*' -#3 OBJECTID self -#3 '*' -#3 OBJECTID c -#3 '+' -#3 '+' -#4 INT_CONST 5 -#4 ERROR "!" -#4 '=' -#4 INT_CONST 120 -#4 ',' -#4 INT_CONST 2 -#4 '+' -#4 INT_CONST 2 -#4 '=' -#4 INT_CONST 5 -#4 OBJECTID or -#4 TYPEID E -#4 '=' -#4 OBJECTID mc2 -#4 ';' -#4 OBJECTID p -#4 '+' -#4 INT_CONST 1 -#4 '@' -#4 OBJECTID p -#4 '=' -#4 INT_CONST 1 -#4 ':' -#4 OBJECTID for -#4 OBJECTID x -#4 IN -#4 OBJECTID range -#4 '(' -#4 OBJECTID len -#4 '(' -#4 OBJECTID b -#4 ')' -#4 ')' -#5 NEW -#5 '/' -#5 ASSIGN -#5 '<' -#5 LE -#5 DARROW -#5 '{' -#5 '(' -#5 TYPEID Int -#5 ':' -#5 TYPEID Objet -#5 ',' -#5 TYPEID Bool -#5 ';' -#5 TYPEID String -#5 '.' -#5 OBJECTID string -#5 TYPEID SELF_TYPE -#5 ISVOID -#5 '}' -#5 ')' -#6 CLASS -#6 CLASS -#6 IF -#6 THEN -#6 ELSE -#6 FI -#6 OBJECTID testing -#6 TYPEID Testing -#6 '~' -#6 INT_CONST 007 -#6 OBJECTID agent_bond -#6 OBJECTID james_007B0N3SS___ -#7 LOOP -#7 POOL -#7 WHILE -#7 BOOL_CONST true -#7 OBJECTID or -#7 NOT -#7 BOOL_CONST false -#7 LET -#7 IN -#7 CASE -#7 OF -#7 ESAC -*) \ No newline at end of file +class Test { + test1: Object; + + testing1(): Int { + 2 + 2 + }; + + test2: Int <- 1; + + test3: String <- "1"; + + testing2(a: Alpha, b: Int): Int { + 2 + 2 + }; + + testing3(): String { + "2 + 2" + }; + + testing4(): String { + Test1 <- "Hello World" -- Identifiers begin with a lower case letter + }; +}; + +class Alpha inherits IO { + print() : Object { + out_string("reached!!\n") + }; +}; \ No newline at end of file diff --git a/src/cool/parser/output/parselog.txt b/src/cool/parser/output/parselog.txt index e69de29bb..86a1f0de4 100644 --- a/src/cool/parser/output/parselog.txt +++ b/src/cool/parser/output/parselog.txt @@ -0,0 +1,6940 @@ + yacc.py:3317:Created by PLY version 3.11 (http://www.dabeaz.com/ply) + yacc.py:3377: + yacc.py:3378:Grammar + yacc.py:3379: + yacc.py:3381:Rule 0 S' -> program + yacc.py:3381:Rule 1 program -> class_list + yacc.py:3381:Rule 2 class_list -> def_class class_list + yacc.py:3381:Rule 3 class_list -> def_class + yacc.py:3381:Rule 4 class_list -> error class_list + yacc.py:3381:Rule 5 epsilon -> + yacc.py:3381:Rule 6 def_class -> class type ocur feature_list ccur semi + yacc.py:3381:Rule 7 def_class -> class type inherits type ocur feature_list ccur semi + yacc.py:3381:Rule 8 def_class -> class error ocur feature_list ccur semi + yacc.py:3381:Rule 9 def_class -> class type ocur feature_list ccur error + yacc.py:3381:Rule 10 def_class -> class error inherits type ocur feature_list ccur semi + yacc.py:3381:Rule 11 def_class -> class error inherits error ocur feature_list ccur semi + yacc.py:3381:Rule 12 def_class -> class type inherits error ocur feature_list ccur semi + yacc.py:3381:Rule 13 def_class -> class type inherits type ocur feature_list ccur error + yacc.py:3381:Rule 14 feature_list -> epsilon + yacc.py:3381:Rule 15 feature_list -> def_attr semi feature_list + yacc.py:3381:Rule 16 feature_list -> def_func semi feature_list + yacc.py:3381:Rule 17 feature_list -> error feature_list + yacc.py:3381:Rule 18 def_attr -> id colon type + yacc.py:3381:Rule 19 def_attr -> id colon type larrow expr + yacc.py:3381:Rule 20 def_attr -> error colon type + yacc.py:3381:Rule 21 def_attr -> id colon error + yacc.py:3381:Rule 22 def_attr -> error colon type larrow expr + yacc.py:3381:Rule 23 def_attr -> id colon error larrow expr + yacc.py:3381:Rule 24 def_attr -> id colon type larrow error + yacc.py:3381:Rule 25 def_func -> id opar formals cpar colon type ocur expr ccur + yacc.py:3381:Rule 26 def_func -> error opar formals cpar colon type ocur expr ccur + yacc.py:3381:Rule 27 def_func -> id opar error cpar colon type ocur expr ccur + yacc.py:3381:Rule 28 def_func -> id opar formals cpar colon error ocur expr ccur + yacc.py:3381:Rule 29 def_func -> id opar formals cpar colon type ocur error ccur + yacc.py:3381:Rule 30 formals -> param_list + yacc.py:3381:Rule 31 formals -> param_list_empty + yacc.py:3381:Rule 32 param_list -> param + yacc.py:3381:Rule 33 param_list -> param comma param_list + yacc.py:3381:Rule 34 param_list_empty -> epsilon + yacc.py:3381:Rule 35 param -> id colon type + yacc.py:3381:Rule 36 let_list -> let_assign + yacc.py:3381:Rule 37 let_list -> let_assign comma let_list + yacc.py:3381:Rule 38 let_assign -> param larrow expr + yacc.py:3381:Rule 39 let_assign -> param + yacc.py:3381:Rule 40 cases_list -> casep semi + yacc.py:3381:Rule 41 cases_list -> casep semi cases_list + yacc.py:3381:Rule 42 cases_list -> error cases_list + yacc.py:3381:Rule 43 cases_list -> error semi + yacc.py:3381:Rule 44 casep -> id colon type rarrow expr + yacc.py:3381:Rule 45 expr -> id larrow expr + yacc.py:3381:Rule 46 expr -> comp + yacc.py:3381:Rule 47 comp -> comp less op + yacc.py:3381:Rule 48 comp -> comp lesseq op + yacc.py:3381:Rule 49 comp -> comp equal op + yacc.py:3381:Rule 50 comp -> op + yacc.py:3381:Rule 51 op -> op plus term + yacc.py:3381:Rule 52 op -> op minus term + yacc.py:3381:Rule 53 op -> term + yacc.py:3381:Rule 54 term -> term star base_call + yacc.py:3381:Rule 55 term -> term div base_call + yacc.py:3381:Rule 56 term -> base_call + yacc.py:3381:Rule 57 term -> term star error + yacc.py:3381:Rule 58 term -> term div error + yacc.py:3381:Rule 59 base_call -> factor arroba type dot func_call + yacc.py:3381:Rule 60 base_call -> factor + yacc.py:3381:Rule 61 base_call -> error arroba type dot func_call + yacc.py:3381:Rule 62 base_call -> factor arroba error dot func_call + yacc.py:3381:Rule 63 factor -> atom + yacc.py:3381:Rule 64 factor -> opar expr cpar + yacc.py:3381:Rule 65 factor -> factor dot func_call + yacc.py:3381:Rule 66 factor -> not expr + yacc.py:3381:Rule 67 factor -> func_call + yacc.py:3381:Rule 68 factor -> isvoid base_call + yacc.py:3381:Rule 69 factor -> nox base_call + yacc.py:3381:Rule 70 factor -> let let_list in expr + yacc.py:3381:Rule 71 factor -> case expr of cases_list esac + yacc.py:3381:Rule 72 factor -> if expr then expr else expr fi + yacc.py:3381:Rule 73 factor -> while expr loop expr pool + yacc.py:3381:Rule 74 atom -> num + yacc.py:3381:Rule 75 atom -> id + yacc.py:3381:Rule 76 atom -> new type + yacc.py:3381:Rule 77 atom -> ocur block ccur + yacc.py:3381:Rule 78 atom -> error block ccur + yacc.py:3381:Rule 79 atom -> ocur error ccur + yacc.py:3381:Rule 80 atom -> ocur block error + yacc.py:3381:Rule 81 atom -> true + yacc.py:3381:Rule 82 atom -> false + yacc.py:3381:Rule 83 atom -> string + yacc.py:3381:Rule 84 block -> expr semi + yacc.py:3381:Rule 85 block -> expr semi block + yacc.py:3381:Rule 86 block -> error block + yacc.py:3381:Rule 87 block -> error semi + yacc.py:3381:Rule 88 func_call -> id opar args cpar + yacc.py:3381:Rule 89 func_call -> id opar error cpar + yacc.py:3381:Rule 90 func_call -> error opar args cpar + yacc.py:3381:Rule 91 args -> arg_list + yacc.py:3381:Rule 92 args -> arg_list_empty + yacc.py:3381:Rule 93 arg_list -> expr + yacc.py:3381:Rule 94 arg_list -> expr comma arg_list + yacc.py:3381:Rule 95 arg_list -> error arg_list + yacc.py:3381:Rule 96 arg_list_empty -> epsilon + yacc.py:3399: + yacc.py:3400:Terminals, with rules where they appear + yacc.py:3401: + yacc.py:3405:arroba : 59 61 62 + yacc.py:3405:case : 71 + yacc.py:3405:ccur : 6 7 8 9 10 11 12 13 25 26 27 28 29 77 78 79 + yacc.py:3405:class : 6 7 8 9 10 11 12 13 + yacc.py:3405:colon : 18 19 20 21 22 23 24 25 26 27 28 29 35 44 + yacc.py:3405:comma : 33 37 94 + yacc.py:3405:cpar : 25 26 27 28 29 64 88 89 90 + yacc.py:3405:div : 55 58 + yacc.py:3405:dot : 59 61 62 65 + yacc.py:3405:else : 72 + yacc.py:3405:equal : 49 + yacc.py:3405:error : 4 8 9 10 11 11 12 13 17 20 21 22 23 24 26 27 28 29 42 43 57 58 61 62 78 79 80 86 87 89 90 95 + yacc.py:3405:esac : 71 + yacc.py:3405:false : 82 + yacc.py:3405:fi : 72 + yacc.py:3405:id : 18 19 21 23 24 25 27 28 29 35 44 45 75 88 89 + yacc.py:3405:if : 72 + yacc.py:3405:in : 70 + yacc.py:3405:inherits : 7 10 11 12 13 + yacc.py:3405:isvoid : 68 + yacc.py:3405:larrow : 19 22 23 24 38 45 + yacc.py:3405:less : 47 + yacc.py:3405:lesseq : 48 + yacc.py:3405:let : 70 + yacc.py:3405:loop : 73 + yacc.py:3405:minus : 52 + yacc.py:3405:new : 76 + yacc.py:3405:not : 66 + yacc.py:3405:nox : 69 + yacc.py:3405:num : 74 + yacc.py:3405:ocur : 6 7 8 9 10 11 12 13 25 26 27 28 29 77 79 80 + yacc.py:3405:of : 71 + yacc.py:3405:opar : 25 26 27 28 29 64 88 89 90 + yacc.py:3405:plus : 51 + yacc.py:3405:pool : 73 + yacc.py:3405:rarrow : 44 + yacc.py:3405:semi : 6 7 8 10 11 12 15 16 40 41 43 84 85 87 + yacc.py:3405:star : 54 57 + yacc.py:3405:string : 83 + yacc.py:3405:then : 72 + yacc.py:3405:true : 81 + yacc.py:3405:type : 6 7 7 9 10 12 13 13 18 19 20 22 24 25 26 27 29 35 44 59 61 76 + yacc.py:3405:while : 73 + yacc.py:3407: + yacc.py:3408:Nonterminals, with rules where they appear + yacc.py:3409: + yacc.py:3413:arg_list : 91 94 95 + yacc.py:3413:arg_list_empty : 92 + yacc.py:3413:args : 88 90 + yacc.py:3413:atom : 63 + yacc.py:3413:base_call : 54 55 56 68 69 + yacc.py:3413:block : 77 78 80 85 86 + yacc.py:3413:casep : 40 41 + yacc.py:3413:cases_list : 41 42 71 + yacc.py:3413:class_list : 1 2 4 + yacc.py:3413:comp : 46 47 48 49 + yacc.py:3413:def_attr : 15 + yacc.py:3413:def_class : 2 3 + yacc.py:3413:def_func : 16 + yacc.py:3413:epsilon : 14 34 96 + yacc.py:3413:expr : 19 22 23 25 26 27 28 38 44 45 64 66 70 71 72 72 72 73 73 84 85 93 94 + yacc.py:3413:factor : 59 60 62 65 + yacc.py:3413:feature_list : 6 7 8 9 10 11 12 13 15 16 17 + yacc.py:3413:formals : 25 26 28 29 + yacc.py:3413:func_call : 59 61 62 65 67 + yacc.py:3413:let_assign : 36 37 + yacc.py:3413:let_list : 37 70 + yacc.py:3413:op : 47 48 49 50 51 52 + yacc.py:3413:param : 32 33 38 39 + yacc.py:3413:param_list : 30 33 + yacc.py:3413:param_list_empty : 31 + yacc.py:3413:program : 0 + yacc.py:3413:term : 51 52 53 54 55 57 58 + yacc.py:3414: + yacc.py:3436:Generating LALR tables + yacc.py:2543:Parsing method: LALR + yacc.py:2561: + yacc.py:2562:state 0 + yacc.py:2563: + yacc.py:2565: (0) S' -> . program + yacc.py:2565: (1) program -> . class_list + yacc.py:2565: (2) class_list -> . def_class class_list + yacc.py:2565: (3) class_list -> . def_class + yacc.py:2565: (4) class_list -> . error class_list + yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi + yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error + yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: error shift and go to state 4 + yacc.py:2687: class shift and go to state 5 + yacc.py:2689: + yacc.py:2714: program shift and go to state 1 + yacc.py:2714: class_list shift and go to state 2 + yacc.py:2714: def_class shift and go to state 3 + yacc.py:2561: + yacc.py:2562:state 1 + yacc.py:2563: + yacc.py:2565: (0) S' -> program . + yacc.py:2566: + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 2 + yacc.py:2563: + yacc.py:2565: (1) program -> class_list . + yacc.py:2566: + yacc.py:2687: $end reduce using rule 1 (program -> class_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 3 + yacc.py:2563: + yacc.py:2565: (2) class_list -> def_class . class_list + yacc.py:2565: (3) class_list -> def_class . + yacc.py:2565: (2) class_list -> . def_class class_list + yacc.py:2565: (3) class_list -> . def_class + yacc.py:2565: (4) class_list -> . error class_list + yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi + yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error + yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: $end reduce using rule 3 (class_list -> def_class .) + yacc.py:2687: error shift and go to state 4 + yacc.py:2687: class shift and go to state 5 + yacc.py:2689: + yacc.py:2714: def_class shift and go to state 3 + yacc.py:2714: class_list shift and go to state 6 + yacc.py:2561: + yacc.py:2562:state 4 + yacc.py:2563: + yacc.py:2565: (4) class_list -> error . class_list + yacc.py:2565: (2) class_list -> . def_class class_list + yacc.py:2565: (3) class_list -> . def_class + yacc.py:2565: (4) class_list -> . error class_list + yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi + yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error + yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: error shift and go to state 4 + yacc.py:2687: class shift and go to state 5 + yacc.py:2689: + yacc.py:2714: class_list shift and go to state 7 + yacc.py:2714: def_class shift and go to state 3 + yacc.py:2561: + yacc.py:2562:state 5 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class . type ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> class . type inherits type ocur feature_list ccur semi + yacc.py:2565: (8) def_class -> class . error ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> class . type ocur feature_list ccur error + yacc.py:2565: (10) def_class -> class . error inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> class . error inherits error ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> class . type inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> class . type inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: type shift and go to state 8 + yacc.py:2687: error shift and go to state 9 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 6 + yacc.py:2563: + yacc.py:2565: (2) class_list -> def_class class_list . + yacc.py:2566: + yacc.py:2687: $end reduce using rule 2 (class_list -> def_class class_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 7 + yacc.py:2563: + yacc.py:2565: (4) class_list -> error class_list . + yacc.py:2566: + yacc.py:2687: $end reduce using rule 4 (class_list -> error class_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 8 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type . ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> class type . inherits type ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> class type . ocur feature_list ccur error + yacc.py:2565: (12) def_class -> class type . inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> class type . inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 10 + yacc.py:2687: inherits shift and go to state 11 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 9 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error . ocur feature_list ccur semi + yacc.py:2565: (10) def_class -> class error . inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> class error . inherits error ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 12 + yacc.py:2687: inherits shift and go to state 13 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 10 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type ocur . feature_list ccur semi + yacc.py:2565: (9) def_class -> class type ocur . feature_list ccur error + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 14 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 11 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits . type ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> class type inherits . error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> class type inherits . type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: type shift and go to state 20 + yacc.py:2687: error shift and go to state 21 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 12 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error ocur . feature_list ccur semi + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 22 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 13 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits . type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> class error inherits . error ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: type shift and go to state 24 + yacc.py:2687: error shift and go to state 23 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 14 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type ocur feature_list . ccur semi + yacc.py:2565: (9) def_class -> class type ocur feature_list . ccur error + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 25 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 15 + yacc.py:2563: + yacc.py:2565: (17) feature_list -> error . feature_list + yacc.py:2565: (20) def_attr -> error . colon type + yacc.py:2565: (22) def_attr -> error . colon type larrow expr + yacc.py:2565: (26) def_func -> error . opar formals cpar colon type ocur expr ccur + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 27 + yacc.py:2687: opar shift and go to state 28 + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 26 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 16 + yacc.py:2563: + yacc.py:2565: (14) feature_list -> epsilon . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 14 (feature_list -> epsilon .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 17 + yacc.py:2563: + yacc.py:2565: (15) feature_list -> def_attr . semi feature_list + yacc.py:2566: + yacc.py:2687: semi shift and go to state 29 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 18 + yacc.py:2563: + yacc.py:2565: (16) feature_list -> def_func . semi feature_list + yacc.py:2566: + yacc.py:2687: semi shift and go to state 30 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 19 + yacc.py:2563: + yacc.py:2565: (18) def_attr -> id . colon type + yacc.py:2565: (19) def_attr -> id . colon type larrow expr + yacc.py:2565: (21) def_attr -> id . colon error + yacc.py:2565: (23) def_attr -> id . colon error larrow expr + yacc.py:2565: (24) def_attr -> id . colon type larrow error + yacc.py:2565: (25) def_func -> id . opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> id . opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> id . opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> id . opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 31 + yacc.py:2687: opar shift and go to state 32 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 20 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type . ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> class type inherits type . ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 33 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 21 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error . ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 34 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 22 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error ocur feature_list . ccur semi + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 35 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 23 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error . ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 36 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 24 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type . ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 37 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 25 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type ocur feature_list ccur . semi + yacc.py:2565: (9) def_class -> class type ocur feature_list ccur . error + yacc.py:2566: + yacc.py:2687: semi shift and go to state 38 + yacc.py:2687: error shift and go to state 39 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 26 + yacc.py:2563: + yacc.py:2565: (17) feature_list -> error feature_list . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 17 (feature_list -> error feature_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 27 + yacc.py:2563: + yacc.py:2565: (20) def_attr -> error colon . type + yacc.py:2565: (22) def_attr -> error colon . type larrow expr + yacc.py:2566: + yacc.py:2687: type shift and go to state 40 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 28 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar . formals cpar colon type ocur expr ccur + yacc.py:2565: (30) formals -> . param_list + yacc.py:2565: (31) formals -> . param_list_empty + yacc.py:2565: (32) param_list -> . param + yacc.py:2565: (33) param_list -> . param comma param_list + yacc.py:2565: (34) param_list_empty -> . epsilon + yacc.py:2565: (35) param -> . id colon type + yacc.py:2565: (5) epsilon -> . + yacc.py:2566: + yacc.py:2687: id shift and go to state 46 + yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) + yacc.py:2689: + yacc.py:2714: formals shift and go to state 41 + yacc.py:2714: param_list shift and go to state 42 + yacc.py:2714: param_list_empty shift and go to state 43 + yacc.py:2714: param shift and go to state 44 + yacc.py:2714: epsilon shift and go to state 45 + yacc.py:2561: + yacc.py:2562:state 29 + yacc.py:2563: + yacc.py:2565: (15) feature_list -> def_attr semi . feature_list + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: feature_list shift and go to state 47 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 30 + yacc.py:2563: + yacc.py:2565: (16) feature_list -> def_func semi . feature_list + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2714: feature_list shift and go to state 48 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2561: + yacc.py:2562:state 31 + yacc.py:2563: + yacc.py:2565: (18) def_attr -> id colon . type + yacc.py:2565: (19) def_attr -> id colon . type larrow expr + yacc.py:2565: (21) def_attr -> id colon . error + yacc.py:2565: (23) def_attr -> id colon . error larrow expr + yacc.py:2565: (24) def_attr -> id colon . type larrow error + yacc.py:2566: + yacc.py:2687: type shift and go to state 49 + yacc.py:2687: error shift and go to state 50 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 32 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar . formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> id opar . error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> id opar . formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> id opar . formals cpar colon type ocur error ccur + yacc.py:2565: (30) formals -> . param_list + yacc.py:2565: (31) formals -> . param_list_empty + yacc.py:2565: (32) param_list -> . param + yacc.py:2565: (33) param_list -> . param comma param_list + yacc.py:2565: (34) param_list_empty -> . epsilon + yacc.py:2565: (35) param -> . id colon type + yacc.py:2565: (5) epsilon -> . + yacc.py:2566: + yacc.py:2687: error shift and go to state 52 + yacc.py:2687: id shift and go to state 46 + yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) + yacc.py:2689: + yacc.py:2714: formals shift and go to state 51 + yacc.py:2714: param_list shift and go to state 42 + yacc.py:2714: param_list_empty shift and go to state 43 + yacc.py:2714: param shift and go to state 44 + yacc.py:2714: epsilon shift and go to state 45 + yacc.py:2561: + yacc.py:2562:state 33 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type ocur . feature_list ccur semi + yacc.py:2565: (13) def_class -> class type inherits type ocur . feature_list ccur error + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 53 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 34 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error ocur . feature_list ccur semi + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 54 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 35 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error ocur feature_list ccur . semi + yacc.py:2566: + yacc.py:2687: semi shift and go to state 55 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 36 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error ocur . feature_list ccur semi + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 56 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 37 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type ocur . feature_list ccur semi + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 57 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 38 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 39 + yacc.py:2563: + yacc.py:2565: (9) def_class -> class type ocur feature_list ccur error . + yacc.py:2566: + yacc.py:2687: error reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) + yacc.py:2687: class reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) + yacc.py:2687: $end reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 40 + yacc.py:2563: + yacc.py:2565: (20) def_attr -> error colon type . + yacc.py:2565: (22) def_attr -> error colon type . larrow expr + yacc.py:2566: + yacc.py:2687: semi reduce using rule 20 (def_attr -> error colon type .) + yacc.py:2687: larrow shift and go to state 58 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 41 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals . cpar colon type ocur expr ccur + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 59 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 42 + yacc.py:2563: + yacc.py:2565: (30) formals -> param_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 30 (formals -> param_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 43 + yacc.py:2563: + yacc.py:2565: (31) formals -> param_list_empty . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 31 (formals -> param_list_empty .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 44 + yacc.py:2563: + yacc.py:2565: (32) param_list -> param . + yacc.py:2565: (33) param_list -> param . comma param_list + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 32 (param_list -> param .) + yacc.py:2687: comma shift and go to state 60 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 45 + yacc.py:2563: + yacc.py:2565: (34) param_list_empty -> epsilon . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 34 (param_list_empty -> epsilon .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 46 + yacc.py:2563: + yacc.py:2565: (35) param -> id . colon type + yacc.py:2566: + yacc.py:2687: colon shift and go to state 61 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 47 + yacc.py:2563: + yacc.py:2565: (15) feature_list -> def_attr semi feature_list . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 15 (feature_list -> def_attr semi feature_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 48 + yacc.py:2563: + yacc.py:2565: (16) feature_list -> def_func semi feature_list . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 16 (feature_list -> def_func semi feature_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 49 + yacc.py:2563: + yacc.py:2565: (18) def_attr -> id colon type . + yacc.py:2565: (19) def_attr -> id colon type . larrow expr + yacc.py:2565: (24) def_attr -> id colon type . larrow error + yacc.py:2566: + yacc.py:2687: semi reduce using rule 18 (def_attr -> id colon type .) + yacc.py:2687: larrow shift and go to state 62 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 50 + yacc.py:2563: + yacc.py:2565: (21) def_attr -> id colon error . + yacc.py:2565: (23) def_attr -> id colon error . larrow expr + yacc.py:2566: + yacc.py:2687: semi reduce using rule 21 (def_attr -> id colon error .) + yacc.py:2687: larrow shift and go to state 63 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 51 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals . cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> id opar formals . cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> id opar formals . cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 64 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 52 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error . cpar colon type ocur expr ccur + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 65 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 53 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list . ccur semi + yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list . ccur error + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 66 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 54 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list . ccur semi + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 67 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 55 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 56 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list . ccur semi + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 68 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 57 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list . ccur semi + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 69 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 58 + yacc.py:2563: + yacc.py:2565: (22) def_attr -> error colon type larrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 71 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 59 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar . colon type ocur expr ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 94 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 60 + yacc.py:2563: + yacc.py:2565: (33) param_list -> param comma . param_list + yacc.py:2565: (32) param_list -> . param + yacc.py:2565: (33) param_list -> . param comma param_list + yacc.py:2565: (35) param -> . id colon type + yacc.py:2566: + yacc.py:2687: id shift and go to state 46 + yacc.py:2689: + yacc.py:2714: param shift and go to state 44 + yacc.py:2714: param_list shift and go to state 95 + yacc.py:2561: + yacc.py:2562:state 61 + yacc.py:2563: + yacc.py:2565: (35) param -> id colon . type + yacc.py:2566: + yacc.py:2687: type shift and go to state 96 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 62 + yacc.py:2563: + yacc.py:2565: (19) def_attr -> id colon type larrow . expr + yacc.py:2565: (24) def_attr -> id colon type larrow . error + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 98 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 97 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 63 + yacc.py:2563: + yacc.py:2565: (23) def_attr -> id colon error larrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 99 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 64 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar . colon type ocur expr ccur + yacc.py:2565: (28) def_func -> id opar formals cpar . colon error ocur expr ccur + yacc.py:2565: (29) def_func -> id opar formals cpar . colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 100 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 65 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar . colon type ocur expr ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 101 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 66 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list ccur . semi + yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list ccur . error + yacc.py:2566: + yacc.py:2687: semi shift and go to state 102 + yacc.py:2687: error shift and go to state 103 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 67 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list ccur . semi + yacc.py:2566: + yacc.py:2687: semi shift and go to state 104 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 68 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list ccur . semi + yacc.py:2566: + yacc.py:2687: semi shift and go to state 105 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 69 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list ccur . semi + yacc.py:2566: + yacc.py:2687: semi shift and go to state 106 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 70 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 71 + yacc.py:2563: + yacc.py:2565: (22) def_attr -> error colon type larrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 22 (def_attr -> error colon type larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 72 + yacc.py:2563: + yacc.py:2565: (45) expr -> id . larrow expr + yacc.py:2565: (75) atom -> id . + yacc.py:2565: (88) func_call -> id . opar args cpar + yacc.py:2565: (89) func_call -> id . opar error cpar + yacc.py:2566: + yacc.py:2687: larrow shift and go to state 112 + yacc.py:2687: arroba reduce using rule 75 (atom -> id .) + yacc.py:2687: dot reduce using rule 75 (atom -> id .) + yacc.py:2687: star reduce using rule 75 (atom -> id .) + yacc.py:2687: div reduce using rule 75 (atom -> id .) + yacc.py:2687: plus reduce using rule 75 (atom -> id .) + yacc.py:2687: minus reduce using rule 75 (atom -> id .) + yacc.py:2687: less reduce using rule 75 (atom -> id .) + yacc.py:2687: lesseq reduce using rule 75 (atom -> id .) + yacc.py:2687: equal reduce using rule 75 (atom -> id .) + yacc.py:2687: semi reduce using rule 75 (atom -> id .) + yacc.py:2687: cpar reduce using rule 75 (atom -> id .) + yacc.py:2687: of reduce using rule 75 (atom -> id .) + yacc.py:2687: then reduce using rule 75 (atom -> id .) + yacc.py:2687: loop reduce using rule 75 (atom -> id .) + yacc.py:2687: comma reduce using rule 75 (atom -> id .) + yacc.py:2687: in reduce using rule 75 (atom -> id .) + yacc.py:2687: else reduce using rule 75 (atom -> id .) + yacc.py:2687: pool reduce using rule 75 (atom -> id .) + yacc.py:2687: ccur reduce using rule 75 (atom -> id .) + yacc.py:2687: fi reduce using rule 75 (atom -> id .) + yacc.py:2687: opar shift and go to state 113 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 73 + yacc.py:2563: + yacc.py:2565: (46) expr -> comp . + yacc.py:2565: (47) comp -> comp . less op + yacc.py:2565: (48) comp -> comp . lesseq op + yacc.py:2565: (49) comp -> comp . equal op + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for less resolved as shift + yacc.py:2666: ! shift/reduce conflict for lesseq resolved as shift + yacc.py:2666: ! shift/reduce conflict for equal resolved as shift + yacc.py:2687: semi reduce using rule 46 (expr -> comp .) + yacc.py:2687: cpar reduce using rule 46 (expr -> comp .) + yacc.py:2687: arroba reduce using rule 46 (expr -> comp .) + yacc.py:2687: dot reduce using rule 46 (expr -> comp .) + yacc.py:2687: star reduce using rule 46 (expr -> comp .) + yacc.py:2687: div reduce using rule 46 (expr -> comp .) + yacc.py:2687: plus reduce using rule 46 (expr -> comp .) + yacc.py:2687: minus reduce using rule 46 (expr -> comp .) + yacc.py:2687: of reduce using rule 46 (expr -> comp .) + yacc.py:2687: then reduce using rule 46 (expr -> comp .) + yacc.py:2687: loop reduce using rule 46 (expr -> comp .) + yacc.py:2687: comma reduce using rule 46 (expr -> comp .) + yacc.py:2687: in reduce using rule 46 (expr -> comp .) + yacc.py:2687: else reduce using rule 46 (expr -> comp .) + yacc.py:2687: pool reduce using rule 46 (expr -> comp .) + yacc.py:2687: ccur reduce using rule 46 (expr -> comp .) + yacc.py:2687: fi reduce using rule 46 (expr -> comp .) + yacc.py:2687: less shift and go to state 114 + yacc.py:2687: lesseq shift and go to state 115 + yacc.py:2687: equal shift and go to state 116 + yacc.py:2689: + yacc.py:2696: ! less [ reduce using rule 46 (expr -> comp .) ] + yacc.py:2696: ! lesseq [ reduce using rule 46 (expr -> comp .) ] + yacc.py:2696: ! equal [ reduce using rule 46 (expr -> comp .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 74 + yacc.py:2563: + yacc.py:2565: (50) comp -> op . + yacc.py:2565: (51) op -> op . plus term + yacc.py:2565: (52) op -> op . minus term + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for plus resolved as shift + yacc.py:2666: ! shift/reduce conflict for minus resolved as shift + yacc.py:2687: less reduce using rule 50 (comp -> op .) + yacc.py:2687: lesseq reduce using rule 50 (comp -> op .) + yacc.py:2687: equal reduce using rule 50 (comp -> op .) + yacc.py:2687: semi reduce using rule 50 (comp -> op .) + yacc.py:2687: cpar reduce using rule 50 (comp -> op .) + yacc.py:2687: arroba reduce using rule 50 (comp -> op .) + yacc.py:2687: dot reduce using rule 50 (comp -> op .) + yacc.py:2687: star reduce using rule 50 (comp -> op .) + yacc.py:2687: div reduce using rule 50 (comp -> op .) + yacc.py:2687: of reduce using rule 50 (comp -> op .) + yacc.py:2687: then reduce using rule 50 (comp -> op .) + yacc.py:2687: loop reduce using rule 50 (comp -> op .) + yacc.py:2687: comma reduce using rule 50 (comp -> op .) + yacc.py:2687: in reduce using rule 50 (comp -> op .) + yacc.py:2687: else reduce using rule 50 (comp -> op .) + yacc.py:2687: pool reduce using rule 50 (comp -> op .) + yacc.py:2687: ccur reduce using rule 50 (comp -> op .) + yacc.py:2687: fi reduce using rule 50 (comp -> op .) + yacc.py:2687: plus shift and go to state 117 + yacc.py:2687: minus shift and go to state 118 + yacc.py:2689: + yacc.py:2696: ! plus [ reduce using rule 50 (comp -> op .) ] + yacc.py:2696: ! minus [ reduce using rule 50 (comp -> op .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 75 + yacc.py:2563: + yacc.py:2565: (53) op -> term . + yacc.py:2565: (54) term -> term . star base_call + yacc.py:2565: (55) term -> term . div base_call + yacc.py:2565: (57) term -> term . star error + yacc.py:2565: (58) term -> term . div error + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for star resolved as shift + yacc.py:2666: ! shift/reduce conflict for div resolved as shift + yacc.py:2687: plus reduce using rule 53 (op -> term .) + yacc.py:2687: minus reduce using rule 53 (op -> term .) + yacc.py:2687: less reduce using rule 53 (op -> term .) + yacc.py:2687: lesseq reduce using rule 53 (op -> term .) + yacc.py:2687: equal reduce using rule 53 (op -> term .) + yacc.py:2687: semi reduce using rule 53 (op -> term .) + yacc.py:2687: cpar reduce using rule 53 (op -> term .) + yacc.py:2687: arroba reduce using rule 53 (op -> term .) + yacc.py:2687: dot reduce using rule 53 (op -> term .) + yacc.py:2687: of reduce using rule 53 (op -> term .) + yacc.py:2687: then reduce using rule 53 (op -> term .) + yacc.py:2687: loop reduce using rule 53 (op -> term .) + yacc.py:2687: comma reduce using rule 53 (op -> term .) + yacc.py:2687: in reduce using rule 53 (op -> term .) + yacc.py:2687: else reduce using rule 53 (op -> term .) + yacc.py:2687: pool reduce using rule 53 (op -> term .) + yacc.py:2687: ccur reduce using rule 53 (op -> term .) + yacc.py:2687: fi reduce using rule 53 (op -> term .) + yacc.py:2687: star shift and go to state 119 + yacc.py:2687: div shift and go to state 120 + yacc.py:2689: + yacc.py:2696: ! star [ reduce using rule 53 (op -> term .) ] + yacc.py:2696: ! div [ reduce using rule 53 (op -> term .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 76 + yacc.py:2563: + yacc.py:2565: (56) term -> base_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 56 (term -> base_call .) + yacc.py:2687: div reduce using rule 56 (term -> base_call .) + yacc.py:2687: plus reduce using rule 56 (term -> base_call .) + yacc.py:2687: minus reduce using rule 56 (term -> base_call .) + yacc.py:2687: less reduce using rule 56 (term -> base_call .) + yacc.py:2687: lesseq reduce using rule 56 (term -> base_call .) + yacc.py:2687: equal reduce using rule 56 (term -> base_call .) + yacc.py:2687: semi reduce using rule 56 (term -> base_call .) + yacc.py:2687: cpar reduce using rule 56 (term -> base_call .) + yacc.py:2687: arroba reduce using rule 56 (term -> base_call .) + yacc.py:2687: dot reduce using rule 56 (term -> base_call .) + yacc.py:2687: of reduce using rule 56 (term -> base_call .) + yacc.py:2687: then reduce using rule 56 (term -> base_call .) + yacc.py:2687: loop reduce using rule 56 (term -> base_call .) + yacc.py:2687: comma reduce using rule 56 (term -> base_call .) + yacc.py:2687: in reduce using rule 56 (term -> base_call .) + yacc.py:2687: else reduce using rule 56 (term -> base_call .) + yacc.py:2687: pool reduce using rule 56 (term -> base_call .) + yacc.py:2687: ccur reduce using rule 56 (term -> base_call .) + yacc.py:2687: fi reduce using rule 56 (term -> base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 77 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor . arroba type dot func_call + yacc.py:2565: (60) base_call -> factor . + yacc.py:2565: (62) base_call -> factor . arroba error dot func_call + yacc.py:2565: (65) factor -> factor . dot func_call + yacc.py:2566: + yacc.py:2609: ! shift/reduce conflict for arroba resolved as shift + yacc.py:2666: ! shift/reduce conflict for dot resolved as shift + yacc.py:2687: arroba shift and go to state 121 + yacc.py:2687: star reduce using rule 60 (base_call -> factor .) + yacc.py:2687: div reduce using rule 60 (base_call -> factor .) + yacc.py:2687: plus reduce using rule 60 (base_call -> factor .) + yacc.py:2687: minus reduce using rule 60 (base_call -> factor .) + yacc.py:2687: less reduce using rule 60 (base_call -> factor .) + yacc.py:2687: lesseq reduce using rule 60 (base_call -> factor .) + yacc.py:2687: equal reduce using rule 60 (base_call -> factor .) + yacc.py:2687: semi reduce using rule 60 (base_call -> factor .) + yacc.py:2687: cpar reduce using rule 60 (base_call -> factor .) + yacc.py:2687: of reduce using rule 60 (base_call -> factor .) + yacc.py:2687: then reduce using rule 60 (base_call -> factor .) + yacc.py:2687: loop reduce using rule 60 (base_call -> factor .) + yacc.py:2687: comma reduce using rule 60 (base_call -> factor .) + yacc.py:2687: in reduce using rule 60 (base_call -> factor .) + yacc.py:2687: else reduce using rule 60 (base_call -> factor .) + yacc.py:2687: pool reduce using rule 60 (base_call -> factor .) + yacc.py:2687: ccur reduce using rule 60 (base_call -> factor .) + yacc.py:2687: fi reduce using rule 60 (base_call -> factor .) + yacc.py:2687: dot shift and go to state 122 + yacc.py:2689: + yacc.py:2696: ! arroba [ reduce using rule 60 (base_call -> factor .) ] + yacc.py:2696: ! dot [ reduce using rule 60 (base_call -> factor .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 78 + yacc.py:2563: + yacc.py:2565: (67) factor -> func_call . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 67 (factor -> func_call .) + yacc.py:2687: dot reduce using rule 67 (factor -> func_call .) + yacc.py:2687: star reduce using rule 67 (factor -> func_call .) + yacc.py:2687: div reduce using rule 67 (factor -> func_call .) + yacc.py:2687: plus reduce using rule 67 (factor -> func_call .) + yacc.py:2687: minus reduce using rule 67 (factor -> func_call .) + yacc.py:2687: less reduce using rule 67 (factor -> func_call .) + yacc.py:2687: lesseq reduce using rule 67 (factor -> func_call .) + yacc.py:2687: equal reduce using rule 67 (factor -> func_call .) + yacc.py:2687: semi reduce using rule 67 (factor -> func_call .) + yacc.py:2687: cpar reduce using rule 67 (factor -> func_call .) + yacc.py:2687: of reduce using rule 67 (factor -> func_call .) + yacc.py:2687: then reduce using rule 67 (factor -> func_call .) + yacc.py:2687: loop reduce using rule 67 (factor -> func_call .) + yacc.py:2687: comma reduce using rule 67 (factor -> func_call .) + yacc.py:2687: in reduce using rule 67 (factor -> func_call .) + yacc.py:2687: else reduce using rule 67 (factor -> func_call .) + yacc.py:2687: pool reduce using rule 67 (factor -> func_call .) + yacc.py:2687: ccur reduce using rule 67 (factor -> func_call .) + yacc.py:2687: fi reduce using rule 67 (factor -> func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 79 + yacc.py:2563: + yacc.py:2565: (63) factor -> atom . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 63 (factor -> atom .) + yacc.py:2687: dot reduce using rule 63 (factor -> atom .) + yacc.py:2687: star reduce using rule 63 (factor -> atom .) + yacc.py:2687: div reduce using rule 63 (factor -> atom .) + yacc.py:2687: plus reduce using rule 63 (factor -> atom .) + yacc.py:2687: minus reduce using rule 63 (factor -> atom .) + yacc.py:2687: less reduce using rule 63 (factor -> atom .) + yacc.py:2687: lesseq reduce using rule 63 (factor -> atom .) + yacc.py:2687: equal reduce using rule 63 (factor -> atom .) + yacc.py:2687: semi reduce using rule 63 (factor -> atom .) + yacc.py:2687: cpar reduce using rule 63 (factor -> atom .) + yacc.py:2687: of reduce using rule 63 (factor -> atom .) + yacc.py:2687: then reduce using rule 63 (factor -> atom .) + yacc.py:2687: loop reduce using rule 63 (factor -> atom .) + yacc.py:2687: comma reduce using rule 63 (factor -> atom .) + yacc.py:2687: in reduce using rule 63 (factor -> atom .) + yacc.py:2687: else reduce using rule 63 (factor -> atom .) + yacc.py:2687: pool reduce using rule 63 (factor -> atom .) + yacc.py:2687: ccur reduce using rule 63 (factor -> atom .) + yacc.py:2687: fi reduce using rule 63 (factor -> atom .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 80 + yacc.py:2563: + yacc.py:2565: (64) factor -> opar . expr cpar + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 123 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 81 + yacc.py:2563: + yacc.py:2565: (66) factor -> not . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 124 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 82 + yacc.py:2563: + yacc.py:2565: (68) factor -> isvoid . base_call + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: base_call shift and go to state 125 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 83 + yacc.py:2563: + yacc.py:2565: (69) factor -> nox . base_call + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: base_call shift and go to state 127 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 84 + yacc.py:2563: + yacc.py:2565: (70) factor -> let . let_list in expr + yacc.py:2565: (36) let_list -> . let_assign + yacc.py:2565: (37) let_list -> . let_assign comma let_list + yacc.py:2565: (38) let_assign -> . param larrow expr + yacc.py:2565: (39) let_assign -> . param + yacc.py:2565: (35) param -> . id colon type + yacc.py:2566: + yacc.py:2687: id shift and go to state 46 + yacc.py:2689: + yacc.py:2714: let_list shift and go to state 128 + yacc.py:2714: let_assign shift and go to state 129 + yacc.py:2714: param shift and go to state 130 + yacc.py:2561: + yacc.py:2562:state 85 + yacc.py:2563: + yacc.py:2565: (71) factor -> case . expr of cases_list esac + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 131 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 86 + yacc.py:2563: + yacc.py:2565: (72) factor -> if . expr then expr else expr fi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 132 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 87 + yacc.py:2563: + yacc.py:2565: (73) factor -> while . expr loop expr pool + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 133 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 88 + yacc.py:2563: + yacc.py:2565: (74) atom -> num . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 74 (atom -> num .) + yacc.py:2687: dot reduce using rule 74 (atom -> num .) + yacc.py:2687: star reduce using rule 74 (atom -> num .) + yacc.py:2687: div reduce using rule 74 (atom -> num .) + yacc.py:2687: plus reduce using rule 74 (atom -> num .) + yacc.py:2687: minus reduce using rule 74 (atom -> num .) + yacc.py:2687: less reduce using rule 74 (atom -> num .) + yacc.py:2687: lesseq reduce using rule 74 (atom -> num .) + yacc.py:2687: equal reduce using rule 74 (atom -> num .) + yacc.py:2687: semi reduce using rule 74 (atom -> num .) + yacc.py:2687: cpar reduce using rule 74 (atom -> num .) + yacc.py:2687: of reduce using rule 74 (atom -> num .) + yacc.py:2687: then reduce using rule 74 (atom -> num .) + yacc.py:2687: loop reduce using rule 74 (atom -> num .) + yacc.py:2687: comma reduce using rule 74 (atom -> num .) + yacc.py:2687: in reduce using rule 74 (atom -> num .) + yacc.py:2687: else reduce using rule 74 (atom -> num .) + yacc.py:2687: pool reduce using rule 74 (atom -> num .) + yacc.py:2687: ccur reduce using rule 74 (atom -> num .) + yacc.py:2687: fi reduce using rule 74 (atom -> num .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 89 + yacc.py:2563: + yacc.py:2565: (76) atom -> new . type + yacc.py:2566: + yacc.py:2687: type shift and go to state 134 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 90 + yacc.py:2563: + yacc.py:2565: (77) atom -> ocur . block ccur + yacc.py:2565: (79) atom -> ocur . error ccur + yacc.py:2565: (80) atom -> ocur . block error + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 136 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: block shift and go to state 135 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 91 + yacc.py:2563: + yacc.py:2565: (81) atom -> true . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 81 (atom -> true .) + yacc.py:2687: dot reduce using rule 81 (atom -> true .) + yacc.py:2687: star reduce using rule 81 (atom -> true .) + yacc.py:2687: div reduce using rule 81 (atom -> true .) + yacc.py:2687: plus reduce using rule 81 (atom -> true .) + yacc.py:2687: minus reduce using rule 81 (atom -> true .) + yacc.py:2687: less reduce using rule 81 (atom -> true .) + yacc.py:2687: lesseq reduce using rule 81 (atom -> true .) + yacc.py:2687: equal reduce using rule 81 (atom -> true .) + yacc.py:2687: semi reduce using rule 81 (atom -> true .) + yacc.py:2687: cpar reduce using rule 81 (atom -> true .) + yacc.py:2687: of reduce using rule 81 (atom -> true .) + yacc.py:2687: then reduce using rule 81 (atom -> true .) + yacc.py:2687: loop reduce using rule 81 (atom -> true .) + yacc.py:2687: comma reduce using rule 81 (atom -> true .) + yacc.py:2687: in reduce using rule 81 (atom -> true .) + yacc.py:2687: else reduce using rule 81 (atom -> true .) + yacc.py:2687: pool reduce using rule 81 (atom -> true .) + yacc.py:2687: ccur reduce using rule 81 (atom -> true .) + yacc.py:2687: fi reduce using rule 81 (atom -> true .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 92 + yacc.py:2563: + yacc.py:2565: (82) atom -> false . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 82 (atom -> false .) + yacc.py:2687: dot reduce using rule 82 (atom -> false .) + yacc.py:2687: star reduce using rule 82 (atom -> false .) + yacc.py:2687: div reduce using rule 82 (atom -> false .) + yacc.py:2687: plus reduce using rule 82 (atom -> false .) + yacc.py:2687: minus reduce using rule 82 (atom -> false .) + yacc.py:2687: less reduce using rule 82 (atom -> false .) + yacc.py:2687: lesseq reduce using rule 82 (atom -> false .) + yacc.py:2687: equal reduce using rule 82 (atom -> false .) + yacc.py:2687: semi reduce using rule 82 (atom -> false .) + yacc.py:2687: cpar reduce using rule 82 (atom -> false .) + yacc.py:2687: of reduce using rule 82 (atom -> false .) + yacc.py:2687: then reduce using rule 82 (atom -> false .) + yacc.py:2687: loop reduce using rule 82 (atom -> false .) + yacc.py:2687: comma reduce using rule 82 (atom -> false .) + yacc.py:2687: in reduce using rule 82 (atom -> false .) + yacc.py:2687: else reduce using rule 82 (atom -> false .) + yacc.py:2687: pool reduce using rule 82 (atom -> false .) + yacc.py:2687: ccur reduce using rule 82 (atom -> false .) + yacc.py:2687: fi reduce using rule 82 (atom -> false .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 93 + yacc.py:2563: + yacc.py:2565: (83) atom -> string . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 83 (atom -> string .) + yacc.py:2687: dot reduce using rule 83 (atom -> string .) + yacc.py:2687: star reduce using rule 83 (atom -> string .) + yacc.py:2687: div reduce using rule 83 (atom -> string .) + yacc.py:2687: plus reduce using rule 83 (atom -> string .) + yacc.py:2687: minus reduce using rule 83 (atom -> string .) + yacc.py:2687: less reduce using rule 83 (atom -> string .) + yacc.py:2687: lesseq reduce using rule 83 (atom -> string .) + yacc.py:2687: equal reduce using rule 83 (atom -> string .) + yacc.py:2687: semi reduce using rule 83 (atom -> string .) + yacc.py:2687: cpar reduce using rule 83 (atom -> string .) + yacc.py:2687: of reduce using rule 83 (atom -> string .) + yacc.py:2687: then reduce using rule 83 (atom -> string .) + yacc.py:2687: loop reduce using rule 83 (atom -> string .) + yacc.py:2687: comma reduce using rule 83 (atom -> string .) + yacc.py:2687: in reduce using rule 83 (atom -> string .) + yacc.py:2687: else reduce using rule 83 (atom -> string .) + yacc.py:2687: pool reduce using rule 83 (atom -> string .) + yacc.py:2687: ccur reduce using rule 83 (atom -> string .) + yacc.py:2687: fi reduce using rule 83 (atom -> string .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 94 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon . type ocur expr ccur + yacc.py:2566: + yacc.py:2687: type shift and go to state 137 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 95 + yacc.py:2563: + yacc.py:2565: (33) param_list -> param comma param_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 33 (param_list -> param comma param_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 96 + yacc.py:2563: + yacc.py:2565: (35) param -> id colon type . + yacc.py:2566: + yacc.py:2687: comma reduce using rule 35 (param -> id colon type .) + yacc.py:2687: cpar reduce using rule 35 (param -> id colon type .) + yacc.py:2687: larrow reduce using rule 35 (param -> id colon type .) + yacc.py:2687: in reduce using rule 35 (param -> id colon type .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 97 + yacc.py:2563: + yacc.py:2565: (19) def_attr -> id colon type larrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 19 (def_attr -> id colon type larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 98 + yacc.py:2563: + yacc.py:2565: (24) def_attr -> id colon type larrow error . + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: semi reduce using rule 24 (def_attr -> id colon type larrow error .) + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 99 + yacc.py:2563: + yacc.py:2565: (23) def_attr -> id colon error larrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 23 (def_attr -> id colon error larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 100 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon . type ocur expr ccur + yacc.py:2565: (28) def_func -> id opar formals cpar colon . error ocur expr ccur + yacc.py:2565: (29) def_func -> id opar formals cpar colon . type ocur error ccur + yacc.py:2566: + yacc.py:2687: type shift and go to state 138 + yacc.py:2687: error shift and go to state 139 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 101 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon . type ocur expr ccur + yacc.py:2566: + yacc.py:2687: type shift and go to state 140 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 102 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 103 + yacc.py:2563: + yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list ccur error . + yacc.py:2566: + yacc.py:2687: error reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) + yacc.py:2687: class reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) + yacc.py:2687: $end reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 104 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 105 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 106 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 107 + yacc.py:2563: + yacc.py:2565: (86) block -> error . block + yacc.py:2565: (87) block -> error . semi + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: semi shift and go to state 142 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: block shift and go to state 141 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 108 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error arroba . type dot func_call + yacc.py:2566: + yacc.py:2687: type shift and go to state 143 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 109 + yacc.py:2563: + yacc.py:2565: (78) atom -> error block . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 144 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 110 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error opar . args cpar + yacc.py:2565: (64) factor -> opar . expr cpar + yacc.py:2565: (91) args -> . arg_list + yacc.py:2565: (92) args -> . arg_list_empty + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (96) arg_list_empty -> . epsilon + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 145 + yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: args shift and go to state 146 + yacc.py:2714: expr shift and go to state 147 + yacc.py:2714: arg_list shift and go to state 148 + yacc.py:2714: arg_list_empty shift and go to state 149 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: epsilon shift and go to state 150 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 111 + yacc.py:2563: + yacc.py:2565: (84) block -> expr . semi + yacc.py:2565: (85) block -> expr . semi block + yacc.py:2566: + yacc.py:2687: semi shift and go to state 151 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 112 + yacc.py:2563: + yacc.py:2565: (45) expr -> id larrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 152 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 113 + yacc.py:2563: + yacc.py:2565: (88) func_call -> id opar . args cpar + yacc.py:2565: (89) func_call -> id opar . error cpar + yacc.py:2565: (91) args -> . arg_list + yacc.py:2565: (92) args -> . arg_list_empty + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (96) arg_list_empty -> . epsilon + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 154 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: args shift and go to state 153 + yacc.py:2714: arg_list shift and go to state 148 + yacc.py:2714: arg_list_empty shift and go to state 149 + yacc.py:2714: expr shift and go to state 155 + yacc.py:2714: epsilon shift and go to state 150 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 114 + yacc.py:2563: + yacc.py:2565: (47) comp -> comp less . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: op shift and go to state 156 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 115 + yacc.py:2563: + yacc.py:2565: (48) comp -> comp lesseq . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: op shift and go to state 157 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 116 + yacc.py:2563: + yacc.py:2565: (49) comp -> comp equal . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: op shift and go to state 158 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 117 + yacc.py:2563: + yacc.py:2565: (51) op -> op plus . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: term shift and go to state 159 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 118 + yacc.py:2563: + yacc.py:2565: (52) op -> op minus . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: term shift and go to state 160 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 119 + yacc.py:2563: + yacc.py:2565: (54) term -> term star . base_call + yacc.py:2565: (57) term -> term star . error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 162 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: base_call shift and go to state 161 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 120 + yacc.py:2563: + yacc.py:2565: (55) term -> term div . base_call + yacc.py:2565: (58) term -> term div . error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 164 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: base_call shift and go to state 163 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 121 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor arroba . type dot func_call + yacc.py:2565: (62) base_call -> factor arroba . error dot func_call + yacc.py:2566: + yacc.py:2687: type shift and go to state 165 + yacc.py:2687: error shift and go to state 166 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 122 + yacc.py:2563: + yacc.py:2565: (65) factor -> factor dot . func_call + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 168 + yacc.py:2687: error shift and go to state 169 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 167 + yacc.py:2561: + yacc.py:2562:state 123 + yacc.py:2563: + yacc.py:2565: (64) factor -> opar expr . cpar + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 170 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 124 + yacc.py:2563: + yacc.py:2565: (66) factor -> not expr . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 66 (factor -> not expr .) + yacc.py:2687: dot reduce using rule 66 (factor -> not expr .) + yacc.py:2687: star reduce using rule 66 (factor -> not expr .) + yacc.py:2687: div reduce using rule 66 (factor -> not expr .) + yacc.py:2687: plus reduce using rule 66 (factor -> not expr .) + yacc.py:2687: minus reduce using rule 66 (factor -> not expr .) + yacc.py:2687: less reduce using rule 66 (factor -> not expr .) + yacc.py:2687: lesseq reduce using rule 66 (factor -> not expr .) + yacc.py:2687: equal reduce using rule 66 (factor -> not expr .) + yacc.py:2687: semi reduce using rule 66 (factor -> not expr .) + yacc.py:2687: cpar reduce using rule 66 (factor -> not expr .) + yacc.py:2687: of reduce using rule 66 (factor -> not expr .) + yacc.py:2687: then reduce using rule 66 (factor -> not expr .) + yacc.py:2687: loop reduce using rule 66 (factor -> not expr .) + yacc.py:2687: comma reduce using rule 66 (factor -> not expr .) + yacc.py:2687: in reduce using rule 66 (factor -> not expr .) + yacc.py:2687: else reduce using rule 66 (factor -> not expr .) + yacc.py:2687: pool reduce using rule 66 (factor -> not expr .) + yacc.py:2687: ccur reduce using rule 66 (factor -> not expr .) + yacc.py:2687: fi reduce using rule 66 (factor -> not expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 125 + yacc.py:2563: + yacc.py:2565: (68) factor -> isvoid base_call . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: dot reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: star reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: div reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: plus reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: minus reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: less reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: lesseq reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: equal reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: semi reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: cpar reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: of reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: then reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: loop reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: comma reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: in reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: else reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: pool reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: ccur reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: fi reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 126 + yacc.py:2563: + yacc.py:2565: (75) atom -> id . + yacc.py:2565: (88) func_call -> id . opar args cpar + yacc.py:2565: (89) func_call -> id . opar error cpar + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 75 (atom -> id .) + yacc.py:2687: dot reduce using rule 75 (atom -> id .) + yacc.py:2687: star reduce using rule 75 (atom -> id .) + yacc.py:2687: div reduce using rule 75 (atom -> id .) + yacc.py:2687: plus reduce using rule 75 (atom -> id .) + yacc.py:2687: minus reduce using rule 75 (atom -> id .) + yacc.py:2687: less reduce using rule 75 (atom -> id .) + yacc.py:2687: lesseq reduce using rule 75 (atom -> id .) + yacc.py:2687: equal reduce using rule 75 (atom -> id .) + yacc.py:2687: semi reduce using rule 75 (atom -> id .) + yacc.py:2687: cpar reduce using rule 75 (atom -> id .) + yacc.py:2687: of reduce using rule 75 (atom -> id .) + yacc.py:2687: then reduce using rule 75 (atom -> id .) + yacc.py:2687: loop reduce using rule 75 (atom -> id .) + yacc.py:2687: comma reduce using rule 75 (atom -> id .) + yacc.py:2687: in reduce using rule 75 (atom -> id .) + yacc.py:2687: else reduce using rule 75 (atom -> id .) + yacc.py:2687: pool reduce using rule 75 (atom -> id .) + yacc.py:2687: ccur reduce using rule 75 (atom -> id .) + yacc.py:2687: fi reduce using rule 75 (atom -> id .) + yacc.py:2687: opar shift and go to state 113 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 127 + yacc.py:2563: + yacc.py:2565: (69) factor -> nox base_call . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: dot reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: star reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: div reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: plus reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: minus reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: less reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: lesseq reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: equal reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: semi reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: cpar reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: of reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: then reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: loop reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: comma reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: in reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: else reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: pool reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: ccur reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: fi reduce using rule 69 (factor -> nox base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 128 + yacc.py:2563: + yacc.py:2565: (70) factor -> let let_list . in expr + yacc.py:2566: + yacc.py:2687: in shift and go to state 171 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 129 + yacc.py:2563: + yacc.py:2565: (36) let_list -> let_assign . + yacc.py:2565: (37) let_list -> let_assign . comma let_list + yacc.py:2566: + yacc.py:2687: in reduce using rule 36 (let_list -> let_assign .) + yacc.py:2687: comma shift and go to state 172 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 130 + yacc.py:2563: + yacc.py:2565: (38) let_assign -> param . larrow expr + yacc.py:2565: (39) let_assign -> param . + yacc.py:2566: + yacc.py:2687: larrow shift and go to state 173 + yacc.py:2687: comma reduce using rule 39 (let_assign -> param .) + yacc.py:2687: in reduce using rule 39 (let_assign -> param .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 131 + yacc.py:2563: + yacc.py:2565: (71) factor -> case expr . of cases_list esac + yacc.py:2566: + yacc.py:2687: of shift and go to state 174 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 132 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr . then expr else expr fi + yacc.py:2566: + yacc.py:2687: then shift and go to state 175 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 133 + yacc.py:2563: + yacc.py:2565: (73) factor -> while expr . loop expr pool + yacc.py:2566: + yacc.py:2687: loop shift and go to state 176 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 134 + yacc.py:2563: + yacc.py:2565: (76) atom -> new type . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 76 (atom -> new type .) + yacc.py:2687: dot reduce using rule 76 (atom -> new type .) + yacc.py:2687: star reduce using rule 76 (atom -> new type .) + yacc.py:2687: div reduce using rule 76 (atom -> new type .) + yacc.py:2687: plus reduce using rule 76 (atom -> new type .) + yacc.py:2687: minus reduce using rule 76 (atom -> new type .) + yacc.py:2687: less reduce using rule 76 (atom -> new type .) + yacc.py:2687: lesseq reduce using rule 76 (atom -> new type .) + yacc.py:2687: equal reduce using rule 76 (atom -> new type .) + yacc.py:2687: semi reduce using rule 76 (atom -> new type .) + yacc.py:2687: cpar reduce using rule 76 (atom -> new type .) + yacc.py:2687: of reduce using rule 76 (atom -> new type .) + yacc.py:2687: then reduce using rule 76 (atom -> new type .) + yacc.py:2687: loop reduce using rule 76 (atom -> new type .) + yacc.py:2687: comma reduce using rule 76 (atom -> new type .) + yacc.py:2687: in reduce using rule 76 (atom -> new type .) + yacc.py:2687: else reduce using rule 76 (atom -> new type .) + yacc.py:2687: pool reduce using rule 76 (atom -> new type .) + yacc.py:2687: ccur reduce using rule 76 (atom -> new type .) + yacc.py:2687: fi reduce using rule 76 (atom -> new type .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 135 + yacc.py:2563: + yacc.py:2565: (77) atom -> ocur block . ccur + yacc.py:2565: (80) atom -> ocur block . error + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 177 + yacc.py:2687: error shift and go to state 178 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 136 + yacc.py:2563: + yacc.py:2565: (79) atom -> ocur error . ccur + yacc.py:2565: (86) block -> error . block + yacc.py:2565: (87) block -> error . semi + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 179 + yacc.py:2687: semi shift and go to state 142 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: block shift and go to state 141 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 137 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon type . ocur expr ccur + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 180 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 138 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon type . ocur expr ccur + yacc.py:2565: (29) def_func -> id opar formals cpar colon type . ocur error ccur + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 181 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 139 + yacc.py:2563: + yacc.py:2565: (28) def_func -> id opar formals cpar colon error . ocur expr ccur + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 182 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 140 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon type . ocur expr ccur + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 183 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 141 + yacc.py:2563: + yacc.py:2565: (86) block -> error block . + yacc.py:2565: (78) atom -> error block . ccur + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for ccur resolved as shift + yacc.py:2687: error reduce using rule 86 (block -> error block .) + yacc.py:2687: ccur shift and go to state 144 + yacc.py:2689: + yacc.py:2696: ! ccur [ reduce using rule 86 (block -> error block .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 142 + yacc.py:2563: + yacc.py:2565: (87) block -> error semi . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 87 (block -> error semi .) + yacc.py:2687: error reduce using rule 87 (block -> error semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 143 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error arroba type . dot func_call + yacc.py:2566: + yacc.py:2687: dot shift and go to state 184 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 144 + yacc.py:2563: + yacc.py:2565: (78) atom -> error block ccur . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: dot reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: star reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: div reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: plus reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: minus reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: less reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: lesseq reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: equal reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: semi reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: cpar reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: of reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: then reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: loop reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: comma reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: in reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: else reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: pool reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: ccur reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: fi reduce using rule 78 (atom -> error block ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 145 + yacc.py:2563: + yacc.py:2565: (95) arg_list -> error . arg_list + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 185 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: arg_list shift and go to state 186 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 187 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 146 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error opar args . cpar + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 188 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 147 + yacc.py:2563: + yacc.py:2565: (64) factor -> opar expr . cpar + yacc.py:2565: (93) arg_list -> expr . + yacc.py:2565: (94) arg_list -> expr . comma arg_list + yacc.py:2566: + yacc.py:2609: ! shift/reduce conflict for cpar resolved as shift + yacc.py:2687: cpar shift and go to state 170 + yacc.py:2687: comma shift and go to state 189 + yacc.py:2689: + yacc.py:2696: ! cpar [ reduce using rule 93 (arg_list -> expr .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 148 + yacc.py:2563: + yacc.py:2565: (91) args -> arg_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 91 (args -> arg_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 149 + yacc.py:2563: + yacc.py:2565: (92) args -> arg_list_empty . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 92 (args -> arg_list_empty .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 150 + yacc.py:2563: + yacc.py:2565: (96) arg_list_empty -> epsilon . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 96 (arg_list_empty -> epsilon .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 151 + yacc.py:2563: + yacc.py:2565: (84) block -> expr semi . + yacc.py:2565: (85) block -> expr semi . block + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for error resolved as shift + yacc.py:2687: ccur reduce using rule 84 (block -> expr semi .) + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2696: ! error [ reduce using rule 84 (block -> expr semi .) ] + yacc.py:2700: + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: block shift and go to state 190 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 152 + yacc.py:2563: + yacc.py:2565: (45) expr -> id larrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: cpar reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: arroba reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: dot reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: star reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: div reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: plus reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: minus reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: less reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: lesseq reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: equal reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: of reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: then reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: loop reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: comma reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: in reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: else reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: pool reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: ccur reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: fi reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 153 + yacc.py:2563: + yacc.py:2565: (88) func_call -> id opar args . cpar + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 191 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 154 + yacc.py:2563: + yacc.py:2565: (89) func_call -> id opar error . cpar + yacc.py:2565: (95) arg_list -> error . arg_list + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 192 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 185 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: arg_list shift and go to state 186 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 187 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 155 + yacc.py:2563: + yacc.py:2565: (93) arg_list -> expr . + yacc.py:2565: (94) arg_list -> expr . comma arg_list + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 93 (arg_list -> expr .) + yacc.py:2687: comma shift and go to state 189 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 156 + yacc.py:2563: + yacc.py:2565: (47) comp -> comp less op . + yacc.py:2565: (51) op -> op . plus term + yacc.py:2565: (52) op -> op . minus term + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for plus resolved as shift + yacc.py:2666: ! shift/reduce conflict for minus resolved as shift + yacc.py:2687: less reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: lesseq reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: equal reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: semi reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: cpar reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: arroba reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: dot reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: star reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: div reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: of reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: then reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: loop reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: comma reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: in reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: else reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: pool reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: ccur reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: fi reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: plus shift and go to state 117 + yacc.py:2687: minus shift and go to state 118 + yacc.py:2689: + yacc.py:2696: ! plus [ reduce using rule 47 (comp -> comp less op .) ] + yacc.py:2696: ! minus [ reduce using rule 47 (comp -> comp less op .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 157 + yacc.py:2563: + yacc.py:2565: (48) comp -> comp lesseq op . + yacc.py:2565: (51) op -> op . plus term + yacc.py:2565: (52) op -> op . minus term + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for plus resolved as shift + yacc.py:2666: ! shift/reduce conflict for minus resolved as shift + yacc.py:2687: less reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: lesseq reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: equal reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: semi reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: cpar reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: arroba reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: dot reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: star reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: div reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: of reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: then reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: loop reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: comma reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: in reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: else reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: pool reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: ccur reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: fi reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: plus shift and go to state 117 + yacc.py:2687: minus shift and go to state 118 + yacc.py:2689: + yacc.py:2696: ! plus [ reduce using rule 48 (comp -> comp lesseq op .) ] + yacc.py:2696: ! minus [ reduce using rule 48 (comp -> comp lesseq op .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 158 + yacc.py:2563: + yacc.py:2565: (49) comp -> comp equal op . + yacc.py:2565: (51) op -> op . plus term + yacc.py:2565: (52) op -> op . minus term + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for plus resolved as shift + yacc.py:2666: ! shift/reduce conflict for minus resolved as shift + yacc.py:2687: less reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: lesseq reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: equal reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: semi reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: cpar reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: arroba reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: dot reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: star reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: div reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: of reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: then reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: loop reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: comma reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: in reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: else reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: pool reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: ccur reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: fi reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: plus shift and go to state 117 + yacc.py:2687: minus shift and go to state 118 + yacc.py:2689: + yacc.py:2696: ! plus [ reduce using rule 49 (comp -> comp equal op .) ] + yacc.py:2696: ! minus [ reduce using rule 49 (comp -> comp equal op .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 159 + yacc.py:2563: + yacc.py:2565: (51) op -> op plus term . + yacc.py:2565: (54) term -> term . star base_call + yacc.py:2565: (55) term -> term . div base_call + yacc.py:2565: (57) term -> term . star error + yacc.py:2565: (58) term -> term . div error + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for star resolved as shift + yacc.py:2666: ! shift/reduce conflict for div resolved as shift + yacc.py:2687: plus reduce using rule 51 (op -> op plus term .) + yacc.py:2687: minus reduce using rule 51 (op -> op plus term .) + yacc.py:2687: less reduce using rule 51 (op -> op plus term .) + yacc.py:2687: lesseq reduce using rule 51 (op -> op plus term .) + yacc.py:2687: equal reduce using rule 51 (op -> op plus term .) + yacc.py:2687: semi reduce using rule 51 (op -> op plus term .) + yacc.py:2687: cpar reduce using rule 51 (op -> op plus term .) + yacc.py:2687: arroba reduce using rule 51 (op -> op plus term .) + yacc.py:2687: dot reduce using rule 51 (op -> op plus term .) + yacc.py:2687: of reduce using rule 51 (op -> op plus term .) + yacc.py:2687: then reduce using rule 51 (op -> op plus term .) + yacc.py:2687: loop reduce using rule 51 (op -> op plus term .) + yacc.py:2687: comma reduce using rule 51 (op -> op plus term .) + yacc.py:2687: in reduce using rule 51 (op -> op plus term .) + yacc.py:2687: else reduce using rule 51 (op -> op plus term .) + yacc.py:2687: pool reduce using rule 51 (op -> op plus term .) + yacc.py:2687: ccur reduce using rule 51 (op -> op plus term .) + yacc.py:2687: fi reduce using rule 51 (op -> op plus term .) + yacc.py:2687: star shift and go to state 119 + yacc.py:2687: div shift and go to state 120 + yacc.py:2689: + yacc.py:2696: ! star [ reduce using rule 51 (op -> op plus term .) ] + yacc.py:2696: ! div [ reduce using rule 51 (op -> op plus term .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 160 + yacc.py:2563: + yacc.py:2565: (52) op -> op minus term . + yacc.py:2565: (54) term -> term . star base_call + yacc.py:2565: (55) term -> term . div base_call + yacc.py:2565: (57) term -> term . star error + yacc.py:2565: (58) term -> term . div error + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for star resolved as shift + yacc.py:2666: ! shift/reduce conflict for div resolved as shift + yacc.py:2687: plus reduce using rule 52 (op -> op minus term .) + yacc.py:2687: minus reduce using rule 52 (op -> op minus term .) + yacc.py:2687: less reduce using rule 52 (op -> op minus term .) + yacc.py:2687: lesseq reduce using rule 52 (op -> op minus term .) + yacc.py:2687: equal reduce using rule 52 (op -> op minus term .) + yacc.py:2687: semi reduce using rule 52 (op -> op minus term .) + yacc.py:2687: cpar reduce using rule 52 (op -> op minus term .) + yacc.py:2687: arroba reduce using rule 52 (op -> op minus term .) + yacc.py:2687: dot reduce using rule 52 (op -> op minus term .) + yacc.py:2687: of reduce using rule 52 (op -> op minus term .) + yacc.py:2687: then reduce using rule 52 (op -> op minus term .) + yacc.py:2687: loop reduce using rule 52 (op -> op minus term .) + yacc.py:2687: comma reduce using rule 52 (op -> op minus term .) + yacc.py:2687: in reduce using rule 52 (op -> op minus term .) + yacc.py:2687: else reduce using rule 52 (op -> op minus term .) + yacc.py:2687: pool reduce using rule 52 (op -> op minus term .) + yacc.py:2687: ccur reduce using rule 52 (op -> op minus term .) + yacc.py:2687: fi reduce using rule 52 (op -> op minus term .) + yacc.py:2687: star shift and go to state 119 + yacc.py:2687: div shift and go to state 120 + yacc.py:2689: + yacc.py:2696: ! star [ reduce using rule 52 (op -> op minus term .) ] + yacc.py:2696: ! div [ reduce using rule 52 (op -> op minus term .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 161 + yacc.py:2563: + yacc.py:2565: (54) term -> term star base_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: div reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: plus reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: minus reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: less reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: lesseq reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: equal reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: semi reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: cpar reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: arroba reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: dot reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: of reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: then reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: loop reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: comma reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: in reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: else reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: pool reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: ccur reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: fi reduce using rule 54 (term -> term star base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 162 + yacc.py:2563: + yacc.py:2565: (57) term -> term star error . + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for arroba resolved as shift + yacc.py:2687: star reduce using rule 57 (term -> term star error .) + yacc.py:2687: div reduce using rule 57 (term -> term star error .) + yacc.py:2687: plus reduce using rule 57 (term -> term star error .) + yacc.py:2687: minus reduce using rule 57 (term -> term star error .) + yacc.py:2687: less reduce using rule 57 (term -> term star error .) + yacc.py:2687: lesseq reduce using rule 57 (term -> term star error .) + yacc.py:2687: equal reduce using rule 57 (term -> term star error .) + yacc.py:2687: semi reduce using rule 57 (term -> term star error .) + yacc.py:2687: cpar reduce using rule 57 (term -> term star error .) + yacc.py:2687: dot reduce using rule 57 (term -> term star error .) + yacc.py:2687: of reduce using rule 57 (term -> term star error .) + yacc.py:2687: then reduce using rule 57 (term -> term star error .) + yacc.py:2687: loop reduce using rule 57 (term -> term star error .) + yacc.py:2687: comma reduce using rule 57 (term -> term star error .) + yacc.py:2687: in reduce using rule 57 (term -> term star error .) + yacc.py:2687: else reduce using rule 57 (term -> term star error .) + yacc.py:2687: pool reduce using rule 57 (term -> term star error .) + yacc.py:2687: ccur reduce using rule 57 (term -> term star error .) + yacc.py:2687: fi reduce using rule 57 (term -> term star error .) + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2696: ! arroba [ reduce using rule 57 (term -> term star error .) ] + yacc.py:2700: + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 163 + yacc.py:2563: + yacc.py:2565: (55) term -> term div base_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: div reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: plus reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: minus reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: less reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: lesseq reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: equal reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: semi reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: cpar reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: arroba reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: dot reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: of reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: then reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: loop reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: comma reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: in reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: else reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: pool reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: ccur reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: fi reduce using rule 55 (term -> term div base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 164 + yacc.py:2563: + yacc.py:2565: (58) term -> term div error . + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for arroba resolved as shift + yacc.py:2687: star reduce using rule 58 (term -> term div error .) + yacc.py:2687: div reduce using rule 58 (term -> term div error .) + yacc.py:2687: plus reduce using rule 58 (term -> term div error .) + yacc.py:2687: minus reduce using rule 58 (term -> term div error .) + yacc.py:2687: less reduce using rule 58 (term -> term div error .) + yacc.py:2687: lesseq reduce using rule 58 (term -> term div error .) + yacc.py:2687: equal reduce using rule 58 (term -> term div error .) + yacc.py:2687: semi reduce using rule 58 (term -> term div error .) + yacc.py:2687: cpar reduce using rule 58 (term -> term div error .) + yacc.py:2687: dot reduce using rule 58 (term -> term div error .) + yacc.py:2687: of reduce using rule 58 (term -> term div error .) + yacc.py:2687: then reduce using rule 58 (term -> term div error .) + yacc.py:2687: loop reduce using rule 58 (term -> term div error .) + yacc.py:2687: comma reduce using rule 58 (term -> term div error .) + yacc.py:2687: in reduce using rule 58 (term -> term div error .) + yacc.py:2687: else reduce using rule 58 (term -> term div error .) + yacc.py:2687: pool reduce using rule 58 (term -> term div error .) + yacc.py:2687: ccur reduce using rule 58 (term -> term div error .) + yacc.py:2687: fi reduce using rule 58 (term -> term div error .) + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2696: ! arroba [ reduce using rule 58 (term -> term div error .) ] + yacc.py:2700: + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 165 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor arroba type . dot func_call + yacc.py:2566: + yacc.py:2687: dot shift and go to state 193 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 166 + yacc.py:2563: + yacc.py:2565: (62) base_call -> factor arroba error . dot func_call + yacc.py:2566: + yacc.py:2687: dot shift and go to state 194 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 167 + yacc.py:2563: + yacc.py:2565: (65) factor -> factor dot func_call . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: dot reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: star reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: div reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: plus reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: minus reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: less reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: lesseq reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: equal reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: semi reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: cpar reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: of reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: then reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: loop reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: comma reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: in reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: else reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: pool reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: ccur reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: fi reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 168 + yacc.py:2563: + yacc.py:2565: (88) func_call -> id . opar args cpar + yacc.py:2565: (89) func_call -> id . opar error cpar + yacc.py:2566: + yacc.py:2687: opar shift and go to state 113 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 169 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2566: + yacc.py:2687: opar shift and go to state 195 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 170 + yacc.py:2563: + yacc.py:2565: (64) factor -> opar expr cpar . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: dot reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: star reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: div reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: plus reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: minus reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: less reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: lesseq reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: equal reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: semi reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: cpar reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: of reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: then reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: loop reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: comma reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: in reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: else reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: pool reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: ccur reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: fi reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 171 + yacc.py:2563: + yacc.py:2565: (70) factor -> let let_list in . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 196 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 172 + yacc.py:2563: + yacc.py:2565: (37) let_list -> let_assign comma . let_list + yacc.py:2565: (36) let_list -> . let_assign + yacc.py:2565: (37) let_list -> . let_assign comma let_list + yacc.py:2565: (38) let_assign -> . param larrow expr + yacc.py:2565: (39) let_assign -> . param + yacc.py:2565: (35) param -> . id colon type + yacc.py:2566: + yacc.py:2687: id shift and go to state 46 + yacc.py:2689: + yacc.py:2714: let_assign shift and go to state 129 + yacc.py:2714: let_list shift and go to state 197 + yacc.py:2714: param shift and go to state 130 + yacc.py:2561: + yacc.py:2562:state 173 + yacc.py:2563: + yacc.py:2565: (38) let_assign -> param larrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 198 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 174 + yacc.py:2563: + yacc.py:2565: (71) factor -> case expr of . cases_list esac + yacc.py:2565: (40) cases_list -> . casep semi + yacc.py:2565: (41) cases_list -> . casep semi cases_list + yacc.py:2565: (42) cases_list -> . error cases_list + yacc.py:2565: (43) cases_list -> . error semi + yacc.py:2565: (44) casep -> . id colon type rarrow expr + yacc.py:2566: + yacc.py:2687: error shift and go to state 201 + yacc.py:2687: id shift and go to state 202 + yacc.py:2689: + yacc.py:2714: cases_list shift and go to state 199 + yacc.py:2714: casep shift and go to state 200 + yacc.py:2561: + yacc.py:2562:state 175 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then . expr else expr fi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 203 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 176 + yacc.py:2563: + yacc.py:2565: (73) factor -> while expr loop . expr pool + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 204 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 177 + yacc.py:2563: + yacc.py:2565: (77) atom -> ocur block ccur . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: dot reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: star reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: div reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: plus reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: minus reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: less reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: lesseq reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: equal reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: semi reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: cpar reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: of reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: then reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: loop reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: comma reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: in reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: else reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: pool reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: ccur reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: fi reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 178 + yacc.py:2563: + yacc.py:2565: (80) atom -> ocur block error . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: dot reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: star reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: div reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: plus reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: minus reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: less reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: lesseq reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: equal reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: semi reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: cpar reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: of reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: then reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: loop reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: comma reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: in reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: else reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: pool reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: ccur reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: fi reduce using rule 80 (atom -> ocur block error .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 179 + yacc.py:2563: + yacc.py:2565: (79) atom -> ocur error ccur . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: dot reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: star reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: div reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: plus reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: minus reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: less reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: lesseq reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: equal reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: semi reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: cpar reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: of reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: then reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: loop reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: comma reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: in reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: else reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: pool reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: ccur reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: fi reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 180 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur . expr ccur + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 205 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 181 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur . expr ccur + yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur . error ccur + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 207 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 206 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 182 + yacc.py:2563: + yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur . expr ccur + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 208 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 183 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur . expr ccur + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 209 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 184 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error arroba type dot . func_call + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 168 + yacc.py:2687: error shift and go to state 169 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 210 + yacc.py:2561: + yacc.py:2562:state 185 + yacc.py:2563: + yacc.py:2565: (95) arg_list -> error . arg_list + yacc.py:2565: (86) block -> error . block + yacc.py:2565: (87) block -> error . semi + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: semi shift and go to state 142 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 185 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: arg_list shift and go to state 186 + yacc.py:2714: block shift and go to state 141 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: expr shift and go to state 187 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 186 + yacc.py:2563: + yacc.py:2565: (95) arg_list -> error arg_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 95 (arg_list -> error arg_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 187 + yacc.py:2563: + yacc.py:2565: (93) arg_list -> expr . + yacc.py:2565: (94) arg_list -> expr . comma arg_list + yacc.py:2565: (84) block -> expr . semi + yacc.py:2565: (85) block -> expr . semi block + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 93 (arg_list -> expr .) + yacc.py:2687: comma shift and go to state 189 + yacc.py:2687: semi shift and go to state 151 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 188 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error opar args cpar . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: dot reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: star reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: div reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: plus reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: minus reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: less reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: lesseq reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: equal reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: semi reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: cpar reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: of reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: then reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: loop reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: comma reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: in reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: else reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: pool reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: ccur reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: fi reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 189 + yacc.py:2563: + yacc.py:2565: (94) arg_list -> expr comma . arg_list + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 145 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 155 + yacc.py:2714: arg_list shift and go to state 211 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 190 + yacc.py:2563: + yacc.py:2565: (85) block -> expr semi block . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 85 (block -> expr semi block .) + yacc.py:2687: error reduce using rule 85 (block -> expr semi block .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 191 + yacc.py:2563: + yacc.py:2565: (88) func_call -> id opar args cpar . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: dot reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: star reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: div reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: plus reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: minus reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: less reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: lesseq reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: equal reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: semi reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: cpar reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: of reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: then reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: loop reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: comma reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: in reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: else reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: pool reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: ccur reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: fi reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 192 + yacc.py:2563: + yacc.py:2565: (89) func_call -> id opar error cpar . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: dot reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: star reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: div reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: plus reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: minus reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: less reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: lesseq reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: equal reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: semi reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: cpar reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: of reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: then reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: loop reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: comma reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: in reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: else reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: pool reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: ccur reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: fi reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 193 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor arroba type dot . func_call + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 168 + yacc.py:2687: error shift and go to state 169 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 212 + yacc.py:2561: + yacc.py:2562:state 194 + yacc.py:2563: + yacc.py:2565: (62) base_call -> factor arroba error dot . func_call + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 168 + yacc.py:2687: error shift and go to state 169 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 213 + yacc.py:2561: + yacc.py:2562:state 195 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error opar . args cpar + yacc.py:2565: (91) args -> . arg_list + yacc.py:2565: (92) args -> . arg_list_empty + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (96) arg_list_empty -> . epsilon + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 145 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: args shift and go to state 146 + yacc.py:2714: arg_list shift and go to state 148 + yacc.py:2714: arg_list_empty shift and go to state 149 + yacc.py:2714: expr shift and go to state 155 + yacc.py:2714: epsilon shift and go to state 150 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 196 + yacc.py:2563: + yacc.py:2565: (70) factor -> let let_list in expr . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: dot reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: star reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: div reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: plus reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: minus reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: less reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: lesseq reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: equal reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: semi reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: cpar reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: of reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: then reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: loop reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: comma reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: in reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: else reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: pool reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: ccur reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: fi reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 197 + yacc.py:2563: + yacc.py:2565: (37) let_list -> let_assign comma let_list . + yacc.py:2566: + yacc.py:2687: in reduce using rule 37 (let_list -> let_assign comma let_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 198 + yacc.py:2563: + yacc.py:2565: (38) let_assign -> param larrow expr . + yacc.py:2566: + yacc.py:2687: comma reduce using rule 38 (let_assign -> param larrow expr .) + yacc.py:2687: in reduce using rule 38 (let_assign -> param larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 199 + yacc.py:2563: + yacc.py:2565: (71) factor -> case expr of cases_list . esac + yacc.py:2566: + yacc.py:2687: esac shift and go to state 214 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 200 + yacc.py:2563: + yacc.py:2565: (40) cases_list -> casep . semi + yacc.py:2565: (41) cases_list -> casep . semi cases_list + yacc.py:2566: + yacc.py:2687: semi shift and go to state 215 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 201 + yacc.py:2563: + yacc.py:2565: (42) cases_list -> error . cases_list + yacc.py:2565: (43) cases_list -> error . semi + yacc.py:2565: (40) cases_list -> . casep semi + yacc.py:2565: (41) cases_list -> . casep semi cases_list + yacc.py:2565: (42) cases_list -> . error cases_list + yacc.py:2565: (43) cases_list -> . error semi + yacc.py:2565: (44) casep -> . id colon type rarrow expr + yacc.py:2566: + yacc.py:2687: semi shift and go to state 217 + yacc.py:2687: error shift and go to state 201 + yacc.py:2687: id shift and go to state 202 + yacc.py:2689: + yacc.py:2714: cases_list shift and go to state 216 + yacc.py:2714: casep shift and go to state 200 + yacc.py:2561: + yacc.py:2562:state 202 + yacc.py:2563: + yacc.py:2565: (44) casep -> id . colon type rarrow expr + yacc.py:2566: + yacc.py:2687: colon shift and go to state 218 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 203 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then expr . else expr fi + yacc.py:2566: + yacc.py:2687: else shift and go to state 219 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 204 + yacc.py:2563: + yacc.py:2565: (73) factor -> while expr loop expr . pool + yacc.py:2566: + yacc.py:2687: pool shift and go to state 220 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 205 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur expr . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 221 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 206 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur expr . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 222 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 207 + yacc.py:2563: + yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur error . ccur + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 223 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 208 + yacc.py:2563: + yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur expr . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 224 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 209 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur expr . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 225 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 210 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error arroba type dot func_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: div reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: plus reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: minus reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: less reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: lesseq reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: equal reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: semi reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: cpar reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: arroba reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: dot reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: of reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: then reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: loop reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: comma reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: in reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: else reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: pool reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: ccur reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: fi reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 211 + yacc.py:2563: + yacc.py:2565: (94) arg_list -> expr comma arg_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 94 (arg_list -> expr comma arg_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 212 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor arroba type dot func_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: div reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: plus reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: minus reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: less reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: lesseq reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: equal reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: semi reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: cpar reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: arroba reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: dot reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: of reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: then reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: loop reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: comma reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: in reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: else reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: pool reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: ccur reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: fi reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 213 + yacc.py:2563: + yacc.py:2565: (62) base_call -> factor arroba error dot func_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: div reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: plus reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: minus reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: less reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: lesseq reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: equal reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: semi reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: cpar reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: arroba reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: dot reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: of reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: then reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: loop reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: comma reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: in reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: else reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: pool reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: ccur reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: fi reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 214 + yacc.py:2563: + yacc.py:2565: (71) factor -> case expr of cases_list esac . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: dot reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: star reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: div reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: plus reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: minus reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: less reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: lesseq reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: equal reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: semi reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: cpar reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: of reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: then reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: loop reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: comma reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: in reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: else reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: pool reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: ccur reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: fi reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 215 + yacc.py:2563: + yacc.py:2565: (40) cases_list -> casep semi . + yacc.py:2565: (41) cases_list -> casep semi . cases_list + yacc.py:2565: (40) cases_list -> . casep semi + yacc.py:2565: (41) cases_list -> . casep semi cases_list + yacc.py:2565: (42) cases_list -> . error cases_list + yacc.py:2565: (43) cases_list -> . error semi + yacc.py:2565: (44) casep -> . id colon type rarrow expr + yacc.py:2566: + yacc.py:2687: esac reduce using rule 40 (cases_list -> casep semi .) + yacc.py:2687: error shift and go to state 201 + yacc.py:2687: id shift and go to state 202 + yacc.py:2689: + yacc.py:2714: casep shift and go to state 200 + yacc.py:2714: cases_list shift and go to state 226 + yacc.py:2561: + yacc.py:2562:state 216 + yacc.py:2563: + yacc.py:2565: (42) cases_list -> error cases_list . + yacc.py:2566: + yacc.py:2687: esac reduce using rule 42 (cases_list -> error cases_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 217 + yacc.py:2563: + yacc.py:2565: (43) cases_list -> error semi . + yacc.py:2566: + yacc.py:2687: esac reduce using rule 43 (cases_list -> error semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 218 + yacc.py:2563: + yacc.py:2565: (44) casep -> id colon . type rarrow expr + yacc.py:2566: + yacc.py:2687: type shift and go to state 227 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 219 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then expr else . expr fi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 228 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 220 + yacc.py:2563: + yacc.py:2565: (73) factor -> while expr loop expr pool . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: dot reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: star reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: div reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: plus reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: minus reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: less reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: lesseq reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: equal reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: semi reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: cpar reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: of reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: then reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: loop reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: comma reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: in reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: else reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: pool reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: ccur reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: fi reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 221 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur expr ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 26 (def_func -> error opar formals cpar colon type ocur expr ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 222 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur expr ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 25 (def_func -> id opar formals cpar colon type ocur expr ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 223 + yacc.py:2563: + yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur error ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 29 (def_func -> id opar formals cpar colon type ocur error ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 224 + yacc.py:2563: + yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur expr ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 28 (def_func -> id opar formals cpar colon error ocur expr ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 225 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur expr ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 27 (def_func -> id opar error cpar colon type ocur expr ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 226 + yacc.py:2563: + yacc.py:2565: (41) cases_list -> casep semi cases_list . + yacc.py:2566: + yacc.py:2687: esac reduce using rule 41 (cases_list -> casep semi cases_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 227 + yacc.py:2563: + yacc.py:2565: (44) casep -> id colon type . rarrow expr + yacc.py:2566: + yacc.py:2687: rarrow shift and go to state 229 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 228 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then expr else expr . fi + yacc.py:2566: + yacc.py:2687: fi shift and go to state 230 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 229 + yacc.py:2563: + yacc.py:2565: (44) casep -> id colon type rarrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 231 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 230 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then expr else expr fi . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: dot reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: star reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: div reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: plus reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: minus reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: less reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: lesseq reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: equal reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: semi reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: cpar reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: of reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: then reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: loop reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: comma reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: in reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: else reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: pool reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: ccur reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: fi reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 231 + yacc.py:2563: + yacc.py:2565: (44) casep -> id colon type rarrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 44 (casep -> id colon type rarrow expr .) + yacc.py:2689: + yacc.py:3447:24 shift/reduce conflicts + yacc.py:3457: + yacc.py:3458:Conflicts: + yacc.py:3459: + yacc.py:3462:shift/reduce conflict for less in state 73 resolved as shift + yacc.py:3462:shift/reduce conflict for lesseq in state 73 resolved as shift + yacc.py:3462:shift/reduce conflict for equal in state 73 resolved as shift + yacc.py:3462:shift/reduce conflict for plus in state 74 resolved as shift + yacc.py:3462:shift/reduce conflict for minus in state 74 resolved as shift + yacc.py:3462:shift/reduce conflict for star in state 75 resolved as shift + yacc.py:3462:shift/reduce conflict for div in state 75 resolved as shift + yacc.py:3462:shift/reduce conflict for arroba in state 77 resolved as shift + yacc.py:3462:shift/reduce conflict for dot in state 77 resolved as shift + yacc.py:3462:shift/reduce conflict for ccur in state 141 resolved as shift + yacc.py:3462:shift/reduce conflict for cpar in state 147 resolved as shift + yacc.py:3462:shift/reduce conflict for error in state 151 resolved as shift + yacc.py:3462:shift/reduce conflict for plus in state 156 resolved as shift + yacc.py:3462:shift/reduce conflict for minus in state 156 resolved as shift + yacc.py:3462:shift/reduce conflict for plus in state 157 resolved as shift + yacc.py:3462:shift/reduce conflict for minus in state 157 resolved as shift + yacc.py:3462:shift/reduce conflict for plus in state 158 resolved as shift + yacc.py:3462:shift/reduce conflict for minus in state 158 resolved as shift + yacc.py:3462:shift/reduce conflict for star in state 159 resolved as shift + yacc.py:3462:shift/reduce conflict for div in state 159 resolved as shift + yacc.py:3462:shift/reduce conflict for star in state 160 resolved as shift + yacc.py:3462:shift/reduce conflict for div in state 160 resolved as shift + yacc.py:3462:shift/reduce conflict for arroba in state 162 resolved as shift + yacc.py:3462:shift/reduce conflict for arroba in state 164 resolved as shift + yacc.py:3488:Couldn't create 'cool.parser.parsetab'. [Errno 2] No such file or directory: 'parser/output/parsetab.py' + yacc.py: 362:PLY: PARSE DEBUG START + yacc.py: 410: + yacc.py: 411:State : 0 + yacc.py: 434:Stack : . LexToken(class,'class',3,49) + yacc.py: 445:Action : Shift and goto state 5 + yacc.py: 410: + yacc.py: 411:State : 5 + yacc.py: 434:Stack : class . LexToken(type,'Main',3,55) + yacc.py: 445:Action : Shift and goto state 8 + yacc.py: 410: + yacc.py: 411:State : 8 + yacc.py: 434:Stack : class type . LexToken(ocur,'{',3,60) + yacc.py: 445:Action : Shift and goto state 10 + yacc.py: 410: + yacc.py: 411:State : 10 + yacc.py: 434:Stack : class type ocur . LexToken(id,'main',4,66) + yacc.py: 445:Action : Shift and goto state 19 + yacc.py: 410: + yacc.py: 411:State : 19 + yacc.py: 434:Stack : class type ocur id . LexToken(opar,'(',4,70) + yacc.py: 445:Action : Shift and goto state 32 + yacc.py: 410: + yacc.py: 411:State : 32 + yacc.py: 434:Stack : class type ocur id opar . LexToken(cpar,')',4,71) + yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : class type ocur id opar epsilon . LexToken(cpar,')',4,71) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : class type ocur id opar param_list_empty . LexToken(cpar,')',4,71) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : class type ocur id opar formals . LexToken(cpar,')',4,71) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : class type ocur id opar formals cpar . LexToken(colon,':',4,72) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon . LexToken(type,'Object',4,74) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type . LexToken(ocur,'{',4,81) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur . LexToken(opar,'(',5,91) + yacc.py: 445:Action : Shift and goto state 80 + yacc.py: 410: + yacc.py: 411:State : 80 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar . LexToken(new,'new',5,92) + yacc.py: 445:Action : Shift and goto state 89 + yacc.py: 410: + yacc.py: 411:State : 89 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar new . LexToken(type,'Alpha',5,96) + yacc.py: 445:Action : Shift and goto state 134 + yacc.py: 410: + yacc.py: 411:State : 134 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar new type . LexToken(cpar,')',5,101) + yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','Alpha'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 123 + yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar epsilon . LexToken(cpar,')',5,109) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar arg_list_empty . LexToken(cpar,')',5,109) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 153 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args . LexToken(cpar,')',5,109) + yacc.py: 445:Action : Shift and goto state 191 + yacc.py: 410: + yacc.py: 411:State : 191 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args cpar . LexToken(ccur,'}',6,115) + yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['print','(',[],')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'print',5,103), [])) + yacc.py: 410: + yacc.py: 411:State : 167 + yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot func_call . LexToken(ccur,'}',6,115) + yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','Object','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 16 + yacc.py: 430:Defaulted state 16: Reduce using 14 + yacc.py: 434:Stack : class type ocur def_func semi epsilon . LexToken(ccur,'}',7,118) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 48 + yacc.py: 430:Defaulted state 48: Reduce using 16 + yacc.py: 434:Stack : class type ocur def_func semi feature_list . LexToken(ccur,'}',7,118) + yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 14 + yacc.py: 506:Result : ([ class type ocur feature_list ccur semi] with ['class','Main','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( id colon type] with ['test1',':','Object'] and goto state 17 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar epsilon . LexToken(cpar,')',12,172) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar param_list_empty . LexToken(cpar,')',12,172) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals . LexToken(cpar,')',12,172) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar . LexToken(colon,':',12,173) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon . LexToken(type,'Int',12,175) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',12,179) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type ocur . LexToken(num,2.0,13,189) + yacc.py: 445:Action : Shift and goto state 88 + yacc.py: 410: + yacc.py: 411:State : 88 + yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',13,191) + yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing1','(',[],')',':','Int','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( num] with [1.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test2',':','Int','<-',] and goto state 17 + yacc.py: 506:Result : ( string] with ['1'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test3',':','String','<-',] and goto state 17 + yacc.py: 506:Result : ( id colon type] with ['a',':','Alpha'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'a',20,265), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param . LexToken(comma,',',20,273) + yacc.py: 445:Action : Shift and goto state 60 + yacc.py: 410: + yacc.py: 411:State : 60 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma . LexToken(id,'b',20,275) + yacc.py: 445:Action : Shift and goto state 46 + yacc.py: 410: + yacc.py: 411:State : 46 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id . LexToken(colon,':',20,276) + yacc.py: 445:Action : Shift and goto state 61 + yacc.py: 410: + yacc.py: 411:State : 61 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id colon . LexToken(type,'Int',20,278) + yacc.py: 445:Action : Shift and goto state 96 + yacc.py: 410: + yacc.py: 411:State : 96 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id colon type . LexToken(cpar,')',20,281) + yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['b',':','Int'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'b',20,275), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param . LexToken(cpar,')',20,281) + yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 + yacc.py: 506:Result : ([(LexToken(id,'b',20,275), LexToken(type ...) + yacc.py: 410: + yacc.py: 411:State : 95 + yacc.py: 430:Defaulted state 95: Reduce using 33 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param_list . LexToken(cpar,')',20,281) + yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 + yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) + yacc.py: 410: + yacc.py: 411:State : 42 + yacc.py: 430:Defaulted state 42: Reduce using 30 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param_list . LexToken(cpar,')',20,281) + yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 + yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals . LexToken(cpar,')',20,281) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar . LexToken(colon,':',20,282) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon . LexToken(type,'Int',20,284) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',20,288) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur . LexToken(num,2.0,21,298) + yacc.py: 445:Action : Shift and goto state 88 + yacc.py: 410: + yacc.py: 411:State : 88 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',21,300) + yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing2','(',,')',':','Int','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar epsilon . LexToken(cpar,')',24,325) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar param_list_empty . LexToken(cpar,')',24,325) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals . LexToken(cpar,')',24,325) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar . LexToken(colon,':',24,326) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon . LexToken(type,'String',24,328) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',24,335) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur . LexToken(string,'2 + 2',25,351) + yacc.py: 445:Action : Shift and goto state 93 + yacc.py: 410: + yacc.py: 411:State : 93 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur string . LexToken(ccur,'}',26,357) + yacc.py: 469:Action : Reduce rule [atom -> string] with ['2 + 2'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing3','(',[],')',':','String','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',28,374) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',28,374) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals . LexToken(cpar,')',28,374) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',28,375) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'String',28,377) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',28,384) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(type,'Test1',29,394) + yacc.py: 579:Error : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(type,'Test1',29,394) diff --git a/src/main.py b/src/main.py index 849a5eab5..3ffc78642 100644 --- a/src/main.py +++ b/src/main.py @@ -27,8 +27,8 @@ # print(lexer) - # lexer.lexer.lineno = 1 - # lexer.lexer.linestart = 0 + lexer.lexer.lineno = 1 + lexer.lexer.linestart = 0 parser = CoolParser(lexer) result = parser.parse(text) From 81aa10cd02892ab97f147d169bb44ea76f64d791 Mon Sep 17 00:00:00 2001 From: JCH97 Date: Thu, 21 Oct 2021 22:31:38 -0400 Subject: [PATCH 25/44] fix(): details --- .gitignore | 1 + .idea/cool-compiler-2021.iml | 7 ------- .idea/inspectionProfiles/Project_Default.xml | 12 ++++++++++++ 3 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 .idea/inspectionProfiles/Project_Default.xml diff --git a/.gitignore b/.gitignore index 01cc60cb8..3dfe8c4b9 100644 --- a/.gitignore +++ b/.gitignore @@ -409,3 +409,4 @@ dmypy.json # Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option) node_modules +/2 diff --git a/.idea/cool-compiler-2021.iml b/.idea/cool-compiler-2021.iml index 84f7de6ae..308e5e062 100644 --- a/.idea/cool-compiler-2021.iml +++ b/.idea/cool-compiler-2021.iml @@ -11,11 +11,4 @@ - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 000000000..ea07b7d32 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file From afdec0ab57315c5a44c46f911d7ec3d7cbec17dd Mon Sep 17 00:00:00 2001 From: JCH97 Date: Mon, 25 Oct 2021 22:55:46 -0400 Subject: [PATCH 26/44] feat(semantic): add initial approach, add typeCollector, set right errors managements --- src/cool/lexer/lexer.py | 88 +++++++ src/cool/semantic/__init__.py | 0 src/cool/semantic/__main__.py | 0 src/cool/semantic/helpers.py | 141 ++++++++++++ src/cool/semantic/semantic.py | 11 + src/cool/semantic/typeCollectorpy.py | 37 +++ src/cool/semantic/types.py | 327 +++++++++++++++++++++++++++ src/cool/utils/ast.py | 54 ++++- src/cool/utils/errors.py | 90 +++++++- src/main.py | 2 +- 10 files changed, 735 insertions(+), 15 deletions(-) create mode 100644 src/cool/semantic/__init__.py create mode 100644 src/cool/semantic/__main__.py create mode 100644 src/cool/semantic/helpers.py create mode 100644 src/cool/semantic/semantic.py create mode 100644 src/cool/semantic/typeCollectorpy.py create mode 100644 src/cool/semantic/types.py diff --git a/src/cool/lexer/lexer.py b/src/cool/lexer/lexer.py index ad15a32a4..8155a4f4f 100644 --- a/src/cool/lexer/lexer.py +++ b/src/cool/lexer/lexer.py @@ -13,6 +13,94 @@ def __init__(self, **kwargs): self.lexer = lex.lex(self, **kwargs) self.lexer.lineno = 1 self.lexer.linestart = 0 +class SemanticError(CoolError): + 'Otros errores semanticos' + + SELF_IS_READONLY = 'Cannot assign to \'self\'.' + SELF_IN_LET = '\'self\' cannot be bound in a \'let\' expression.' + SELF_PARAM = "'self' cannot be the name of a formal parameter." + SELF_ATTR = "'self' cannot be the name of an attribute." + + LOCAL_ALREADY_DEFINED = 'Variable "%s" is already defined in method "%s".' + ARGUMENT_ERROR = 'Method %s called with wrong number of arguments.' + + REDEFINITION_ERROR = 'Redefinition of basic class %s' + INHERIT_ERROR = 'Class %s cannot inherit class %s.' + + DUPLICATE_CASE_BRANCH = 'Duplicate branch %s in case statement.' + TYPE_ALREADY_DEFINED = 'Classes may not be redefined.' + + ATTRIBUTE_ALREADY_DEFINED = 'Attribute "%s" is multiply defined in class.' + ATTR_DEFINED_PARENT = 'Attribute %s is an attribute of an inherited class.' + + METHOD_ALREADY_DEFINED = 'Method "%s" is multiply defined.' + + CIRCULAR_DEPENDENCY = 'Class %s, or an ancestor of %s, is involved in an inheritance cycle.' + + WRONG_SIGNATURE_RETURN = 'In redefined method %s, return type %s is different from original return type %s.' + WRONG_NUMBER_PARAM = 'Incompatible number of formal parameters in redefined method %s.' + + PARAMETER_MULTY_DEFINED = 'Formal parameter %s is multiply defined.' + WRONG_SIGNATURE_PARAMETER = 'In redefined method %s, parameter type %s is different from original type %s.' + + @property + def error_type(self): + return 'SemanticError' + + +class NamesError(SemanticError): + 'Se reporta al referenciar a un identificador en un ambito en el que no es visible' + + VARIABLE_NOT_DEFINED = 'Undeclared identifier %s.' + + @property + def error_type(self): + return 'NameError' + + +class TypesError(SemanticError): + 'Se reporta al detectar un problema de tipos' + + INCOMPATIBLE_TYPES = 'Cannot convert "%s" into "%s".' + + ATTR_TYPE_ERROR = 'Inferred type %s of initialization of attribute %s does not conform to declared type %s.' + ATTR_TYPE_UNDEFINED = 'Class %s of attribute %s is undefined.' + BOPERATION_NOT_DEFINED = 'non-Int arguments: %s %s %s.' + COMPARISON_ERROR = 'Illegal comparison with a basic type.' + UOPERATION_NOT_DEFINED = 'Argument of \'%s\' has type %s instead of %s.' + CLASS_CASE_BRANCH_UNDEFINED = 'Class %s of case branch is undefined.' + PREDICATE_ERROR = 'Predicate of \'%s\' does not have type %s.' + INCOSISTENT_ARG_TYPE = 'In call of method %s, type %s of parameter %s does not conform to declared type %s.' + INCOMPATIBLE_TYPES_DISPATCH = 'Expression type %s does not conform to declared static dispatch type %s.' + INHERIT_UNDEFINED = 'Class %s inherits from an undefined class %s.' + UNCONFORMS_TYPE = 'Inferred type %s of initialization of %s does not conform to identifier\'s declared type %s.' + UNDEFINED_TYPE_LET = 'Class %s of let-bound identifier %s is undefined.' + LOOP_CONDITION_ERROR = 'Loop condition does not have type Bool.' + RETURN_TYPE_ERROR = 'Inferred return type %s of method test does not conform to declared return type %s.' + PARAMETER_UNDEFINED = 'Class %s of formal parameter %s is undefined.' + RETURN_TYPE_UNDEFINED = 'Undefined return type %s in method %s.' + NEW_UNDEFINED_CLASS = '\'new\' used with undefined class %s.' + + PARENT_ALREADY_DEFINED = 'Parent type is already set for "%s"' + TYPE_NOT_DEFINED = 'Type "%s" is not defined.' + + @property + def error_type(self): + return 'TypeError' + + +class AttributesError(SemanticError): + 'Se reporta cuando un atributo o método se referencia pero no está definido' + + DISPATCH_UNDEFINED = 'Dispatch to undefined method %s.' + + METHOD_NOT_DEFINED = 'Method "%s" is not defined in "%s"' + ATTRIBUTE_NOT_DEFINED = 'Attribute "%s" is not defined in %s' + + @property + def error_type(self): + return 'AttributeError' + def updateColumn(self, t): t.column = t.lexpos - t.lexer.linestart + 1 diff --git a/src/cool/semantic/__init__.py b/src/cool/semantic/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/cool/semantic/__main__.py b/src/cool/semantic/__main__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/cool/semantic/helpers.py b/src/cool/semantic/helpers.py new file mode 100644 index 000000000..1faf6ccf0 --- /dev/null +++ b/src/cool/semantic/helpers.py @@ -0,0 +1,141 @@ +from ..utils.errors import SemanticError, AttributesError, TypesError, NamesError +import itertools as itt +from .types import Type + + +class Context: + def __init__(self): + self.types = {} + + def get_depth(self, class_name): + typex = self.types[class_name] + if typex.parent is None: + return 0 + return 1 + self.get_depth(typex.parent.name) + + def build_inheritance_graph(self): + graph = {} + for type_name, typex in self.types.items(): + if typex.parent is not None: + graph[type_name] = typex.parent.name + else: + if type_name == 'SELF_TYPE': + continue + graph[type_name] = None + return graph + + def create_type(self, name: str, pos) -> Type: + if name in self.types: + error_text = SemanticError.TYPE_ALREADY_DEFINED + raise SemanticError(error_text, *pos) + typex = self.types[name] = Type(name, pos) + return typex + + def get_type(self, name: str, pos) -> Type: + try: + return self.types[name] + except KeyError: + error_text = TypesError.TYPE_NOT_DEFINED % name + raise TypesError(error_text, *pos) + + def __str__(self): + return '{\n\t' + '\n\t'.join(y for x in self.types.values() for y in str(x).split('\n')) + '\n}' + + def __repr__(self): + return str(self) + + +class VariableInfo: + def __init__(self, name, vtype, index=None): + self.name = name + self.type = vtype + self.index = index # saves the index in the scope of the variable + + def __str__(self): + return f'{self.name} : {self.type.name}' + + def __repr__(self): + return str(self) + + +class Scope: + def __init__(self, parent=None): + self.locals = [] + self.attributes = [] + self.parent = parent + self.children = [] + self.expr_dict = {} + self.functions = {} + self.index = 0 if parent is None else len(parent) + + def __len__(self): + return len(self.locals) + + def __str__(self): + res = '' + for scope in self.children: + try: + classx = scope.locals[0] + name = classx.type.name + except: + name = '1' + res += name + scope.tab_level(1, '', 1) + return res + + def tab_level(self, tabs, name, num) -> str: + res = ('\t' * tabs) + ('\n' + ('\t' * tabs)).join(str(local) for local in self.locals) + if self.functions: + children = '\n'.join(v.tab_level(tabs + 1, '[method] ' + k, num) for k, v in self.functions.items()) + else: + children = '\n'.join(child.tab_level(tabs + 1, num, num + 1) for child in self.children) + return "\t" * (tabs - 1) + f'{name}' + "\t" * tabs + f'\n{res}\n{children}' + + def __repr__(self): + return str(self) + + def create_child(self): + child = Scope(self) + self.children.append(child) + return child + + def define_variable(self, vname, vtype) -> VariableInfo: + info = VariableInfo(vname, vtype) + if info not in self.locals: + self.locals.append(info) + return info + + def find_variable(self, vname, index=None) -> VariableInfo: + locals = self.attributes + self.locals + locals = locals if index is None else itt.islice(locals, index) + try: + return next(x for x in locals if x.name == vname) + except StopIteration: + return self.parent.find_variable(vname, index) if self.parent is not None else None + + def find_local(self, vname, index=None) -> VariableInfo: + locals = self.locals if index is None else itt.islice(self.locals, index) + try: + return next(x for x in locals if x.name == vname) + except StopIteration: + return self.parent.find_local(vname, self.index) if self.parent is not None else None + + def find_attribute(self, vname, index=None): + locals = self.attributes if index is None else itt.islice(self.attributes, index) + try: + return next(x for x in locals if x.name == vname) + except StopIteration: + return self.parent.find_attribute(vname, index) if self.parent is not None else None + + def get_class_scope(self): + if self.parent == None or self.parent.parent == None: + return self + return self.parent.get_class_scope() + + def is_defined(self, vname) -> VariableInfo: + return self.find_variable(vname) is not None + + def is_local(self, vname): + return any(True for x in self.locals if x.name == vname) + + def define_attribute(self, attr): + self.attributes.append(attr) diff --git a/src/cool/semantic/semantic.py b/src/cool/semantic/semantic.py new file mode 100644 index 000000000..f19d33707 --- /dev/null +++ b/src/cool/semantic/semantic.py @@ -0,0 +1,11 @@ +from .typeCollectorpy import TypeCollector + + +def main_semantic(ast): + errors = [] + + types = TypeCollector(ast) + + +if __name__ == "__main__": + pass diff --git a/src/cool/semantic/typeCollectorpy.py b/src/cool/semantic/typeCollectorpy.py new file mode 100644 index 000000000..73805975e --- /dev/null +++ b/src/cool/semantic/typeCollectorpy.py @@ -0,0 +1,37 @@ +from ..utils.ast import * +from ..utils import visitor +from .helpers import * +from .types import * + + +class TypeCollector: + def __int__(self, errors=[]): + self.context = None + self.errors = errors + + @visitor.on('node') + def visit(self, node): + pass + + @visitor.when(ProgramNode) + def visit(self, node: ProgramNode): + self.context = Context() + self.context.types['String'] = StringType() + self.context.types['Int'] = IntType() + self.context.types['Object'] = ObjectType() + self.context.types['Bool'] = BoolType() + self.context.types['SELF_TYPE'] = SelfType() + self.context.types['IO'] = IOType() + + for d in node.declarations: + self.visit(d) + + @visitor.when(ClassDeclarationNode) + def visit(self, node: ClassDeclarationNode): + try: + self.context.create_type(node.id, node.pos) + except SemanticError as e: + self.errors.append(e) + + if not node.parent: + node.parent = 'Object' diff --git a/src/cool/semantic/types.py b/src/cool/semantic/types.py new file mode 100644 index 000000000..580436619 --- /dev/null +++ b/src/cool/semantic/types.py @@ -0,0 +1,327 @@ +from ..utils.errors import SemanticError, TypesError, NamesError, AttributesError +from collections import OrderedDict + + +class Attribute: + def __init__(self, name, typex, index, tok=None): + self.name = name + self.type = typex + self.index = index # lugar que ocupa en el scope + self.expr = None + + def __str__(self): + return f'[attrib] {self.name} : {self.type.name};' + + def __repr__(self): + return str(self) + + +class Method: + def __init__(self, name, param_names, params_types, return_type): + self.name = name + self.param_names = param_names + self.param_types = params_types + self.return_type = return_type + + def __str__(self): + params = ', '.join(f'{n}:{t.name}' for n, t in zip(self.param_names, self.param_types)) + return f'[method] {self.name}({params}): {self.return_type.name};' + + def __eq__(self, other): + return other.name == self.name and \ + other.return_type == self.return_type and \ + other.param_types == self.param_types + + +class MethodError(Method): + def __init__(self, name, param_names, param_types, return_types): + super().__init__(name, param_names, param_types, return_types) + + def __str__(self): + return f'[method] {self.name} ERROR' + + +class Type: + def __init__(self, name: str, pos, parent=True): + if name == 'ObjectType': + return ObjectType(pos) + self.name = name + self.attributes = {} + self.methods = {} + if parent: + self.parent = ObjectType(pos) + else: + self.parent = None + self.pos = pos + + def set_parent(self, parent): + if type(self.parent) != ObjectType and self.parent is not None: + error_text = TypesError.PARENT_ALREADY_DEFINED % self.name + raise TypesError(error_text, *self.pos) + self.parent = parent + + def get_attribute(self, name: str, pos) -> Attribute: + try: + return self.attributes[name] # next(attr for attr in self.attributes if attr.name == name) + except KeyError: + if self.parent is None: + error_text = AttributesError.ATTRIBUTE_NOT_DEFINED % (name, self.name) + raise AttributesError(error_text, *pos) + try: + return self.parent.get_attribute(name, pos) + except AttributesError: + error_text = AttributesError.ATTRIBUTE_NOT_DEFINED % (name, self.name) + raise AttributesError(error_text, *pos) + + def define_attribute(self, name: str, typex, pos): + try: + self.attributes[name] + except KeyError: + try: + self.get_attribute(name, pos) + except SemanticError: + self.attributes[name] = attribute = Attribute(name, typex, len(self.attributes)) + # self.attributes.append(attribute) + return attribute + else: + error_text = SemanticError.ATTR_DEFINED_PARENT % name + raise SemanticError(error_text, *pos) + else: + error_text = SemanticError.ATTRIBUTE_ALREADY_DEFINED % name + raise SemanticError(error_text, *pos) + + def get_method(self, name: str, pos) -> Method: + try: + return self.methods[name] + except KeyError: + error_text = AttributesError.METHOD_NOT_DEFINED % (name, self.name) + if self.parent is None: + raise AttributesError(error_text, *pos) + try: + return self.parent.get_method(name, pos) + except AttributesError: + raise AttributesError(error_text, *pos) + + def define_method(self, name: str, param_names: list, param_types: list, return_type, pos=(0, 0)): + if name in self.methods: + error_text = SemanticError.METHOD_ALREADY_DEFINED % name + raise SemanticError(error_text, *pos) + + method = self.methods[name] = Method(name, param_names, param_types, return_type) + return method + + def change_type(self, method, nparm, newtype): + idx = method.param_names.index(nparm) + method.param_types[idx] = newtype + + def all_attributes(self, clean=True): + plain = OrderedDict() if self.parent is None else self.parent.all_attributes(False) + for attr in self.attributes.values(): + plain[attr.name] = (attr, self) + return plain.values() if clean else plain + + def all_methods(self, clean=True): + plain = OrderedDict() if self.parent is None else self.parent.all_methods(False) + for method in self.methods.values(): + plain[method.name] = (method, self) + return plain.values() if clean else plain + + def conforms_to(self, other): + return other.bypass() or self == other or self.parent is not None and self.parent.conforms_to(other) + + def bypass(self): + return False + + def __str__(self): + output = f'type {self.name}' + parent = '' if self.parent is None else f' : {self.parent.name}' + output += parent + output += ' {' + output += '\n\t' if self.attributes or self.methods else '' + output += '\n\t'.join(str(x) for x in self.attributes.values()) + output += '\n\t' if self.attributes else '' + output += '\n\t'.join(str(x) for x in self.methods.values()) + output += '\n' if self.methods else '' + output += '}\n' + return output + + def __repr__(self): + return str(self) + + +class ErrorType(Type): + def __init__(self, pos=(0, 0)): + Type.__init__(self, '', pos) + + def conforms_to(self, other): + return True + + def bypass(self): + return True + + def __eq__(self, other): + return isinstance(other, ErrorType) + + def __ne__(self, other): + return not isinstance(other, ErrorType) + + +VOID_NAME = 'Void' + + +class VoidType(Type): + def __init__(self, pos=(0, 0)): + Type.__init__(self, VOID_NAME, pos) + + def conforms_to(self, other): + return True + + def bypass(self): + return True + + def __eq__(self, other): + return isinstance(other, VoidType) + + +class BoolType(Type): + def __init__(self, pos=(0, 0)): + self.name = 'Bool' + self.attributes = {} + self.methods = {} + self.parent = None + self.pos = pos + self.init_methods() + + def init_methods(self): + self.define_method('abort', [], [], self) + self.define_method('type_name', [], [], StringType()) + self.define_method('copy', [], [], SelfType()) + + def conforms_to(self, other): + return other.name == 'Object' or other.name == self.name + + def __eq__(self, other): + return other.name == self.name or isinstance(other, BoolType) + + def __ne__(self, other): + return other.name != self.name and not isinstance(other, BoolType) + + +class SelfType(Type): + def __init__(self, pos=(0, 0)): + self.name = 'Self' + self.attributes = {} + self.methods = {} + self.parent = None + self.pos = pos + + def __eq__(self, other): + return other.name == self.name or isinstance(other, SelfType) + + def __ne__(self, other): + return other.name != self.name and not isinstance(other, SelfType) + + +class IntType(Type): + def __init__(self, pos=(0, 0)): + self.name = 'Int' + self.attributes = {} + self.methods = {} + self.parent = None + self.pos = pos + self.init_methods() + + def init_methods(self): + self.define_method('abort', [], [], self) + self.define_method('type_name', [], [], Type('String', (0, 0), False)) + self.define_method('copy', [], [], SelfType()) + + def conforms_to(self, other): + return other.name == 'Object' or other.name == self.name + + def __eq__(self, other): + return other.name == self.name or isinstance(other, IntType) + + def __ne__(self, other): + return other.name != self.name and not isinstance(other, IntType) + + +class StringType(Type): + def __init__(self, pos=(0, 0)): + self.name = 'String' + self.attributes = {} + self.methods = {} + self.parent = None + self.pos = pos + self.init_methods() + + def init_methods(self): + self.define_method('abort', [], [], self) + self.define_method('type_name', [], [], self) + self.define_method('copy', [], [], SelfType()) + self.define_method('length', [], [], IntType()) + self.define_method('concat', ['s'], [self], self) + self.define_method('substr', ['i', 'l'], [IntType(), IntType()], self) + + def conforms_to(self, other): + return other.name == 'Object' or other.name == self.name + + def __eq__(self, other): + return other.name == self.name or isinstance(other, StringType) + + def __ne__(self, other): + return other.name != self.name and not isinstance(other, StringType) + + +class ObjectType(Type): + def __init__(self, pos=(0, 0)): + self.name = 'Object' + self.attributes = {} + self.methods = {} + self.parent = None + self.pos = pos + self.init_methods() + + def init_methods(self): + self.define_method('abort', [], [], self) + self.define_method('type_name', [], [], StringType()) + self.define_method('copy', [], [], SelfType()) + + def __eq__(self, other): + return other.name == self.name or isinstance(other, ObjectType) + + def __ne__(self, other): + return other.name != self.name and not isinstance(other, ObjectType) + + +class AutoType(Type): + def __init__(self): + Type.__init__(self, 'AUTO_TYPE') + + def __eq__(self, other): + return other.name == self.name or isinstance(other, AutoType) + + def __ne__(self, other): + return other.name != self.name and not isinstance(other, AutoType) + + +class IOType(Type): + def __init__(self, pos=(0, 0)): + self.name = 'IO' + self.attributes = {} + self.methods = {} + self.parent = ObjectType(pos) + self.pos = pos + self.init_methods() + + def init_methods(self): + self.define_method('out_string', ['x'], [StringType()], SelfType()) + self.define_method('out_int', ['x'], [IntType()], SelfType()) + self.define_method('in_string', [], [], StringType()) + self.define_method('in_int', [], [], IntType()) + + def __eq__(self, other): + return other.name == self.name or isinstance(other, IOType) + + def __ne__(self, other): + return other.name != self.name and not isinstance(other, IOType) diff --git a/src/cool/utils/ast.py b/src/cool/utils/ast.py index 55b77a447..633067a24 100644 --- a/src/cool/utils/ast.py +++ b/src/cool/utils/ast.py @@ -4,21 +4,26 @@ class Node: pass + class ProgramNode(Node): def __init__(self, declarations): self.declarations = declarations - + + class DeclarationNode(Node): pass + class ExpressionNode(Node): pass + class ErrorNode(Node): pass + class ClassDeclarationNode(DeclarationNode): - def __init__(self, idx: LexToken, features, parent = None): + def __init__(self, idx: LexToken, features, parent=None): self.id = idx.value self.pos = (idx.lineno, idx.column) if parent: @@ -30,11 +35,13 @@ def __init__(self, idx: LexToken, features, parent = None): self.features = features self.token = idx + class _Param: def __init__(self, tok): self.value = tok.value self.pos = (tok.lineno, tok.column) + class FuncDeclarationNode(DeclarationNode): def __init__(self, idx: LexToken, params, return_type: LexToken, body): self.id = idx.value @@ -46,7 +53,7 @@ def __init__(self, idx: LexToken, params, return_type: LexToken, body): class AttrDeclarationNode(DeclarationNode): - def __init__(self, idx:LexToken, typex, expr = None): + def __init__(self, idx: LexToken, typex, expr=None): self.id = idx.value self.pos = (idx.lineno, idx.column) self.type = typex.value @@ -54,14 +61,16 @@ def __init__(self, idx:LexToken, typex, expr = None): self.expr = expr self.token = idx + class VarDeclarationNode(ExpressionNode): - def __init__(self, idx: LexToken, typex, expr = None): + def __init__(self, idx: LexToken, typex, expr=None): self.id = idx.value self.pos = (idx.lineno, idx.column) self.type = typex.value self.type_pos = (typex.lineno, typex.column) self.expr = expr + class AssignNode(ExpressionNode): def __init__(self, idx: LexToken, expr): if isinstance(idx, LexToken): @@ -72,6 +81,7 @@ def __init__(self, idx: LexToken, expr): self.pos = None self.expr = expr + class CallNode(ExpressionNode): def __init__(self, obj, idx: LexToken, args): self.obj = obj @@ -79,12 +89,14 @@ def __init__(self, obj, idx: LexToken, args): self.pos = (idx.lineno, idx.column) self.args = args + class BlockNode(ExpressionNode): def __init__(self, expr_list, tok): self.expr_list = expr_list self.pos = (tok.lineno, tok.column) self.token = tok + class BaseCallNode(ExpressionNode): def __init__(self, obj, typex: LexToken, idx: LexToken, args): self.obj = obj @@ -111,35 +123,43 @@ def __init__(self, lex): self.lex = lex self.pos = (0, 0) + class BinaryNode(ExpressionNode): def __init__(self, left, right): self.left = left self.right = right self.pos = left.pos + class BinaryLogicalNode(BinaryNode): pass + class BinaryArithNode(BinaryNode): pass + class UnaryNode(ExpressionNode): def __init__(self, expr, tok): self.expr = expr self.pos = (tok.lineno, tok.column) + class UnaryLogicalNode(UnaryNode): pass + class UnaryArithNode(UnaryNode): pass + class WhileNode(ExpressionNode): def __init__(self, cond, expr, tok): self.cond = cond self.expr = expr self.pos = (tok.lineno, tok.column) + class ConditionalNode(ExpressionNode): def __init__(self, cond, stm, else_stm, tok): self.cond = cond @@ -147,6 +167,7 @@ def __init__(self, cond, stm, else_stm, tok): self.else_stm = else_stm self.pos = (tok.lineno, tok.column) + class CaseNode(ExpressionNode): def __init__(self, expr, case_list, tok): self.expr = expr @@ -156,6 +177,7 @@ def __init__(self, expr, case_list, tok): def __hash__(self): return id(self) + class OptionNode(ExpressionNode): def __init__(self, idx: LexToken, typex, expr): self.id = idx.value @@ -163,68 +185,86 @@ def __init__(self, idx: LexToken, typex, expr): self.typex = typex.value self.type_pos = (typex.lineno, typex.column) self.expr = expr - + class LetNode(ExpressionNode): def __init__(self, init_list, expr, tok): self.init_list = init_list self.expr = expr - self.pos = (tok.lineno, tok.column) + self.pos = (tok.lineno, tok.column) def __hash__(self): return id(self) + class ConstantNumNode(AtomicNode): pass + class ConstantBoolNode(AtomicNode): pass + class ConstantStrNode(AtomicNode): pass + class ConstantVoidNode(AtomicNode): def __init__(self, obj): super().__init__(obj) + class SelfNode(Node): pass + class VariableNode(AtomicNode): pass - + + class TypeNode(AtomicNode): pass + class InstantiateNode(AtomicNode): pass + class BinaryNotNode(UnaryArithNode): pass + class NotNode(UnaryLogicalNode): pass + class IsVoidNode(UnaryLogicalNode): pass + class PlusNode(BinaryArithNode): pass + class MinusNode(BinaryArithNode): pass + class StarNode(BinaryArithNode): pass + class DivNode(BinaryArithNode): pass + class LessNode(BinaryLogicalNode): pass + class LessEqNode(BinaryLogicalNode): pass + class EqualNode(BinaryLogicalNode): pass diff --git a/src/cool/utils/errors.py b/src/cool/utils/errors.py index 170c7d1e7..c5c7e0d02 100644 --- a/src/cool/utils/errors.py +++ b/src/cool/utils/errors.py @@ -1,7 +1,5 @@ class CoolError(Exception): def __init__(self, text: str, line: int, column: int): - #print(text) - #print(type(text)) super().__init__(text) self.line = line self.column = column @@ -9,19 +7,19 @@ def __init__(self, text: str, line: int, column: int): @property def error_type(self) -> str: return 'CoolError' - + @property def text(self) -> str: - return self.args[0] + return self.args[0] def __str__(self): return f'({self.line}, {self.column}) - {self.error_type}: {self.text}' - + def __repr__(self): return str(self) -class LexicographicError(CoolError): +class LexicographicError(CoolError): UNKNOWN_TOKEN = 'ERROR "%s"' UNDETERMINED_STRING = 'Undetermined string constant' EOF_COMMENT = 'EOF in comment' @@ -34,10 +32,88 @@ def error_type(self) -> str: class SyntacticError(CoolError): - 'Errores detectados en el cool_parser' + """Errors in parser""" ERROR = 'ERROR at or near "%s"' @property def error_type(self): return 'SyntacticError' + + +class SemanticError(CoolError): + """Errors in semantic analysis""" + + SELF_IS_READONLY = 'Cannot assign to \'self\'.' + SELF_IN_LET = '\'self\' cannot be bound in a \'let\' expression.' + SELF_PARAM = "'self' cannot be the name of a formal parameter." + SELF_ATTR = "'self' cannot be the name of an attribute." + LOCAL_ALREADY_DEFINED = 'Variable "%s" is already defined in method "%s".' + ARGUMENT_ERROR = 'Method %s called with wrong number of arguments.' + REDEFINITION_ERROR = 'Redefinition of basic class %s' + INHERIT_ERROR = 'Class %s cannot inherit class %s.' + DUPLICATE_CASE_BRANCH = 'Duplicate branch %s in case statement.' + TYPE_ALREADY_DEFINED = 'Classes may not be redefined.' + ATTRIBUTE_ALREADY_DEFINED = 'Attribute "%s" is multiply defined in class.' + ATTR_DEFINED_PARENT = 'Attribute %s is an attribute of an inherited class.' + METHOD_ALREADY_DEFINED = 'Method "%s" is multiply defined.' + CIRCULAR_DEPENDENCY = 'Class %s, or an ancestor of %s, is involved in an inheritance cycle.' + WRONG_SIGNATURE_RETURN = 'In redefined method %s, return type %s is different from original return type %s.' + WRONG_NUMBER_PARAM = 'Incompatible number of formal parameters in redefined method %s.' + PARAMETER_MULTY_DEFINED = 'Formal parameter %s is multiply defined.' + WRONG_SIGNATURE_PARAMETER = 'In redefined method %s, parameter type %s is different from original type %s.' + + @property + def error_type(self): + return 'SemanticError' + + +class NamesError(SemanticError): + """Reference in not visible scope""" + + VARIABLE_NOT_DEFINED = 'Undeclared identifier %s.' + + @property + def error_type(self): + return 'NameError' + + +class TypesError(SemanticError): + """Types problems""" + + INCOMPATIBLE_TYPES = 'Cannot convert "%s" into "%s".' + ATTR_TYPE_ERROR = 'Inferred type %s of initialization of attribute %s does not conform to declared type %s.' + ATTR_TYPE_UNDEFINED = 'Class %s of attribute %s is undefined.' + BOPERATION_NOT_DEFINED = 'non-Int arguments: %s %s %s.' + COMPARISON_ERROR = 'Illegal comparison with a basic type.' + UOPERATION_NOT_DEFINED = 'Argument of \'%s\' has type %s instead of %s.' + CLASS_CASE_BRANCH_UNDEFINED = 'Class %s of case branch is undefined.' + PREDICATE_ERROR = 'Predicate of \'%s\' does not have type %s.' + INCOSISTENT_ARG_TYPE = 'In call of method %s, type %s of parameter %s does not conform to declared type %s.' + INCOMPATIBLE_TYPES_DISPATCH = 'Expression type %s does not conform to declared static dispatch type %s.' + INHERIT_UNDEFINED = 'Class %s inherits from an undefined class %s.' + UNCONFORMS_TYPE = 'Inferred type %s of initialization of %s does not conform to identifier\'s declared type %s.' + UNDEFINED_TYPE_LET = 'Class %s of let-bound identifier %s is undefined.' + LOOP_CONDITION_ERROR = 'Loop condition does not have type Bool.' + RETURN_TYPE_ERROR = 'Inferred return type %s of method test does not conform to declared return type %s.' + PARAMETER_UNDEFINED = 'Class %s of formal parameter %s is undefined.' + RETURN_TYPE_UNDEFINED = 'Undefined return type %s in method %s.' + NEW_UNDEFINED_CLASS = '\'new\' used with undefined class %s.' + PARENT_ALREADY_DEFINED = 'Parent type is already set for "%s"' + TYPE_NOT_DEFINED = 'Type "%s" is not defined.' + + @property + def error_type(self): + return 'TypeError' + + +class AttributesError(SemanticError): + """Not defined attribute or method""" + + DISPATCH_UNDEFINED = 'Dispatch to undefined method %s.' + METHOD_NOT_DEFINED = 'Method "%s" is not defined in "%s"' + ATTRIBUTE_NOT_DEFINED = 'Attribute "%s" is not defined in %s' + + @property + def error_type(self): + return 'AttributeError' diff --git a/src/main.py b/src/main.py index 3ffc78642..ff2f7671f 100644 --- a/src/main.py +++ b/src/main.py @@ -31,6 +31,6 @@ lexer.lexer.linestart = 0 parser = CoolParser(lexer) - result = parser.parse(text) + ast = parser.parse(text) # print(result) From c162d960f4e26b4a4c1cacf9ee7706668c282f5c Mon Sep 17 00:00:00 2001 From: JCH97 Date: Mon, 25 Oct 2021 23:13:55 -0400 Subject: [PATCH 27/44] fix(several-classes): remove errors from lexer, add right path for testing file(code.cl) --- src/cool/lexer/lexer.py | 152 +++----------- src/cool/parser/output/parselog.txt | 294 ++++++++++++++-------------- src/cool/semantic/typeBuilder.py | 89 +++++++++ src/main.py | 4 +- 4 files changed, 271 insertions(+), 268 deletions(-) create mode 100644 src/cool/semantic/typeBuilder.py diff --git a/src/cool/lexer/lexer.py b/src/cool/lexer/lexer.py index 8155a4f4f..5a3b816ca 100644 --- a/src/cool/lexer/lexer.py +++ b/src/cool/lexer/lexer.py @@ -2,7 +2,7 @@ from pprint import pprint from typing import List import ply.lex as lex -from ..utils import Token, errors, ignored, literals, reservedKeywords, tokens +from ..utils import Token, errors, ignored, literals, reservedKeywords, tokens, CoolError class CoolLexer: @@ -13,96 +13,8 @@ def __init__(self, **kwargs): self.lexer = lex.lex(self, **kwargs) self.lexer.lineno = 1 self.lexer.linestart = 0 -class SemanticError(CoolError): - 'Otros errores semanticos' - SELF_IS_READONLY = 'Cannot assign to \'self\'.' - SELF_IN_LET = '\'self\' cannot be bound in a \'let\' expression.' - SELF_PARAM = "'self' cannot be the name of a formal parameter." - SELF_ATTR = "'self' cannot be the name of an attribute." - - LOCAL_ALREADY_DEFINED = 'Variable "%s" is already defined in method "%s".' - ARGUMENT_ERROR = 'Method %s called with wrong number of arguments.' - - REDEFINITION_ERROR = 'Redefinition of basic class %s' - INHERIT_ERROR = 'Class %s cannot inherit class %s.' - - DUPLICATE_CASE_BRANCH = 'Duplicate branch %s in case statement.' - TYPE_ALREADY_DEFINED = 'Classes may not be redefined.' - - ATTRIBUTE_ALREADY_DEFINED = 'Attribute "%s" is multiply defined in class.' - ATTR_DEFINED_PARENT = 'Attribute %s is an attribute of an inherited class.' - - METHOD_ALREADY_DEFINED = 'Method "%s" is multiply defined.' - - CIRCULAR_DEPENDENCY = 'Class %s, or an ancestor of %s, is involved in an inheritance cycle.' - - WRONG_SIGNATURE_RETURN = 'In redefined method %s, return type %s is different from original return type %s.' - WRONG_NUMBER_PARAM = 'Incompatible number of formal parameters in redefined method %s.' - - PARAMETER_MULTY_DEFINED = 'Formal parameter %s is multiply defined.' - WRONG_SIGNATURE_PARAMETER = 'In redefined method %s, parameter type %s is different from original type %s.' - - @property - def error_type(self): - return 'SemanticError' - - -class NamesError(SemanticError): - 'Se reporta al referenciar a un identificador en un ambito en el que no es visible' - - VARIABLE_NOT_DEFINED = 'Undeclared identifier %s.' - - @property - def error_type(self): - return 'NameError' - - -class TypesError(SemanticError): - 'Se reporta al detectar un problema de tipos' - - INCOMPATIBLE_TYPES = 'Cannot convert "%s" into "%s".' - - ATTR_TYPE_ERROR = 'Inferred type %s of initialization of attribute %s does not conform to declared type %s.' - ATTR_TYPE_UNDEFINED = 'Class %s of attribute %s is undefined.' - BOPERATION_NOT_DEFINED = 'non-Int arguments: %s %s %s.' - COMPARISON_ERROR = 'Illegal comparison with a basic type.' - UOPERATION_NOT_DEFINED = 'Argument of \'%s\' has type %s instead of %s.' - CLASS_CASE_BRANCH_UNDEFINED = 'Class %s of case branch is undefined.' - PREDICATE_ERROR = 'Predicate of \'%s\' does not have type %s.' - INCOSISTENT_ARG_TYPE = 'In call of method %s, type %s of parameter %s does not conform to declared type %s.' - INCOMPATIBLE_TYPES_DISPATCH = 'Expression type %s does not conform to declared static dispatch type %s.' - INHERIT_UNDEFINED = 'Class %s inherits from an undefined class %s.' - UNCONFORMS_TYPE = 'Inferred type %s of initialization of %s does not conform to identifier\'s declared type %s.' - UNDEFINED_TYPE_LET = 'Class %s of let-bound identifier %s is undefined.' - LOOP_CONDITION_ERROR = 'Loop condition does not have type Bool.' - RETURN_TYPE_ERROR = 'Inferred return type %s of method test does not conform to declared return type %s.' - PARAMETER_UNDEFINED = 'Class %s of formal parameter %s is undefined.' - RETURN_TYPE_UNDEFINED = 'Undefined return type %s in method %s.' - NEW_UNDEFINED_CLASS = '\'new\' used with undefined class %s.' - - PARENT_ALREADY_DEFINED = 'Parent type is already set for "%s"' - TYPE_NOT_DEFINED = 'Type "%s" is not defined.' - - @property - def error_type(self): - return 'TypeError' - - -class AttributesError(SemanticError): - 'Se reporta cuando un atributo o método se referencia pero no está definido' - - DISPATCH_UNDEFINED = 'Dispatch to undefined method %s.' - - METHOD_NOT_DEFINED = 'Method "%s" is not defined in "%s"' - ATTRIBUTE_NOT_DEFINED = 'Attribute "%s" is not defined in %s' - - @property - def error_type(self): - return 'AttributeError' - - - def updateColumn(self, t): + def update_column(self, t): t.column = t.lexpos - t.lexer.linestart + 1 states = ( @@ -143,7 +55,7 @@ def t_comments_error(self, t): t.lexer.skip(1) def t_comments_eof(self, t): - self.updateColumn(t) + self.update_column(t) if t.lexer.level > 0: error_text = errors.LexicographicError.EOF_COMMENT self.errors.append(errors.LexicographicError(error_text, t.lineno, t.column)) @@ -160,7 +72,7 @@ def t_strings(self, t): def t_strings_end(self, t): r'\"' - self.updateColumn(t) + self.update_column(t) if t.lexer.backslash: t.lexer.myString += '"' @@ -174,7 +86,7 @@ def t_strings_end(self, t): def t_strings_newline(self, t): r'\n' t.lexer.lineno += 1 - self.updateColumn(t) + self.update_column(t) t.lexer.linestart = t.lexer.lexpos @@ -186,7 +98,7 @@ def t_strings_newline(self, t): def t_strings_nill(self, t): r'\0' error_text = errors.LexicographicError.NULL_STRING - self.updateColumn(t) + self.update_column(t) self.errors.append(errors.LexicographicError(error_text, t.lineno, t.column)) @@ -210,7 +122,7 @@ def t_strings_error(self, t): pass def t_strings_eof(self, t): - self.updateColumn(t) + self.update_column(t) error_text = errors.LexicographicError.EOF_STRING self.errors.append(errors.LexicographicError(error_text, t.lineno, t.column)) @@ -219,127 +131,127 @@ def t_strings_eof(self, t): def t_semi(self, t): r';' - self.updateColumn(t) + self.update_column(t) return t def t_colon(self, t): r':' - self.updateColumn(t) + self.update_column(t) return t def t_comma(self, t): r',' - self.updateColumn(t) + self.update_column(t) return t def t_dot(self, t): r'\.' - self.updateColumn(t) + self.update_column(t) return t def t_opar(self, t): r'\(' - self.updateColumn(t) + self.update_column(t) return t def t_cpar(self, t): r'\)' - self.updateColumn(t) + self.update_column(t) return t def t_ocur(self, t): r'\{' - self.updateColumn(t) + self.update_column(t) return t def t_ccur(self, t): r'\}' - self.updateColumn(t) + self.update_column(t) return t def t_larrow(self, t): r'<-' - self.updateColumn(t) + self.update_column(t) return t def t_arroba(self, t): r'@' - self.updateColumn(t) + self.update_column(t) return t def t_rarrow(self, t): r'=>' - self.updateColumn(t) + self.update_column(t) return t def t_nox(self, t): r'~' - self.updateColumn(t) + self.update_column(t) return t def t_equal(self, t): r'=' - self.updateColumn(t) + self.update_column(t) return t def t_plus(self, t): r'\+' - self.updateColumn(t) + self.update_column(t) return t def t_of(self, t): r'of' - self.updateColumn(t) + self.update_column(t) return t def t_minus(self, t): r'-' - self.updateColumn(t) + self.update_column(t) return t def t_star(self, t): r'\*' - self.updateColumn(t) + self.update_column(t) return t def t_div(self, t): r'/' - self.updateColumn(t) + self.update_column(t) return t def t_lesseq(self, t): r'<=' - self.updateColumn(t) + self.update_column(t) return t def t_less(self, t): r'<' - self.updateColumn(t) + self.update_column(t) return t def t_inherits(self, t): r'inherits' - self.updateColumn(t) + self.update_column(t) return t def t_type(self, t): r'[A-Z][a-zA-Z_0-9]*' t.type = self.reserved.get(t.value.lower(), 'type') - self.updateColumn(t) + self.update_column(t) return t # Check for reserved words: def t_id(self, t): r'[a-z][a-zA-Z_0-9]*' t.type = self.reserved.get(t.value.lower(), 'id') - self.updateColumn(t) + self.update_column(t) return t # Get Numbers def t_num(self, t): r'\d+(\.\d+)? ' t.value = float(t.value) - self.updateColumn(t) + self.update_column(t) return t # Define a rule so we can track line numbers @@ -351,7 +263,7 @@ def t_newline(self, t): # Error handling rule def t_error(self, t): - self.updateColumn(t) + self.update_column(t) error_text = errors.LexicographicError.UNKNOWN_TOKEN % t.value[0] self.errors.append(errors.LexicographicError(error_text, t.lineno, t.column)) diff --git a/src/cool/parser/output/parselog.txt b/src/cool/parser/output/parselog.txt index 86a1f0de4..d134eb25c 100644 --- a/src/cool/parser/output/parselog.txt +++ b/src/cool/parser/output/parselog.txt @@ -6153,13 +6153,13 @@ yacc.py: 430:Defaulted state 45: Reduce using 34 yacc.py: 434:Stack : class type ocur id opar epsilon . LexToken(cpar,')',4,71) yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 yacc.py: 434:Stack : class type ocur id opar param_list_empty . LexToken(cpar,')',4,71) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : class type ocur id opar formals . LexToken(cpar,')',4,71) @@ -6192,37 +6192,37 @@ yacc.py: 411:State : 134 yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar new type . LexToken(cpar,')',5,101) yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','Alpha'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 123 - yacc.py: 506:Result : ( comp] with [] and goto state 123 + yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 - yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 149 yacc.py: 430:Defaulted state 149: Reduce using 92 yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar arg_list_empty . LexToken(cpar,')',5,109) yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 153 yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args . LexToken(cpar,')',5,109) @@ -6269,37 +6269,37 @@ yacc.py: 411:State : 191 yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args cpar . LexToken(ccur,'}',6,115) yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['print','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'print',5,103), [])) + yacc.py: 506:Result : ((LexToken(id,'print',5,103), [])) yacc.py: 410: yacc.py: 411:State : 167 yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot func_call . LexToken(ccur,'}',6,115) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','Object','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','Object','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 48 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 48 yacc.py: 430:Defaulted state 48: Reduce using 16 yacc.py: 434:Stack : class type ocur def_func semi feature_list . LexToken(ccur,'}',7,118) - yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 14 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',[]] and goto state 14 + yacc.py: 506:Result : ([ class type ocur feature_list ccur semi] with ['class','Main','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( class type ocur feature_list ccur semi] with ['class','Main','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( id colon type] with ['test1',':','Object'] and goto state 17 - yacc.py: 506:Result : ( ( epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar param_list_empty . LexToken(cpar,')',12,172) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals . LexToken(cpar,')',12,172) @@ -6426,27 +6426,27 @@ yacc.py: 411:State : 88 yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',13,191) yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing1','(',[],')',':','Int','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing1','(',[],')',':','Int','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( num] with [1.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test2',':','Int','<-',] and goto state 17 - yacc.py: 506:Result : ( id colon type larrow expr] with ['test2',':','Int','<-',] and goto state 17 + yacc.py: 506:Result : ( string] with ['1'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test3',':','String','<-',] and goto state 17 - yacc.py: 506:Result : ( id colon type larrow expr] with ['test3',':','String','<-',] and goto state 17 + yacc.py: 506:Result : ( id colon type] with ['a',':','Alpha'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'a',20,265), LexToken(type, ...) + yacc.py: 506:Result : ((LexToken(id,'a',20,265), LexToken(type, ...) yacc.py: 410: yacc.py: 411:State : 44 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param . LexToken(comma,',',20,273) @@ -6679,24 +6679,24 @@ yacc.py: 411:State : 96 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id colon type . LexToken(cpar,')',20,281) yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['b',':','Int'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'b',20,275), LexToken(type, ...) + yacc.py: 506:Result : ((LexToken(id,'b',20,275), LexToken(type, ...) yacc.py: 410: yacc.py: 411:State : 44 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param . LexToken(cpar,')',20,281) - yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 - yacc.py: 506:Result : ([(LexToken(id,'b',20,275), LexToken(type ...) + yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 + yacc.py: 506:Result : ([(LexToken(id,'b',20,275), LexToken(type ...) yacc.py: 410: yacc.py: 411:State : 95 yacc.py: 430:Defaulted state 95: Reduce using 33 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param_list . LexToken(cpar,')',20,281) - yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 - yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) + yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 + yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) yacc.py: 410: yacc.py: 411:State : 42 yacc.py: 430:Defaulted state 42: Reduce using 30 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param_list . LexToken(cpar,')',20,281) - yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 - yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) + yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 + yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals . LexToken(cpar,')',20,281) @@ -6721,27 +6721,27 @@ yacc.py: 411:State : 88 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',21,300) yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing2','(',,')',':','Int','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing2','(',,')',':','Int','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar param_list_empty . LexToken(cpar,')',24,325) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals . LexToken(cpar,')',24,325) @@ -6848,37 +6848,37 @@ yacc.py: 411:State : 93 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur string . LexToken(ccur,'}',26,357) yacc.py: 469:Action : Reduce rule [atom -> string] with ['2 + 2'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing3','(',[],')',':','String','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing3','(',[],')',':','String','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',28,374) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals . LexToken(cpar,')',28,374) diff --git a/src/cool/semantic/typeBuilder.py b/src/cool/semantic/typeBuilder.py new file mode 100644 index 000000000..f3325d0e1 --- /dev/null +++ b/src/cool/semantic/typeBuilder.py @@ -0,0 +1,89 @@ +from ..utils.ast import * +from ..utils import visitor +from .helpers import * +from .types import * +from typing import List + + +class TypeBuilder: + def __int__(self, context: Context, errors=[]): + self.context: Context = context + self.errors: List = errors + self.current_type: Type = None + + @visitor.on('node') + def visit(self, node): + pass + + @visitor.when(ProgramNode) + def visit(self, node: ProgramNode): + for d in node.declarations: + self.visit(d) + + @visitor.when(ClassDeclarationNode) + def visit(self, node: ClassDeclarationNode): + try: + self.current_type = self.context.get_type(node.id, node.pos) + except SemanticError as e: + self.current_type = ErrorType() + self.errors.append(e) + + if node.parent is not None: + if node.parent in ['Int', 'Bool', 'String']: + error_text = SemanticError.INHERIT_ERROR % (node.id, node.parent) + self.errors.append(SemanticError(error_text, *node.parent_pos)) + + try: + parent = self.context.get_type(node.parent, node.parent_pos) + except SemanticError: + error_text = TypesError.INHERIT_UNDEFINED % (node.id, node.parent) + self.errors.append(TypesError(error_text, *node.parent_pos)) + parent = None + + try: + current = parent + while current is not None: + if current.name == self.current_type.name: + error_text = SemanticError.CIRCULAR_DEPENDENCY % ( + self.current_type.name, self.current_type.name) + + raise SemanticError(error_text, *node.pos) + current = current.parent + except SemanticError as e: + parent = ErrorType() + self.errors.append(e) + + self.current_type.set_parent(parent) + + for f in node.features: + self.visit(f) + + @visitor.when(FuncDeclarationNode) + def visit(self, node: FuncDeclarationNode): + args_names = [] + args_types = [] + for name, type_ in node.params: + if name in args_names: + error_text = SemanticError.PARAMETER_MULTY_DEFINED % name + self.errors.append(SemanticError(error_text, *type_.pos)) + args_names.append(name) + + try: + arg_type = self.context.get_type(type_.value, type_.pos) + except SemanticError: + error_text = TypesError.PARAMETER_UNDEFINED % (type_.value, type_.value) + self.errors.append(TypesError(error_text, *type_.pos)) + arg_type = ErrorType() + args_types.append(arg_type) + + try: + return_type = self.context.get_type(node.type, node.type_pos) + except SemanticError as e: + error_text = TypesError.RETURN_TYPE_UNDEFINED % (node.type, node.id) + self.errors.append(TypesError(error_text, *node.type_pos)) + return_type = ErrorType(node.type_pos) + + try: + self.current_type.define_method(node.id, args_names, args_types, return_type, node.pos) + except SemanticError as e: + self.errors.append(e) diff --git a/src/main.py b/src/main.py index ff2f7671f..4ef377793 100644 --- a/src/main.py +++ b/src/main.py @@ -1,3 +1,4 @@ +import os.path import sys from pathlib import Path @@ -6,7 +7,8 @@ from cool.utils.errors import SyntacticError if __name__ == '__main__': - path: str = f"{Path.cwd()}/cool/code.cl" # normal mode + path: str = f"{Path.cwd()}/src/cool/code.cl" if os.path.exists( + f"{Path.cwd()}/src/cool/code.cl") else f"{Path.cwd()}/cool/code.cl" _in = sys.argv[1] if len(sys.argv) > 1 else path _out = sys.argv[2] if len(sys.argv) > 2 else None From 8c7020ec65da4bf015123010cfe875ce501bd459 Mon Sep 17 00:00:00 2001 From: JCH97 Date: Sun, 31 Oct 2021 17:25:58 -0400 Subject: [PATCH 28/44] feat(semantic): add initial approach to typeChecker [not completed], add new helper functions --- src/cool/__main__.py | 4 + src/cool/parser/output/parselog.txt | 6416 +-------------------------- src/cool/semantic/typeChecker.py | 104 + src/cool/utils/__init__.py | 1 + src/cool/utils/__main__.py | 6 + src/cool/utils/helpers.py | 5 + 6 files changed, 268 insertions(+), 6268 deletions(-) create mode 100644 src/cool/__main__.py create mode 100644 src/cool/semantic/typeChecker.py create mode 100644 src/cool/utils/__main__.py diff --git a/src/cool/__main__.py b/src/cool/__main__.py new file mode 100644 index 000000000..ce5a27d17 --- /dev/null +++ b/src/cool/__main__.py @@ -0,0 +1,4 @@ +from .lexer import * +from .parser import * +from .semantic import * +from .utils import * diff --git a/src/cool/parser/output/parselog.txt b/src/cool/parser/output/parselog.txt index d134eb25c..4bae5cbbe 100644 --- a/src/cool/parser/output/parselog.txt +++ b/src/cool/parser/output/parselog.txt @@ -1,6126 +1,6 @@ - yacc.py:3317:Created by PLY version 3.11 (http://www.dabeaz.com/ply) - yacc.py:3377: - yacc.py:3378:Grammar - yacc.py:3379: - yacc.py:3381:Rule 0 S' -> program - yacc.py:3381:Rule 1 program -> class_list - yacc.py:3381:Rule 2 class_list -> def_class class_list - yacc.py:3381:Rule 3 class_list -> def_class - yacc.py:3381:Rule 4 class_list -> error class_list - yacc.py:3381:Rule 5 epsilon -> - yacc.py:3381:Rule 6 def_class -> class type ocur feature_list ccur semi - yacc.py:3381:Rule 7 def_class -> class type inherits type ocur feature_list ccur semi - yacc.py:3381:Rule 8 def_class -> class error ocur feature_list ccur semi - yacc.py:3381:Rule 9 def_class -> class type ocur feature_list ccur error - yacc.py:3381:Rule 10 def_class -> class error inherits type ocur feature_list ccur semi - yacc.py:3381:Rule 11 def_class -> class error inherits error ocur feature_list ccur semi - yacc.py:3381:Rule 12 def_class -> class type inherits error ocur feature_list ccur semi - yacc.py:3381:Rule 13 def_class -> class type inherits type ocur feature_list ccur error - yacc.py:3381:Rule 14 feature_list -> epsilon - yacc.py:3381:Rule 15 feature_list -> def_attr semi feature_list - yacc.py:3381:Rule 16 feature_list -> def_func semi feature_list - yacc.py:3381:Rule 17 feature_list -> error feature_list - yacc.py:3381:Rule 18 def_attr -> id colon type - yacc.py:3381:Rule 19 def_attr -> id colon type larrow expr - yacc.py:3381:Rule 20 def_attr -> error colon type - yacc.py:3381:Rule 21 def_attr -> id colon error - yacc.py:3381:Rule 22 def_attr -> error colon type larrow expr - yacc.py:3381:Rule 23 def_attr -> id colon error larrow expr - yacc.py:3381:Rule 24 def_attr -> id colon type larrow error - yacc.py:3381:Rule 25 def_func -> id opar formals cpar colon type ocur expr ccur - yacc.py:3381:Rule 26 def_func -> error opar formals cpar colon type ocur expr ccur - yacc.py:3381:Rule 27 def_func -> id opar error cpar colon type ocur expr ccur - yacc.py:3381:Rule 28 def_func -> id opar formals cpar colon error ocur expr ccur - yacc.py:3381:Rule 29 def_func -> id opar formals cpar colon type ocur error ccur - yacc.py:3381:Rule 30 formals -> param_list - yacc.py:3381:Rule 31 formals -> param_list_empty - yacc.py:3381:Rule 32 param_list -> param - yacc.py:3381:Rule 33 param_list -> param comma param_list - yacc.py:3381:Rule 34 param_list_empty -> epsilon - yacc.py:3381:Rule 35 param -> id colon type - yacc.py:3381:Rule 36 let_list -> let_assign - yacc.py:3381:Rule 37 let_list -> let_assign comma let_list - yacc.py:3381:Rule 38 let_assign -> param larrow expr - yacc.py:3381:Rule 39 let_assign -> param - yacc.py:3381:Rule 40 cases_list -> casep semi - yacc.py:3381:Rule 41 cases_list -> casep semi cases_list - yacc.py:3381:Rule 42 cases_list -> error cases_list - yacc.py:3381:Rule 43 cases_list -> error semi - yacc.py:3381:Rule 44 casep -> id colon type rarrow expr - yacc.py:3381:Rule 45 expr -> id larrow expr - yacc.py:3381:Rule 46 expr -> comp - yacc.py:3381:Rule 47 comp -> comp less op - yacc.py:3381:Rule 48 comp -> comp lesseq op - yacc.py:3381:Rule 49 comp -> comp equal op - yacc.py:3381:Rule 50 comp -> op - yacc.py:3381:Rule 51 op -> op plus term - yacc.py:3381:Rule 52 op -> op minus term - yacc.py:3381:Rule 53 op -> term - yacc.py:3381:Rule 54 term -> term star base_call - yacc.py:3381:Rule 55 term -> term div base_call - yacc.py:3381:Rule 56 term -> base_call - yacc.py:3381:Rule 57 term -> term star error - yacc.py:3381:Rule 58 term -> term div error - yacc.py:3381:Rule 59 base_call -> factor arroba type dot func_call - yacc.py:3381:Rule 60 base_call -> factor - yacc.py:3381:Rule 61 base_call -> error arroba type dot func_call - yacc.py:3381:Rule 62 base_call -> factor arroba error dot func_call - yacc.py:3381:Rule 63 factor -> atom - yacc.py:3381:Rule 64 factor -> opar expr cpar - yacc.py:3381:Rule 65 factor -> factor dot func_call - yacc.py:3381:Rule 66 factor -> not expr - yacc.py:3381:Rule 67 factor -> func_call - yacc.py:3381:Rule 68 factor -> isvoid base_call - yacc.py:3381:Rule 69 factor -> nox base_call - yacc.py:3381:Rule 70 factor -> let let_list in expr - yacc.py:3381:Rule 71 factor -> case expr of cases_list esac - yacc.py:3381:Rule 72 factor -> if expr then expr else expr fi - yacc.py:3381:Rule 73 factor -> while expr loop expr pool - yacc.py:3381:Rule 74 atom -> num - yacc.py:3381:Rule 75 atom -> id - yacc.py:3381:Rule 76 atom -> new type - yacc.py:3381:Rule 77 atom -> ocur block ccur - yacc.py:3381:Rule 78 atom -> error block ccur - yacc.py:3381:Rule 79 atom -> ocur error ccur - yacc.py:3381:Rule 80 atom -> ocur block error - yacc.py:3381:Rule 81 atom -> true - yacc.py:3381:Rule 82 atom -> false - yacc.py:3381:Rule 83 atom -> string - yacc.py:3381:Rule 84 block -> expr semi - yacc.py:3381:Rule 85 block -> expr semi block - yacc.py:3381:Rule 86 block -> error block - yacc.py:3381:Rule 87 block -> error semi - yacc.py:3381:Rule 88 func_call -> id opar args cpar - yacc.py:3381:Rule 89 func_call -> id opar error cpar - yacc.py:3381:Rule 90 func_call -> error opar args cpar - yacc.py:3381:Rule 91 args -> arg_list - yacc.py:3381:Rule 92 args -> arg_list_empty - yacc.py:3381:Rule 93 arg_list -> expr - yacc.py:3381:Rule 94 arg_list -> expr comma arg_list - yacc.py:3381:Rule 95 arg_list -> error arg_list - yacc.py:3381:Rule 96 arg_list_empty -> epsilon - yacc.py:3399: - yacc.py:3400:Terminals, with rules where they appear - yacc.py:3401: - yacc.py:3405:arroba : 59 61 62 - yacc.py:3405:case : 71 - yacc.py:3405:ccur : 6 7 8 9 10 11 12 13 25 26 27 28 29 77 78 79 - yacc.py:3405:class : 6 7 8 9 10 11 12 13 - yacc.py:3405:colon : 18 19 20 21 22 23 24 25 26 27 28 29 35 44 - yacc.py:3405:comma : 33 37 94 - yacc.py:3405:cpar : 25 26 27 28 29 64 88 89 90 - yacc.py:3405:div : 55 58 - yacc.py:3405:dot : 59 61 62 65 - yacc.py:3405:else : 72 - yacc.py:3405:equal : 49 - yacc.py:3405:error : 4 8 9 10 11 11 12 13 17 20 21 22 23 24 26 27 28 29 42 43 57 58 61 62 78 79 80 86 87 89 90 95 - yacc.py:3405:esac : 71 - yacc.py:3405:false : 82 - yacc.py:3405:fi : 72 - yacc.py:3405:id : 18 19 21 23 24 25 27 28 29 35 44 45 75 88 89 - yacc.py:3405:if : 72 - yacc.py:3405:in : 70 - yacc.py:3405:inherits : 7 10 11 12 13 - yacc.py:3405:isvoid : 68 - yacc.py:3405:larrow : 19 22 23 24 38 45 - yacc.py:3405:less : 47 - yacc.py:3405:lesseq : 48 - yacc.py:3405:let : 70 - yacc.py:3405:loop : 73 - yacc.py:3405:minus : 52 - yacc.py:3405:new : 76 - yacc.py:3405:not : 66 - yacc.py:3405:nox : 69 - yacc.py:3405:num : 74 - yacc.py:3405:ocur : 6 7 8 9 10 11 12 13 25 26 27 28 29 77 79 80 - yacc.py:3405:of : 71 - yacc.py:3405:opar : 25 26 27 28 29 64 88 89 90 - yacc.py:3405:plus : 51 - yacc.py:3405:pool : 73 - yacc.py:3405:rarrow : 44 - yacc.py:3405:semi : 6 7 8 10 11 12 15 16 40 41 43 84 85 87 - yacc.py:3405:star : 54 57 - yacc.py:3405:string : 83 - yacc.py:3405:then : 72 - yacc.py:3405:true : 81 - yacc.py:3405:type : 6 7 7 9 10 12 13 13 18 19 20 22 24 25 26 27 29 35 44 59 61 76 - yacc.py:3405:while : 73 - yacc.py:3407: - yacc.py:3408:Nonterminals, with rules where they appear - yacc.py:3409: - yacc.py:3413:arg_list : 91 94 95 - yacc.py:3413:arg_list_empty : 92 - yacc.py:3413:args : 88 90 - yacc.py:3413:atom : 63 - yacc.py:3413:base_call : 54 55 56 68 69 - yacc.py:3413:block : 77 78 80 85 86 - yacc.py:3413:casep : 40 41 - yacc.py:3413:cases_list : 41 42 71 - yacc.py:3413:class_list : 1 2 4 - yacc.py:3413:comp : 46 47 48 49 - yacc.py:3413:def_attr : 15 - yacc.py:3413:def_class : 2 3 - yacc.py:3413:def_func : 16 - yacc.py:3413:epsilon : 14 34 96 - yacc.py:3413:expr : 19 22 23 25 26 27 28 38 44 45 64 66 70 71 72 72 72 73 73 84 85 93 94 - yacc.py:3413:factor : 59 60 62 65 - yacc.py:3413:feature_list : 6 7 8 9 10 11 12 13 15 16 17 - yacc.py:3413:formals : 25 26 28 29 - yacc.py:3413:func_call : 59 61 62 65 67 - yacc.py:3413:let_assign : 36 37 - yacc.py:3413:let_list : 37 70 - yacc.py:3413:op : 47 48 49 50 51 52 - yacc.py:3413:param : 32 33 38 39 - yacc.py:3413:param_list : 30 33 - yacc.py:3413:param_list_empty : 31 - yacc.py:3413:program : 0 - yacc.py:3413:term : 51 52 53 54 55 57 58 - yacc.py:3414: + yacc.py:3312:Couldn't open 'parser.out'. [Errno 2] No such file or directory: 'parser/output/parser.out' yacc.py:3436:Generating LALR tables - yacc.py:2543:Parsing method: LALR - yacc.py:2561: - yacc.py:2562:state 0 - yacc.py:2563: - yacc.py:2565: (0) S' -> . program - yacc.py:2565: (1) program -> . class_list - yacc.py:2565: (2) class_list -> . def_class class_list - yacc.py:2565: (3) class_list -> . def_class - yacc.py:2565: (4) class_list -> . error class_list - yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi - yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi - yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi - yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error - yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi - yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: error shift and go to state 4 - yacc.py:2687: class shift and go to state 5 - yacc.py:2689: - yacc.py:2714: program shift and go to state 1 - yacc.py:2714: class_list shift and go to state 2 - yacc.py:2714: def_class shift and go to state 3 - yacc.py:2561: - yacc.py:2562:state 1 - yacc.py:2563: - yacc.py:2565: (0) S' -> program . - yacc.py:2566: - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 2 - yacc.py:2563: - yacc.py:2565: (1) program -> class_list . - yacc.py:2566: - yacc.py:2687: $end reduce using rule 1 (program -> class_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 3 - yacc.py:2563: - yacc.py:2565: (2) class_list -> def_class . class_list - yacc.py:2565: (3) class_list -> def_class . - yacc.py:2565: (2) class_list -> . def_class class_list - yacc.py:2565: (3) class_list -> . def_class - yacc.py:2565: (4) class_list -> . error class_list - yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi - yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi - yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi - yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error - yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi - yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: $end reduce using rule 3 (class_list -> def_class .) - yacc.py:2687: error shift and go to state 4 - yacc.py:2687: class shift and go to state 5 - yacc.py:2689: - yacc.py:2714: def_class shift and go to state 3 - yacc.py:2714: class_list shift and go to state 6 - yacc.py:2561: - yacc.py:2562:state 4 - yacc.py:2563: - yacc.py:2565: (4) class_list -> error . class_list - yacc.py:2565: (2) class_list -> . def_class class_list - yacc.py:2565: (3) class_list -> . def_class - yacc.py:2565: (4) class_list -> . error class_list - yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi - yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi - yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi - yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error - yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi - yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: error shift and go to state 4 - yacc.py:2687: class shift and go to state 5 - yacc.py:2689: - yacc.py:2714: class_list shift and go to state 7 - yacc.py:2714: def_class shift and go to state 3 - yacc.py:2561: - yacc.py:2562:state 5 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class . type ocur feature_list ccur semi - yacc.py:2565: (7) def_class -> class . type inherits type ocur feature_list ccur semi - yacc.py:2565: (8) def_class -> class . error ocur feature_list ccur semi - yacc.py:2565: (9) def_class -> class . type ocur feature_list ccur error - yacc.py:2565: (10) def_class -> class . error inherits type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> class . error inherits error ocur feature_list ccur semi - yacc.py:2565: (12) def_class -> class . type inherits error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> class . type inherits type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: type shift and go to state 8 - yacc.py:2687: error shift and go to state 9 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 6 - yacc.py:2563: - yacc.py:2565: (2) class_list -> def_class class_list . - yacc.py:2566: - yacc.py:2687: $end reduce using rule 2 (class_list -> def_class class_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 7 - yacc.py:2563: - yacc.py:2565: (4) class_list -> error class_list . - yacc.py:2566: - yacc.py:2687: $end reduce using rule 4 (class_list -> error class_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 8 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class type . ocur feature_list ccur semi - yacc.py:2565: (7) def_class -> class type . inherits type ocur feature_list ccur semi - yacc.py:2565: (9) def_class -> class type . ocur feature_list ccur error - yacc.py:2565: (12) def_class -> class type . inherits error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> class type . inherits type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 10 - yacc.py:2687: inherits shift and go to state 11 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 9 - yacc.py:2563: - yacc.py:2565: (8) def_class -> class error . ocur feature_list ccur semi - yacc.py:2565: (10) def_class -> class error . inherits type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> class error . inherits error ocur feature_list ccur semi - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 12 - yacc.py:2687: inherits shift and go to state 13 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 10 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class type ocur . feature_list ccur semi - yacc.py:2565: (9) def_class -> class type ocur . feature_list ccur error - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 14 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 11 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits . type ocur feature_list ccur semi - yacc.py:2565: (12) def_class -> class type inherits . error ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> class type inherits . type ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: type shift and go to state 20 - yacc.py:2687: error shift and go to state 21 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 12 - yacc.py:2563: - yacc.py:2565: (8) def_class -> class error ocur . feature_list ccur semi - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 22 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 13 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits . type ocur feature_list ccur semi - yacc.py:2565: (11) def_class -> class error inherits . error ocur feature_list ccur semi - yacc.py:2566: - yacc.py:2687: type shift and go to state 24 - yacc.py:2687: error shift and go to state 23 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 14 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class type ocur feature_list . ccur semi - yacc.py:2565: (9) def_class -> class type ocur feature_list . ccur error - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 25 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 15 - yacc.py:2563: - yacc.py:2565: (17) feature_list -> error . feature_list - yacc.py:2565: (20) def_attr -> error . colon type - yacc.py:2565: (22) def_attr -> error . colon type larrow expr - yacc.py:2565: (26) def_func -> error . opar formals cpar colon type ocur expr ccur - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: colon shift and go to state 27 - yacc.py:2687: opar shift and go to state 28 - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 26 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 16 - yacc.py:2563: - yacc.py:2565: (14) feature_list -> epsilon . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 14 (feature_list -> epsilon .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 17 - yacc.py:2563: - yacc.py:2565: (15) feature_list -> def_attr . semi feature_list - yacc.py:2566: - yacc.py:2687: semi shift and go to state 29 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 18 - yacc.py:2563: - yacc.py:2565: (16) feature_list -> def_func . semi feature_list - yacc.py:2566: - yacc.py:2687: semi shift and go to state 30 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 19 - yacc.py:2563: - yacc.py:2565: (18) def_attr -> id . colon type - yacc.py:2565: (19) def_attr -> id . colon type larrow expr - yacc.py:2565: (21) def_attr -> id . colon error - yacc.py:2565: (23) def_attr -> id . colon error larrow expr - yacc.py:2565: (24) def_attr -> id . colon type larrow error - yacc.py:2565: (25) def_func -> id . opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> id . opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> id . opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> id . opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: colon shift and go to state 31 - yacc.py:2687: opar shift and go to state 32 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 20 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits type . ocur feature_list ccur semi - yacc.py:2565: (13) def_class -> class type inherits type . ocur feature_list ccur error - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 33 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 21 - yacc.py:2563: - yacc.py:2565: (12) def_class -> class type inherits error . ocur feature_list ccur semi - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 34 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 22 - yacc.py:2563: - yacc.py:2565: (8) def_class -> class error ocur feature_list . ccur semi - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 35 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 23 - yacc.py:2563: - yacc.py:2565: (11) def_class -> class error inherits error . ocur feature_list ccur semi - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 36 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 24 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits type . ocur feature_list ccur semi - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 37 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 25 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class type ocur feature_list ccur . semi - yacc.py:2565: (9) def_class -> class type ocur feature_list ccur . error - yacc.py:2566: - yacc.py:2687: semi shift and go to state 38 - yacc.py:2687: error shift and go to state 39 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 26 - yacc.py:2563: - yacc.py:2565: (17) feature_list -> error feature_list . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 17 (feature_list -> error feature_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 27 - yacc.py:2563: - yacc.py:2565: (20) def_attr -> error colon . type - yacc.py:2565: (22) def_attr -> error colon . type larrow expr - yacc.py:2566: - yacc.py:2687: type shift and go to state 40 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 28 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar . formals cpar colon type ocur expr ccur - yacc.py:2565: (30) formals -> . param_list - yacc.py:2565: (31) formals -> . param_list_empty - yacc.py:2565: (32) param_list -> . param - yacc.py:2565: (33) param_list -> . param comma param_list - yacc.py:2565: (34) param_list_empty -> . epsilon - yacc.py:2565: (35) param -> . id colon type - yacc.py:2565: (5) epsilon -> . - yacc.py:2566: - yacc.py:2687: id shift and go to state 46 - yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) - yacc.py:2689: - yacc.py:2714: formals shift and go to state 41 - yacc.py:2714: param_list shift and go to state 42 - yacc.py:2714: param_list_empty shift and go to state 43 - yacc.py:2714: param shift and go to state 44 - yacc.py:2714: epsilon shift and go to state 45 - yacc.py:2561: - yacc.py:2562:state 29 - yacc.py:2563: - yacc.py:2565: (15) feature_list -> def_attr semi . feature_list - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: feature_list shift and go to state 47 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 30 - yacc.py:2563: - yacc.py:2565: (16) feature_list -> def_func semi . feature_list - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2714: feature_list shift and go to state 48 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2561: - yacc.py:2562:state 31 - yacc.py:2563: - yacc.py:2565: (18) def_attr -> id colon . type - yacc.py:2565: (19) def_attr -> id colon . type larrow expr - yacc.py:2565: (21) def_attr -> id colon . error - yacc.py:2565: (23) def_attr -> id colon . error larrow expr - yacc.py:2565: (24) def_attr -> id colon . type larrow error - yacc.py:2566: - yacc.py:2687: type shift and go to state 49 - yacc.py:2687: error shift and go to state 50 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 32 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar . formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> id opar . error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> id opar . formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> id opar . formals cpar colon type ocur error ccur - yacc.py:2565: (30) formals -> . param_list - yacc.py:2565: (31) formals -> . param_list_empty - yacc.py:2565: (32) param_list -> . param - yacc.py:2565: (33) param_list -> . param comma param_list - yacc.py:2565: (34) param_list_empty -> . epsilon - yacc.py:2565: (35) param -> . id colon type - yacc.py:2565: (5) epsilon -> . - yacc.py:2566: - yacc.py:2687: error shift and go to state 52 - yacc.py:2687: id shift and go to state 46 - yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) - yacc.py:2689: - yacc.py:2714: formals shift and go to state 51 - yacc.py:2714: param_list shift and go to state 42 - yacc.py:2714: param_list_empty shift and go to state 43 - yacc.py:2714: param shift and go to state 44 - yacc.py:2714: epsilon shift and go to state 45 - yacc.py:2561: - yacc.py:2562:state 33 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits type ocur . feature_list ccur semi - yacc.py:2565: (13) def_class -> class type inherits type ocur . feature_list ccur error - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 53 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 34 - yacc.py:2563: - yacc.py:2565: (12) def_class -> class type inherits error ocur . feature_list ccur semi - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 54 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 35 - yacc.py:2563: - yacc.py:2565: (8) def_class -> class error ocur feature_list ccur . semi - yacc.py:2566: - yacc.py:2687: semi shift and go to state 55 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 36 - yacc.py:2563: - yacc.py:2565: (11) def_class -> class error inherits error ocur . feature_list ccur semi - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 56 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 37 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits type ocur . feature_list ccur semi - yacc.py:2565: (14) feature_list -> . epsilon - yacc.py:2565: (15) feature_list -> . def_attr semi feature_list - yacc.py:2565: (16) feature_list -> . def_func semi feature_list - yacc.py:2565: (17) feature_list -> . error feature_list - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (18) def_attr -> . id colon type - yacc.py:2565: (19) def_attr -> . id colon type larrow expr - yacc.py:2565: (20) def_attr -> . error colon type - yacc.py:2565: (21) def_attr -> . id colon error - yacc.py:2565: (22) def_attr -> . error colon type larrow expr - yacc.py:2565: (23) def_attr -> . id colon error larrow expr - yacc.py:2565: (24) def_attr -> . id colon type larrow error - yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur - yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur - yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: error shift and go to state 15 - yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) - yacc.py:2687: id shift and go to state 19 - yacc.py:2689: - yacc.py:2714: feature_list shift and go to state 57 - yacc.py:2714: epsilon shift and go to state 16 - yacc.py:2714: def_attr shift and go to state 17 - yacc.py:2714: def_func shift and go to state 18 - yacc.py:2561: - yacc.py:2562:state 38 - yacc.py:2563: - yacc.py:2565: (6) def_class -> class type ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 39 - yacc.py:2563: - yacc.py:2565: (9) def_class -> class type ocur feature_list ccur error . - yacc.py:2566: - yacc.py:2687: error reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) - yacc.py:2687: class reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) - yacc.py:2687: $end reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 40 - yacc.py:2563: - yacc.py:2565: (20) def_attr -> error colon type . - yacc.py:2565: (22) def_attr -> error colon type . larrow expr - yacc.py:2566: - yacc.py:2687: semi reduce using rule 20 (def_attr -> error colon type .) - yacc.py:2687: larrow shift and go to state 58 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 41 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals . cpar colon type ocur expr ccur - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 59 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 42 - yacc.py:2563: - yacc.py:2565: (30) formals -> param_list . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 30 (formals -> param_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 43 - yacc.py:2563: - yacc.py:2565: (31) formals -> param_list_empty . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 31 (formals -> param_list_empty .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 44 - yacc.py:2563: - yacc.py:2565: (32) param_list -> param . - yacc.py:2565: (33) param_list -> param . comma param_list - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 32 (param_list -> param .) - yacc.py:2687: comma shift and go to state 60 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 45 - yacc.py:2563: - yacc.py:2565: (34) param_list_empty -> epsilon . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 34 (param_list_empty -> epsilon .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 46 - yacc.py:2563: - yacc.py:2565: (35) param -> id . colon type - yacc.py:2566: - yacc.py:2687: colon shift and go to state 61 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 47 - yacc.py:2563: - yacc.py:2565: (15) feature_list -> def_attr semi feature_list . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 15 (feature_list -> def_attr semi feature_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 48 - yacc.py:2563: - yacc.py:2565: (16) feature_list -> def_func semi feature_list . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 16 (feature_list -> def_func semi feature_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 49 - yacc.py:2563: - yacc.py:2565: (18) def_attr -> id colon type . - yacc.py:2565: (19) def_attr -> id colon type . larrow expr - yacc.py:2565: (24) def_attr -> id colon type . larrow error - yacc.py:2566: - yacc.py:2687: semi reduce using rule 18 (def_attr -> id colon type .) - yacc.py:2687: larrow shift and go to state 62 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 50 - yacc.py:2563: - yacc.py:2565: (21) def_attr -> id colon error . - yacc.py:2565: (23) def_attr -> id colon error . larrow expr - yacc.py:2566: - yacc.py:2687: semi reduce using rule 21 (def_attr -> id colon error .) - yacc.py:2687: larrow shift and go to state 63 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 51 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals . cpar colon type ocur expr ccur - yacc.py:2565: (28) def_func -> id opar formals . cpar colon error ocur expr ccur - yacc.py:2565: (29) def_func -> id opar formals . cpar colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 64 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 52 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error . cpar colon type ocur expr ccur - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 65 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 53 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list . ccur semi - yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list . ccur error - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 66 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 54 - yacc.py:2563: - yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list . ccur semi - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 67 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 55 - yacc.py:2563: - yacc.py:2565: (8) def_class -> class error ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 56 - yacc.py:2563: - yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list . ccur semi - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 68 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 57 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list . ccur semi - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 69 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 58 - yacc.py:2563: - yacc.py:2565: (22) def_attr -> error colon type larrow . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 71 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 59 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar . colon type ocur expr ccur - yacc.py:2566: - yacc.py:2687: colon shift and go to state 94 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 60 - yacc.py:2563: - yacc.py:2565: (33) param_list -> param comma . param_list - yacc.py:2565: (32) param_list -> . param - yacc.py:2565: (33) param_list -> . param comma param_list - yacc.py:2565: (35) param -> . id colon type - yacc.py:2566: - yacc.py:2687: id shift and go to state 46 - yacc.py:2689: - yacc.py:2714: param shift and go to state 44 - yacc.py:2714: param_list shift and go to state 95 - yacc.py:2561: - yacc.py:2562:state 61 - yacc.py:2563: - yacc.py:2565: (35) param -> id colon . type - yacc.py:2566: - yacc.py:2687: type shift and go to state 96 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 62 - yacc.py:2563: - yacc.py:2565: (19) def_attr -> id colon type larrow . expr - yacc.py:2565: (24) def_attr -> id colon type larrow . error - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 98 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 97 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 63 - yacc.py:2563: - yacc.py:2565: (23) def_attr -> id colon error larrow . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 99 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 64 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar . colon type ocur expr ccur - yacc.py:2565: (28) def_func -> id opar formals cpar . colon error ocur expr ccur - yacc.py:2565: (29) def_func -> id opar formals cpar . colon type ocur error ccur - yacc.py:2566: - yacc.py:2687: colon shift and go to state 100 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 65 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar . colon type ocur expr ccur - yacc.py:2566: - yacc.py:2687: colon shift and go to state 101 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 66 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list ccur . semi - yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list ccur . error - yacc.py:2566: - yacc.py:2687: semi shift and go to state 102 - yacc.py:2687: error shift and go to state 103 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 67 - yacc.py:2563: - yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list ccur . semi - yacc.py:2566: - yacc.py:2687: semi shift and go to state 104 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 68 - yacc.py:2563: - yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list ccur . semi - yacc.py:2566: - yacc.py:2687: semi shift and go to state 105 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 69 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list ccur . semi - yacc.py:2566: - yacc.py:2687: semi shift and go to state 106 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 70 - yacc.py:2563: - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 71 - yacc.py:2563: - yacc.py:2565: (22) def_attr -> error colon type larrow expr . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 22 (def_attr -> error colon type larrow expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 72 - yacc.py:2563: - yacc.py:2565: (45) expr -> id . larrow expr - yacc.py:2565: (75) atom -> id . - yacc.py:2565: (88) func_call -> id . opar args cpar - yacc.py:2565: (89) func_call -> id . opar error cpar - yacc.py:2566: - yacc.py:2687: larrow shift and go to state 112 - yacc.py:2687: arroba reduce using rule 75 (atom -> id .) - yacc.py:2687: dot reduce using rule 75 (atom -> id .) - yacc.py:2687: star reduce using rule 75 (atom -> id .) - yacc.py:2687: div reduce using rule 75 (atom -> id .) - yacc.py:2687: plus reduce using rule 75 (atom -> id .) - yacc.py:2687: minus reduce using rule 75 (atom -> id .) - yacc.py:2687: less reduce using rule 75 (atom -> id .) - yacc.py:2687: lesseq reduce using rule 75 (atom -> id .) - yacc.py:2687: equal reduce using rule 75 (atom -> id .) - yacc.py:2687: semi reduce using rule 75 (atom -> id .) - yacc.py:2687: cpar reduce using rule 75 (atom -> id .) - yacc.py:2687: of reduce using rule 75 (atom -> id .) - yacc.py:2687: then reduce using rule 75 (atom -> id .) - yacc.py:2687: loop reduce using rule 75 (atom -> id .) - yacc.py:2687: comma reduce using rule 75 (atom -> id .) - yacc.py:2687: in reduce using rule 75 (atom -> id .) - yacc.py:2687: else reduce using rule 75 (atom -> id .) - yacc.py:2687: pool reduce using rule 75 (atom -> id .) - yacc.py:2687: ccur reduce using rule 75 (atom -> id .) - yacc.py:2687: fi reduce using rule 75 (atom -> id .) - yacc.py:2687: opar shift and go to state 113 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 73 - yacc.py:2563: - yacc.py:2565: (46) expr -> comp . - yacc.py:2565: (47) comp -> comp . less op - yacc.py:2565: (48) comp -> comp . lesseq op - yacc.py:2565: (49) comp -> comp . equal op - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for less resolved as shift - yacc.py:2666: ! shift/reduce conflict for lesseq resolved as shift - yacc.py:2666: ! shift/reduce conflict for equal resolved as shift - yacc.py:2687: semi reduce using rule 46 (expr -> comp .) - yacc.py:2687: cpar reduce using rule 46 (expr -> comp .) - yacc.py:2687: arroba reduce using rule 46 (expr -> comp .) - yacc.py:2687: dot reduce using rule 46 (expr -> comp .) - yacc.py:2687: star reduce using rule 46 (expr -> comp .) - yacc.py:2687: div reduce using rule 46 (expr -> comp .) - yacc.py:2687: plus reduce using rule 46 (expr -> comp .) - yacc.py:2687: minus reduce using rule 46 (expr -> comp .) - yacc.py:2687: of reduce using rule 46 (expr -> comp .) - yacc.py:2687: then reduce using rule 46 (expr -> comp .) - yacc.py:2687: loop reduce using rule 46 (expr -> comp .) - yacc.py:2687: comma reduce using rule 46 (expr -> comp .) - yacc.py:2687: in reduce using rule 46 (expr -> comp .) - yacc.py:2687: else reduce using rule 46 (expr -> comp .) - yacc.py:2687: pool reduce using rule 46 (expr -> comp .) - yacc.py:2687: ccur reduce using rule 46 (expr -> comp .) - yacc.py:2687: fi reduce using rule 46 (expr -> comp .) - yacc.py:2687: less shift and go to state 114 - yacc.py:2687: lesseq shift and go to state 115 - yacc.py:2687: equal shift and go to state 116 - yacc.py:2689: - yacc.py:2696: ! less [ reduce using rule 46 (expr -> comp .) ] - yacc.py:2696: ! lesseq [ reduce using rule 46 (expr -> comp .) ] - yacc.py:2696: ! equal [ reduce using rule 46 (expr -> comp .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 74 - yacc.py:2563: - yacc.py:2565: (50) comp -> op . - yacc.py:2565: (51) op -> op . plus term - yacc.py:2565: (52) op -> op . minus term - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for plus resolved as shift - yacc.py:2666: ! shift/reduce conflict for minus resolved as shift - yacc.py:2687: less reduce using rule 50 (comp -> op .) - yacc.py:2687: lesseq reduce using rule 50 (comp -> op .) - yacc.py:2687: equal reduce using rule 50 (comp -> op .) - yacc.py:2687: semi reduce using rule 50 (comp -> op .) - yacc.py:2687: cpar reduce using rule 50 (comp -> op .) - yacc.py:2687: arroba reduce using rule 50 (comp -> op .) - yacc.py:2687: dot reduce using rule 50 (comp -> op .) - yacc.py:2687: star reduce using rule 50 (comp -> op .) - yacc.py:2687: div reduce using rule 50 (comp -> op .) - yacc.py:2687: of reduce using rule 50 (comp -> op .) - yacc.py:2687: then reduce using rule 50 (comp -> op .) - yacc.py:2687: loop reduce using rule 50 (comp -> op .) - yacc.py:2687: comma reduce using rule 50 (comp -> op .) - yacc.py:2687: in reduce using rule 50 (comp -> op .) - yacc.py:2687: else reduce using rule 50 (comp -> op .) - yacc.py:2687: pool reduce using rule 50 (comp -> op .) - yacc.py:2687: ccur reduce using rule 50 (comp -> op .) - yacc.py:2687: fi reduce using rule 50 (comp -> op .) - yacc.py:2687: plus shift and go to state 117 - yacc.py:2687: minus shift and go to state 118 - yacc.py:2689: - yacc.py:2696: ! plus [ reduce using rule 50 (comp -> op .) ] - yacc.py:2696: ! minus [ reduce using rule 50 (comp -> op .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 75 - yacc.py:2563: - yacc.py:2565: (53) op -> term . - yacc.py:2565: (54) term -> term . star base_call - yacc.py:2565: (55) term -> term . div base_call - yacc.py:2565: (57) term -> term . star error - yacc.py:2565: (58) term -> term . div error - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for star resolved as shift - yacc.py:2666: ! shift/reduce conflict for div resolved as shift - yacc.py:2687: plus reduce using rule 53 (op -> term .) - yacc.py:2687: minus reduce using rule 53 (op -> term .) - yacc.py:2687: less reduce using rule 53 (op -> term .) - yacc.py:2687: lesseq reduce using rule 53 (op -> term .) - yacc.py:2687: equal reduce using rule 53 (op -> term .) - yacc.py:2687: semi reduce using rule 53 (op -> term .) - yacc.py:2687: cpar reduce using rule 53 (op -> term .) - yacc.py:2687: arroba reduce using rule 53 (op -> term .) - yacc.py:2687: dot reduce using rule 53 (op -> term .) - yacc.py:2687: of reduce using rule 53 (op -> term .) - yacc.py:2687: then reduce using rule 53 (op -> term .) - yacc.py:2687: loop reduce using rule 53 (op -> term .) - yacc.py:2687: comma reduce using rule 53 (op -> term .) - yacc.py:2687: in reduce using rule 53 (op -> term .) - yacc.py:2687: else reduce using rule 53 (op -> term .) - yacc.py:2687: pool reduce using rule 53 (op -> term .) - yacc.py:2687: ccur reduce using rule 53 (op -> term .) - yacc.py:2687: fi reduce using rule 53 (op -> term .) - yacc.py:2687: star shift and go to state 119 - yacc.py:2687: div shift and go to state 120 - yacc.py:2689: - yacc.py:2696: ! star [ reduce using rule 53 (op -> term .) ] - yacc.py:2696: ! div [ reduce using rule 53 (op -> term .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 76 - yacc.py:2563: - yacc.py:2565: (56) term -> base_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 56 (term -> base_call .) - yacc.py:2687: div reduce using rule 56 (term -> base_call .) - yacc.py:2687: plus reduce using rule 56 (term -> base_call .) - yacc.py:2687: minus reduce using rule 56 (term -> base_call .) - yacc.py:2687: less reduce using rule 56 (term -> base_call .) - yacc.py:2687: lesseq reduce using rule 56 (term -> base_call .) - yacc.py:2687: equal reduce using rule 56 (term -> base_call .) - yacc.py:2687: semi reduce using rule 56 (term -> base_call .) - yacc.py:2687: cpar reduce using rule 56 (term -> base_call .) - yacc.py:2687: arroba reduce using rule 56 (term -> base_call .) - yacc.py:2687: dot reduce using rule 56 (term -> base_call .) - yacc.py:2687: of reduce using rule 56 (term -> base_call .) - yacc.py:2687: then reduce using rule 56 (term -> base_call .) - yacc.py:2687: loop reduce using rule 56 (term -> base_call .) - yacc.py:2687: comma reduce using rule 56 (term -> base_call .) - yacc.py:2687: in reduce using rule 56 (term -> base_call .) - yacc.py:2687: else reduce using rule 56 (term -> base_call .) - yacc.py:2687: pool reduce using rule 56 (term -> base_call .) - yacc.py:2687: ccur reduce using rule 56 (term -> base_call .) - yacc.py:2687: fi reduce using rule 56 (term -> base_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 77 - yacc.py:2563: - yacc.py:2565: (59) base_call -> factor . arroba type dot func_call - yacc.py:2565: (60) base_call -> factor . - yacc.py:2565: (62) base_call -> factor . arroba error dot func_call - yacc.py:2565: (65) factor -> factor . dot func_call - yacc.py:2566: - yacc.py:2609: ! shift/reduce conflict for arroba resolved as shift - yacc.py:2666: ! shift/reduce conflict for dot resolved as shift - yacc.py:2687: arroba shift and go to state 121 - yacc.py:2687: star reduce using rule 60 (base_call -> factor .) - yacc.py:2687: div reduce using rule 60 (base_call -> factor .) - yacc.py:2687: plus reduce using rule 60 (base_call -> factor .) - yacc.py:2687: minus reduce using rule 60 (base_call -> factor .) - yacc.py:2687: less reduce using rule 60 (base_call -> factor .) - yacc.py:2687: lesseq reduce using rule 60 (base_call -> factor .) - yacc.py:2687: equal reduce using rule 60 (base_call -> factor .) - yacc.py:2687: semi reduce using rule 60 (base_call -> factor .) - yacc.py:2687: cpar reduce using rule 60 (base_call -> factor .) - yacc.py:2687: of reduce using rule 60 (base_call -> factor .) - yacc.py:2687: then reduce using rule 60 (base_call -> factor .) - yacc.py:2687: loop reduce using rule 60 (base_call -> factor .) - yacc.py:2687: comma reduce using rule 60 (base_call -> factor .) - yacc.py:2687: in reduce using rule 60 (base_call -> factor .) - yacc.py:2687: else reduce using rule 60 (base_call -> factor .) - yacc.py:2687: pool reduce using rule 60 (base_call -> factor .) - yacc.py:2687: ccur reduce using rule 60 (base_call -> factor .) - yacc.py:2687: fi reduce using rule 60 (base_call -> factor .) - yacc.py:2687: dot shift and go to state 122 - yacc.py:2689: - yacc.py:2696: ! arroba [ reduce using rule 60 (base_call -> factor .) ] - yacc.py:2696: ! dot [ reduce using rule 60 (base_call -> factor .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 78 - yacc.py:2563: - yacc.py:2565: (67) factor -> func_call . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 67 (factor -> func_call .) - yacc.py:2687: dot reduce using rule 67 (factor -> func_call .) - yacc.py:2687: star reduce using rule 67 (factor -> func_call .) - yacc.py:2687: div reduce using rule 67 (factor -> func_call .) - yacc.py:2687: plus reduce using rule 67 (factor -> func_call .) - yacc.py:2687: minus reduce using rule 67 (factor -> func_call .) - yacc.py:2687: less reduce using rule 67 (factor -> func_call .) - yacc.py:2687: lesseq reduce using rule 67 (factor -> func_call .) - yacc.py:2687: equal reduce using rule 67 (factor -> func_call .) - yacc.py:2687: semi reduce using rule 67 (factor -> func_call .) - yacc.py:2687: cpar reduce using rule 67 (factor -> func_call .) - yacc.py:2687: of reduce using rule 67 (factor -> func_call .) - yacc.py:2687: then reduce using rule 67 (factor -> func_call .) - yacc.py:2687: loop reduce using rule 67 (factor -> func_call .) - yacc.py:2687: comma reduce using rule 67 (factor -> func_call .) - yacc.py:2687: in reduce using rule 67 (factor -> func_call .) - yacc.py:2687: else reduce using rule 67 (factor -> func_call .) - yacc.py:2687: pool reduce using rule 67 (factor -> func_call .) - yacc.py:2687: ccur reduce using rule 67 (factor -> func_call .) - yacc.py:2687: fi reduce using rule 67 (factor -> func_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 79 - yacc.py:2563: - yacc.py:2565: (63) factor -> atom . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 63 (factor -> atom .) - yacc.py:2687: dot reduce using rule 63 (factor -> atom .) - yacc.py:2687: star reduce using rule 63 (factor -> atom .) - yacc.py:2687: div reduce using rule 63 (factor -> atom .) - yacc.py:2687: plus reduce using rule 63 (factor -> atom .) - yacc.py:2687: minus reduce using rule 63 (factor -> atom .) - yacc.py:2687: less reduce using rule 63 (factor -> atom .) - yacc.py:2687: lesseq reduce using rule 63 (factor -> atom .) - yacc.py:2687: equal reduce using rule 63 (factor -> atom .) - yacc.py:2687: semi reduce using rule 63 (factor -> atom .) - yacc.py:2687: cpar reduce using rule 63 (factor -> atom .) - yacc.py:2687: of reduce using rule 63 (factor -> atom .) - yacc.py:2687: then reduce using rule 63 (factor -> atom .) - yacc.py:2687: loop reduce using rule 63 (factor -> atom .) - yacc.py:2687: comma reduce using rule 63 (factor -> atom .) - yacc.py:2687: in reduce using rule 63 (factor -> atom .) - yacc.py:2687: else reduce using rule 63 (factor -> atom .) - yacc.py:2687: pool reduce using rule 63 (factor -> atom .) - yacc.py:2687: ccur reduce using rule 63 (factor -> atom .) - yacc.py:2687: fi reduce using rule 63 (factor -> atom .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 80 - yacc.py:2563: - yacc.py:2565: (64) factor -> opar . expr cpar - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 123 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 81 - yacc.py:2563: - yacc.py:2565: (66) factor -> not . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 124 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 82 - yacc.py:2563: - yacc.py:2565: (68) factor -> isvoid . base_call - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: base_call shift and go to state 125 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 83 - yacc.py:2563: - yacc.py:2565: (69) factor -> nox . base_call - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: base_call shift and go to state 127 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 84 - yacc.py:2563: - yacc.py:2565: (70) factor -> let . let_list in expr - yacc.py:2565: (36) let_list -> . let_assign - yacc.py:2565: (37) let_list -> . let_assign comma let_list - yacc.py:2565: (38) let_assign -> . param larrow expr - yacc.py:2565: (39) let_assign -> . param - yacc.py:2565: (35) param -> . id colon type - yacc.py:2566: - yacc.py:2687: id shift and go to state 46 - yacc.py:2689: - yacc.py:2714: let_list shift and go to state 128 - yacc.py:2714: let_assign shift and go to state 129 - yacc.py:2714: param shift and go to state 130 - yacc.py:2561: - yacc.py:2562:state 85 - yacc.py:2563: - yacc.py:2565: (71) factor -> case . expr of cases_list esac - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 131 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 86 - yacc.py:2563: - yacc.py:2565: (72) factor -> if . expr then expr else expr fi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 132 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 87 - yacc.py:2563: - yacc.py:2565: (73) factor -> while . expr loop expr pool - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 133 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 88 - yacc.py:2563: - yacc.py:2565: (74) atom -> num . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 74 (atom -> num .) - yacc.py:2687: dot reduce using rule 74 (atom -> num .) - yacc.py:2687: star reduce using rule 74 (atom -> num .) - yacc.py:2687: div reduce using rule 74 (atom -> num .) - yacc.py:2687: plus reduce using rule 74 (atom -> num .) - yacc.py:2687: minus reduce using rule 74 (atom -> num .) - yacc.py:2687: less reduce using rule 74 (atom -> num .) - yacc.py:2687: lesseq reduce using rule 74 (atom -> num .) - yacc.py:2687: equal reduce using rule 74 (atom -> num .) - yacc.py:2687: semi reduce using rule 74 (atom -> num .) - yacc.py:2687: cpar reduce using rule 74 (atom -> num .) - yacc.py:2687: of reduce using rule 74 (atom -> num .) - yacc.py:2687: then reduce using rule 74 (atom -> num .) - yacc.py:2687: loop reduce using rule 74 (atom -> num .) - yacc.py:2687: comma reduce using rule 74 (atom -> num .) - yacc.py:2687: in reduce using rule 74 (atom -> num .) - yacc.py:2687: else reduce using rule 74 (atom -> num .) - yacc.py:2687: pool reduce using rule 74 (atom -> num .) - yacc.py:2687: ccur reduce using rule 74 (atom -> num .) - yacc.py:2687: fi reduce using rule 74 (atom -> num .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 89 - yacc.py:2563: - yacc.py:2565: (76) atom -> new . type - yacc.py:2566: - yacc.py:2687: type shift and go to state 134 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 90 - yacc.py:2563: - yacc.py:2565: (77) atom -> ocur . block ccur - yacc.py:2565: (79) atom -> ocur . error ccur - yacc.py:2565: (80) atom -> ocur . block error - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 136 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: block shift and go to state 135 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 91 - yacc.py:2563: - yacc.py:2565: (81) atom -> true . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 81 (atom -> true .) - yacc.py:2687: dot reduce using rule 81 (atom -> true .) - yacc.py:2687: star reduce using rule 81 (atom -> true .) - yacc.py:2687: div reduce using rule 81 (atom -> true .) - yacc.py:2687: plus reduce using rule 81 (atom -> true .) - yacc.py:2687: minus reduce using rule 81 (atom -> true .) - yacc.py:2687: less reduce using rule 81 (atom -> true .) - yacc.py:2687: lesseq reduce using rule 81 (atom -> true .) - yacc.py:2687: equal reduce using rule 81 (atom -> true .) - yacc.py:2687: semi reduce using rule 81 (atom -> true .) - yacc.py:2687: cpar reduce using rule 81 (atom -> true .) - yacc.py:2687: of reduce using rule 81 (atom -> true .) - yacc.py:2687: then reduce using rule 81 (atom -> true .) - yacc.py:2687: loop reduce using rule 81 (atom -> true .) - yacc.py:2687: comma reduce using rule 81 (atom -> true .) - yacc.py:2687: in reduce using rule 81 (atom -> true .) - yacc.py:2687: else reduce using rule 81 (atom -> true .) - yacc.py:2687: pool reduce using rule 81 (atom -> true .) - yacc.py:2687: ccur reduce using rule 81 (atom -> true .) - yacc.py:2687: fi reduce using rule 81 (atom -> true .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 92 - yacc.py:2563: - yacc.py:2565: (82) atom -> false . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 82 (atom -> false .) - yacc.py:2687: dot reduce using rule 82 (atom -> false .) - yacc.py:2687: star reduce using rule 82 (atom -> false .) - yacc.py:2687: div reduce using rule 82 (atom -> false .) - yacc.py:2687: plus reduce using rule 82 (atom -> false .) - yacc.py:2687: minus reduce using rule 82 (atom -> false .) - yacc.py:2687: less reduce using rule 82 (atom -> false .) - yacc.py:2687: lesseq reduce using rule 82 (atom -> false .) - yacc.py:2687: equal reduce using rule 82 (atom -> false .) - yacc.py:2687: semi reduce using rule 82 (atom -> false .) - yacc.py:2687: cpar reduce using rule 82 (atom -> false .) - yacc.py:2687: of reduce using rule 82 (atom -> false .) - yacc.py:2687: then reduce using rule 82 (atom -> false .) - yacc.py:2687: loop reduce using rule 82 (atom -> false .) - yacc.py:2687: comma reduce using rule 82 (atom -> false .) - yacc.py:2687: in reduce using rule 82 (atom -> false .) - yacc.py:2687: else reduce using rule 82 (atom -> false .) - yacc.py:2687: pool reduce using rule 82 (atom -> false .) - yacc.py:2687: ccur reduce using rule 82 (atom -> false .) - yacc.py:2687: fi reduce using rule 82 (atom -> false .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 93 - yacc.py:2563: - yacc.py:2565: (83) atom -> string . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 83 (atom -> string .) - yacc.py:2687: dot reduce using rule 83 (atom -> string .) - yacc.py:2687: star reduce using rule 83 (atom -> string .) - yacc.py:2687: div reduce using rule 83 (atom -> string .) - yacc.py:2687: plus reduce using rule 83 (atom -> string .) - yacc.py:2687: minus reduce using rule 83 (atom -> string .) - yacc.py:2687: less reduce using rule 83 (atom -> string .) - yacc.py:2687: lesseq reduce using rule 83 (atom -> string .) - yacc.py:2687: equal reduce using rule 83 (atom -> string .) - yacc.py:2687: semi reduce using rule 83 (atom -> string .) - yacc.py:2687: cpar reduce using rule 83 (atom -> string .) - yacc.py:2687: of reduce using rule 83 (atom -> string .) - yacc.py:2687: then reduce using rule 83 (atom -> string .) - yacc.py:2687: loop reduce using rule 83 (atom -> string .) - yacc.py:2687: comma reduce using rule 83 (atom -> string .) - yacc.py:2687: in reduce using rule 83 (atom -> string .) - yacc.py:2687: else reduce using rule 83 (atom -> string .) - yacc.py:2687: pool reduce using rule 83 (atom -> string .) - yacc.py:2687: ccur reduce using rule 83 (atom -> string .) - yacc.py:2687: fi reduce using rule 83 (atom -> string .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 94 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar colon . type ocur expr ccur - yacc.py:2566: - yacc.py:2687: type shift and go to state 137 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 95 - yacc.py:2563: - yacc.py:2565: (33) param_list -> param comma param_list . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 33 (param_list -> param comma param_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 96 - yacc.py:2563: - yacc.py:2565: (35) param -> id colon type . - yacc.py:2566: - yacc.py:2687: comma reduce using rule 35 (param -> id colon type .) - yacc.py:2687: cpar reduce using rule 35 (param -> id colon type .) - yacc.py:2687: larrow reduce using rule 35 (param -> id colon type .) - yacc.py:2687: in reduce using rule 35 (param -> id colon type .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 97 - yacc.py:2563: - yacc.py:2565: (19) def_attr -> id colon type larrow expr . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 19 (def_attr -> id colon type larrow expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 98 - yacc.py:2563: - yacc.py:2565: (24) def_attr -> id colon type larrow error . - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: semi reduce using rule 24 (def_attr -> id colon type larrow error .) - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 99 - yacc.py:2563: - yacc.py:2565: (23) def_attr -> id colon error larrow expr . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 23 (def_attr -> id colon error larrow expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 100 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar colon . type ocur expr ccur - yacc.py:2565: (28) def_func -> id opar formals cpar colon . error ocur expr ccur - yacc.py:2565: (29) def_func -> id opar formals cpar colon . type ocur error ccur - yacc.py:2566: - yacc.py:2687: type shift and go to state 138 - yacc.py:2687: error shift and go to state 139 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 101 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar colon . type ocur expr ccur - yacc.py:2566: - yacc.py:2687: type shift and go to state 140 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 102 - yacc.py:2563: - yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 103 - yacc.py:2563: - yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list ccur error . - yacc.py:2566: - yacc.py:2687: error reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) - yacc.py:2687: class reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) - yacc.py:2687: $end reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 104 - yacc.py:2563: - yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 105 - yacc.py:2563: - yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 106 - yacc.py:2563: - yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list ccur semi . - yacc.py:2566: - yacc.py:2687: error reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) - yacc.py:2687: class reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) - yacc.py:2687: $end reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 107 - yacc.py:2563: - yacc.py:2565: (86) block -> error . block - yacc.py:2565: (87) block -> error . semi - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: semi shift and go to state 142 - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: block shift and go to state 141 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 108 - yacc.py:2563: - yacc.py:2565: (61) base_call -> error arroba . type dot func_call - yacc.py:2566: - yacc.py:2687: type shift and go to state 143 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 109 - yacc.py:2563: - yacc.py:2565: (78) atom -> error block . ccur - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 144 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 110 - yacc.py:2563: - yacc.py:2565: (90) func_call -> error opar . args cpar - yacc.py:2565: (64) factor -> opar . expr cpar - yacc.py:2565: (91) args -> . arg_list - yacc.py:2565: (92) args -> . arg_list_empty - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (96) arg_list_empty -> . epsilon - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 145 - yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: args shift and go to state 146 - yacc.py:2714: expr shift and go to state 147 - yacc.py:2714: arg_list shift and go to state 148 - yacc.py:2714: arg_list_empty shift and go to state 149 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: epsilon shift and go to state 150 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 111 - yacc.py:2563: - yacc.py:2565: (84) block -> expr . semi - yacc.py:2565: (85) block -> expr . semi block - yacc.py:2566: - yacc.py:2687: semi shift and go to state 151 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 112 - yacc.py:2563: - yacc.py:2565: (45) expr -> id larrow . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 152 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 113 - yacc.py:2563: - yacc.py:2565: (88) func_call -> id opar . args cpar - yacc.py:2565: (89) func_call -> id opar . error cpar - yacc.py:2565: (91) args -> . arg_list - yacc.py:2565: (92) args -> . arg_list_empty - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (96) arg_list_empty -> . epsilon - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 154 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: args shift and go to state 153 - yacc.py:2714: arg_list shift and go to state 148 - yacc.py:2714: arg_list_empty shift and go to state 149 - yacc.py:2714: expr shift and go to state 155 - yacc.py:2714: epsilon shift and go to state 150 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 114 - yacc.py:2563: - yacc.py:2565: (47) comp -> comp less . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: op shift and go to state 156 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 115 - yacc.py:2563: - yacc.py:2565: (48) comp -> comp lesseq . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: op shift and go to state 157 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 116 - yacc.py:2563: - yacc.py:2565: (49) comp -> comp equal . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: op shift and go to state 158 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 117 - yacc.py:2563: - yacc.py:2565: (51) op -> op plus . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: term shift and go to state 159 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 118 - yacc.py:2563: - yacc.py:2565: (52) op -> op minus . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: term shift and go to state 160 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 119 - yacc.py:2563: - yacc.py:2565: (54) term -> term star . base_call - yacc.py:2565: (57) term -> term star . error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 162 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: base_call shift and go to state 161 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 120 - yacc.py:2563: - yacc.py:2565: (55) term -> term div . base_call - yacc.py:2565: (58) term -> term div . error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 164 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: id shift and go to state 126 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: base_call shift and go to state 163 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 121 - yacc.py:2563: - yacc.py:2565: (59) base_call -> factor arroba . type dot func_call - yacc.py:2565: (62) base_call -> factor arroba . error dot func_call - yacc.py:2566: - yacc.py:2687: type shift and go to state 165 - yacc.py:2687: error shift and go to state 166 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 122 - yacc.py:2563: - yacc.py:2565: (65) factor -> factor dot . func_call - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 168 - yacc.py:2687: error shift and go to state 169 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 167 - yacc.py:2561: - yacc.py:2562:state 123 - yacc.py:2563: - yacc.py:2565: (64) factor -> opar expr . cpar - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 170 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 124 - yacc.py:2563: - yacc.py:2565: (66) factor -> not expr . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 66 (factor -> not expr .) - yacc.py:2687: dot reduce using rule 66 (factor -> not expr .) - yacc.py:2687: star reduce using rule 66 (factor -> not expr .) - yacc.py:2687: div reduce using rule 66 (factor -> not expr .) - yacc.py:2687: plus reduce using rule 66 (factor -> not expr .) - yacc.py:2687: minus reduce using rule 66 (factor -> not expr .) - yacc.py:2687: less reduce using rule 66 (factor -> not expr .) - yacc.py:2687: lesseq reduce using rule 66 (factor -> not expr .) - yacc.py:2687: equal reduce using rule 66 (factor -> not expr .) - yacc.py:2687: semi reduce using rule 66 (factor -> not expr .) - yacc.py:2687: cpar reduce using rule 66 (factor -> not expr .) - yacc.py:2687: of reduce using rule 66 (factor -> not expr .) - yacc.py:2687: then reduce using rule 66 (factor -> not expr .) - yacc.py:2687: loop reduce using rule 66 (factor -> not expr .) - yacc.py:2687: comma reduce using rule 66 (factor -> not expr .) - yacc.py:2687: in reduce using rule 66 (factor -> not expr .) - yacc.py:2687: else reduce using rule 66 (factor -> not expr .) - yacc.py:2687: pool reduce using rule 66 (factor -> not expr .) - yacc.py:2687: ccur reduce using rule 66 (factor -> not expr .) - yacc.py:2687: fi reduce using rule 66 (factor -> not expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 125 - yacc.py:2563: - yacc.py:2565: (68) factor -> isvoid base_call . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: dot reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: star reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: div reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: plus reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: minus reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: less reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: lesseq reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: equal reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: semi reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: cpar reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: of reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: then reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: loop reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: comma reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: in reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: else reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: pool reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: ccur reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2687: fi reduce using rule 68 (factor -> isvoid base_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 126 - yacc.py:2563: - yacc.py:2565: (75) atom -> id . - yacc.py:2565: (88) func_call -> id . opar args cpar - yacc.py:2565: (89) func_call -> id . opar error cpar - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 75 (atom -> id .) - yacc.py:2687: dot reduce using rule 75 (atom -> id .) - yacc.py:2687: star reduce using rule 75 (atom -> id .) - yacc.py:2687: div reduce using rule 75 (atom -> id .) - yacc.py:2687: plus reduce using rule 75 (atom -> id .) - yacc.py:2687: minus reduce using rule 75 (atom -> id .) - yacc.py:2687: less reduce using rule 75 (atom -> id .) - yacc.py:2687: lesseq reduce using rule 75 (atom -> id .) - yacc.py:2687: equal reduce using rule 75 (atom -> id .) - yacc.py:2687: semi reduce using rule 75 (atom -> id .) - yacc.py:2687: cpar reduce using rule 75 (atom -> id .) - yacc.py:2687: of reduce using rule 75 (atom -> id .) - yacc.py:2687: then reduce using rule 75 (atom -> id .) - yacc.py:2687: loop reduce using rule 75 (atom -> id .) - yacc.py:2687: comma reduce using rule 75 (atom -> id .) - yacc.py:2687: in reduce using rule 75 (atom -> id .) - yacc.py:2687: else reduce using rule 75 (atom -> id .) - yacc.py:2687: pool reduce using rule 75 (atom -> id .) - yacc.py:2687: ccur reduce using rule 75 (atom -> id .) - yacc.py:2687: fi reduce using rule 75 (atom -> id .) - yacc.py:2687: opar shift and go to state 113 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 127 - yacc.py:2563: - yacc.py:2565: (69) factor -> nox base_call . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: dot reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: star reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: div reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: plus reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: minus reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: less reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: lesseq reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: equal reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: semi reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: cpar reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: of reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: then reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: loop reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: comma reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: in reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: else reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: pool reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: ccur reduce using rule 69 (factor -> nox base_call .) - yacc.py:2687: fi reduce using rule 69 (factor -> nox base_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 128 - yacc.py:2563: - yacc.py:2565: (70) factor -> let let_list . in expr - yacc.py:2566: - yacc.py:2687: in shift and go to state 171 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 129 - yacc.py:2563: - yacc.py:2565: (36) let_list -> let_assign . - yacc.py:2565: (37) let_list -> let_assign . comma let_list - yacc.py:2566: - yacc.py:2687: in reduce using rule 36 (let_list -> let_assign .) - yacc.py:2687: comma shift and go to state 172 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 130 - yacc.py:2563: - yacc.py:2565: (38) let_assign -> param . larrow expr - yacc.py:2565: (39) let_assign -> param . - yacc.py:2566: - yacc.py:2687: larrow shift and go to state 173 - yacc.py:2687: comma reduce using rule 39 (let_assign -> param .) - yacc.py:2687: in reduce using rule 39 (let_assign -> param .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 131 - yacc.py:2563: - yacc.py:2565: (71) factor -> case expr . of cases_list esac - yacc.py:2566: - yacc.py:2687: of shift and go to state 174 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 132 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr . then expr else expr fi - yacc.py:2566: - yacc.py:2687: then shift and go to state 175 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 133 - yacc.py:2563: - yacc.py:2565: (73) factor -> while expr . loop expr pool - yacc.py:2566: - yacc.py:2687: loop shift and go to state 176 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 134 - yacc.py:2563: - yacc.py:2565: (76) atom -> new type . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 76 (atom -> new type .) - yacc.py:2687: dot reduce using rule 76 (atom -> new type .) - yacc.py:2687: star reduce using rule 76 (atom -> new type .) - yacc.py:2687: div reduce using rule 76 (atom -> new type .) - yacc.py:2687: plus reduce using rule 76 (atom -> new type .) - yacc.py:2687: minus reduce using rule 76 (atom -> new type .) - yacc.py:2687: less reduce using rule 76 (atom -> new type .) - yacc.py:2687: lesseq reduce using rule 76 (atom -> new type .) - yacc.py:2687: equal reduce using rule 76 (atom -> new type .) - yacc.py:2687: semi reduce using rule 76 (atom -> new type .) - yacc.py:2687: cpar reduce using rule 76 (atom -> new type .) - yacc.py:2687: of reduce using rule 76 (atom -> new type .) - yacc.py:2687: then reduce using rule 76 (atom -> new type .) - yacc.py:2687: loop reduce using rule 76 (atom -> new type .) - yacc.py:2687: comma reduce using rule 76 (atom -> new type .) - yacc.py:2687: in reduce using rule 76 (atom -> new type .) - yacc.py:2687: else reduce using rule 76 (atom -> new type .) - yacc.py:2687: pool reduce using rule 76 (atom -> new type .) - yacc.py:2687: ccur reduce using rule 76 (atom -> new type .) - yacc.py:2687: fi reduce using rule 76 (atom -> new type .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 135 - yacc.py:2563: - yacc.py:2565: (77) atom -> ocur block . ccur - yacc.py:2565: (80) atom -> ocur block . error - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 177 - yacc.py:2687: error shift and go to state 178 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 136 - yacc.py:2563: - yacc.py:2565: (79) atom -> ocur error . ccur - yacc.py:2565: (86) block -> error . block - yacc.py:2565: (87) block -> error . semi - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 179 - yacc.py:2687: semi shift and go to state 142 - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: block shift and go to state 141 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 137 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar colon type . ocur expr ccur - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 180 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 138 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar colon type . ocur expr ccur - yacc.py:2565: (29) def_func -> id opar formals cpar colon type . ocur error ccur - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 181 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 139 - yacc.py:2563: - yacc.py:2565: (28) def_func -> id opar formals cpar colon error . ocur expr ccur - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 182 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 140 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar colon type . ocur expr ccur - yacc.py:2566: - yacc.py:2687: ocur shift and go to state 183 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 141 - yacc.py:2563: - yacc.py:2565: (86) block -> error block . - yacc.py:2565: (78) atom -> error block . ccur - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for ccur resolved as shift - yacc.py:2687: error reduce using rule 86 (block -> error block .) - yacc.py:2687: ccur shift and go to state 144 - yacc.py:2689: - yacc.py:2696: ! ccur [ reduce using rule 86 (block -> error block .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 142 - yacc.py:2563: - yacc.py:2565: (87) block -> error semi . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 87 (block -> error semi .) - yacc.py:2687: error reduce using rule 87 (block -> error semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 143 - yacc.py:2563: - yacc.py:2565: (61) base_call -> error arroba type . dot func_call - yacc.py:2566: - yacc.py:2687: dot shift and go to state 184 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 144 - yacc.py:2563: - yacc.py:2565: (78) atom -> error block ccur . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: dot reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: star reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: div reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: plus reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: minus reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: less reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: lesseq reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: equal reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: semi reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: cpar reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: of reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: then reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: loop reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: comma reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: in reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: else reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: pool reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: ccur reduce using rule 78 (atom -> error block ccur .) - yacc.py:2687: fi reduce using rule 78 (atom -> error block ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 145 - yacc.py:2563: - yacc.py:2565: (95) arg_list -> error . arg_list - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 185 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: arg_list shift and go to state 186 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 187 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 146 - yacc.py:2563: - yacc.py:2565: (90) func_call -> error opar args . cpar - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 188 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 147 - yacc.py:2563: - yacc.py:2565: (64) factor -> opar expr . cpar - yacc.py:2565: (93) arg_list -> expr . - yacc.py:2565: (94) arg_list -> expr . comma arg_list - yacc.py:2566: - yacc.py:2609: ! shift/reduce conflict for cpar resolved as shift - yacc.py:2687: cpar shift and go to state 170 - yacc.py:2687: comma shift and go to state 189 - yacc.py:2689: - yacc.py:2696: ! cpar [ reduce using rule 93 (arg_list -> expr .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 148 - yacc.py:2563: - yacc.py:2565: (91) args -> arg_list . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 91 (args -> arg_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 149 - yacc.py:2563: - yacc.py:2565: (92) args -> arg_list_empty . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 92 (args -> arg_list_empty .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 150 - yacc.py:2563: - yacc.py:2565: (96) arg_list_empty -> epsilon . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 96 (arg_list_empty -> epsilon .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 151 - yacc.py:2563: - yacc.py:2565: (84) block -> expr semi . - yacc.py:2565: (85) block -> expr semi . block - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for error resolved as shift - yacc.py:2687: ccur reduce using rule 84 (block -> expr semi .) - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2696: ! error [ reduce using rule 84 (block -> expr semi .) ] - yacc.py:2700: - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: block shift and go to state 190 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 152 - yacc.py:2563: - yacc.py:2565: (45) expr -> id larrow expr . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: cpar reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: arroba reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: dot reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: star reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: div reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: plus reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: minus reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: less reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: lesseq reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: equal reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: of reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: then reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: loop reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: comma reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: in reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: else reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: pool reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: ccur reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2687: fi reduce using rule 45 (expr -> id larrow expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 153 - yacc.py:2563: - yacc.py:2565: (88) func_call -> id opar args . cpar - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 191 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 154 - yacc.py:2563: - yacc.py:2565: (89) func_call -> id opar error . cpar - yacc.py:2565: (95) arg_list -> error . arg_list - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: cpar shift and go to state 192 - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 185 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: arg_list shift and go to state 186 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 187 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 155 - yacc.py:2563: - yacc.py:2565: (93) arg_list -> expr . - yacc.py:2565: (94) arg_list -> expr . comma arg_list - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 93 (arg_list -> expr .) - yacc.py:2687: comma shift and go to state 189 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 156 - yacc.py:2563: - yacc.py:2565: (47) comp -> comp less op . - yacc.py:2565: (51) op -> op . plus term - yacc.py:2565: (52) op -> op . minus term - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for plus resolved as shift - yacc.py:2666: ! shift/reduce conflict for minus resolved as shift - yacc.py:2687: less reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: lesseq reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: equal reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: semi reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: cpar reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: arroba reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: dot reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: star reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: div reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: of reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: then reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: loop reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: comma reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: in reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: else reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: pool reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: ccur reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: fi reduce using rule 47 (comp -> comp less op .) - yacc.py:2687: plus shift and go to state 117 - yacc.py:2687: minus shift and go to state 118 - yacc.py:2689: - yacc.py:2696: ! plus [ reduce using rule 47 (comp -> comp less op .) ] - yacc.py:2696: ! minus [ reduce using rule 47 (comp -> comp less op .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 157 - yacc.py:2563: - yacc.py:2565: (48) comp -> comp lesseq op . - yacc.py:2565: (51) op -> op . plus term - yacc.py:2565: (52) op -> op . minus term - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for plus resolved as shift - yacc.py:2666: ! shift/reduce conflict for minus resolved as shift - yacc.py:2687: less reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: lesseq reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: equal reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: semi reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: cpar reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: arroba reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: dot reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: star reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: div reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: of reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: then reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: loop reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: comma reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: in reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: else reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: pool reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: ccur reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: fi reduce using rule 48 (comp -> comp lesseq op .) - yacc.py:2687: plus shift and go to state 117 - yacc.py:2687: minus shift and go to state 118 - yacc.py:2689: - yacc.py:2696: ! plus [ reduce using rule 48 (comp -> comp lesseq op .) ] - yacc.py:2696: ! minus [ reduce using rule 48 (comp -> comp lesseq op .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 158 - yacc.py:2563: - yacc.py:2565: (49) comp -> comp equal op . - yacc.py:2565: (51) op -> op . plus term - yacc.py:2565: (52) op -> op . minus term - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for plus resolved as shift - yacc.py:2666: ! shift/reduce conflict for minus resolved as shift - yacc.py:2687: less reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: lesseq reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: equal reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: semi reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: cpar reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: arroba reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: dot reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: star reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: div reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: of reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: then reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: loop reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: comma reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: in reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: else reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: pool reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: ccur reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: fi reduce using rule 49 (comp -> comp equal op .) - yacc.py:2687: plus shift and go to state 117 - yacc.py:2687: minus shift and go to state 118 - yacc.py:2689: - yacc.py:2696: ! plus [ reduce using rule 49 (comp -> comp equal op .) ] - yacc.py:2696: ! minus [ reduce using rule 49 (comp -> comp equal op .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 159 - yacc.py:2563: - yacc.py:2565: (51) op -> op plus term . - yacc.py:2565: (54) term -> term . star base_call - yacc.py:2565: (55) term -> term . div base_call - yacc.py:2565: (57) term -> term . star error - yacc.py:2565: (58) term -> term . div error - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for star resolved as shift - yacc.py:2666: ! shift/reduce conflict for div resolved as shift - yacc.py:2687: plus reduce using rule 51 (op -> op plus term .) - yacc.py:2687: minus reduce using rule 51 (op -> op plus term .) - yacc.py:2687: less reduce using rule 51 (op -> op plus term .) - yacc.py:2687: lesseq reduce using rule 51 (op -> op plus term .) - yacc.py:2687: equal reduce using rule 51 (op -> op plus term .) - yacc.py:2687: semi reduce using rule 51 (op -> op plus term .) - yacc.py:2687: cpar reduce using rule 51 (op -> op plus term .) - yacc.py:2687: arroba reduce using rule 51 (op -> op plus term .) - yacc.py:2687: dot reduce using rule 51 (op -> op plus term .) - yacc.py:2687: of reduce using rule 51 (op -> op plus term .) - yacc.py:2687: then reduce using rule 51 (op -> op plus term .) - yacc.py:2687: loop reduce using rule 51 (op -> op plus term .) - yacc.py:2687: comma reduce using rule 51 (op -> op plus term .) - yacc.py:2687: in reduce using rule 51 (op -> op plus term .) - yacc.py:2687: else reduce using rule 51 (op -> op plus term .) - yacc.py:2687: pool reduce using rule 51 (op -> op plus term .) - yacc.py:2687: ccur reduce using rule 51 (op -> op plus term .) - yacc.py:2687: fi reduce using rule 51 (op -> op plus term .) - yacc.py:2687: star shift and go to state 119 - yacc.py:2687: div shift and go to state 120 - yacc.py:2689: - yacc.py:2696: ! star [ reduce using rule 51 (op -> op plus term .) ] - yacc.py:2696: ! div [ reduce using rule 51 (op -> op plus term .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 160 - yacc.py:2563: - yacc.py:2565: (52) op -> op minus term . - yacc.py:2565: (54) term -> term . star base_call - yacc.py:2565: (55) term -> term . div base_call - yacc.py:2565: (57) term -> term . star error - yacc.py:2565: (58) term -> term . div error - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for star resolved as shift - yacc.py:2666: ! shift/reduce conflict for div resolved as shift - yacc.py:2687: plus reduce using rule 52 (op -> op minus term .) - yacc.py:2687: minus reduce using rule 52 (op -> op minus term .) - yacc.py:2687: less reduce using rule 52 (op -> op minus term .) - yacc.py:2687: lesseq reduce using rule 52 (op -> op minus term .) - yacc.py:2687: equal reduce using rule 52 (op -> op minus term .) - yacc.py:2687: semi reduce using rule 52 (op -> op minus term .) - yacc.py:2687: cpar reduce using rule 52 (op -> op minus term .) - yacc.py:2687: arroba reduce using rule 52 (op -> op minus term .) - yacc.py:2687: dot reduce using rule 52 (op -> op minus term .) - yacc.py:2687: of reduce using rule 52 (op -> op minus term .) - yacc.py:2687: then reduce using rule 52 (op -> op minus term .) - yacc.py:2687: loop reduce using rule 52 (op -> op minus term .) - yacc.py:2687: comma reduce using rule 52 (op -> op minus term .) - yacc.py:2687: in reduce using rule 52 (op -> op minus term .) - yacc.py:2687: else reduce using rule 52 (op -> op minus term .) - yacc.py:2687: pool reduce using rule 52 (op -> op minus term .) - yacc.py:2687: ccur reduce using rule 52 (op -> op minus term .) - yacc.py:2687: fi reduce using rule 52 (op -> op minus term .) - yacc.py:2687: star shift and go to state 119 - yacc.py:2687: div shift and go to state 120 - yacc.py:2689: - yacc.py:2696: ! star [ reduce using rule 52 (op -> op minus term .) ] - yacc.py:2696: ! div [ reduce using rule 52 (op -> op minus term .) ] - yacc.py:2700: - yacc.py:2561: - yacc.py:2562:state 161 - yacc.py:2563: - yacc.py:2565: (54) term -> term star base_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: div reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: plus reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: minus reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: less reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: lesseq reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: equal reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: semi reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: cpar reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: arroba reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: dot reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: of reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: then reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: loop reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: comma reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: in reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: else reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: pool reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: ccur reduce using rule 54 (term -> term star base_call .) - yacc.py:2687: fi reduce using rule 54 (term -> term star base_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 162 - yacc.py:2563: - yacc.py:2565: (57) term -> term star error . - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for arroba resolved as shift - yacc.py:2687: star reduce using rule 57 (term -> term star error .) - yacc.py:2687: div reduce using rule 57 (term -> term star error .) - yacc.py:2687: plus reduce using rule 57 (term -> term star error .) - yacc.py:2687: minus reduce using rule 57 (term -> term star error .) - yacc.py:2687: less reduce using rule 57 (term -> term star error .) - yacc.py:2687: lesseq reduce using rule 57 (term -> term star error .) - yacc.py:2687: equal reduce using rule 57 (term -> term star error .) - yacc.py:2687: semi reduce using rule 57 (term -> term star error .) - yacc.py:2687: cpar reduce using rule 57 (term -> term star error .) - yacc.py:2687: dot reduce using rule 57 (term -> term star error .) - yacc.py:2687: of reduce using rule 57 (term -> term star error .) - yacc.py:2687: then reduce using rule 57 (term -> term star error .) - yacc.py:2687: loop reduce using rule 57 (term -> term star error .) - yacc.py:2687: comma reduce using rule 57 (term -> term star error .) - yacc.py:2687: in reduce using rule 57 (term -> term star error .) - yacc.py:2687: else reduce using rule 57 (term -> term star error .) - yacc.py:2687: pool reduce using rule 57 (term -> term star error .) - yacc.py:2687: ccur reduce using rule 57 (term -> term star error .) - yacc.py:2687: fi reduce using rule 57 (term -> term star error .) - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2696: ! arroba [ reduce using rule 57 (term -> term star error .) ] - yacc.py:2700: - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 163 - yacc.py:2563: - yacc.py:2565: (55) term -> term div base_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: div reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: plus reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: minus reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: less reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: lesseq reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: equal reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: semi reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: cpar reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: arroba reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: dot reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: of reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: then reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: loop reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: comma reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: in reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: else reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: pool reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: ccur reduce using rule 55 (term -> term div base_call .) - yacc.py:2687: fi reduce using rule 55 (term -> term div base_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 164 - yacc.py:2563: - yacc.py:2565: (58) term -> term div error . - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2666: ! shift/reduce conflict for arroba resolved as shift - yacc.py:2687: star reduce using rule 58 (term -> term div error .) - yacc.py:2687: div reduce using rule 58 (term -> term div error .) - yacc.py:2687: plus reduce using rule 58 (term -> term div error .) - yacc.py:2687: minus reduce using rule 58 (term -> term div error .) - yacc.py:2687: less reduce using rule 58 (term -> term div error .) - yacc.py:2687: lesseq reduce using rule 58 (term -> term div error .) - yacc.py:2687: equal reduce using rule 58 (term -> term div error .) - yacc.py:2687: semi reduce using rule 58 (term -> term div error .) - yacc.py:2687: cpar reduce using rule 58 (term -> term div error .) - yacc.py:2687: dot reduce using rule 58 (term -> term div error .) - yacc.py:2687: of reduce using rule 58 (term -> term div error .) - yacc.py:2687: then reduce using rule 58 (term -> term div error .) - yacc.py:2687: loop reduce using rule 58 (term -> term div error .) - yacc.py:2687: comma reduce using rule 58 (term -> term div error .) - yacc.py:2687: in reduce using rule 58 (term -> term div error .) - yacc.py:2687: else reduce using rule 58 (term -> term div error .) - yacc.py:2687: pool reduce using rule 58 (term -> term div error .) - yacc.py:2687: ccur reduce using rule 58 (term -> term div error .) - yacc.py:2687: fi reduce using rule 58 (term -> term div error .) - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2696: ! arroba [ reduce using rule 58 (term -> term div error .) ] - yacc.py:2700: - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 165 - yacc.py:2563: - yacc.py:2565: (59) base_call -> factor arroba type . dot func_call - yacc.py:2566: - yacc.py:2687: dot shift and go to state 193 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 166 - yacc.py:2563: - yacc.py:2565: (62) base_call -> factor arroba error . dot func_call - yacc.py:2566: - yacc.py:2687: dot shift and go to state 194 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 167 - yacc.py:2563: - yacc.py:2565: (65) factor -> factor dot func_call . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: dot reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: star reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: div reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: plus reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: minus reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: less reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: lesseq reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: equal reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: semi reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: cpar reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: of reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: then reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: loop reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: comma reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: in reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: else reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: pool reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: ccur reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2687: fi reduce using rule 65 (factor -> factor dot func_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 168 - yacc.py:2563: - yacc.py:2565: (88) func_call -> id . opar args cpar - yacc.py:2565: (89) func_call -> id . opar error cpar - yacc.py:2566: - yacc.py:2687: opar shift and go to state 113 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 169 - yacc.py:2563: - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2566: - yacc.py:2687: opar shift and go to state 195 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 170 - yacc.py:2563: - yacc.py:2565: (64) factor -> opar expr cpar . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: dot reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: star reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: div reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: plus reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: minus reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: less reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: lesseq reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: equal reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: semi reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: cpar reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: of reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: then reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: loop reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: comma reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: in reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: else reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: pool reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: ccur reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2687: fi reduce using rule 64 (factor -> opar expr cpar .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 171 - yacc.py:2563: - yacc.py:2565: (70) factor -> let let_list in . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 196 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 172 - yacc.py:2563: - yacc.py:2565: (37) let_list -> let_assign comma . let_list - yacc.py:2565: (36) let_list -> . let_assign - yacc.py:2565: (37) let_list -> . let_assign comma let_list - yacc.py:2565: (38) let_assign -> . param larrow expr - yacc.py:2565: (39) let_assign -> . param - yacc.py:2565: (35) param -> . id colon type - yacc.py:2566: - yacc.py:2687: id shift and go to state 46 - yacc.py:2689: - yacc.py:2714: let_assign shift and go to state 129 - yacc.py:2714: let_list shift and go to state 197 - yacc.py:2714: param shift and go to state 130 - yacc.py:2561: - yacc.py:2562:state 173 - yacc.py:2563: - yacc.py:2565: (38) let_assign -> param larrow . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 198 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 174 - yacc.py:2563: - yacc.py:2565: (71) factor -> case expr of . cases_list esac - yacc.py:2565: (40) cases_list -> . casep semi - yacc.py:2565: (41) cases_list -> . casep semi cases_list - yacc.py:2565: (42) cases_list -> . error cases_list - yacc.py:2565: (43) cases_list -> . error semi - yacc.py:2565: (44) casep -> . id colon type rarrow expr - yacc.py:2566: - yacc.py:2687: error shift and go to state 201 - yacc.py:2687: id shift and go to state 202 - yacc.py:2689: - yacc.py:2714: cases_list shift and go to state 199 - yacc.py:2714: casep shift and go to state 200 - yacc.py:2561: - yacc.py:2562:state 175 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr then . expr else expr fi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 203 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 176 - yacc.py:2563: - yacc.py:2565: (73) factor -> while expr loop . expr pool - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 204 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 177 - yacc.py:2563: - yacc.py:2565: (77) atom -> ocur block ccur . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: dot reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: star reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: div reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: plus reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: minus reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: less reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: lesseq reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: equal reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: semi reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: cpar reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: of reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: then reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: loop reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: comma reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: in reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: else reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: pool reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: ccur reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2687: fi reduce using rule 77 (atom -> ocur block ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 178 - yacc.py:2563: - yacc.py:2565: (80) atom -> ocur block error . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: dot reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: star reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: div reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: plus reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: minus reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: less reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: lesseq reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: equal reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: semi reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: cpar reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: of reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: then reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: loop reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: comma reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: in reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: else reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: pool reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: ccur reduce using rule 80 (atom -> ocur block error .) - yacc.py:2687: fi reduce using rule 80 (atom -> ocur block error .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 179 - yacc.py:2563: - yacc.py:2565: (79) atom -> ocur error ccur . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: dot reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: star reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: div reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: plus reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: minus reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: less reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: lesseq reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: equal reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: semi reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: cpar reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: of reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: then reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: loop reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: comma reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: in reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: else reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: pool reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: ccur reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2687: fi reduce using rule 79 (atom -> ocur error ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 180 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur . expr ccur - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 205 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 181 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur . expr ccur - yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur . error ccur - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 207 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 206 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 182 - yacc.py:2563: - yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur . expr ccur - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 208 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 183 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur . expr ccur - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 209 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 184 - yacc.py:2563: - yacc.py:2565: (61) base_call -> error arroba type dot . func_call - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 168 - yacc.py:2687: error shift and go to state 169 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 210 - yacc.py:2561: - yacc.py:2562:state 185 - yacc.py:2563: - yacc.py:2565: (95) arg_list -> error . arg_list - yacc.py:2565: (86) block -> error . block - yacc.py:2565: (87) block -> error . semi - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: semi shift and go to state 142 - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 185 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: arg_list shift and go to state 186 - yacc.py:2714: block shift and go to state 141 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: expr shift and go to state 187 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 186 - yacc.py:2563: - yacc.py:2565: (95) arg_list -> error arg_list . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 95 (arg_list -> error arg_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 187 - yacc.py:2563: - yacc.py:2565: (93) arg_list -> expr . - yacc.py:2565: (94) arg_list -> expr . comma arg_list - yacc.py:2565: (84) block -> expr . semi - yacc.py:2565: (85) block -> expr . semi block - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 93 (arg_list -> expr .) - yacc.py:2687: comma shift and go to state 189 - yacc.py:2687: semi shift and go to state 151 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 188 - yacc.py:2563: - yacc.py:2565: (90) func_call -> error opar args cpar . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: dot reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: star reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: div reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: plus reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: minus reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: less reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: lesseq reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: equal reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: semi reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: cpar reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: of reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: then reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: loop reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: comma reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: in reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: else reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: pool reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: ccur reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2687: fi reduce using rule 90 (func_call -> error opar args cpar .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 189 - yacc.py:2563: - yacc.py:2565: (94) arg_list -> expr comma . arg_list - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 145 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 155 - yacc.py:2714: arg_list shift and go to state 211 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 190 - yacc.py:2563: - yacc.py:2565: (85) block -> expr semi block . - yacc.py:2566: - yacc.py:2687: ccur reduce using rule 85 (block -> expr semi block .) - yacc.py:2687: error reduce using rule 85 (block -> expr semi block .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 191 - yacc.py:2563: - yacc.py:2565: (88) func_call -> id opar args cpar . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: dot reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: star reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: div reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: plus reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: minus reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: less reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: lesseq reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: equal reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: semi reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: cpar reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: of reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: then reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: loop reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: comma reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: in reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: else reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: pool reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: ccur reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2687: fi reduce using rule 88 (func_call -> id opar args cpar .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 192 - yacc.py:2563: - yacc.py:2565: (89) func_call -> id opar error cpar . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: dot reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: star reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: div reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: plus reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: minus reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: less reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: lesseq reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: equal reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: semi reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: cpar reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: of reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: then reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: loop reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: comma reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: in reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: else reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: pool reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: ccur reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2687: fi reduce using rule 89 (func_call -> id opar error cpar .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 193 - yacc.py:2563: - yacc.py:2565: (59) base_call -> factor arroba type dot . func_call - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 168 - yacc.py:2687: error shift and go to state 169 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 212 - yacc.py:2561: - yacc.py:2562:state 194 - yacc.py:2563: - yacc.py:2565: (62) base_call -> factor arroba error dot . func_call - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 168 - yacc.py:2687: error shift and go to state 169 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 213 - yacc.py:2561: - yacc.py:2562:state 195 - yacc.py:2563: - yacc.py:2565: (90) func_call -> error opar . args cpar - yacc.py:2565: (91) args -> . arg_list - yacc.py:2565: (92) args -> . arg_list_empty - yacc.py:2565: (93) arg_list -> . expr - yacc.py:2565: (94) arg_list -> . expr comma arg_list - yacc.py:2565: (95) arg_list -> . error arg_list - yacc.py:2565: (96) arg_list_empty -> . epsilon - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (5) epsilon -> . - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: error shift and go to state 145 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: args shift and go to state 146 - yacc.py:2714: arg_list shift and go to state 148 - yacc.py:2714: arg_list_empty shift and go to state 149 - yacc.py:2714: expr shift and go to state 155 - yacc.py:2714: epsilon shift and go to state 150 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 196 - yacc.py:2563: - yacc.py:2565: (70) factor -> let let_list in expr . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: dot reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: star reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: div reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: plus reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: minus reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: less reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: lesseq reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: equal reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: semi reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: cpar reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: of reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: then reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: loop reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: comma reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: in reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: else reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: pool reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: ccur reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2687: fi reduce using rule 70 (factor -> let let_list in expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 197 - yacc.py:2563: - yacc.py:2565: (37) let_list -> let_assign comma let_list . - yacc.py:2566: - yacc.py:2687: in reduce using rule 37 (let_list -> let_assign comma let_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 198 - yacc.py:2563: - yacc.py:2565: (38) let_assign -> param larrow expr . - yacc.py:2566: - yacc.py:2687: comma reduce using rule 38 (let_assign -> param larrow expr .) - yacc.py:2687: in reduce using rule 38 (let_assign -> param larrow expr .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 199 - yacc.py:2563: - yacc.py:2565: (71) factor -> case expr of cases_list . esac - yacc.py:2566: - yacc.py:2687: esac shift and go to state 214 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 200 - yacc.py:2563: - yacc.py:2565: (40) cases_list -> casep . semi - yacc.py:2565: (41) cases_list -> casep . semi cases_list - yacc.py:2566: - yacc.py:2687: semi shift and go to state 215 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 201 - yacc.py:2563: - yacc.py:2565: (42) cases_list -> error . cases_list - yacc.py:2565: (43) cases_list -> error . semi - yacc.py:2565: (40) cases_list -> . casep semi - yacc.py:2565: (41) cases_list -> . casep semi cases_list - yacc.py:2565: (42) cases_list -> . error cases_list - yacc.py:2565: (43) cases_list -> . error semi - yacc.py:2565: (44) casep -> . id colon type rarrow expr - yacc.py:2566: - yacc.py:2687: semi shift and go to state 217 - yacc.py:2687: error shift and go to state 201 - yacc.py:2687: id shift and go to state 202 - yacc.py:2689: - yacc.py:2714: cases_list shift and go to state 216 - yacc.py:2714: casep shift and go to state 200 - yacc.py:2561: - yacc.py:2562:state 202 - yacc.py:2563: - yacc.py:2565: (44) casep -> id . colon type rarrow expr - yacc.py:2566: - yacc.py:2687: colon shift and go to state 218 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 203 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr then expr . else expr fi - yacc.py:2566: - yacc.py:2687: else shift and go to state 219 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 204 - yacc.py:2563: - yacc.py:2565: (73) factor -> while expr loop expr . pool - yacc.py:2566: - yacc.py:2687: pool shift and go to state 220 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 205 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur expr . ccur - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 221 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 206 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur expr . ccur - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 222 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 207 - yacc.py:2563: - yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur error . ccur - yacc.py:2565: (61) base_call -> error . arroba type dot func_call - yacc.py:2565: (78) atom -> error . block ccur - yacc.py:2565: (90) func_call -> error . opar args cpar - yacc.py:2565: (84) block -> . expr semi - yacc.py:2565: (85) block -> . expr semi block - yacc.py:2565: (86) block -> . error block - yacc.py:2565: (87) block -> . error semi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 223 - yacc.py:2687: arroba shift and go to state 108 - yacc.py:2687: opar shift and go to state 110 - yacc.py:2687: error shift and go to state 107 - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: block shift and go to state 109 - yacc.py:2714: expr shift and go to state 111 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 208 - yacc.py:2563: - yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur expr . ccur - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 224 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 209 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur expr . ccur - yacc.py:2566: - yacc.py:2687: ccur shift and go to state 225 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 210 - yacc.py:2563: - yacc.py:2565: (61) base_call -> error arroba type dot func_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: div reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: plus reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: minus reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: less reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: lesseq reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: equal reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: semi reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: cpar reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: arroba reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: dot reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: of reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: then reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: loop reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: comma reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: in reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: else reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: pool reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: ccur reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2687: fi reduce using rule 61 (base_call -> error arroba type dot func_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 211 - yacc.py:2563: - yacc.py:2565: (94) arg_list -> expr comma arg_list . - yacc.py:2566: - yacc.py:2687: cpar reduce using rule 94 (arg_list -> expr comma arg_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 212 - yacc.py:2563: - yacc.py:2565: (59) base_call -> factor arroba type dot func_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: div reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: plus reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: minus reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: less reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: lesseq reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: equal reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: semi reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: cpar reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: arroba reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: dot reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: of reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: then reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: loop reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: comma reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: in reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: else reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: pool reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: ccur reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2687: fi reduce using rule 59 (base_call -> factor arroba type dot func_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 213 - yacc.py:2563: - yacc.py:2565: (62) base_call -> factor arroba error dot func_call . - yacc.py:2566: - yacc.py:2687: star reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: div reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: plus reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: minus reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: less reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: lesseq reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: equal reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: semi reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: cpar reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: arroba reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: dot reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: of reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: then reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: loop reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: comma reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: in reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: else reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: pool reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: ccur reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2687: fi reduce using rule 62 (base_call -> factor arroba error dot func_call .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 214 - yacc.py:2563: - yacc.py:2565: (71) factor -> case expr of cases_list esac . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: dot reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: star reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: div reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: plus reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: minus reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: less reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: lesseq reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: equal reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: semi reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: cpar reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: of reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: then reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: loop reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: comma reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: in reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: else reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: pool reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: ccur reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2687: fi reduce using rule 71 (factor -> case expr of cases_list esac .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 215 - yacc.py:2563: - yacc.py:2565: (40) cases_list -> casep semi . - yacc.py:2565: (41) cases_list -> casep semi . cases_list - yacc.py:2565: (40) cases_list -> . casep semi - yacc.py:2565: (41) cases_list -> . casep semi cases_list - yacc.py:2565: (42) cases_list -> . error cases_list - yacc.py:2565: (43) cases_list -> . error semi - yacc.py:2565: (44) casep -> . id colon type rarrow expr - yacc.py:2566: - yacc.py:2687: esac reduce using rule 40 (cases_list -> casep semi .) - yacc.py:2687: error shift and go to state 201 - yacc.py:2687: id shift and go to state 202 - yacc.py:2689: - yacc.py:2714: casep shift and go to state 200 - yacc.py:2714: cases_list shift and go to state 226 - yacc.py:2561: - yacc.py:2562:state 216 - yacc.py:2563: - yacc.py:2565: (42) cases_list -> error cases_list . - yacc.py:2566: - yacc.py:2687: esac reduce using rule 42 (cases_list -> error cases_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 217 - yacc.py:2563: - yacc.py:2565: (43) cases_list -> error semi . - yacc.py:2566: - yacc.py:2687: esac reduce using rule 43 (cases_list -> error semi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 218 - yacc.py:2563: - yacc.py:2565: (44) casep -> id colon . type rarrow expr - yacc.py:2566: - yacc.py:2687: type shift and go to state 227 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 219 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr then expr else . expr fi - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 228 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 220 - yacc.py:2563: - yacc.py:2565: (73) factor -> while expr loop expr pool . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: dot reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: star reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: div reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: plus reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: minus reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: less reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: lesseq reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: equal reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: semi reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: cpar reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: of reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: then reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: loop reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: comma reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: in reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: else reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: pool reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: ccur reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2687: fi reduce using rule 73 (factor -> while expr loop expr pool .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 221 - yacc.py:2563: - yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur expr ccur . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 26 (def_func -> error opar formals cpar colon type ocur expr ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 222 - yacc.py:2563: - yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur expr ccur . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 25 (def_func -> id opar formals cpar colon type ocur expr ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 223 - yacc.py:2563: - yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur error ccur . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 29 (def_func -> id opar formals cpar colon type ocur error ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 224 - yacc.py:2563: - yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur expr ccur . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 28 (def_func -> id opar formals cpar colon error ocur expr ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 225 - yacc.py:2563: - yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur expr ccur . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 27 (def_func -> id opar error cpar colon type ocur expr ccur .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 226 - yacc.py:2563: - yacc.py:2565: (41) cases_list -> casep semi cases_list . - yacc.py:2566: - yacc.py:2687: esac reduce using rule 41 (cases_list -> casep semi cases_list .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 227 - yacc.py:2563: - yacc.py:2565: (44) casep -> id colon type . rarrow expr - yacc.py:2566: - yacc.py:2687: rarrow shift and go to state 229 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 228 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr then expr else expr . fi - yacc.py:2566: - yacc.py:2687: fi shift and go to state 230 - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 229 - yacc.py:2563: - yacc.py:2565: (44) casep -> id colon type rarrow . expr - yacc.py:2565: (45) expr -> . id larrow expr - yacc.py:2565: (46) expr -> . comp - yacc.py:2565: (47) comp -> . comp less op - yacc.py:2565: (48) comp -> . comp lesseq op - yacc.py:2565: (49) comp -> . comp equal op - yacc.py:2565: (50) comp -> . op - yacc.py:2565: (51) op -> . op plus term - yacc.py:2565: (52) op -> . op minus term - yacc.py:2565: (53) op -> . term - yacc.py:2565: (54) term -> . term star base_call - yacc.py:2565: (55) term -> . term div base_call - yacc.py:2565: (56) term -> . base_call - yacc.py:2565: (57) term -> . term star error - yacc.py:2565: (58) term -> . term div error - yacc.py:2565: (59) base_call -> . factor arroba type dot func_call - yacc.py:2565: (60) base_call -> . factor - yacc.py:2565: (61) base_call -> . error arroba type dot func_call - yacc.py:2565: (62) base_call -> . factor arroba error dot func_call - yacc.py:2565: (63) factor -> . atom - yacc.py:2565: (64) factor -> . opar expr cpar - yacc.py:2565: (65) factor -> . factor dot func_call - yacc.py:2565: (66) factor -> . not expr - yacc.py:2565: (67) factor -> . func_call - yacc.py:2565: (68) factor -> . isvoid base_call - yacc.py:2565: (69) factor -> . nox base_call - yacc.py:2565: (70) factor -> . let let_list in expr - yacc.py:2565: (71) factor -> . case expr of cases_list esac - yacc.py:2565: (72) factor -> . if expr then expr else expr fi - yacc.py:2565: (73) factor -> . while expr loop expr pool - yacc.py:2565: (74) atom -> . num - yacc.py:2565: (75) atom -> . id - yacc.py:2565: (76) atom -> . new type - yacc.py:2565: (77) atom -> . ocur block ccur - yacc.py:2565: (78) atom -> . error block ccur - yacc.py:2565: (79) atom -> . ocur error ccur - yacc.py:2565: (80) atom -> . ocur block error - yacc.py:2565: (81) atom -> . true - yacc.py:2565: (82) atom -> . false - yacc.py:2565: (83) atom -> . string - yacc.py:2565: (88) func_call -> . id opar args cpar - yacc.py:2565: (89) func_call -> . id opar error cpar - yacc.py:2565: (90) func_call -> . error opar args cpar - yacc.py:2566: - yacc.py:2687: id shift and go to state 72 - yacc.py:2687: error shift and go to state 70 - yacc.py:2687: opar shift and go to state 80 - yacc.py:2687: not shift and go to state 81 - yacc.py:2687: isvoid shift and go to state 82 - yacc.py:2687: nox shift and go to state 83 - yacc.py:2687: let shift and go to state 84 - yacc.py:2687: case shift and go to state 85 - yacc.py:2687: if shift and go to state 86 - yacc.py:2687: while shift and go to state 87 - yacc.py:2687: num shift and go to state 88 - yacc.py:2687: new shift and go to state 89 - yacc.py:2687: ocur shift and go to state 90 - yacc.py:2687: true shift and go to state 91 - yacc.py:2687: false shift and go to state 92 - yacc.py:2687: string shift and go to state 93 - yacc.py:2689: - yacc.py:2714: expr shift and go to state 231 - yacc.py:2714: comp shift and go to state 73 - yacc.py:2714: op shift and go to state 74 - yacc.py:2714: term shift and go to state 75 - yacc.py:2714: base_call shift and go to state 76 - yacc.py:2714: factor shift and go to state 77 - yacc.py:2714: func_call shift and go to state 78 - yacc.py:2714: atom shift and go to state 79 - yacc.py:2561: - yacc.py:2562:state 230 - yacc.py:2563: - yacc.py:2565: (72) factor -> if expr then expr else expr fi . - yacc.py:2566: - yacc.py:2687: arroba reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: dot reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: star reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: div reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: plus reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: minus reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: less reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: lesseq reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: equal reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: semi reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: cpar reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: of reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: then reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: loop reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: comma reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: in reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: else reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: pool reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: ccur reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2687: fi reduce using rule 72 (factor -> if expr then expr else expr fi .) - yacc.py:2689: - yacc.py:2561: - yacc.py:2562:state 231 - yacc.py:2563: - yacc.py:2565: (44) casep -> id colon type rarrow expr . - yacc.py:2566: - yacc.py:2687: semi reduce using rule 44 (casep -> id colon type rarrow expr .) - yacc.py:2689: yacc.py:3447:24 shift/reduce conflicts - yacc.py:3457: - yacc.py:3458:Conflicts: - yacc.py:3459: - yacc.py:3462:shift/reduce conflict for less in state 73 resolved as shift - yacc.py:3462:shift/reduce conflict for lesseq in state 73 resolved as shift - yacc.py:3462:shift/reduce conflict for equal in state 73 resolved as shift - yacc.py:3462:shift/reduce conflict for plus in state 74 resolved as shift - yacc.py:3462:shift/reduce conflict for minus in state 74 resolved as shift - yacc.py:3462:shift/reduce conflict for star in state 75 resolved as shift - yacc.py:3462:shift/reduce conflict for div in state 75 resolved as shift - yacc.py:3462:shift/reduce conflict for arroba in state 77 resolved as shift - yacc.py:3462:shift/reduce conflict for dot in state 77 resolved as shift - yacc.py:3462:shift/reduce conflict for ccur in state 141 resolved as shift - yacc.py:3462:shift/reduce conflict for cpar in state 147 resolved as shift - yacc.py:3462:shift/reduce conflict for error in state 151 resolved as shift - yacc.py:3462:shift/reduce conflict for plus in state 156 resolved as shift - yacc.py:3462:shift/reduce conflict for minus in state 156 resolved as shift - yacc.py:3462:shift/reduce conflict for plus in state 157 resolved as shift - yacc.py:3462:shift/reduce conflict for minus in state 157 resolved as shift - yacc.py:3462:shift/reduce conflict for plus in state 158 resolved as shift - yacc.py:3462:shift/reduce conflict for minus in state 158 resolved as shift - yacc.py:3462:shift/reduce conflict for star in state 159 resolved as shift - yacc.py:3462:shift/reduce conflict for div in state 159 resolved as shift - yacc.py:3462:shift/reduce conflict for star in state 160 resolved as shift - yacc.py:3462:shift/reduce conflict for div in state 160 resolved as shift - yacc.py:3462:shift/reduce conflict for arroba in state 162 resolved as shift - yacc.py:3462:shift/reduce conflict for arroba in state 164 resolved as shift yacc.py:3488:Couldn't create 'cool.parser.parsetab'. [Errno 2] No such file or directory: 'parser/output/parsetab.py' yacc.py: 362:PLY: PARSE DEBUG START yacc.py: 410: @@ -6153,13 +33,13 @@ yacc.py: 430:Defaulted state 45: Reduce using 34 yacc.py: 434:Stack : class type ocur id opar epsilon . LexToken(cpar,')',4,71) yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 yacc.py: 434:Stack : class type ocur id opar param_list_empty . LexToken(cpar,')',4,71) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : class type ocur id opar formals . LexToken(cpar,')',4,71) @@ -6192,37 +72,37 @@ yacc.py: 411:State : 134 yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar new type . LexToken(cpar,')',5,101) yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','Alpha'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 123 - yacc.py: 506:Result : ( comp] with [] and goto state 123 + yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 - yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 149 yacc.py: 430:Defaulted state 149: Reduce using 92 yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar arg_list_empty . LexToken(cpar,')',5,109) yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 153 yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args . LexToken(cpar,')',5,109) @@ -6269,37 +149,37 @@ yacc.py: 411:State : 191 yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args cpar . LexToken(ccur,'}',6,115) yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['print','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'print',5,103), [])) + yacc.py: 506:Result : ((LexToken(id,'print',5,103), [])) yacc.py: 410: yacc.py: 411:State : 167 yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot func_call . LexToken(ccur,'}',6,115) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','Object','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','Object','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 48 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 48 yacc.py: 430:Defaulted state 48: Reduce using 16 yacc.py: 434:Stack : class type ocur def_func semi feature_list . LexToken(ccur,'}',7,118) - yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 14 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',[]] and goto state 14 + yacc.py: 506:Result : ([ class type ocur feature_list ccur semi] with ['class','Main','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( class type ocur feature_list ccur semi] with ['class','Main','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( id colon type] with ['test1',':','Object'] and goto state 17 - yacc.py: 506:Result : ( ( epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar param_list_empty . LexToken(cpar,')',12,172) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals . LexToken(cpar,')',12,172) @@ -6426,27 +306,27 @@ yacc.py: 411:State : 88 yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',13,191) yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing1','(',[],')',':','Int','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing1','(',[],')',':','Int','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( num] with [1.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test2',':','Int','<-',] and goto state 17 - yacc.py: 506:Result : ( id colon type larrow expr] with ['test2',':','Int','<-',] and goto state 17 + yacc.py: 506:Result : ( string] with ['1'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test3',':','String','<-',] and goto state 17 - yacc.py: 506:Result : ( id colon type larrow expr] with ['test3',':','String','<-',] and goto state 17 + yacc.py: 506:Result : ( id colon type] with ['a',':','Alpha'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'a',20,265), LexToken(type, ...) + yacc.py: 506:Result : ((LexToken(id,'a',20,265), LexToken(type, ...) yacc.py: 410: yacc.py: 411:State : 44 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param . LexToken(comma,',',20,273) @@ -6679,24 +559,24 @@ yacc.py: 411:State : 96 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id colon type . LexToken(cpar,')',20,281) yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['b',':','Int'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'b',20,275), LexToken(type, ...) + yacc.py: 506:Result : ((LexToken(id,'b',20,275), LexToken(type, ...) yacc.py: 410: yacc.py: 411:State : 44 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param . LexToken(cpar,')',20,281) - yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 - yacc.py: 506:Result : ([(LexToken(id,'b',20,275), LexToken(type ...) + yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 + yacc.py: 506:Result : ([(LexToken(id,'b',20,275), LexToken(type ...) yacc.py: 410: yacc.py: 411:State : 95 yacc.py: 430:Defaulted state 95: Reduce using 33 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param_list . LexToken(cpar,')',20,281) - yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 - yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) + yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 + yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) yacc.py: 410: yacc.py: 411:State : 42 yacc.py: 430:Defaulted state 42: Reduce using 30 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param_list . LexToken(cpar,')',20,281) - yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 - yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) + yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 + yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals . LexToken(cpar,')',20,281) @@ -6721,27 +601,27 @@ yacc.py: 411:State : 88 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',21,300) yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing2','(',,')',':','Int','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing2','(',,')',':','Int','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar param_list_empty . LexToken(cpar,')',24,325) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals . LexToken(cpar,')',24,325) @@ -6848,37 +728,37 @@ yacc.py: 411:State : 93 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur string . LexToken(ccur,'}',26,357) yacc.py: 469:Action : Reduce rule [atom -> string] with ['2 + 2'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing3','(',[],')',':','String','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing3','(',[],')',':','String','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',28,374) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals . LexToken(cpar,')',28,374) diff --git a/src/cool/semantic/typeChecker.py b/src/cool/semantic/typeChecker.py new file mode 100644 index 000000000..d7185786a --- /dev/null +++ b/src/cool/semantic/typeChecker.py @@ -0,0 +1,104 @@ +from .helpers import * +from .types import * +from ..utils import * + + +class TypeChecker: + def __int__(self, context: Context, errors=[]): + self.context: Context = context + self.current_type: Type = None + self.current_method: Method = None + self.errors = errors + self.current_index = None + + @visitor.on('node') + def visit(self, node, scope): + pass + + @visitor.when(ProgramNode) + def visit(self, node: ProgramNode, scope: Scope): + for d, new_scope in zip(node.declarations, scope.children): + self.visit(d, new_scope) + + @visitor.when(ClassDeclarationNode) + def visit(self, node: ClassDeclarationNode, scope: Scope): + self.current_type = self.context.get_type(node.id, node.pos) + + for f in node.features: + if isinstance(f, AttrDeclarationNode): + self.visit(f, scope) + + for f, child_scope in zip([ft for ft in node.features if isinstance(ft, FuncDeclarationNode)], + scope.functions.values()): + self.visit(f, child_scope) + + @visitor.when(AttrDeclarationNode) + def visit(self, node: AttrDeclarationNode, scope: Scope): + attr = self.current_type.get_attribute(node.id, node.pos) + attr_type = get_type(attr.type, self.current_type) + + self.current_index = attr.index + _type = self.visit(node.expr, scope) + self.current_index = None + + if not _type.conforms_to(attr_type): + error_text = TypesError.ATTR_TYPE_ERROR % (_type.name, attr.name, attr_type.name) + self.errors.append(TypesError(error_text, *node.pos)) + return ErrorType() + + return _type + + @visitor.when(FuncDeclarationNode) + def visit(self, node: FuncDeclarationNode, scope: Scope): + parent = self.current_type.parent + + self.current_method = c_m = self.current_type.get_method(node.id, node.pos) + + if parent is not None: + try: + old_meth = parent.get_method(node.id, node.pos) + if old_meth.return_type.name != c_m.return_type.name: + error_text = SemanticError.WRONG_SIGNATURE_RETURN % ( + node.id, c_m.return_type.name, old_meth.return_type.name) + self.errors.append(SemanticError(error_text, *node.type_pos)) + if len(c_m.param_names) != len(old_meth.param_names): + error_text = SemanticError.WRONG_NUMBER_PARAM % node.id + self.errors.append(SemanticError(error_text, *node.pos)) + for (name, param), type1, type2 in zip(node.params, c_m.param_types, old_meth.param_types): + if type1.name != type2.name: + error_text = SemanticError.WRONG_SIGNATURE_PARAMETER % (name, type1.name, type2.name) + self.errors.append(SemanticError(error_text, *param.pos)) + except SemanticError: + pass + + ans = self.visit(node.body, node.pos) + return_type = get_type(c_m.return_type, self.current_type) + + if not ans.conforms_to(return_type): + error_text = TypesError.RETURN_TYPE_ERROR % (ans.name, return_type.name) + self.errors.append(TypesError(error_text, *node.type_pos)) + + @visitor.when(VarDeclarationNode) + def visit(self, node: VarDeclarationNode, scope: Scope): + _type = get_type(self.context.get_type(node.type, node.pos), self.current_type) + + if node.expr is not None: + _n_type = self.visit(node.expr, scope) + if not _n_type.conforms_to(_type): + error_text = TypesError.UNCONFORMS_TYPE % (_type.name, node.id, _type.name) + self.errors.append(TypesError(error_text, *node.type_pos)) + return _n_type + + return _type + + @visitor.when(AssignNode) + def visit(self, node: AssignNode, scope: Scope): + _info = self.find_variable(scope, node.id) + _type = get_type(_info.type, self.current_type) + + n_type = self.visit(node.expr, scope) + + if not n_type.conforms_to(_type): + error_text = TypesError.UNCONFORMS_TYPE % (n_type.name, node.id, _type.name) + self.errors.append(TypesError(error_text, *node.pos)) + return n_type diff --git a/src/cool/utils/__init__.py b/src/cool/utils/__init__.py index 8f02134fb..b408ee7f1 100644 --- a/src/cool/utils/__init__.py +++ b/src/cool/utils/__init__.py @@ -2,3 +2,4 @@ from .tokens import * from .visitor import * from .errors import * +from .helpers import * diff --git a/src/cool/utils/__main__.py b/src/cool/utils/__main__.py new file mode 100644 index 000000000..679ee2be2 --- /dev/null +++ b/src/cool/utils/__main__.py @@ -0,0 +1,6 @@ +from .ast import * +from .errors import * +from .helpers import * +from .logger import * +from .tokens import * +from .visitor import * diff --git a/src/cool/utils/helpers.py b/src/cool/utils/helpers.py index 2bd692b0d..e7531933f 100644 --- a/src/cool/utils/helpers.py +++ b/src/cool/utils/helpers.py @@ -1,6 +1,11 @@ import itertools +from semantic.types import Type, SelfType def find_column(lexer, token): line_start = lexer.lexdata.rfind('\n', 0, token.lexpos) return token.lexpos - line_start + + +def get_type(typex: Type, current_type: Type) -> Type: + return current_type if typex == SelfType() else typex From 50fc21c5e2646a9def9b996a940a49a8b29c3e27 Mon Sep 17 00:00:00 2001 From: JCH97 Date: Sun, 31 Oct 2021 17:32:45 -0400 Subject: [PATCH 29/44] fix(semantic): set right imports --- src/cool/__init__.py | 2 + src/cool/parser/output/parselog.txt | 6416 ++++++++++++++++++++++++++- src/cool/utils/helpers.py | 2 +- 3 files changed, 6271 insertions(+), 149 deletions(-) diff --git a/src/cool/__init__.py b/src/cool/__init__.py index 121babf04..d1f3e8e44 100644 --- a/src/cool/__init__.py +++ b/src/cool/__init__.py @@ -1,2 +1,4 @@ from .utils import * from .lexer import * +from .semantic import * +from .parser import * diff --git a/src/cool/parser/output/parselog.txt b/src/cool/parser/output/parselog.txt index 4bae5cbbe..3c686f1cc 100644 --- a/src/cool/parser/output/parselog.txt +++ b/src/cool/parser/output/parselog.txt @@ -1,6 +1,6126 @@ - yacc.py:3312:Couldn't open 'parser.out'. [Errno 2] No such file or directory: 'parser/output/parser.out' + yacc.py:3317:Created by PLY version 3.11 (http://www.dabeaz.com/ply) + yacc.py:3377: + yacc.py:3378:Grammar + yacc.py:3379: + yacc.py:3381:Rule 0 S' -> program + yacc.py:3381:Rule 1 program -> class_list + yacc.py:3381:Rule 2 class_list -> def_class class_list + yacc.py:3381:Rule 3 class_list -> def_class + yacc.py:3381:Rule 4 class_list -> error class_list + yacc.py:3381:Rule 5 epsilon -> + yacc.py:3381:Rule 6 def_class -> class type ocur feature_list ccur semi + yacc.py:3381:Rule 7 def_class -> class type inherits type ocur feature_list ccur semi + yacc.py:3381:Rule 8 def_class -> class error ocur feature_list ccur semi + yacc.py:3381:Rule 9 def_class -> class type ocur feature_list ccur error + yacc.py:3381:Rule 10 def_class -> class error inherits type ocur feature_list ccur semi + yacc.py:3381:Rule 11 def_class -> class error inherits error ocur feature_list ccur semi + yacc.py:3381:Rule 12 def_class -> class type inherits error ocur feature_list ccur semi + yacc.py:3381:Rule 13 def_class -> class type inherits type ocur feature_list ccur error + yacc.py:3381:Rule 14 feature_list -> epsilon + yacc.py:3381:Rule 15 feature_list -> def_attr semi feature_list + yacc.py:3381:Rule 16 feature_list -> def_func semi feature_list + yacc.py:3381:Rule 17 feature_list -> error feature_list + yacc.py:3381:Rule 18 def_attr -> id colon type + yacc.py:3381:Rule 19 def_attr -> id colon type larrow expr + yacc.py:3381:Rule 20 def_attr -> error colon type + yacc.py:3381:Rule 21 def_attr -> id colon error + yacc.py:3381:Rule 22 def_attr -> error colon type larrow expr + yacc.py:3381:Rule 23 def_attr -> id colon error larrow expr + yacc.py:3381:Rule 24 def_attr -> id colon type larrow error + yacc.py:3381:Rule 25 def_func -> id opar formals cpar colon type ocur expr ccur + yacc.py:3381:Rule 26 def_func -> error opar formals cpar colon type ocur expr ccur + yacc.py:3381:Rule 27 def_func -> id opar error cpar colon type ocur expr ccur + yacc.py:3381:Rule 28 def_func -> id opar formals cpar colon error ocur expr ccur + yacc.py:3381:Rule 29 def_func -> id opar formals cpar colon type ocur error ccur + yacc.py:3381:Rule 30 formals -> param_list + yacc.py:3381:Rule 31 formals -> param_list_empty + yacc.py:3381:Rule 32 param_list -> param + yacc.py:3381:Rule 33 param_list -> param comma param_list + yacc.py:3381:Rule 34 param_list_empty -> epsilon + yacc.py:3381:Rule 35 param -> id colon type + yacc.py:3381:Rule 36 let_list -> let_assign + yacc.py:3381:Rule 37 let_list -> let_assign comma let_list + yacc.py:3381:Rule 38 let_assign -> param larrow expr + yacc.py:3381:Rule 39 let_assign -> param + yacc.py:3381:Rule 40 cases_list -> casep semi + yacc.py:3381:Rule 41 cases_list -> casep semi cases_list + yacc.py:3381:Rule 42 cases_list -> error cases_list + yacc.py:3381:Rule 43 cases_list -> error semi + yacc.py:3381:Rule 44 casep -> id colon type rarrow expr + yacc.py:3381:Rule 45 expr -> id larrow expr + yacc.py:3381:Rule 46 expr -> comp + yacc.py:3381:Rule 47 comp -> comp less op + yacc.py:3381:Rule 48 comp -> comp lesseq op + yacc.py:3381:Rule 49 comp -> comp equal op + yacc.py:3381:Rule 50 comp -> op + yacc.py:3381:Rule 51 op -> op plus term + yacc.py:3381:Rule 52 op -> op minus term + yacc.py:3381:Rule 53 op -> term + yacc.py:3381:Rule 54 term -> term star base_call + yacc.py:3381:Rule 55 term -> term div base_call + yacc.py:3381:Rule 56 term -> base_call + yacc.py:3381:Rule 57 term -> term star error + yacc.py:3381:Rule 58 term -> term div error + yacc.py:3381:Rule 59 base_call -> factor arroba type dot func_call + yacc.py:3381:Rule 60 base_call -> factor + yacc.py:3381:Rule 61 base_call -> error arroba type dot func_call + yacc.py:3381:Rule 62 base_call -> factor arroba error dot func_call + yacc.py:3381:Rule 63 factor -> atom + yacc.py:3381:Rule 64 factor -> opar expr cpar + yacc.py:3381:Rule 65 factor -> factor dot func_call + yacc.py:3381:Rule 66 factor -> not expr + yacc.py:3381:Rule 67 factor -> func_call + yacc.py:3381:Rule 68 factor -> isvoid base_call + yacc.py:3381:Rule 69 factor -> nox base_call + yacc.py:3381:Rule 70 factor -> let let_list in expr + yacc.py:3381:Rule 71 factor -> case expr of cases_list esac + yacc.py:3381:Rule 72 factor -> if expr then expr else expr fi + yacc.py:3381:Rule 73 factor -> while expr loop expr pool + yacc.py:3381:Rule 74 atom -> num + yacc.py:3381:Rule 75 atom -> id + yacc.py:3381:Rule 76 atom -> new type + yacc.py:3381:Rule 77 atom -> ocur block ccur + yacc.py:3381:Rule 78 atom -> error block ccur + yacc.py:3381:Rule 79 atom -> ocur error ccur + yacc.py:3381:Rule 80 atom -> ocur block error + yacc.py:3381:Rule 81 atom -> true + yacc.py:3381:Rule 82 atom -> false + yacc.py:3381:Rule 83 atom -> string + yacc.py:3381:Rule 84 block -> expr semi + yacc.py:3381:Rule 85 block -> expr semi block + yacc.py:3381:Rule 86 block -> error block + yacc.py:3381:Rule 87 block -> error semi + yacc.py:3381:Rule 88 func_call -> id opar args cpar + yacc.py:3381:Rule 89 func_call -> id opar error cpar + yacc.py:3381:Rule 90 func_call -> error opar args cpar + yacc.py:3381:Rule 91 args -> arg_list + yacc.py:3381:Rule 92 args -> arg_list_empty + yacc.py:3381:Rule 93 arg_list -> expr + yacc.py:3381:Rule 94 arg_list -> expr comma arg_list + yacc.py:3381:Rule 95 arg_list -> error arg_list + yacc.py:3381:Rule 96 arg_list_empty -> epsilon + yacc.py:3399: + yacc.py:3400:Terminals, with rules where they appear + yacc.py:3401: + yacc.py:3405:arroba : 59 61 62 + yacc.py:3405:case : 71 + yacc.py:3405:ccur : 6 7 8 9 10 11 12 13 25 26 27 28 29 77 78 79 + yacc.py:3405:class : 6 7 8 9 10 11 12 13 + yacc.py:3405:colon : 18 19 20 21 22 23 24 25 26 27 28 29 35 44 + yacc.py:3405:comma : 33 37 94 + yacc.py:3405:cpar : 25 26 27 28 29 64 88 89 90 + yacc.py:3405:div : 55 58 + yacc.py:3405:dot : 59 61 62 65 + yacc.py:3405:else : 72 + yacc.py:3405:equal : 49 + yacc.py:3405:error : 4 8 9 10 11 11 12 13 17 20 21 22 23 24 26 27 28 29 42 43 57 58 61 62 78 79 80 86 87 89 90 95 + yacc.py:3405:esac : 71 + yacc.py:3405:false : 82 + yacc.py:3405:fi : 72 + yacc.py:3405:id : 18 19 21 23 24 25 27 28 29 35 44 45 75 88 89 + yacc.py:3405:if : 72 + yacc.py:3405:in : 70 + yacc.py:3405:inherits : 7 10 11 12 13 + yacc.py:3405:isvoid : 68 + yacc.py:3405:larrow : 19 22 23 24 38 45 + yacc.py:3405:less : 47 + yacc.py:3405:lesseq : 48 + yacc.py:3405:let : 70 + yacc.py:3405:loop : 73 + yacc.py:3405:minus : 52 + yacc.py:3405:new : 76 + yacc.py:3405:not : 66 + yacc.py:3405:nox : 69 + yacc.py:3405:num : 74 + yacc.py:3405:ocur : 6 7 8 9 10 11 12 13 25 26 27 28 29 77 79 80 + yacc.py:3405:of : 71 + yacc.py:3405:opar : 25 26 27 28 29 64 88 89 90 + yacc.py:3405:plus : 51 + yacc.py:3405:pool : 73 + yacc.py:3405:rarrow : 44 + yacc.py:3405:semi : 6 7 8 10 11 12 15 16 40 41 43 84 85 87 + yacc.py:3405:star : 54 57 + yacc.py:3405:string : 83 + yacc.py:3405:then : 72 + yacc.py:3405:true : 81 + yacc.py:3405:type : 6 7 7 9 10 12 13 13 18 19 20 22 24 25 26 27 29 35 44 59 61 76 + yacc.py:3405:while : 73 + yacc.py:3407: + yacc.py:3408:Nonterminals, with rules where they appear + yacc.py:3409: + yacc.py:3413:arg_list : 91 94 95 + yacc.py:3413:arg_list_empty : 92 + yacc.py:3413:args : 88 90 + yacc.py:3413:atom : 63 + yacc.py:3413:base_call : 54 55 56 68 69 + yacc.py:3413:block : 77 78 80 85 86 + yacc.py:3413:casep : 40 41 + yacc.py:3413:cases_list : 41 42 71 + yacc.py:3413:class_list : 1 2 4 + yacc.py:3413:comp : 46 47 48 49 + yacc.py:3413:def_attr : 15 + yacc.py:3413:def_class : 2 3 + yacc.py:3413:def_func : 16 + yacc.py:3413:epsilon : 14 34 96 + yacc.py:3413:expr : 19 22 23 25 26 27 28 38 44 45 64 66 70 71 72 72 72 73 73 84 85 93 94 + yacc.py:3413:factor : 59 60 62 65 + yacc.py:3413:feature_list : 6 7 8 9 10 11 12 13 15 16 17 + yacc.py:3413:formals : 25 26 28 29 + yacc.py:3413:func_call : 59 61 62 65 67 + yacc.py:3413:let_assign : 36 37 + yacc.py:3413:let_list : 37 70 + yacc.py:3413:op : 47 48 49 50 51 52 + yacc.py:3413:param : 32 33 38 39 + yacc.py:3413:param_list : 30 33 + yacc.py:3413:param_list_empty : 31 + yacc.py:3413:program : 0 + yacc.py:3413:term : 51 52 53 54 55 57 58 + yacc.py:3414: yacc.py:3436:Generating LALR tables + yacc.py:2543:Parsing method: LALR + yacc.py:2561: + yacc.py:2562:state 0 + yacc.py:2563: + yacc.py:2565: (0) S' -> . program + yacc.py:2565: (1) program -> . class_list + yacc.py:2565: (2) class_list -> . def_class class_list + yacc.py:2565: (3) class_list -> . def_class + yacc.py:2565: (4) class_list -> . error class_list + yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi + yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error + yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: error shift and go to state 4 + yacc.py:2687: class shift and go to state 5 + yacc.py:2689: + yacc.py:2714: program shift and go to state 1 + yacc.py:2714: class_list shift and go to state 2 + yacc.py:2714: def_class shift and go to state 3 + yacc.py:2561: + yacc.py:2562:state 1 + yacc.py:2563: + yacc.py:2565: (0) S' -> program . + yacc.py:2566: + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 2 + yacc.py:2563: + yacc.py:2565: (1) program -> class_list . + yacc.py:2566: + yacc.py:2687: $end reduce using rule 1 (program -> class_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 3 + yacc.py:2563: + yacc.py:2565: (2) class_list -> def_class . class_list + yacc.py:2565: (3) class_list -> def_class . + yacc.py:2565: (2) class_list -> . def_class class_list + yacc.py:2565: (3) class_list -> . def_class + yacc.py:2565: (4) class_list -> . error class_list + yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi + yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error + yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: $end reduce using rule 3 (class_list -> def_class .) + yacc.py:2687: error shift and go to state 4 + yacc.py:2687: class shift and go to state 5 + yacc.py:2689: + yacc.py:2714: def_class shift and go to state 3 + yacc.py:2714: class_list shift and go to state 6 + yacc.py:2561: + yacc.py:2562:state 4 + yacc.py:2563: + yacc.py:2565: (4) class_list -> error . class_list + yacc.py:2565: (2) class_list -> . def_class class_list + yacc.py:2565: (3) class_list -> . def_class + yacc.py:2565: (4) class_list -> . error class_list + yacc.py:2565: (6) def_class -> . class type ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> . class type inherits type ocur feature_list ccur semi + yacc.py:2565: (8) def_class -> . class error ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> . class type ocur feature_list ccur error + yacc.py:2565: (10) def_class -> . class error inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> . class error inherits error ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> . class type inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> . class type inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: error shift and go to state 4 + yacc.py:2687: class shift and go to state 5 + yacc.py:2689: + yacc.py:2714: class_list shift and go to state 7 + yacc.py:2714: def_class shift and go to state 3 + yacc.py:2561: + yacc.py:2562:state 5 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class . type ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> class . type inherits type ocur feature_list ccur semi + yacc.py:2565: (8) def_class -> class . error ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> class . type ocur feature_list ccur error + yacc.py:2565: (10) def_class -> class . error inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> class . error inherits error ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> class . type inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> class . type inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: type shift and go to state 8 + yacc.py:2687: error shift and go to state 9 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 6 + yacc.py:2563: + yacc.py:2565: (2) class_list -> def_class class_list . + yacc.py:2566: + yacc.py:2687: $end reduce using rule 2 (class_list -> def_class class_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 7 + yacc.py:2563: + yacc.py:2565: (4) class_list -> error class_list . + yacc.py:2566: + yacc.py:2687: $end reduce using rule 4 (class_list -> error class_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 8 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type . ocur feature_list ccur semi + yacc.py:2565: (7) def_class -> class type . inherits type ocur feature_list ccur semi + yacc.py:2565: (9) def_class -> class type . ocur feature_list ccur error + yacc.py:2565: (12) def_class -> class type . inherits error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> class type . inherits type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 10 + yacc.py:2687: inherits shift and go to state 11 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 9 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error . ocur feature_list ccur semi + yacc.py:2565: (10) def_class -> class error . inherits type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> class error . inherits error ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 12 + yacc.py:2687: inherits shift and go to state 13 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 10 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type ocur . feature_list ccur semi + yacc.py:2565: (9) def_class -> class type ocur . feature_list ccur error + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 14 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 11 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits . type ocur feature_list ccur semi + yacc.py:2565: (12) def_class -> class type inherits . error ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> class type inherits . type ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: type shift and go to state 20 + yacc.py:2687: error shift and go to state 21 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 12 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error ocur . feature_list ccur semi + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 22 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 13 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits . type ocur feature_list ccur semi + yacc.py:2565: (11) def_class -> class error inherits . error ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: type shift and go to state 24 + yacc.py:2687: error shift and go to state 23 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 14 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type ocur feature_list . ccur semi + yacc.py:2565: (9) def_class -> class type ocur feature_list . ccur error + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 25 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 15 + yacc.py:2563: + yacc.py:2565: (17) feature_list -> error . feature_list + yacc.py:2565: (20) def_attr -> error . colon type + yacc.py:2565: (22) def_attr -> error . colon type larrow expr + yacc.py:2565: (26) def_func -> error . opar formals cpar colon type ocur expr ccur + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 27 + yacc.py:2687: opar shift and go to state 28 + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 26 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 16 + yacc.py:2563: + yacc.py:2565: (14) feature_list -> epsilon . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 14 (feature_list -> epsilon .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 17 + yacc.py:2563: + yacc.py:2565: (15) feature_list -> def_attr . semi feature_list + yacc.py:2566: + yacc.py:2687: semi shift and go to state 29 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 18 + yacc.py:2563: + yacc.py:2565: (16) feature_list -> def_func . semi feature_list + yacc.py:2566: + yacc.py:2687: semi shift and go to state 30 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 19 + yacc.py:2563: + yacc.py:2565: (18) def_attr -> id . colon type + yacc.py:2565: (19) def_attr -> id . colon type larrow expr + yacc.py:2565: (21) def_attr -> id . colon error + yacc.py:2565: (23) def_attr -> id . colon error larrow expr + yacc.py:2565: (24) def_attr -> id . colon type larrow error + yacc.py:2565: (25) def_func -> id . opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> id . opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> id . opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> id . opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 31 + yacc.py:2687: opar shift and go to state 32 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 20 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type . ocur feature_list ccur semi + yacc.py:2565: (13) def_class -> class type inherits type . ocur feature_list ccur error + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 33 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 21 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error . ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 34 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 22 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error ocur feature_list . ccur semi + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 35 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 23 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error . ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 36 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 24 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type . ocur feature_list ccur semi + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 37 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 25 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type ocur feature_list ccur . semi + yacc.py:2565: (9) def_class -> class type ocur feature_list ccur . error + yacc.py:2566: + yacc.py:2687: semi shift and go to state 38 + yacc.py:2687: error shift and go to state 39 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 26 + yacc.py:2563: + yacc.py:2565: (17) feature_list -> error feature_list . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 17 (feature_list -> error feature_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 27 + yacc.py:2563: + yacc.py:2565: (20) def_attr -> error colon . type + yacc.py:2565: (22) def_attr -> error colon . type larrow expr + yacc.py:2566: + yacc.py:2687: type shift and go to state 40 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 28 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar . formals cpar colon type ocur expr ccur + yacc.py:2565: (30) formals -> . param_list + yacc.py:2565: (31) formals -> . param_list_empty + yacc.py:2565: (32) param_list -> . param + yacc.py:2565: (33) param_list -> . param comma param_list + yacc.py:2565: (34) param_list_empty -> . epsilon + yacc.py:2565: (35) param -> . id colon type + yacc.py:2565: (5) epsilon -> . + yacc.py:2566: + yacc.py:2687: id shift and go to state 46 + yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) + yacc.py:2689: + yacc.py:2714: formals shift and go to state 41 + yacc.py:2714: param_list shift and go to state 42 + yacc.py:2714: param_list_empty shift and go to state 43 + yacc.py:2714: param shift and go to state 44 + yacc.py:2714: epsilon shift and go to state 45 + yacc.py:2561: + yacc.py:2562:state 29 + yacc.py:2563: + yacc.py:2565: (15) feature_list -> def_attr semi . feature_list + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: feature_list shift and go to state 47 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 30 + yacc.py:2563: + yacc.py:2565: (16) feature_list -> def_func semi . feature_list + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2714: feature_list shift and go to state 48 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2561: + yacc.py:2562:state 31 + yacc.py:2563: + yacc.py:2565: (18) def_attr -> id colon . type + yacc.py:2565: (19) def_attr -> id colon . type larrow expr + yacc.py:2565: (21) def_attr -> id colon . error + yacc.py:2565: (23) def_attr -> id colon . error larrow expr + yacc.py:2565: (24) def_attr -> id colon . type larrow error + yacc.py:2566: + yacc.py:2687: type shift and go to state 49 + yacc.py:2687: error shift and go to state 50 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 32 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar . formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> id opar . error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> id opar . formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> id opar . formals cpar colon type ocur error ccur + yacc.py:2565: (30) formals -> . param_list + yacc.py:2565: (31) formals -> . param_list_empty + yacc.py:2565: (32) param_list -> . param + yacc.py:2565: (33) param_list -> . param comma param_list + yacc.py:2565: (34) param_list_empty -> . epsilon + yacc.py:2565: (35) param -> . id colon type + yacc.py:2565: (5) epsilon -> . + yacc.py:2566: + yacc.py:2687: error shift and go to state 52 + yacc.py:2687: id shift and go to state 46 + yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) + yacc.py:2689: + yacc.py:2714: formals shift and go to state 51 + yacc.py:2714: param_list shift and go to state 42 + yacc.py:2714: param_list_empty shift and go to state 43 + yacc.py:2714: param shift and go to state 44 + yacc.py:2714: epsilon shift and go to state 45 + yacc.py:2561: + yacc.py:2562:state 33 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type ocur . feature_list ccur semi + yacc.py:2565: (13) def_class -> class type inherits type ocur . feature_list ccur error + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 53 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 34 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error ocur . feature_list ccur semi + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 54 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 35 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error ocur feature_list ccur . semi + yacc.py:2566: + yacc.py:2687: semi shift and go to state 55 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 36 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error ocur . feature_list ccur semi + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 56 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 37 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type ocur . feature_list ccur semi + yacc.py:2565: (14) feature_list -> . epsilon + yacc.py:2565: (15) feature_list -> . def_attr semi feature_list + yacc.py:2565: (16) feature_list -> . def_func semi feature_list + yacc.py:2565: (17) feature_list -> . error feature_list + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (18) def_attr -> . id colon type + yacc.py:2565: (19) def_attr -> . id colon type larrow expr + yacc.py:2565: (20) def_attr -> . error colon type + yacc.py:2565: (21) def_attr -> . id colon error + yacc.py:2565: (22) def_attr -> . error colon type larrow expr + yacc.py:2565: (23) def_attr -> . id colon error larrow expr + yacc.py:2565: (24) def_attr -> . id colon type larrow error + yacc.py:2565: (25) def_func -> . id opar formals cpar colon type ocur expr ccur + yacc.py:2565: (26) def_func -> . error opar formals cpar colon type ocur expr ccur + yacc.py:2565: (27) def_func -> . id opar error cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> . id opar formals cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> . id opar formals cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: error shift and go to state 15 + yacc.py:2687: ccur reduce using rule 5 (epsilon -> .) + yacc.py:2687: id shift and go to state 19 + yacc.py:2689: + yacc.py:2714: feature_list shift and go to state 57 + yacc.py:2714: epsilon shift and go to state 16 + yacc.py:2714: def_attr shift and go to state 17 + yacc.py:2714: def_func shift and go to state 18 + yacc.py:2561: + yacc.py:2562:state 38 + yacc.py:2563: + yacc.py:2565: (6) def_class -> class type ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 6 (def_class -> class type ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 39 + yacc.py:2563: + yacc.py:2565: (9) def_class -> class type ocur feature_list ccur error . + yacc.py:2566: + yacc.py:2687: error reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) + yacc.py:2687: class reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) + yacc.py:2687: $end reduce using rule 9 (def_class -> class type ocur feature_list ccur error .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 40 + yacc.py:2563: + yacc.py:2565: (20) def_attr -> error colon type . + yacc.py:2565: (22) def_attr -> error colon type . larrow expr + yacc.py:2566: + yacc.py:2687: semi reduce using rule 20 (def_attr -> error colon type .) + yacc.py:2687: larrow shift and go to state 58 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 41 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals . cpar colon type ocur expr ccur + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 59 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 42 + yacc.py:2563: + yacc.py:2565: (30) formals -> param_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 30 (formals -> param_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 43 + yacc.py:2563: + yacc.py:2565: (31) formals -> param_list_empty . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 31 (formals -> param_list_empty .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 44 + yacc.py:2563: + yacc.py:2565: (32) param_list -> param . + yacc.py:2565: (33) param_list -> param . comma param_list + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 32 (param_list -> param .) + yacc.py:2687: comma shift and go to state 60 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 45 + yacc.py:2563: + yacc.py:2565: (34) param_list_empty -> epsilon . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 34 (param_list_empty -> epsilon .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 46 + yacc.py:2563: + yacc.py:2565: (35) param -> id . colon type + yacc.py:2566: + yacc.py:2687: colon shift and go to state 61 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 47 + yacc.py:2563: + yacc.py:2565: (15) feature_list -> def_attr semi feature_list . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 15 (feature_list -> def_attr semi feature_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 48 + yacc.py:2563: + yacc.py:2565: (16) feature_list -> def_func semi feature_list . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 16 (feature_list -> def_func semi feature_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 49 + yacc.py:2563: + yacc.py:2565: (18) def_attr -> id colon type . + yacc.py:2565: (19) def_attr -> id colon type . larrow expr + yacc.py:2565: (24) def_attr -> id colon type . larrow error + yacc.py:2566: + yacc.py:2687: semi reduce using rule 18 (def_attr -> id colon type .) + yacc.py:2687: larrow shift and go to state 62 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 50 + yacc.py:2563: + yacc.py:2565: (21) def_attr -> id colon error . + yacc.py:2565: (23) def_attr -> id colon error . larrow expr + yacc.py:2566: + yacc.py:2687: semi reduce using rule 21 (def_attr -> id colon error .) + yacc.py:2687: larrow shift and go to state 63 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 51 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals . cpar colon type ocur expr ccur + yacc.py:2565: (28) def_func -> id opar formals . cpar colon error ocur expr ccur + yacc.py:2565: (29) def_func -> id opar formals . cpar colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 64 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 52 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error . cpar colon type ocur expr ccur + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 65 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 53 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list . ccur semi + yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list . ccur error + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 66 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 54 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list . ccur semi + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 67 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 55 + yacc.py:2563: + yacc.py:2565: (8) def_class -> class error ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 8 (def_class -> class error ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 56 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list . ccur semi + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 68 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 57 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list . ccur semi + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 69 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 58 + yacc.py:2563: + yacc.py:2565: (22) def_attr -> error colon type larrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 71 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 59 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar . colon type ocur expr ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 94 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 60 + yacc.py:2563: + yacc.py:2565: (33) param_list -> param comma . param_list + yacc.py:2565: (32) param_list -> . param + yacc.py:2565: (33) param_list -> . param comma param_list + yacc.py:2565: (35) param -> . id colon type + yacc.py:2566: + yacc.py:2687: id shift and go to state 46 + yacc.py:2689: + yacc.py:2714: param shift and go to state 44 + yacc.py:2714: param_list shift and go to state 95 + yacc.py:2561: + yacc.py:2562:state 61 + yacc.py:2563: + yacc.py:2565: (35) param -> id colon . type + yacc.py:2566: + yacc.py:2687: type shift and go to state 96 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 62 + yacc.py:2563: + yacc.py:2565: (19) def_attr -> id colon type larrow . expr + yacc.py:2565: (24) def_attr -> id colon type larrow . error + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 98 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 97 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 63 + yacc.py:2563: + yacc.py:2565: (23) def_attr -> id colon error larrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 99 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 64 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar . colon type ocur expr ccur + yacc.py:2565: (28) def_func -> id opar formals cpar . colon error ocur expr ccur + yacc.py:2565: (29) def_func -> id opar formals cpar . colon type ocur error ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 100 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 65 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar . colon type ocur expr ccur + yacc.py:2566: + yacc.py:2687: colon shift and go to state 101 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 66 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list ccur . semi + yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list ccur . error + yacc.py:2566: + yacc.py:2687: semi shift and go to state 102 + yacc.py:2687: error shift and go to state 103 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 67 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list ccur . semi + yacc.py:2566: + yacc.py:2687: semi shift and go to state 104 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 68 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list ccur . semi + yacc.py:2566: + yacc.py:2687: semi shift and go to state 105 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 69 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list ccur . semi + yacc.py:2566: + yacc.py:2687: semi shift and go to state 106 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 70 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 71 + yacc.py:2563: + yacc.py:2565: (22) def_attr -> error colon type larrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 22 (def_attr -> error colon type larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 72 + yacc.py:2563: + yacc.py:2565: (45) expr -> id . larrow expr + yacc.py:2565: (75) atom -> id . + yacc.py:2565: (88) func_call -> id . opar args cpar + yacc.py:2565: (89) func_call -> id . opar error cpar + yacc.py:2566: + yacc.py:2687: larrow shift and go to state 112 + yacc.py:2687: arroba reduce using rule 75 (atom -> id .) + yacc.py:2687: dot reduce using rule 75 (atom -> id .) + yacc.py:2687: star reduce using rule 75 (atom -> id .) + yacc.py:2687: div reduce using rule 75 (atom -> id .) + yacc.py:2687: plus reduce using rule 75 (atom -> id .) + yacc.py:2687: minus reduce using rule 75 (atom -> id .) + yacc.py:2687: less reduce using rule 75 (atom -> id .) + yacc.py:2687: lesseq reduce using rule 75 (atom -> id .) + yacc.py:2687: equal reduce using rule 75 (atom -> id .) + yacc.py:2687: semi reduce using rule 75 (atom -> id .) + yacc.py:2687: cpar reduce using rule 75 (atom -> id .) + yacc.py:2687: of reduce using rule 75 (atom -> id .) + yacc.py:2687: then reduce using rule 75 (atom -> id .) + yacc.py:2687: loop reduce using rule 75 (atom -> id .) + yacc.py:2687: comma reduce using rule 75 (atom -> id .) + yacc.py:2687: in reduce using rule 75 (atom -> id .) + yacc.py:2687: else reduce using rule 75 (atom -> id .) + yacc.py:2687: pool reduce using rule 75 (atom -> id .) + yacc.py:2687: ccur reduce using rule 75 (atom -> id .) + yacc.py:2687: fi reduce using rule 75 (atom -> id .) + yacc.py:2687: opar shift and go to state 113 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 73 + yacc.py:2563: + yacc.py:2565: (46) expr -> comp . + yacc.py:2565: (47) comp -> comp . less op + yacc.py:2565: (48) comp -> comp . lesseq op + yacc.py:2565: (49) comp -> comp . equal op + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for less resolved as shift + yacc.py:2666: ! shift/reduce conflict for lesseq resolved as shift + yacc.py:2666: ! shift/reduce conflict for equal resolved as shift + yacc.py:2687: semi reduce using rule 46 (expr -> comp .) + yacc.py:2687: cpar reduce using rule 46 (expr -> comp .) + yacc.py:2687: arroba reduce using rule 46 (expr -> comp .) + yacc.py:2687: dot reduce using rule 46 (expr -> comp .) + yacc.py:2687: star reduce using rule 46 (expr -> comp .) + yacc.py:2687: div reduce using rule 46 (expr -> comp .) + yacc.py:2687: plus reduce using rule 46 (expr -> comp .) + yacc.py:2687: minus reduce using rule 46 (expr -> comp .) + yacc.py:2687: of reduce using rule 46 (expr -> comp .) + yacc.py:2687: then reduce using rule 46 (expr -> comp .) + yacc.py:2687: loop reduce using rule 46 (expr -> comp .) + yacc.py:2687: comma reduce using rule 46 (expr -> comp .) + yacc.py:2687: in reduce using rule 46 (expr -> comp .) + yacc.py:2687: else reduce using rule 46 (expr -> comp .) + yacc.py:2687: pool reduce using rule 46 (expr -> comp .) + yacc.py:2687: ccur reduce using rule 46 (expr -> comp .) + yacc.py:2687: fi reduce using rule 46 (expr -> comp .) + yacc.py:2687: less shift and go to state 114 + yacc.py:2687: lesseq shift and go to state 115 + yacc.py:2687: equal shift and go to state 116 + yacc.py:2689: + yacc.py:2696: ! less [ reduce using rule 46 (expr -> comp .) ] + yacc.py:2696: ! lesseq [ reduce using rule 46 (expr -> comp .) ] + yacc.py:2696: ! equal [ reduce using rule 46 (expr -> comp .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 74 + yacc.py:2563: + yacc.py:2565: (50) comp -> op . + yacc.py:2565: (51) op -> op . plus term + yacc.py:2565: (52) op -> op . minus term + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for plus resolved as shift + yacc.py:2666: ! shift/reduce conflict for minus resolved as shift + yacc.py:2687: less reduce using rule 50 (comp -> op .) + yacc.py:2687: lesseq reduce using rule 50 (comp -> op .) + yacc.py:2687: equal reduce using rule 50 (comp -> op .) + yacc.py:2687: semi reduce using rule 50 (comp -> op .) + yacc.py:2687: cpar reduce using rule 50 (comp -> op .) + yacc.py:2687: arroba reduce using rule 50 (comp -> op .) + yacc.py:2687: dot reduce using rule 50 (comp -> op .) + yacc.py:2687: star reduce using rule 50 (comp -> op .) + yacc.py:2687: div reduce using rule 50 (comp -> op .) + yacc.py:2687: of reduce using rule 50 (comp -> op .) + yacc.py:2687: then reduce using rule 50 (comp -> op .) + yacc.py:2687: loop reduce using rule 50 (comp -> op .) + yacc.py:2687: comma reduce using rule 50 (comp -> op .) + yacc.py:2687: in reduce using rule 50 (comp -> op .) + yacc.py:2687: else reduce using rule 50 (comp -> op .) + yacc.py:2687: pool reduce using rule 50 (comp -> op .) + yacc.py:2687: ccur reduce using rule 50 (comp -> op .) + yacc.py:2687: fi reduce using rule 50 (comp -> op .) + yacc.py:2687: plus shift and go to state 117 + yacc.py:2687: minus shift and go to state 118 + yacc.py:2689: + yacc.py:2696: ! plus [ reduce using rule 50 (comp -> op .) ] + yacc.py:2696: ! minus [ reduce using rule 50 (comp -> op .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 75 + yacc.py:2563: + yacc.py:2565: (53) op -> term . + yacc.py:2565: (54) term -> term . star base_call + yacc.py:2565: (55) term -> term . div base_call + yacc.py:2565: (57) term -> term . star error + yacc.py:2565: (58) term -> term . div error + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for star resolved as shift + yacc.py:2666: ! shift/reduce conflict for div resolved as shift + yacc.py:2687: plus reduce using rule 53 (op -> term .) + yacc.py:2687: minus reduce using rule 53 (op -> term .) + yacc.py:2687: less reduce using rule 53 (op -> term .) + yacc.py:2687: lesseq reduce using rule 53 (op -> term .) + yacc.py:2687: equal reduce using rule 53 (op -> term .) + yacc.py:2687: semi reduce using rule 53 (op -> term .) + yacc.py:2687: cpar reduce using rule 53 (op -> term .) + yacc.py:2687: arroba reduce using rule 53 (op -> term .) + yacc.py:2687: dot reduce using rule 53 (op -> term .) + yacc.py:2687: of reduce using rule 53 (op -> term .) + yacc.py:2687: then reduce using rule 53 (op -> term .) + yacc.py:2687: loop reduce using rule 53 (op -> term .) + yacc.py:2687: comma reduce using rule 53 (op -> term .) + yacc.py:2687: in reduce using rule 53 (op -> term .) + yacc.py:2687: else reduce using rule 53 (op -> term .) + yacc.py:2687: pool reduce using rule 53 (op -> term .) + yacc.py:2687: ccur reduce using rule 53 (op -> term .) + yacc.py:2687: fi reduce using rule 53 (op -> term .) + yacc.py:2687: star shift and go to state 119 + yacc.py:2687: div shift and go to state 120 + yacc.py:2689: + yacc.py:2696: ! star [ reduce using rule 53 (op -> term .) ] + yacc.py:2696: ! div [ reduce using rule 53 (op -> term .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 76 + yacc.py:2563: + yacc.py:2565: (56) term -> base_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 56 (term -> base_call .) + yacc.py:2687: div reduce using rule 56 (term -> base_call .) + yacc.py:2687: plus reduce using rule 56 (term -> base_call .) + yacc.py:2687: minus reduce using rule 56 (term -> base_call .) + yacc.py:2687: less reduce using rule 56 (term -> base_call .) + yacc.py:2687: lesseq reduce using rule 56 (term -> base_call .) + yacc.py:2687: equal reduce using rule 56 (term -> base_call .) + yacc.py:2687: semi reduce using rule 56 (term -> base_call .) + yacc.py:2687: cpar reduce using rule 56 (term -> base_call .) + yacc.py:2687: arroba reduce using rule 56 (term -> base_call .) + yacc.py:2687: dot reduce using rule 56 (term -> base_call .) + yacc.py:2687: of reduce using rule 56 (term -> base_call .) + yacc.py:2687: then reduce using rule 56 (term -> base_call .) + yacc.py:2687: loop reduce using rule 56 (term -> base_call .) + yacc.py:2687: comma reduce using rule 56 (term -> base_call .) + yacc.py:2687: in reduce using rule 56 (term -> base_call .) + yacc.py:2687: else reduce using rule 56 (term -> base_call .) + yacc.py:2687: pool reduce using rule 56 (term -> base_call .) + yacc.py:2687: ccur reduce using rule 56 (term -> base_call .) + yacc.py:2687: fi reduce using rule 56 (term -> base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 77 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor . arroba type dot func_call + yacc.py:2565: (60) base_call -> factor . + yacc.py:2565: (62) base_call -> factor . arroba error dot func_call + yacc.py:2565: (65) factor -> factor . dot func_call + yacc.py:2566: + yacc.py:2609: ! shift/reduce conflict for arroba resolved as shift + yacc.py:2666: ! shift/reduce conflict for dot resolved as shift + yacc.py:2687: arroba shift and go to state 121 + yacc.py:2687: star reduce using rule 60 (base_call -> factor .) + yacc.py:2687: div reduce using rule 60 (base_call -> factor .) + yacc.py:2687: plus reduce using rule 60 (base_call -> factor .) + yacc.py:2687: minus reduce using rule 60 (base_call -> factor .) + yacc.py:2687: less reduce using rule 60 (base_call -> factor .) + yacc.py:2687: lesseq reduce using rule 60 (base_call -> factor .) + yacc.py:2687: equal reduce using rule 60 (base_call -> factor .) + yacc.py:2687: semi reduce using rule 60 (base_call -> factor .) + yacc.py:2687: cpar reduce using rule 60 (base_call -> factor .) + yacc.py:2687: of reduce using rule 60 (base_call -> factor .) + yacc.py:2687: then reduce using rule 60 (base_call -> factor .) + yacc.py:2687: loop reduce using rule 60 (base_call -> factor .) + yacc.py:2687: comma reduce using rule 60 (base_call -> factor .) + yacc.py:2687: in reduce using rule 60 (base_call -> factor .) + yacc.py:2687: else reduce using rule 60 (base_call -> factor .) + yacc.py:2687: pool reduce using rule 60 (base_call -> factor .) + yacc.py:2687: ccur reduce using rule 60 (base_call -> factor .) + yacc.py:2687: fi reduce using rule 60 (base_call -> factor .) + yacc.py:2687: dot shift and go to state 122 + yacc.py:2689: + yacc.py:2696: ! arroba [ reduce using rule 60 (base_call -> factor .) ] + yacc.py:2696: ! dot [ reduce using rule 60 (base_call -> factor .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 78 + yacc.py:2563: + yacc.py:2565: (67) factor -> func_call . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 67 (factor -> func_call .) + yacc.py:2687: dot reduce using rule 67 (factor -> func_call .) + yacc.py:2687: star reduce using rule 67 (factor -> func_call .) + yacc.py:2687: div reduce using rule 67 (factor -> func_call .) + yacc.py:2687: plus reduce using rule 67 (factor -> func_call .) + yacc.py:2687: minus reduce using rule 67 (factor -> func_call .) + yacc.py:2687: less reduce using rule 67 (factor -> func_call .) + yacc.py:2687: lesseq reduce using rule 67 (factor -> func_call .) + yacc.py:2687: equal reduce using rule 67 (factor -> func_call .) + yacc.py:2687: semi reduce using rule 67 (factor -> func_call .) + yacc.py:2687: cpar reduce using rule 67 (factor -> func_call .) + yacc.py:2687: of reduce using rule 67 (factor -> func_call .) + yacc.py:2687: then reduce using rule 67 (factor -> func_call .) + yacc.py:2687: loop reduce using rule 67 (factor -> func_call .) + yacc.py:2687: comma reduce using rule 67 (factor -> func_call .) + yacc.py:2687: in reduce using rule 67 (factor -> func_call .) + yacc.py:2687: else reduce using rule 67 (factor -> func_call .) + yacc.py:2687: pool reduce using rule 67 (factor -> func_call .) + yacc.py:2687: ccur reduce using rule 67 (factor -> func_call .) + yacc.py:2687: fi reduce using rule 67 (factor -> func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 79 + yacc.py:2563: + yacc.py:2565: (63) factor -> atom . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 63 (factor -> atom .) + yacc.py:2687: dot reduce using rule 63 (factor -> atom .) + yacc.py:2687: star reduce using rule 63 (factor -> atom .) + yacc.py:2687: div reduce using rule 63 (factor -> atom .) + yacc.py:2687: plus reduce using rule 63 (factor -> atom .) + yacc.py:2687: minus reduce using rule 63 (factor -> atom .) + yacc.py:2687: less reduce using rule 63 (factor -> atom .) + yacc.py:2687: lesseq reduce using rule 63 (factor -> atom .) + yacc.py:2687: equal reduce using rule 63 (factor -> atom .) + yacc.py:2687: semi reduce using rule 63 (factor -> atom .) + yacc.py:2687: cpar reduce using rule 63 (factor -> atom .) + yacc.py:2687: of reduce using rule 63 (factor -> atom .) + yacc.py:2687: then reduce using rule 63 (factor -> atom .) + yacc.py:2687: loop reduce using rule 63 (factor -> atom .) + yacc.py:2687: comma reduce using rule 63 (factor -> atom .) + yacc.py:2687: in reduce using rule 63 (factor -> atom .) + yacc.py:2687: else reduce using rule 63 (factor -> atom .) + yacc.py:2687: pool reduce using rule 63 (factor -> atom .) + yacc.py:2687: ccur reduce using rule 63 (factor -> atom .) + yacc.py:2687: fi reduce using rule 63 (factor -> atom .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 80 + yacc.py:2563: + yacc.py:2565: (64) factor -> opar . expr cpar + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 123 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 81 + yacc.py:2563: + yacc.py:2565: (66) factor -> not . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 124 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 82 + yacc.py:2563: + yacc.py:2565: (68) factor -> isvoid . base_call + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: base_call shift and go to state 125 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 83 + yacc.py:2563: + yacc.py:2565: (69) factor -> nox . base_call + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: base_call shift and go to state 127 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 84 + yacc.py:2563: + yacc.py:2565: (70) factor -> let . let_list in expr + yacc.py:2565: (36) let_list -> . let_assign + yacc.py:2565: (37) let_list -> . let_assign comma let_list + yacc.py:2565: (38) let_assign -> . param larrow expr + yacc.py:2565: (39) let_assign -> . param + yacc.py:2565: (35) param -> . id colon type + yacc.py:2566: + yacc.py:2687: id shift and go to state 46 + yacc.py:2689: + yacc.py:2714: let_list shift and go to state 128 + yacc.py:2714: let_assign shift and go to state 129 + yacc.py:2714: param shift and go to state 130 + yacc.py:2561: + yacc.py:2562:state 85 + yacc.py:2563: + yacc.py:2565: (71) factor -> case . expr of cases_list esac + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 131 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 86 + yacc.py:2563: + yacc.py:2565: (72) factor -> if . expr then expr else expr fi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 132 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 87 + yacc.py:2563: + yacc.py:2565: (73) factor -> while . expr loop expr pool + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 133 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 88 + yacc.py:2563: + yacc.py:2565: (74) atom -> num . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 74 (atom -> num .) + yacc.py:2687: dot reduce using rule 74 (atom -> num .) + yacc.py:2687: star reduce using rule 74 (atom -> num .) + yacc.py:2687: div reduce using rule 74 (atom -> num .) + yacc.py:2687: plus reduce using rule 74 (atom -> num .) + yacc.py:2687: minus reduce using rule 74 (atom -> num .) + yacc.py:2687: less reduce using rule 74 (atom -> num .) + yacc.py:2687: lesseq reduce using rule 74 (atom -> num .) + yacc.py:2687: equal reduce using rule 74 (atom -> num .) + yacc.py:2687: semi reduce using rule 74 (atom -> num .) + yacc.py:2687: cpar reduce using rule 74 (atom -> num .) + yacc.py:2687: of reduce using rule 74 (atom -> num .) + yacc.py:2687: then reduce using rule 74 (atom -> num .) + yacc.py:2687: loop reduce using rule 74 (atom -> num .) + yacc.py:2687: comma reduce using rule 74 (atom -> num .) + yacc.py:2687: in reduce using rule 74 (atom -> num .) + yacc.py:2687: else reduce using rule 74 (atom -> num .) + yacc.py:2687: pool reduce using rule 74 (atom -> num .) + yacc.py:2687: ccur reduce using rule 74 (atom -> num .) + yacc.py:2687: fi reduce using rule 74 (atom -> num .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 89 + yacc.py:2563: + yacc.py:2565: (76) atom -> new . type + yacc.py:2566: + yacc.py:2687: type shift and go to state 134 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 90 + yacc.py:2563: + yacc.py:2565: (77) atom -> ocur . block ccur + yacc.py:2565: (79) atom -> ocur . error ccur + yacc.py:2565: (80) atom -> ocur . block error + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 136 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: block shift and go to state 135 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 91 + yacc.py:2563: + yacc.py:2565: (81) atom -> true . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 81 (atom -> true .) + yacc.py:2687: dot reduce using rule 81 (atom -> true .) + yacc.py:2687: star reduce using rule 81 (atom -> true .) + yacc.py:2687: div reduce using rule 81 (atom -> true .) + yacc.py:2687: plus reduce using rule 81 (atom -> true .) + yacc.py:2687: minus reduce using rule 81 (atom -> true .) + yacc.py:2687: less reduce using rule 81 (atom -> true .) + yacc.py:2687: lesseq reduce using rule 81 (atom -> true .) + yacc.py:2687: equal reduce using rule 81 (atom -> true .) + yacc.py:2687: semi reduce using rule 81 (atom -> true .) + yacc.py:2687: cpar reduce using rule 81 (atom -> true .) + yacc.py:2687: of reduce using rule 81 (atom -> true .) + yacc.py:2687: then reduce using rule 81 (atom -> true .) + yacc.py:2687: loop reduce using rule 81 (atom -> true .) + yacc.py:2687: comma reduce using rule 81 (atom -> true .) + yacc.py:2687: in reduce using rule 81 (atom -> true .) + yacc.py:2687: else reduce using rule 81 (atom -> true .) + yacc.py:2687: pool reduce using rule 81 (atom -> true .) + yacc.py:2687: ccur reduce using rule 81 (atom -> true .) + yacc.py:2687: fi reduce using rule 81 (atom -> true .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 92 + yacc.py:2563: + yacc.py:2565: (82) atom -> false . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 82 (atom -> false .) + yacc.py:2687: dot reduce using rule 82 (atom -> false .) + yacc.py:2687: star reduce using rule 82 (atom -> false .) + yacc.py:2687: div reduce using rule 82 (atom -> false .) + yacc.py:2687: plus reduce using rule 82 (atom -> false .) + yacc.py:2687: minus reduce using rule 82 (atom -> false .) + yacc.py:2687: less reduce using rule 82 (atom -> false .) + yacc.py:2687: lesseq reduce using rule 82 (atom -> false .) + yacc.py:2687: equal reduce using rule 82 (atom -> false .) + yacc.py:2687: semi reduce using rule 82 (atom -> false .) + yacc.py:2687: cpar reduce using rule 82 (atom -> false .) + yacc.py:2687: of reduce using rule 82 (atom -> false .) + yacc.py:2687: then reduce using rule 82 (atom -> false .) + yacc.py:2687: loop reduce using rule 82 (atom -> false .) + yacc.py:2687: comma reduce using rule 82 (atom -> false .) + yacc.py:2687: in reduce using rule 82 (atom -> false .) + yacc.py:2687: else reduce using rule 82 (atom -> false .) + yacc.py:2687: pool reduce using rule 82 (atom -> false .) + yacc.py:2687: ccur reduce using rule 82 (atom -> false .) + yacc.py:2687: fi reduce using rule 82 (atom -> false .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 93 + yacc.py:2563: + yacc.py:2565: (83) atom -> string . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 83 (atom -> string .) + yacc.py:2687: dot reduce using rule 83 (atom -> string .) + yacc.py:2687: star reduce using rule 83 (atom -> string .) + yacc.py:2687: div reduce using rule 83 (atom -> string .) + yacc.py:2687: plus reduce using rule 83 (atom -> string .) + yacc.py:2687: minus reduce using rule 83 (atom -> string .) + yacc.py:2687: less reduce using rule 83 (atom -> string .) + yacc.py:2687: lesseq reduce using rule 83 (atom -> string .) + yacc.py:2687: equal reduce using rule 83 (atom -> string .) + yacc.py:2687: semi reduce using rule 83 (atom -> string .) + yacc.py:2687: cpar reduce using rule 83 (atom -> string .) + yacc.py:2687: of reduce using rule 83 (atom -> string .) + yacc.py:2687: then reduce using rule 83 (atom -> string .) + yacc.py:2687: loop reduce using rule 83 (atom -> string .) + yacc.py:2687: comma reduce using rule 83 (atom -> string .) + yacc.py:2687: in reduce using rule 83 (atom -> string .) + yacc.py:2687: else reduce using rule 83 (atom -> string .) + yacc.py:2687: pool reduce using rule 83 (atom -> string .) + yacc.py:2687: ccur reduce using rule 83 (atom -> string .) + yacc.py:2687: fi reduce using rule 83 (atom -> string .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 94 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon . type ocur expr ccur + yacc.py:2566: + yacc.py:2687: type shift and go to state 137 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 95 + yacc.py:2563: + yacc.py:2565: (33) param_list -> param comma param_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 33 (param_list -> param comma param_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 96 + yacc.py:2563: + yacc.py:2565: (35) param -> id colon type . + yacc.py:2566: + yacc.py:2687: comma reduce using rule 35 (param -> id colon type .) + yacc.py:2687: cpar reduce using rule 35 (param -> id colon type .) + yacc.py:2687: larrow reduce using rule 35 (param -> id colon type .) + yacc.py:2687: in reduce using rule 35 (param -> id colon type .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 97 + yacc.py:2563: + yacc.py:2565: (19) def_attr -> id colon type larrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 19 (def_attr -> id colon type larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 98 + yacc.py:2563: + yacc.py:2565: (24) def_attr -> id colon type larrow error . + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: semi reduce using rule 24 (def_attr -> id colon type larrow error .) + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 99 + yacc.py:2563: + yacc.py:2565: (23) def_attr -> id colon error larrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 23 (def_attr -> id colon error larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 100 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon . type ocur expr ccur + yacc.py:2565: (28) def_func -> id opar formals cpar colon . error ocur expr ccur + yacc.py:2565: (29) def_func -> id opar formals cpar colon . type ocur error ccur + yacc.py:2566: + yacc.py:2687: type shift and go to state 138 + yacc.py:2687: error shift and go to state 139 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 101 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon . type ocur expr ccur + yacc.py:2566: + yacc.py:2687: type shift and go to state 140 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 102 + yacc.py:2563: + yacc.py:2565: (7) def_class -> class type inherits type ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 7 (def_class -> class type inherits type ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 103 + yacc.py:2563: + yacc.py:2565: (13) def_class -> class type inherits type ocur feature_list ccur error . + yacc.py:2566: + yacc.py:2687: error reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) + yacc.py:2687: class reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) + yacc.py:2687: $end reduce using rule 13 (def_class -> class type inherits type ocur feature_list ccur error .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 104 + yacc.py:2563: + yacc.py:2565: (12) def_class -> class type inherits error ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 12 (def_class -> class type inherits error ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 105 + yacc.py:2563: + yacc.py:2565: (11) def_class -> class error inherits error ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 11 (def_class -> class error inherits error ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 106 + yacc.py:2563: + yacc.py:2565: (10) def_class -> class error inherits type ocur feature_list ccur semi . + yacc.py:2566: + yacc.py:2687: error reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) + yacc.py:2687: class reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) + yacc.py:2687: $end reduce using rule 10 (def_class -> class error inherits type ocur feature_list ccur semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 107 + yacc.py:2563: + yacc.py:2565: (86) block -> error . block + yacc.py:2565: (87) block -> error . semi + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: semi shift and go to state 142 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: block shift and go to state 141 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 108 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error arroba . type dot func_call + yacc.py:2566: + yacc.py:2687: type shift and go to state 143 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 109 + yacc.py:2563: + yacc.py:2565: (78) atom -> error block . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 144 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 110 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error opar . args cpar + yacc.py:2565: (64) factor -> opar . expr cpar + yacc.py:2565: (91) args -> . arg_list + yacc.py:2565: (92) args -> . arg_list_empty + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (96) arg_list_empty -> . epsilon + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 145 + yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: args shift and go to state 146 + yacc.py:2714: expr shift and go to state 147 + yacc.py:2714: arg_list shift and go to state 148 + yacc.py:2714: arg_list_empty shift and go to state 149 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: epsilon shift and go to state 150 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 111 + yacc.py:2563: + yacc.py:2565: (84) block -> expr . semi + yacc.py:2565: (85) block -> expr . semi block + yacc.py:2566: + yacc.py:2687: semi shift and go to state 151 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 112 + yacc.py:2563: + yacc.py:2565: (45) expr -> id larrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 152 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 113 + yacc.py:2563: + yacc.py:2565: (88) func_call -> id opar . args cpar + yacc.py:2565: (89) func_call -> id opar . error cpar + yacc.py:2565: (91) args -> . arg_list + yacc.py:2565: (92) args -> . arg_list_empty + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (96) arg_list_empty -> . epsilon + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 154 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: args shift and go to state 153 + yacc.py:2714: arg_list shift and go to state 148 + yacc.py:2714: arg_list_empty shift and go to state 149 + yacc.py:2714: expr shift and go to state 155 + yacc.py:2714: epsilon shift and go to state 150 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 114 + yacc.py:2563: + yacc.py:2565: (47) comp -> comp less . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: op shift and go to state 156 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 115 + yacc.py:2563: + yacc.py:2565: (48) comp -> comp lesseq . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: op shift and go to state 157 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 116 + yacc.py:2563: + yacc.py:2565: (49) comp -> comp equal . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: op shift and go to state 158 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 117 + yacc.py:2563: + yacc.py:2565: (51) op -> op plus . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: term shift and go to state 159 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 118 + yacc.py:2563: + yacc.py:2565: (52) op -> op minus . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: term shift and go to state 160 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 119 + yacc.py:2563: + yacc.py:2565: (54) term -> term star . base_call + yacc.py:2565: (57) term -> term star . error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 162 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: base_call shift and go to state 161 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 120 + yacc.py:2563: + yacc.py:2565: (55) term -> term div . base_call + yacc.py:2565: (58) term -> term div . error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 164 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: id shift and go to state 126 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: base_call shift and go to state 163 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 121 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor arroba . type dot func_call + yacc.py:2565: (62) base_call -> factor arroba . error dot func_call + yacc.py:2566: + yacc.py:2687: type shift and go to state 165 + yacc.py:2687: error shift and go to state 166 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 122 + yacc.py:2563: + yacc.py:2565: (65) factor -> factor dot . func_call + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 168 + yacc.py:2687: error shift and go to state 169 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 167 + yacc.py:2561: + yacc.py:2562:state 123 + yacc.py:2563: + yacc.py:2565: (64) factor -> opar expr . cpar + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 170 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 124 + yacc.py:2563: + yacc.py:2565: (66) factor -> not expr . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 66 (factor -> not expr .) + yacc.py:2687: dot reduce using rule 66 (factor -> not expr .) + yacc.py:2687: star reduce using rule 66 (factor -> not expr .) + yacc.py:2687: div reduce using rule 66 (factor -> not expr .) + yacc.py:2687: plus reduce using rule 66 (factor -> not expr .) + yacc.py:2687: minus reduce using rule 66 (factor -> not expr .) + yacc.py:2687: less reduce using rule 66 (factor -> not expr .) + yacc.py:2687: lesseq reduce using rule 66 (factor -> not expr .) + yacc.py:2687: equal reduce using rule 66 (factor -> not expr .) + yacc.py:2687: semi reduce using rule 66 (factor -> not expr .) + yacc.py:2687: cpar reduce using rule 66 (factor -> not expr .) + yacc.py:2687: of reduce using rule 66 (factor -> not expr .) + yacc.py:2687: then reduce using rule 66 (factor -> not expr .) + yacc.py:2687: loop reduce using rule 66 (factor -> not expr .) + yacc.py:2687: comma reduce using rule 66 (factor -> not expr .) + yacc.py:2687: in reduce using rule 66 (factor -> not expr .) + yacc.py:2687: else reduce using rule 66 (factor -> not expr .) + yacc.py:2687: pool reduce using rule 66 (factor -> not expr .) + yacc.py:2687: ccur reduce using rule 66 (factor -> not expr .) + yacc.py:2687: fi reduce using rule 66 (factor -> not expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 125 + yacc.py:2563: + yacc.py:2565: (68) factor -> isvoid base_call . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: dot reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: star reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: div reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: plus reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: minus reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: less reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: lesseq reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: equal reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: semi reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: cpar reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: of reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: then reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: loop reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: comma reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: in reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: else reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: pool reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: ccur reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2687: fi reduce using rule 68 (factor -> isvoid base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 126 + yacc.py:2563: + yacc.py:2565: (75) atom -> id . + yacc.py:2565: (88) func_call -> id . opar args cpar + yacc.py:2565: (89) func_call -> id . opar error cpar + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 75 (atom -> id .) + yacc.py:2687: dot reduce using rule 75 (atom -> id .) + yacc.py:2687: star reduce using rule 75 (atom -> id .) + yacc.py:2687: div reduce using rule 75 (atom -> id .) + yacc.py:2687: plus reduce using rule 75 (atom -> id .) + yacc.py:2687: minus reduce using rule 75 (atom -> id .) + yacc.py:2687: less reduce using rule 75 (atom -> id .) + yacc.py:2687: lesseq reduce using rule 75 (atom -> id .) + yacc.py:2687: equal reduce using rule 75 (atom -> id .) + yacc.py:2687: semi reduce using rule 75 (atom -> id .) + yacc.py:2687: cpar reduce using rule 75 (atom -> id .) + yacc.py:2687: of reduce using rule 75 (atom -> id .) + yacc.py:2687: then reduce using rule 75 (atom -> id .) + yacc.py:2687: loop reduce using rule 75 (atom -> id .) + yacc.py:2687: comma reduce using rule 75 (atom -> id .) + yacc.py:2687: in reduce using rule 75 (atom -> id .) + yacc.py:2687: else reduce using rule 75 (atom -> id .) + yacc.py:2687: pool reduce using rule 75 (atom -> id .) + yacc.py:2687: ccur reduce using rule 75 (atom -> id .) + yacc.py:2687: fi reduce using rule 75 (atom -> id .) + yacc.py:2687: opar shift and go to state 113 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 127 + yacc.py:2563: + yacc.py:2565: (69) factor -> nox base_call . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: dot reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: star reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: div reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: plus reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: minus reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: less reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: lesseq reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: equal reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: semi reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: cpar reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: of reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: then reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: loop reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: comma reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: in reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: else reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: pool reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: ccur reduce using rule 69 (factor -> nox base_call .) + yacc.py:2687: fi reduce using rule 69 (factor -> nox base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 128 + yacc.py:2563: + yacc.py:2565: (70) factor -> let let_list . in expr + yacc.py:2566: + yacc.py:2687: in shift and go to state 171 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 129 + yacc.py:2563: + yacc.py:2565: (36) let_list -> let_assign . + yacc.py:2565: (37) let_list -> let_assign . comma let_list + yacc.py:2566: + yacc.py:2687: in reduce using rule 36 (let_list -> let_assign .) + yacc.py:2687: comma shift and go to state 172 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 130 + yacc.py:2563: + yacc.py:2565: (38) let_assign -> param . larrow expr + yacc.py:2565: (39) let_assign -> param . + yacc.py:2566: + yacc.py:2687: larrow shift and go to state 173 + yacc.py:2687: comma reduce using rule 39 (let_assign -> param .) + yacc.py:2687: in reduce using rule 39 (let_assign -> param .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 131 + yacc.py:2563: + yacc.py:2565: (71) factor -> case expr . of cases_list esac + yacc.py:2566: + yacc.py:2687: of shift and go to state 174 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 132 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr . then expr else expr fi + yacc.py:2566: + yacc.py:2687: then shift and go to state 175 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 133 + yacc.py:2563: + yacc.py:2565: (73) factor -> while expr . loop expr pool + yacc.py:2566: + yacc.py:2687: loop shift and go to state 176 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 134 + yacc.py:2563: + yacc.py:2565: (76) atom -> new type . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 76 (atom -> new type .) + yacc.py:2687: dot reduce using rule 76 (atom -> new type .) + yacc.py:2687: star reduce using rule 76 (atom -> new type .) + yacc.py:2687: div reduce using rule 76 (atom -> new type .) + yacc.py:2687: plus reduce using rule 76 (atom -> new type .) + yacc.py:2687: minus reduce using rule 76 (atom -> new type .) + yacc.py:2687: less reduce using rule 76 (atom -> new type .) + yacc.py:2687: lesseq reduce using rule 76 (atom -> new type .) + yacc.py:2687: equal reduce using rule 76 (atom -> new type .) + yacc.py:2687: semi reduce using rule 76 (atom -> new type .) + yacc.py:2687: cpar reduce using rule 76 (atom -> new type .) + yacc.py:2687: of reduce using rule 76 (atom -> new type .) + yacc.py:2687: then reduce using rule 76 (atom -> new type .) + yacc.py:2687: loop reduce using rule 76 (atom -> new type .) + yacc.py:2687: comma reduce using rule 76 (atom -> new type .) + yacc.py:2687: in reduce using rule 76 (atom -> new type .) + yacc.py:2687: else reduce using rule 76 (atom -> new type .) + yacc.py:2687: pool reduce using rule 76 (atom -> new type .) + yacc.py:2687: ccur reduce using rule 76 (atom -> new type .) + yacc.py:2687: fi reduce using rule 76 (atom -> new type .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 135 + yacc.py:2563: + yacc.py:2565: (77) atom -> ocur block . ccur + yacc.py:2565: (80) atom -> ocur block . error + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 177 + yacc.py:2687: error shift and go to state 178 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 136 + yacc.py:2563: + yacc.py:2565: (79) atom -> ocur error . ccur + yacc.py:2565: (86) block -> error . block + yacc.py:2565: (87) block -> error . semi + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 179 + yacc.py:2687: semi shift and go to state 142 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: block shift and go to state 141 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 137 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon type . ocur expr ccur + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 180 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 138 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon type . ocur expr ccur + yacc.py:2565: (29) def_func -> id opar formals cpar colon type . ocur error ccur + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 181 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 139 + yacc.py:2563: + yacc.py:2565: (28) def_func -> id opar formals cpar colon error . ocur expr ccur + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 182 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 140 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon type . ocur expr ccur + yacc.py:2566: + yacc.py:2687: ocur shift and go to state 183 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 141 + yacc.py:2563: + yacc.py:2565: (86) block -> error block . + yacc.py:2565: (78) atom -> error block . ccur + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for ccur resolved as shift + yacc.py:2687: error reduce using rule 86 (block -> error block .) + yacc.py:2687: ccur shift and go to state 144 + yacc.py:2689: + yacc.py:2696: ! ccur [ reduce using rule 86 (block -> error block .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 142 + yacc.py:2563: + yacc.py:2565: (87) block -> error semi . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 87 (block -> error semi .) + yacc.py:2687: error reduce using rule 87 (block -> error semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 143 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error arroba type . dot func_call + yacc.py:2566: + yacc.py:2687: dot shift and go to state 184 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 144 + yacc.py:2563: + yacc.py:2565: (78) atom -> error block ccur . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: dot reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: star reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: div reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: plus reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: minus reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: less reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: lesseq reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: equal reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: semi reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: cpar reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: of reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: then reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: loop reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: comma reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: in reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: else reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: pool reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: ccur reduce using rule 78 (atom -> error block ccur .) + yacc.py:2687: fi reduce using rule 78 (atom -> error block ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 145 + yacc.py:2563: + yacc.py:2565: (95) arg_list -> error . arg_list + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 185 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: arg_list shift and go to state 186 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 187 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 146 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error opar args . cpar + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 188 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 147 + yacc.py:2563: + yacc.py:2565: (64) factor -> opar expr . cpar + yacc.py:2565: (93) arg_list -> expr . + yacc.py:2565: (94) arg_list -> expr . comma arg_list + yacc.py:2566: + yacc.py:2609: ! shift/reduce conflict for cpar resolved as shift + yacc.py:2687: cpar shift and go to state 170 + yacc.py:2687: comma shift and go to state 189 + yacc.py:2689: + yacc.py:2696: ! cpar [ reduce using rule 93 (arg_list -> expr .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 148 + yacc.py:2563: + yacc.py:2565: (91) args -> arg_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 91 (args -> arg_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 149 + yacc.py:2563: + yacc.py:2565: (92) args -> arg_list_empty . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 92 (args -> arg_list_empty .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 150 + yacc.py:2563: + yacc.py:2565: (96) arg_list_empty -> epsilon . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 96 (arg_list_empty -> epsilon .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 151 + yacc.py:2563: + yacc.py:2565: (84) block -> expr semi . + yacc.py:2565: (85) block -> expr semi . block + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for error resolved as shift + yacc.py:2687: ccur reduce using rule 84 (block -> expr semi .) + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2696: ! error [ reduce using rule 84 (block -> expr semi .) ] + yacc.py:2700: + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: block shift and go to state 190 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 152 + yacc.py:2563: + yacc.py:2565: (45) expr -> id larrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: cpar reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: arroba reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: dot reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: star reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: div reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: plus reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: minus reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: less reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: lesseq reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: equal reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: of reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: then reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: loop reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: comma reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: in reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: else reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: pool reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: ccur reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2687: fi reduce using rule 45 (expr -> id larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 153 + yacc.py:2563: + yacc.py:2565: (88) func_call -> id opar args . cpar + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 191 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 154 + yacc.py:2563: + yacc.py:2565: (89) func_call -> id opar error . cpar + yacc.py:2565: (95) arg_list -> error . arg_list + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: cpar shift and go to state 192 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 185 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: arg_list shift and go to state 186 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 187 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 155 + yacc.py:2563: + yacc.py:2565: (93) arg_list -> expr . + yacc.py:2565: (94) arg_list -> expr . comma arg_list + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 93 (arg_list -> expr .) + yacc.py:2687: comma shift and go to state 189 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 156 + yacc.py:2563: + yacc.py:2565: (47) comp -> comp less op . + yacc.py:2565: (51) op -> op . plus term + yacc.py:2565: (52) op -> op . minus term + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for plus resolved as shift + yacc.py:2666: ! shift/reduce conflict for minus resolved as shift + yacc.py:2687: less reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: lesseq reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: equal reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: semi reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: cpar reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: arroba reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: dot reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: star reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: div reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: of reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: then reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: loop reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: comma reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: in reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: else reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: pool reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: ccur reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: fi reduce using rule 47 (comp -> comp less op .) + yacc.py:2687: plus shift and go to state 117 + yacc.py:2687: minus shift and go to state 118 + yacc.py:2689: + yacc.py:2696: ! plus [ reduce using rule 47 (comp -> comp less op .) ] + yacc.py:2696: ! minus [ reduce using rule 47 (comp -> comp less op .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 157 + yacc.py:2563: + yacc.py:2565: (48) comp -> comp lesseq op . + yacc.py:2565: (51) op -> op . plus term + yacc.py:2565: (52) op -> op . minus term + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for plus resolved as shift + yacc.py:2666: ! shift/reduce conflict for minus resolved as shift + yacc.py:2687: less reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: lesseq reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: equal reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: semi reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: cpar reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: arroba reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: dot reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: star reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: div reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: of reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: then reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: loop reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: comma reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: in reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: else reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: pool reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: ccur reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: fi reduce using rule 48 (comp -> comp lesseq op .) + yacc.py:2687: plus shift and go to state 117 + yacc.py:2687: minus shift and go to state 118 + yacc.py:2689: + yacc.py:2696: ! plus [ reduce using rule 48 (comp -> comp lesseq op .) ] + yacc.py:2696: ! minus [ reduce using rule 48 (comp -> comp lesseq op .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 158 + yacc.py:2563: + yacc.py:2565: (49) comp -> comp equal op . + yacc.py:2565: (51) op -> op . plus term + yacc.py:2565: (52) op -> op . minus term + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for plus resolved as shift + yacc.py:2666: ! shift/reduce conflict for minus resolved as shift + yacc.py:2687: less reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: lesseq reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: equal reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: semi reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: cpar reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: arroba reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: dot reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: star reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: div reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: of reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: then reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: loop reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: comma reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: in reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: else reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: pool reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: ccur reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: fi reduce using rule 49 (comp -> comp equal op .) + yacc.py:2687: plus shift and go to state 117 + yacc.py:2687: minus shift and go to state 118 + yacc.py:2689: + yacc.py:2696: ! plus [ reduce using rule 49 (comp -> comp equal op .) ] + yacc.py:2696: ! minus [ reduce using rule 49 (comp -> comp equal op .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 159 + yacc.py:2563: + yacc.py:2565: (51) op -> op plus term . + yacc.py:2565: (54) term -> term . star base_call + yacc.py:2565: (55) term -> term . div base_call + yacc.py:2565: (57) term -> term . star error + yacc.py:2565: (58) term -> term . div error + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for star resolved as shift + yacc.py:2666: ! shift/reduce conflict for div resolved as shift + yacc.py:2687: plus reduce using rule 51 (op -> op plus term .) + yacc.py:2687: minus reduce using rule 51 (op -> op plus term .) + yacc.py:2687: less reduce using rule 51 (op -> op plus term .) + yacc.py:2687: lesseq reduce using rule 51 (op -> op plus term .) + yacc.py:2687: equal reduce using rule 51 (op -> op plus term .) + yacc.py:2687: semi reduce using rule 51 (op -> op plus term .) + yacc.py:2687: cpar reduce using rule 51 (op -> op plus term .) + yacc.py:2687: arroba reduce using rule 51 (op -> op plus term .) + yacc.py:2687: dot reduce using rule 51 (op -> op plus term .) + yacc.py:2687: of reduce using rule 51 (op -> op plus term .) + yacc.py:2687: then reduce using rule 51 (op -> op plus term .) + yacc.py:2687: loop reduce using rule 51 (op -> op plus term .) + yacc.py:2687: comma reduce using rule 51 (op -> op plus term .) + yacc.py:2687: in reduce using rule 51 (op -> op plus term .) + yacc.py:2687: else reduce using rule 51 (op -> op plus term .) + yacc.py:2687: pool reduce using rule 51 (op -> op plus term .) + yacc.py:2687: ccur reduce using rule 51 (op -> op plus term .) + yacc.py:2687: fi reduce using rule 51 (op -> op plus term .) + yacc.py:2687: star shift and go to state 119 + yacc.py:2687: div shift and go to state 120 + yacc.py:2689: + yacc.py:2696: ! star [ reduce using rule 51 (op -> op plus term .) ] + yacc.py:2696: ! div [ reduce using rule 51 (op -> op plus term .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 160 + yacc.py:2563: + yacc.py:2565: (52) op -> op minus term . + yacc.py:2565: (54) term -> term . star base_call + yacc.py:2565: (55) term -> term . div base_call + yacc.py:2565: (57) term -> term . star error + yacc.py:2565: (58) term -> term . div error + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for star resolved as shift + yacc.py:2666: ! shift/reduce conflict for div resolved as shift + yacc.py:2687: plus reduce using rule 52 (op -> op minus term .) + yacc.py:2687: minus reduce using rule 52 (op -> op minus term .) + yacc.py:2687: less reduce using rule 52 (op -> op minus term .) + yacc.py:2687: lesseq reduce using rule 52 (op -> op minus term .) + yacc.py:2687: equal reduce using rule 52 (op -> op minus term .) + yacc.py:2687: semi reduce using rule 52 (op -> op minus term .) + yacc.py:2687: cpar reduce using rule 52 (op -> op minus term .) + yacc.py:2687: arroba reduce using rule 52 (op -> op minus term .) + yacc.py:2687: dot reduce using rule 52 (op -> op minus term .) + yacc.py:2687: of reduce using rule 52 (op -> op minus term .) + yacc.py:2687: then reduce using rule 52 (op -> op minus term .) + yacc.py:2687: loop reduce using rule 52 (op -> op minus term .) + yacc.py:2687: comma reduce using rule 52 (op -> op minus term .) + yacc.py:2687: in reduce using rule 52 (op -> op minus term .) + yacc.py:2687: else reduce using rule 52 (op -> op minus term .) + yacc.py:2687: pool reduce using rule 52 (op -> op minus term .) + yacc.py:2687: ccur reduce using rule 52 (op -> op minus term .) + yacc.py:2687: fi reduce using rule 52 (op -> op minus term .) + yacc.py:2687: star shift and go to state 119 + yacc.py:2687: div shift and go to state 120 + yacc.py:2689: + yacc.py:2696: ! star [ reduce using rule 52 (op -> op minus term .) ] + yacc.py:2696: ! div [ reduce using rule 52 (op -> op minus term .) ] + yacc.py:2700: + yacc.py:2561: + yacc.py:2562:state 161 + yacc.py:2563: + yacc.py:2565: (54) term -> term star base_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: div reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: plus reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: minus reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: less reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: lesseq reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: equal reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: semi reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: cpar reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: arroba reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: dot reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: of reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: then reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: loop reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: comma reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: in reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: else reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: pool reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: ccur reduce using rule 54 (term -> term star base_call .) + yacc.py:2687: fi reduce using rule 54 (term -> term star base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 162 + yacc.py:2563: + yacc.py:2565: (57) term -> term star error . + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for arroba resolved as shift + yacc.py:2687: star reduce using rule 57 (term -> term star error .) + yacc.py:2687: div reduce using rule 57 (term -> term star error .) + yacc.py:2687: plus reduce using rule 57 (term -> term star error .) + yacc.py:2687: minus reduce using rule 57 (term -> term star error .) + yacc.py:2687: less reduce using rule 57 (term -> term star error .) + yacc.py:2687: lesseq reduce using rule 57 (term -> term star error .) + yacc.py:2687: equal reduce using rule 57 (term -> term star error .) + yacc.py:2687: semi reduce using rule 57 (term -> term star error .) + yacc.py:2687: cpar reduce using rule 57 (term -> term star error .) + yacc.py:2687: dot reduce using rule 57 (term -> term star error .) + yacc.py:2687: of reduce using rule 57 (term -> term star error .) + yacc.py:2687: then reduce using rule 57 (term -> term star error .) + yacc.py:2687: loop reduce using rule 57 (term -> term star error .) + yacc.py:2687: comma reduce using rule 57 (term -> term star error .) + yacc.py:2687: in reduce using rule 57 (term -> term star error .) + yacc.py:2687: else reduce using rule 57 (term -> term star error .) + yacc.py:2687: pool reduce using rule 57 (term -> term star error .) + yacc.py:2687: ccur reduce using rule 57 (term -> term star error .) + yacc.py:2687: fi reduce using rule 57 (term -> term star error .) + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2696: ! arroba [ reduce using rule 57 (term -> term star error .) ] + yacc.py:2700: + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 163 + yacc.py:2563: + yacc.py:2565: (55) term -> term div base_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: div reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: plus reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: minus reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: less reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: lesseq reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: equal reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: semi reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: cpar reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: arroba reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: dot reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: of reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: then reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: loop reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: comma reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: in reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: else reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: pool reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: ccur reduce using rule 55 (term -> term div base_call .) + yacc.py:2687: fi reduce using rule 55 (term -> term div base_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 164 + yacc.py:2563: + yacc.py:2565: (58) term -> term div error . + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2666: ! shift/reduce conflict for arroba resolved as shift + yacc.py:2687: star reduce using rule 58 (term -> term div error .) + yacc.py:2687: div reduce using rule 58 (term -> term div error .) + yacc.py:2687: plus reduce using rule 58 (term -> term div error .) + yacc.py:2687: minus reduce using rule 58 (term -> term div error .) + yacc.py:2687: less reduce using rule 58 (term -> term div error .) + yacc.py:2687: lesseq reduce using rule 58 (term -> term div error .) + yacc.py:2687: equal reduce using rule 58 (term -> term div error .) + yacc.py:2687: semi reduce using rule 58 (term -> term div error .) + yacc.py:2687: cpar reduce using rule 58 (term -> term div error .) + yacc.py:2687: dot reduce using rule 58 (term -> term div error .) + yacc.py:2687: of reduce using rule 58 (term -> term div error .) + yacc.py:2687: then reduce using rule 58 (term -> term div error .) + yacc.py:2687: loop reduce using rule 58 (term -> term div error .) + yacc.py:2687: comma reduce using rule 58 (term -> term div error .) + yacc.py:2687: in reduce using rule 58 (term -> term div error .) + yacc.py:2687: else reduce using rule 58 (term -> term div error .) + yacc.py:2687: pool reduce using rule 58 (term -> term div error .) + yacc.py:2687: ccur reduce using rule 58 (term -> term div error .) + yacc.py:2687: fi reduce using rule 58 (term -> term div error .) + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2696: ! arroba [ reduce using rule 58 (term -> term div error .) ] + yacc.py:2700: + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 165 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor arroba type . dot func_call + yacc.py:2566: + yacc.py:2687: dot shift and go to state 193 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 166 + yacc.py:2563: + yacc.py:2565: (62) base_call -> factor arroba error . dot func_call + yacc.py:2566: + yacc.py:2687: dot shift and go to state 194 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 167 + yacc.py:2563: + yacc.py:2565: (65) factor -> factor dot func_call . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: dot reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: star reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: div reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: plus reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: minus reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: less reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: lesseq reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: equal reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: semi reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: cpar reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: of reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: then reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: loop reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: comma reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: in reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: else reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: pool reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: ccur reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2687: fi reduce using rule 65 (factor -> factor dot func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 168 + yacc.py:2563: + yacc.py:2565: (88) func_call -> id . opar args cpar + yacc.py:2565: (89) func_call -> id . opar error cpar + yacc.py:2566: + yacc.py:2687: opar shift and go to state 113 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 169 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2566: + yacc.py:2687: opar shift and go to state 195 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 170 + yacc.py:2563: + yacc.py:2565: (64) factor -> opar expr cpar . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: dot reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: star reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: div reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: plus reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: minus reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: less reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: lesseq reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: equal reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: semi reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: cpar reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: of reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: then reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: loop reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: comma reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: in reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: else reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: pool reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: ccur reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2687: fi reduce using rule 64 (factor -> opar expr cpar .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 171 + yacc.py:2563: + yacc.py:2565: (70) factor -> let let_list in . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 196 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 172 + yacc.py:2563: + yacc.py:2565: (37) let_list -> let_assign comma . let_list + yacc.py:2565: (36) let_list -> . let_assign + yacc.py:2565: (37) let_list -> . let_assign comma let_list + yacc.py:2565: (38) let_assign -> . param larrow expr + yacc.py:2565: (39) let_assign -> . param + yacc.py:2565: (35) param -> . id colon type + yacc.py:2566: + yacc.py:2687: id shift and go to state 46 + yacc.py:2689: + yacc.py:2714: let_assign shift and go to state 129 + yacc.py:2714: let_list shift and go to state 197 + yacc.py:2714: param shift and go to state 130 + yacc.py:2561: + yacc.py:2562:state 173 + yacc.py:2563: + yacc.py:2565: (38) let_assign -> param larrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 198 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 174 + yacc.py:2563: + yacc.py:2565: (71) factor -> case expr of . cases_list esac + yacc.py:2565: (40) cases_list -> . casep semi + yacc.py:2565: (41) cases_list -> . casep semi cases_list + yacc.py:2565: (42) cases_list -> . error cases_list + yacc.py:2565: (43) cases_list -> . error semi + yacc.py:2565: (44) casep -> . id colon type rarrow expr + yacc.py:2566: + yacc.py:2687: error shift and go to state 201 + yacc.py:2687: id shift and go to state 202 + yacc.py:2689: + yacc.py:2714: cases_list shift and go to state 199 + yacc.py:2714: casep shift and go to state 200 + yacc.py:2561: + yacc.py:2562:state 175 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then . expr else expr fi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 203 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 176 + yacc.py:2563: + yacc.py:2565: (73) factor -> while expr loop . expr pool + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 204 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 177 + yacc.py:2563: + yacc.py:2565: (77) atom -> ocur block ccur . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: dot reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: star reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: div reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: plus reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: minus reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: less reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: lesseq reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: equal reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: semi reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: cpar reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: of reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: then reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: loop reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: comma reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: in reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: else reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: pool reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: ccur reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2687: fi reduce using rule 77 (atom -> ocur block ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 178 + yacc.py:2563: + yacc.py:2565: (80) atom -> ocur block error . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: dot reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: star reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: div reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: plus reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: minus reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: less reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: lesseq reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: equal reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: semi reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: cpar reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: of reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: then reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: loop reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: comma reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: in reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: else reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: pool reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: ccur reduce using rule 80 (atom -> ocur block error .) + yacc.py:2687: fi reduce using rule 80 (atom -> ocur block error .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 179 + yacc.py:2563: + yacc.py:2565: (79) atom -> ocur error ccur . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: dot reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: star reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: div reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: plus reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: minus reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: less reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: lesseq reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: equal reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: semi reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: cpar reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: of reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: then reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: loop reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: comma reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: in reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: else reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: pool reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: ccur reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2687: fi reduce using rule 79 (atom -> ocur error ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 180 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur . expr ccur + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 205 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 181 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur . expr ccur + yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur . error ccur + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 207 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 206 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 182 + yacc.py:2563: + yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur . expr ccur + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 208 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 183 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur . expr ccur + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 209 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 184 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error arroba type dot . func_call + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 168 + yacc.py:2687: error shift and go to state 169 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 210 + yacc.py:2561: + yacc.py:2562:state 185 + yacc.py:2563: + yacc.py:2565: (95) arg_list -> error . arg_list + yacc.py:2565: (86) block -> error . block + yacc.py:2565: (87) block -> error . semi + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: semi shift and go to state 142 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 185 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: arg_list shift and go to state 186 + yacc.py:2714: block shift and go to state 141 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: expr shift and go to state 187 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 186 + yacc.py:2563: + yacc.py:2565: (95) arg_list -> error arg_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 95 (arg_list -> error arg_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 187 + yacc.py:2563: + yacc.py:2565: (93) arg_list -> expr . + yacc.py:2565: (94) arg_list -> expr . comma arg_list + yacc.py:2565: (84) block -> expr . semi + yacc.py:2565: (85) block -> expr . semi block + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 93 (arg_list -> expr .) + yacc.py:2687: comma shift and go to state 189 + yacc.py:2687: semi shift and go to state 151 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 188 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error opar args cpar . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: dot reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: star reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: div reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: plus reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: minus reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: less reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: lesseq reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: equal reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: semi reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: cpar reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: of reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: then reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: loop reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: comma reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: in reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: else reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: pool reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: ccur reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2687: fi reduce using rule 90 (func_call -> error opar args cpar .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 189 + yacc.py:2563: + yacc.py:2565: (94) arg_list -> expr comma . arg_list + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 145 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 155 + yacc.py:2714: arg_list shift and go to state 211 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 190 + yacc.py:2563: + yacc.py:2565: (85) block -> expr semi block . + yacc.py:2566: + yacc.py:2687: ccur reduce using rule 85 (block -> expr semi block .) + yacc.py:2687: error reduce using rule 85 (block -> expr semi block .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 191 + yacc.py:2563: + yacc.py:2565: (88) func_call -> id opar args cpar . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: dot reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: star reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: div reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: plus reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: minus reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: less reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: lesseq reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: equal reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: semi reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: cpar reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: of reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: then reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: loop reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: comma reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: in reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: else reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: pool reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: ccur reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2687: fi reduce using rule 88 (func_call -> id opar args cpar .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 192 + yacc.py:2563: + yacc.py:2565: (89) func_call -> id opar error cpar . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: dot reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: star reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: div reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: plus reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: minus reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: less reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: lesseq reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: equal reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: semi reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: cpar reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: of reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: then reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: loop reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: comma reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: in reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: else reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: pool reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: ccur reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2687: fi reduce using rule 89 (func_call -> id opar error cpar .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 193 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor arroba type dot . func_call + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 168 + yacc.py:2687: error shift and go to state 169 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 212 + yacc.py:2561: + yacc.py:2562:state 194 + yacc.py:2563: + yacc.py:2565: (62) base_call -> factor arroba error dot . func_call + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 168 + yacc.py:2687: error shift and go to state 169 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 213 + yacc.py:2561: + yacc.py:2562:state 195 + yacc.py:2563: + yacc.py:2565: (90) func_call -> error opar . args cpar + yacc.py:2565: (91) args -> . arg_list + yacc.py:2565: (92) args -> . arg_list_empty + yacc.py:2565: (93) arg_list -> . expr + yacc.py:2565: (94) arg_list -> . expr comma arg_list + yacc.py:2565: (95) arg_list -> . error arg_list + yacc.py:2565: (96) arg_list_empty -> . epsilon + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (5) epsilon -> . + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: error shift and go to state 145 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: cpar reduce using rule 5 (epsilon -> .) + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: args shift and go to state 146 + yacc.py:2714: arg_list shift and go to state 148 + yacc.py:2714: arg_list_empty shift and go to state 149 + yacc.py:2714: expr shift and go to state 155 + yacc.py:2714: epsilon shift and go to state 150 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 196 + yacc.py:2563: + yacc.py:2565: (70) factor -> let let_list in expr . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: dot reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: star reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: div reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: plus reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: minus reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: less reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: lesseq reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: equal reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: semi reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: cpar reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: of reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: then reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: loop reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: comma reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: in reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: else reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: pool reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: ccur reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2687: fi reduce using rule 70 (factor -> let let_list in expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 197 + yacc.py:2563: + yacc.py:2565: (37) let_list -> let_assign comma let_list . + yacc.py:2566: + yacc.py:2687: in reduce using rule 37 (let_list -> let_assign comma let_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 198 + yacc.py:2563: + yacc.py:2565: (38) let_assign -> param larrow expr . + yacc.py:2566: + yacc.py:2687: comma reduce using rule 38 (let_assign -> param larrow expr .) + yacc.py:2687: in reduce using rule 38 (let_assign -> param larrow expr .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 199 + yacc.py:2563: + yacc.py:2565: (71) factor -> case expr of cases_list . esac + yacc.py:2566: + yacc.py:2687: esac shift and go to state 214 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 200 + yacc.py:2563: + yacc.py:2565: (40) cases_list -> casep . semi + yacc.py:2565: (41) cases_list -> casep . semi cases_list + yacc.py:2566: + yacc.py:2687: semi shift and go to state 215 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 201 + yacc.py:2563: + yacc.py:2565: (42) cases_list -> error . cases_list + yacc.py:2565: (43) cases_list -> error . semi + yacc.py:2565: (40) cases_list -> . casep semi + yacc.py:2565: (41) cases_list -> . casep semi cases_list + yacc.py:2565: (42) cases_list -> . error cases_list + yacc.py:2565: (43) cases_list -> . error semi + yacc.py:2565: (44) casep -> . id colon type rarrow expr + yacc.py:2566: + yacc.py:2687: semi shift and go to state 217 + yacc.py:2687: error shift and go to state 201 + yacc.py:2687: id shift and go to state 202 + yacc.py:2689: + yacc.py:2714: cases_list shift and go to state 216 + yacc.py:2714: casep shift and go to state 200 + yacc.py:2561: + yacc.py:2562:state 202 + yacc.py:2563: + yacc.py:2565: (44) casep -> id . colon type rarrow expr + yacc.py:2566: + yacc.py:2687: colon shift and go to state 218 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 203 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then expr . else expr fi + yacc.py:2566: + yacc.py:2687: else shift and go to state 219 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 204 + yacc.py:2563: + yacc.py:2565: (73) factor -> while expr loop expr . pool + yacc.py:2566: + yacc.py:2687: pool shift and go to state 220 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 205 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur expr . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 221 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 206 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur expr . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 222 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 207 + yacc.py:2563: + yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur error . ccur + yacc.py:2565: (61) base_call -> error . arroba type dot func_call + yacc.py:2565: (78) atom -> error . block ccur + yacc.py:2565: (90) func_call -> error . opar args cpar + yacc.py:2565: (84) block -> . expr semi + yacc.py:2565: (85) block -> . expr semi block + yacc.py:2565: (86) block -> . error block + yacc.py:2565: (87) block -> . error semi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 223 + yacc.py:2687: arroba shift and go to state 108 + yacc.py:2687: opar shift and go to state 110 + yacc.py:2687: error shift and go to state 107 + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: block shift and go to state 109 + yacc.py:2714: expr shift and go to state 111 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 208 + yacc.py:2563: + yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur expr . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 224 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 209 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur expr . ccur + yacc.py:2566: + yacc.py:2687: ccur shift and go to state 225 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 210 + yacc.py:2563: + yacc.py:2565: (61) base_call -> error arroba type dot func_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: div reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: plus reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: minus reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: less reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: lesseq reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: equal reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: semi reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: cpar reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: arroba reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: dot reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: of reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: then reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: loop reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: comma reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: in reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: else reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: pool reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: ccur reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2687: fi reduce using rule 61 (base_call -> error arroba type dot func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 211 + yacc.py:2563: + yacc.py:2565: (94) arg_list -> expr comma arg_list . + yacc.py:2566: + yacc.py:2687: cpar reduce using rule 94 (arg_list -> expr comma arg_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 212 + yacc.py:2563: + yacc.py:2565: (59) base_call -> factor arroba type dot func_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: div reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: plus reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: minus reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: less reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: lesseq reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: equal reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: semi reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: cpar reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: arroba reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: dot reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: of reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: then reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: loop reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: comma reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: in reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: else reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: pool reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: ccur reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2687: fi reduce using rule 59 (base_call -> factor arroba type dot func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 213 + yacc.py:2563: + yacc.py:2565: (62) base_call -> factor arroba error dot func_call . + yacc.py:2566: + yacc.py:2687: star reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: div reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: plus reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: minus reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: less reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: lesseq reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: equal reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: semi reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: cpar reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: arroba reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: dot reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: of reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: then reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: loop reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: comma reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: in reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: else reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: pool reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: ccur reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2687: fi reduce using rule 62 (base_call -> factor arroba error dot func_call .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 214 + yacc.py:2563: + yacc.py:2565: (71) factor -> case expr of cases_list esac . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: dot reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: star reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: div reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: plus reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: minus reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: less reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: lesseq reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: equal reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: semi reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: cpar reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: of reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: then reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: loop reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: comma reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: in reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: else reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: pool reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: ccur reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2687: fi reduce using rule 71 (factor -> case expr of cases_list esac .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 215 + yacc.py:2563: + yacc.py:2565: (40) cases_list -> casep semi . + yacc.py:2565: (41) cases_list -> casep semi . cases_list + yacc.py:2565: (40) cases_list -> . casep semi + yacc.py:2565: (41) cases_list -> . casep semi cases_list + yacc.py:2565: (42) cases_list -> . error cases_list + yacc.py:2565: (43) cases_list -> . error semi + yacc.py:2565: (44) casep -> . id colon type rarrow expr + yacc.py:2566: + yacc.py:2687: esac reduce using rule 40 (cases_list -> casep semi .) + yacc.py:2687: error shift and go to state 201 + yacc.py:2687: id shift and go to state 202 + yacc.py:2689: + yacc.py:2714: casep shift and go to state 200 + yacc.py:2714: cases_list shift and go to state 226 + yacc.py:2561: + yacc.py:2562:state 216 + yacc.py:2563: + yacc.py:2565: (42) cases_list -> error cases_list . + yacc.py:2566: + yacc.py:2687: esac reduce using rule 42 (cases_list -> error cases_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 217 + yacc.py:2563: + yacc.py:2565: (43) cases_list -> error semi . + yacc.py:2566: + yacc.py:2687: esac reduce using rule 43 (cases_list -> error semi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 218 + yacc.py:2563: + yacc.py:2565: (44) casep -> id colon . type rarrow expr + yacc.py:2566: + yacc.py:2687: type shift and go to state 227 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 219 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then expr else . expr fi + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 228 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 220 + yacc.py:2563: + yacc.py:2565: (73) factor -> while expr loop expr pool . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: dot reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: star reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: div reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: plus reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: minus reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: less reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: lesseq reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: equal reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: semi reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: cpar reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: of reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: then reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: loop reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: comma reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: in reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: else reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: pool reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: ccur reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2687: fi reduce using rule 73 (factor -> while expr loop expr pool .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 221 + yacc.py:2563: + yacc.py:2565: (26) def_func -> error opar formals cpar colon type ocur expr ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 26 (def_func -> error opar formals cpar colon type ocur expr ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 222 + yacc.py:2563: + yacc.py:2565: (25) def_func -> id opar formals cpar colon type ocur expr ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 25 (def_func -> id opar formals cpar colon type ocur expr ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 223 + yacc.py:2563: + yacc.py:2565: (29) def_func -> id opar formals cpar colon type ocur error ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 29 (def_func -> id opar formals cpar colon type ocur error ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 224 + yacc.py:2563: + yacc.py:2565: (28) def_func -> id opar formals cpar colon error ocur expr ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 28 (def_func -> id opar formals cpar colon error ocur expr ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 225 + yacc.py:2563: + yacc.py:2565: (27) def_func -> id opar error cpar colon type ocur expr ccur . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 27 (def_func -> id opar error cpar colon type ocur expr ccur .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 226 + yacc.py:2563: + yacc.py:2565: (41) cases_list -> casep semi cases_list . + yacc.py:2566: + yacc.py:2687: esac reduce using rule 41 (cases_list -> casep semi cases_list .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 227 + yacc.py:2563: + yacc.py:2565: (44) casep -> id colon type . rarrow expr + yacc.py:2566: + yacc.py:2687: rarrow shift and go to state 229 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 228 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then expr else expr . fi + yacc.py:2566: + yacc.py:2687: fi shift and go to state 230 + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 229 + yacc.py:2563: + yacc.py:2565: (44) casep -> id colon type rarrow . expr + yacc.py:2565: (45) expr -> . id larrow expr + yacc.py:2565: (46) expr -> . comp + yacc.py:2565: (47) comp -> . comp less op + yacc.py:2565: (48) comp -> . comp lesseq op + yacc.py:2565: (49) comp -> . comp equal op + yacc.py:2565: (50) comp -> . op + yacc.py:2565: (51) op -> . op plus term + yacc.py:2565: (52) op -> . op minus term + yacc.py:2565: (53) op -> . term + yacc.py:2565: (54) term -> . term star base_call + yacc.py:2565: (55) term -> . term div base_call + yacc.py:2565: (56) term -> . base_call + yacc.py:2565: (57) term -> . term star error + yacc.py:2565: (58) term -> . term div error + yacc.py:2565: (59) base_call -> . factor arroba type dot func_call + yacc.py:2565: (60) base_call -> . factor + yacc.py:2565: (61) base_call -> . error arroba type dot func_call + yacc.py:2565: (62) base_call -> . factor arroba error dot func_call + yacc.py:2565: (63) factor -> . atom + yacc.py:2565: (64) factor -> . opar expr cpar + yacc.py:2565: (65) factor -> . factor dot func_call + yacc.py:2565: (66) factor -> . not expr + yacc.py:2565: (67) factor -> . func_call + yacc.py:2565: (68) factor -> . isvoid base_call + yacc.py:2565: (69) factor -> . nox base_call + yacc.py:2565: (70) factor -> . let let_list in expr + yacc.py:2565: (71) factor -> . case expr of cases_list esac + yacc.py:2565: (72) factor -> . if expr then expr else expr fi + yacc.py:2565: (73) factor -> . while expr loop expr pool + yacc.py:2565: (74) atom -> . num + yacc.py:2565: (75) atom -> . id + yacc.py:2565: (76) atom -> . new type + yacc.py:2565: (77) atom -> . ocur block ccur + yacc.py:2565: (78) atom -> . error block ccur + yacc.py:2565: (79) atom -> . ocur error ccur + yacc.py:2565: (80) atom -> . ocur block error + yacc.py:2565: (81) atom -> . true + yacc.py:2565: (82) atom -> . false + yacc.py:2565: (83) atom -> . string + yacc.py:2565: (88) func_call -> . id opar args cpar + yacc.py:2565: (89) func_call -> . id opar error cpar + yacc.py:2565: (90) func_call -> . error opar args cpar + yacc.py:2566: + yacc.py:2687: id shift and go to state 72 + yacc.py:2687: error shift and go to state 70 + yacc.py:2687: opar shift and go to state 80 + yacc.py:2687: not shift and go to state 81 + yacc.py:2687: isvoid shift and go to state 82 + yacc.py:2687: nox shift and go to state 83 + yacc.py:2687: let shift and go to state 84 + yacc.py:2687: case shift and go to state 85 + yacc.py:2687: if shift and go to state 86 + yacc.py:2687: while shift and go to state 87 + yacc.py:2687: num shift and go to state 88 + yacc.py:2687: new shift and go to state 89 + yacc.py:2687: ocur shift and go to state 90 + yacc.py:2687: true shift and go to state 91 + yacc.py:2687: false shift and go to state 92 + yacc.py:2687: string shift and go to state 93 + yacc.py:2689: + yacc.py:2714: expr shift and go to state 231 + yacc.py:2714: comp shift and go to state 73 + yacc.py:2714: op shift and go to state 74 + yacc.py:2714: term shift and go to state 75 + yacc.py:2714: base_call shift and go to state 76 + yacc.py:2714: factor shift and go to state 77 + yacc.py:2714: func_call shift and go to state 78 + yacc.py:2714: atom shift and go to state 79 + yacc.py:2561: + yacc.py:2562:state 230 + yacc.py:2563: + yacc.py:2565: (72) factor -> if expr then expr else expr fi . + yacc.py:2566: + yacc.py:2687: arroba reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: dot reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: star reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: div reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: plus reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: minus reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: less reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: lesseq reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: equal reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: semi reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: cpar reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: of reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: then reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: loop reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: comma reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: in reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: else reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: pool reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: ccur reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2687: fi reduce using rule 72 (factor -> if expr then expr else expr fi .) + yacc.py:2689: + yacc.py:2561: + yacc.py:2562:state 231 + yacc.py:2563: + yacc.py:2565: (44) casep -> id colon type rarrow expr . + yacc.py:2566: + yacc.py:2687: semi reduce using rule 44 (casep -> id colon type rarrow expr .) + yacc.py:2689: yacc.py:3447:24 shift/reduce conflicts + yacc.py:3457: + yacc.py:3458:Conflicts: + yacc.py:3459: + yacc.py:3462:shift/reduce conflict for less in state 73 resolved as shift + yacc.py:3462:shift/reduce conflict for lesseq in state 73 resolved as shift + yacc.py:3462:shift/reduce conflict for equal in state 73 resolved as shift + yacc.py:3462:shift/reduce conflict for plus in state 74 resolved as shift + yacc.py:3462:shift/reduce conflict for minus in state 74 resolved as shift + yacc.py:3462:shift/reduce conflict for star in state 75 resolved as shift + yacc.py:3462:shift/reduce conflict for div in state 75 resolved as shift + yacc.py:3462:shift/reduce conflict for arroba in state 77 resolved as shift + yacc.py:3462:shift/reduce conflict for dot in state 77 resolved as shift + yacc.py:3462:shift/reduce conflict for ccur in state 141 resolved as shift + yacc.py:3462:shift/reduce conflict for cpar in state 147 resolved as shift + yacc.py:3462:shift/reduce conflict for error in state 151 resolved as shift + yacc.py:3462:shift/reduce conflict for plus in state 156 resolved as shift + yacc.py:3462:shift/reduce conflict for minus in state 156 resolved as shift + yacc.py:3462:shift/reduce conflict for plus in state 157 resolved as shift + yacc.py:3462:shift/reduce conflict for minus in state 157 resolved as shift + yacc.py:3462:shift/reduce conflict for plus in state 158 resolved as shift + yacc.py:3462:shift/reduce conflict for minus in state 158 resolved as shift + yacc.py:3462:shift/reduce conflict for star in state 159 resolved as shift + yacc.py:3462:shift/reduce conflict for div in state 159 resolved as shift + yacc.py:3462:shift/reduce conflict for star in state 160 resolved as shift + yacc.py:3462:shift/reduce conflict for div in state 160 resolved as shift + yacc.py:3462:shift/reduce conflict for arroba in state 162 resolved as shift + yacc.py:3462:shift/reduce conflict for arroba in state 164 resolved as shift yacc.py:3488:Couldn't create 'cool.parser.parsetab'. [Errno 2] No such file or directory: 'parser/output/parsetab.py' yacc.py: 362:PLY: PARSE DEBUG START yacc.py: 410: @@ -33,13 +6153,13 @@ yacc.py: 430:Defaulted state 45: Reduce using 34 yacc.py: 434:Stack : class type ocur id opar epsilon . LexToken(cpar,')',4,71) yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 yacc.py: 434:Stack : class type ocur id opar param_list_empty . LexToken(cpar,')',4,71) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : class type ocur id opar formals . LexToken(cpar,')',4,71) @@ -72,37 +6192,37 @@ yacc.py: 411:State : 134 yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar new type . LexToken(cpar,')',5,101) yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','Alpha'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 123 - yacc.py: 506:Result : ( comp] with [] and goto state 123 + yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 - yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 149 yacc.py: 430:Defaulted state 149: Reduce using 92 yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar arg_list_empty . LexToken(cpar,')',5,109) yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 153 yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args . LexToken(cpar,')',5,109) @@ -149,37 +6269,37 @@ yacc.py: 411:State : 191 yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args cpar . LexToken(ccur,'}',6,115) yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['print','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'print',5,103), [])) + yacc.py: 506:Result : ((LexToken(id,'print',5,103), [])) yacc.py: 410: yacc.py: 411:State : 167 yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot func_call . LexToken(ccur,'}',6,115) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','Object','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','Object','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 48 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 48 yacc.py: 430:Defaulted state 48: Reduce using 16 yacc.py: 434:Stack : class type ocur def_func semi feature_list . LexToken(ccur,'}',7,118) - yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 14 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',[]] and goto state 14 + yacc.py: 506:Result : ([ class type ocur feature_list ccur semi] with ['class','Main','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( class type ocur feature_list ccur semi] with ['class','Main','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( id colon type] with ['test1',':','Object'] and goto state 17 - yacc.py: 506:Result : ( ( epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar param_list_empty . LexToken(cpar,')',12,172) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals . LexToken(cpar,')',12,172) @@ -306,27 +6426,27 @@ yacc.py: 411:State : 88 yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',13,191) yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing1','(',[],')',':','Int','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing1','(',[],')',':','Int','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( num] with [1.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test2',':','Int','<-',] and goto state 17 - yacc.py: 506:Result : ( id colon type larrow expr] with ['test2',':','Int','<-',] and goto state 17 + yacc.py: 506:Result : ( string] with ['1'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test3',':','String','<-',] and goto state 17 - yacc.py: 506:Result : ( id colon type larrow expr] with ['test3',':','String','<-',] and goto state 17 + yacc.py: 506:Result : ( id colon type] with ['a',':','Alpha'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'a',20,265), LexToken(type, ...) + yacc.py: 506:Result : ((LexToken(id,'a',20,265), LexToken(type, ...) yacc.py: 410: yacc.py: 411:State : 44 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param . LexToken(comma,',',20,273) @@ -559,24 +6679,24 @@ yacc.py: 411:State : 96 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id colon type . LexToken(cpar,')',20,281) yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['b',':','Int'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'b',20,275), LexToken(type, ...) + yacc.py: 506:Result : ((LexToken(id,'b',20,275), LexToken(type, ...) yacc.py: 410: yacc.py: 411:State : 44 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param . LexToken(cpar,')',20,281) - yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 - yacc.py: 506:Result : ([(LexToken(id,'b',20,275), LexToken(type ...) + yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 + yacc.py: 506:Result : ([(LexToken(id,'b',20,275), LexToken(type ...) yacc.py: 410: yacc.py: 411:State : 95 yacc.py: 430:Defaulted state 95: Reduce using 33 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param_list . LexToken(cpar,')',20,281) - yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 - yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) + yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 + yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) yacc.py: 410: yacc.py: 411:State : 42 yacc.py: 430:Defaulted state 42: Reduce using 30 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param_list . LexToken(cpar,')',20,281) - yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 - yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) + yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 + yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals . LexToken(cpar,')',20,281) @@ -601,27 +6721,27 @@ yacc.py: 411:State : 88 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',21,300) yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing2','(',,')',':','Int','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing2','(',,')',':','Int','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar param_list_empty . LexToken(cpar,')',24,325) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals . LexToken(cpar,')',24,325) @@ -728,37 +6848,37 @@ yacc.py: 411:State : 93 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur string . LexToken(ccur,'}',26,357) yacc.py: 469:Action : Reduce rule [atom -> string] with ['2 + 2'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing3','(',[],')',':','String','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing3','(',[],')',':','String','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',28,374) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals . LexToken(cpar,')',28,374) diff --git a/src/cool/utils/helpers.py b/src/cool/utils/helpers.py index e7531933f..b0f95b503 100644 --- a/src/cool/utils/helpers.py +++ b/src/cool/utils/helpers.py @@ -1,5 +1,5 @@ import itertools -from semantic.types import Type, SelfType +from ..semantic.types import Type, SelfType def find_column(lexer, token): From 9fc8d22952ee3ed9e776f694fc58770682d65d87 Mon Sep 17 00:00:00 2001 From: JCH97 Date: Mon, 1 Nov 2021 15:10:05 -0400 Subject: [PATCH 30/44] feat(semantic): add new types' management --- src/cool/code.cl | 42 +- src/cool/parser/output/parselog.txt | 1705 +++++++++++------ src/cool/semantic/collectVariables.py | 227 +++ src/cool/semantic/semantic.py | 47 +- src/cool/semantic/typeBuilder.py | 2 +- src/cool/semantic/typeChecker.py | 254 ++- .../{typeCollectorpy.py => typeCollector.py} | 2 +- src/cool/utils/helpers.py | 27 + src/main.py | 11 +- 9 files changed, 1683 insertions(+), 634 deletions(-) create mode 100644 src/cool/semantic/collectVariables.py rename src/cool/semantic/{typeCollectorpy.py => typeCollector.py} (96%) diff --git a/src/cool/code.cl b/src/cool/code.cl index 75b4c5bbd..bf94eb194 100644 --- a/src/cool/code.cl +++ b/src/cool/code.cl @@ -1,37 +1,11 @@ -(* An assignment has the form <- *) +--The static types of the two sub-expressions must be Int. -class Main { - main(): Object { - (new Alpha).print() - }; -}; +class A { }; +class B inherits A { }; +class C inherits B { }; -class Test { - test1: Object; - - testing1(): Int { - 2 + 2 - }; - - test2: Int <- 1; - - test3: String <- "1"; - - testing2(a: Alpha, b: Int): Int { - 2 + 2 - }; - - testing3(): String { - "2 + 2" - }; - - testing4(): String { - Test1 <- "Hello World" -- Identifiers begin with a lower case letter - }; -}; - -class Alpha inherits IO { - print() : Object { - out_string("reached!!\n") - }; +class Main inherits IO { + main(): IO { out_string("Hello World!")}; + test: Int <- let x: Int <- 1 * 2 / 3 - 4 + new A.type_name().concat(new B.type_name().concat(new C.type_name())).length() + in x <- x + new A.type_name().concat(new B.type_name().concat(new C.type_name())); }; \ No newline at end of file diff --git a/src/cool/parser/output/parselog.txt b/src/cool/parser/output/parselog.txt index 3c686f1cc..500000540 100644 --- a/src/cool/parser/output/parselog.txt +++ b/src/cool/parser/output/parselog.txt @@ -6125,816 +6125,1337 @@ yacc.py: 362:PLY: PARSE DEBUG START yacc.py: 410: yacc.py: 411:State : 0 - yacc.py: 434:Stack : . LexToken(class,'class',3,49) + yacc.py: 434:Stack : . LexToken(class,'class',3,60) yacc.py: 445:Action : Shift and goto state 5 yacc.py: 410: yacc.py: 411:State : 5 - yacc.py: 434:Stack : class . LexToken(type,'Main',3,55) + yacc.py: 434:Stack : class . LexToken(type,'A',3,66) yacc.py: 445:Action : Shift and goto state 8 yacc.py: 410: yacc.py: 411:State : 8 - yacc.py: 434:Stack : class type . LexToken(ocur,'{',3,60) + yacc.py: 434:Stack : class type . LexToken(ocur,'{',3,68) yacc.py: 445:Action : Shift and goto state 10 yacc.py: 410: yacc.py: 411:State : 10 - yacc.py: 434:Stack : class type ocur . LexToken(id,'main',4,66) - yacc.py: 445:Action : Shift and goto state 19 - yacc.py: 410: - yacc.py: 411:State : 19 - yacc.py: 434:Stack : class type ocur id . LexToken(opar,'(',4,70) - yacc.py: 445:Action : Shift and goto state 32 - yacc.py: 410: - yacc.py: 411:State : 32 - yacc.py: 434:Stack : class type ocur id opar . LexToken(cpar,')',4,71) - yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 45 + yacc.py: 434:Stack : class type ocur . LexToken(ccur,'}',3,70) + yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 16 yacc.py: 548:Result : (None) yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : class type ocur id opar epsilon . LexToken(cpar,')',4,71) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : class type ocur id opar param_list_empty . LexToken(cpar,')',4,71) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : class type ocur id opar formals . LexToken(cpar,')',4,71) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : class type ocur id opar formals cpar . LexToken(colon,':',4,72) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon . LexToken(type,'Object',4,74) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type . LexToken(ocur,'{',4,81) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur . LexToken(opar,'(',5,91) - yacc.py: 445:Action : Shift and goto state 80 - yacc.py: 410: - yacc.py: 411:State : 80 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar . LexToken(new,'new',5,92) - yacc.py: 445:Action : Shift and goto state 89 - yacc.py: 410: - yacc.py: 411:State : 89 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar new . LexToken(type,'Alpha',5,96) - yacc.py: 445:Action : Shift and goto state 134 - yacc.py: 410: - yacc.py: 411:State : 134 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar new type . LexToken(cpar,')',5,101) - yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','Alpha'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( epsilon] with [None] and goto state 14 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 75 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur opar term . LexToken(cpar,')',5,101) - yacc.py: 469:Action : Reduce rule [op -> term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 123 - yacc.py: 506:Result : ( class type ocur feature_list ccur semi] with ['class','A','{',[],'}',';'] and goto state 3 + yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 - yacc.py: 506:Result : ( ] with [] and goto state 150 + yacc.py: 411:State : 33 + yacc.py: 434:Stack : def_class class type inherits type ocur . LexToken(ccur,'}',4,94) + yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 16 yacc.py: 548:Result : (None) yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar epsilon . LexToken(cpar,')',5,109) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar arg_list_empty . LexToken(cpar,')',5,109) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args . LexToken(cpar,')',5,109) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot id opar args cpar . LexToken(ccur,'}',6,115) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['print','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'print',5,103), [])) - yacc.py: 410: - yacc.py: 411:State : 167 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor dot func_call . LexToken(ccur,'}',6,115) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( epsilon] with [None] and goto state 53 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 77 - yacc.py: 434:Stack : class type ocur id opar formals cpar colon type ocur factor . LexToken(ccur,'}',6,115) - yacc.py: 469:Action : Reduce rule [base_call -> factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( class type inherits type ocur feature_list ccur semi] with ['class','B','inherits','A','{',[],'}',';'] and goto state 3 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','Object','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 16 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 16 yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : class type ocur def_func semi epsilon . LexToken(ccur,'}',7,118) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 48 - yacc.py: 430:Defaulted state 48: Reduce using 16 - yacc.py: 434:Stack : class type ocur def_func semi feature_list . LexToken(ccur,'}',7,118) - yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 14 - yacc.py: 506:Result : ([ epsilon] with [None] and goto state 53 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 14 - yacc.py: 434:Stack : class type ocur feature_list . LexToken(ccur,'}',7,118) - yacc.py: 445:Action : Shift and goto state 25 + yacc.py: 411:State : 53 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur feature_list . LexToken(ccur,'}',5,118) + yacc.py: 445:Action : Shift and goto state 66 yacc.py: 410: - yacc.py: 411:State : 25 - yacc.py: 434:Stack : class type ocur feature_list ccur . LexToken(semi,';',7,119) - yacc.py: 445:Action : Shift and goto state 38 + yacc.py: 411:State : 66 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur feature_list ccur . LexToken(semi,';',5,119) + yacc.py: 445:Action : Shift and goto state 102 yacc.py: 410: - yacc.py: 411:State : 38 - yacc.py: 434:Stack : class type ocur feature_list ccur semi . LexToken(class,'class',9,122) - yacc.py: 469:Action : Reduce rule [def_class -> class type ocur feature_list ccur semi] with ['class','Main','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( class type inherits type ocur feature_list ccur semi] with ['class','C','inherits','B','{',[],'}',';'] and goto state 3 + yacc.py: 506:Result : ( id colon type] with ['test1',':','Object'] and goto state 17 - yacc.py: 506:Result : ( ] with [] and goto state 45 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 45 yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar epsilon . LexToken(cpar,')',12,172) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar epsilon . LexToken(cpar,')',8,153) yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar param_list_empty . LexToken(cpar,')',12,172) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar param_list_empty . LexToken(cpar,')',8,153) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals . LexToken(cpar,')',12,172) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar formals . LexToken(cpar,')',8,153) yacc.py: 445:Action : Shift and goto state 64 yacc.py: 410: yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar . LexToken(colon,':',12,173) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar formals cpar . LexToken(colon,':',8,154) yacc.py: 445:Action : Shift and goto state 100 yacc.py: 410: yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon . LexToken(type,'Int',12,175) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar formals cpar colon . LexToken(type,'IO',8,156) yacc.py: 445:Action : Shift and goto state 138 yacc.py: 410: yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',12,179) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar formals cpar colon type . LexToken(ocur,'{',8,159) yacc.py: 445:Action : Shift and goto state 181 yacc.py: 410: yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type ocur . LexToken(num,2.0,13,189) - yacc.py: 445:Action : Shift and goto state 88 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar formals cpar colon type ocur . LexToken(id,'out_string',8,161) + yacc.py: 445:Action : Shift and goto state 72 yacc.py: 410: - yacc.py: 411:State : 88 - yacc.py: 434:Stack : def_class class type ocur def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',13,191) - yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( string] with ['Hello World!'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ atom] with [] and goto state 77 - yacc.py: 506:Result : ( arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'out_string',8,161), [ func_call] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['testing1','(',[],')',':','Int','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','IO','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( id colon type] with ['x',':','Int'] and goto state 130 + yacc.py: 506:Result : ((LexToken(id,'x',9,208), LexToken(type,' ...) + yacc.py: 410: + yacc.py: 411:State : 130 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param . LexToken(larrow,'<-',9,215) + yacc.py: 445:Action : Shift and goto state 173 + yacc.py: 410: + yacc.py: 411:State : 173 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow . LexToken(num,1.0,9,218) yacc.py: 445:Action : Shift and goto state 88 yacc.py: 410: yacc.py: 411:State : 88 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi id colon type larrow num . LexToken(semi,';',16,222) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow num . LexToken(star,'*',9,220) yacc.py: 469:Action : Reduce rule [atom -> num] with [1.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( id colon type larrow expr] with ['test2',':','Int','<-',] and goto state 17 - yacc.py: 506:Result : ( num] with [2.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 161 + yacc.py: 506:Result : ( term star base_call] with [,'*',] and goto state 75 + yacc.py: 506:Result : ( string] with ['1'] and goto state 79 - yacc.py: 506:Result : ( num] with [3.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 163 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term div base_call] with [,'/',] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( id colon type larrow expr] with ['test3',':','String','<-',] and goto state 17 - yacc.py: 506:Result : ( id colon type] with ['a',':','Alpha'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'a',20,265), LexToken(type, ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param . LexToken(comma,',',20,273) - yacc.py: 445:Action : Shift and goto state 60 - yacc.py: 410: - yacc.py: 411:State : 60 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma . LexToken(id,'b',20,275) - yacc.py: 445:Action : Shift and goto state 46 - yacc.py: 410: - yacc.py: 411:State : 46 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id . LexToken(colon,':',20,276) - yacc.py: 445:Action : Shift and goto state 61 - yacc.py: 410: - yacc.py: 411:State : 61 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id colon . LexToken(type,'Int',20,278) - yacc.py: 445:Action : Shift and goto state 96 - yacc.py: 410: - yacc.py: 411:State : 96 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma id colon type . LexToken(cpar,')',20,281) - yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['b',':','Int'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'b',20,275), LexToken(type, ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param . LexToken(cpar,')',20,281) - yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 - yacc.py: 506:Result : ([(LexToken(id,'b',20,275), LexToken(type ...) - yacc.py: 410: - yacc.py: 411:State : 95 - yacc.py: 430:Defaulted state 95: Reduce using 33 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param comma param_list . LexToken(cpar,')',20,281) - yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 - yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) - yacc.py: 410: - yacc.py: 411:State : 42 - yacc.py: 430:Defaulted state 42: Reduce using 30 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar param_list . LexToken(cpar,')',20,281) - yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 - yacc.py: 506:Result : ([(LexToken(id,'a',20,265), LexToken(type ...) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals . LexToken(cpar,')',20,281) - yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op . LexToken(minus,'-',9,228) + yacc.py: 445:Action : Shift and goto state 118 yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar . LexToken(colon,':',20,282) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon . LexToken(type,'Int',20,284) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',20,288) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur . LexToken(num,2.0,21,298) + yacc.py: 411:State : 118 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus . LexToken(num,4.0,9,230) yacc.py: 445:Action : Shift and goto state 88 yacc.py: 410: yacc.py: 411:State : 88 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur num . LexToken(plus,'+',21,300) - yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( num] with [4.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 160 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op minus term] with [,'-',] and goto state 74 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( new type] with ['new','A'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( ] with [] and goto state 150 + yacc.py: 548:Result : (None) yacc.py: 410: - yacc.py: 411:State : 73 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur comp . LexToken(ccur,'}',22,308) - yacc.py: 469:Action : Reduce rule [expr -> comp] with [] and goto state 206 - yacc.py: 506:Result : ( epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 206 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur expr . LexToken(ccur,'}',22,308) - yacc.py: 445:Action : Shift and goto state 222 + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar arg_list_empty . LexToken(cpar,')',9,250) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 222 - yacc.py: 430:Defaulted state 222: Reduce using 25 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi id opar formals cpar colon type ocur expr ccur . None - yacc.py: 469:Action : Reduce rule [def_func -> id opar formals cpar colon type ocur expr ccur] with ['testing2','(',,')',':','Int','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar args cpar] with ['type_name','(',[],')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'type_name',9,240), [])) yacc.py: 410: - yacc.py: 411:State : 30 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi . LexToken(id,'testing3',24,316) - yacc.py: 445:Action : Shift and goto state 19 + yacc.py: 411:State : 167 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot func_call . LexToken(dot,'.',9,251) + yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 411:State : 122 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot . LexToken(id,'concat',9,252) + yacc.py: 445:Action : Shift and goto state 168 + yacc.py: 410: + yacc.py: 411:State : 168 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id . LexToken(opar,'(',9,258) + yacc.py: 445:Action : Shift and goto state 113 + yacc.py: 410: + yacc.py: 411:State : 113 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar . LexToken(new,'new',9,259) + yacc.py: 445:Action : Shift and goto state 89 + yacc.py: 410: + yacc.py: 411:State : 89 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar new . LexToken(type,'B',9,263) + yacc.py: 445:Action : Shift and goto state 134 + yacc.py: 410: + yacc.py: 411:State : 134 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar new type . LexToken(dot,'.',9,264) + yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','B'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 yacc.py: 548:Result : (None) yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar epsilon . LexToken(cpar,')',24,325) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar epsilon . LexToken(cpar,')',9,275) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar param_list_empty . LexToken(cpar,')',24,325) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',9,275) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals . LexToken(cpar,')',24,325) - yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 411:State : 153 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar args . LexToken(cpar,')',9,275) + yacc.py: 445:Action : Shift and goto state 191 yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar . LexToken(colon,':',24,326) - yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 411:State : 191 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar args cpar . LexToken(dot,'.',9,276) + yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'type_name',9,265), [])) yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi id opar formals cpar colon . LexToken(type,'String',24,328) - yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 411:State : 167 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot func_call . LexToken(dot,'.',9,276) + yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( string] with ['2 + 2'] and goto state 79 - yacc.py: 506:Result : ( new type] with ['new','C'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar factor dot id opar epsilon . LexToken(cpar,')',9,300) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',9,300) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 153 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar factor dot id opar args . LexToken(cpar,')',9,300) + yacc.py: 445:Action : Shift and goto state 191 + yacc.py: 410: + yacc.py: 411:State : 191 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar factor dot id opar args cpar . LexToken(cpar,')',9,301) + yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'type_name',9,290), [])) + yacc.py: 410: + yacc.py: 411:State : 167 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar factor dot func_call . LexToken(cpar,')',9,301) + yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ id opar formals cpar colon type ocur expr ccur] with ['testing3','(',[],')',':','String','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['concat','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'concat',9,277), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 411:State : 77 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor . LexToken(cpar,')',9,302) + yacc.py: 469:Action : Reduce rule [base_call -> factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['concat','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'concat',9,252), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 yacc.py: 548:Result : (None) yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',28,374) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar epsilon . LexToken(cpar,')',9,311) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',28,374) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar arg_list_empty . LexToken(cpar,')',9,311) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals . LexToken(cpar,')',28,374) - yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 411:State : 153 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar args . LexToken(cpar,')',9,311) + yacc.py: 445:Action : Shift and goto state 191 yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',28,375) - yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 411:State : 191 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar args cpar . LexToken(in,'in',10,317) + yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['length','(',[],')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'length',9,304), [])) yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class class type ocur def_attr semi def_func semi def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'String',28,377) - yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 411:State : 167 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot func_call . LexToken(in,'in',10,317) + yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 + yacc.py: 506:Result : ( let_assign] with [] and goto state 128 + yacc.py: 506:Result : ([ id] with ['x'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( new type] with ['new','A'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar epsilon . LexToken(cpar,')',10,345) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar arg_list_empty . LexToken(cpar,')',10,345) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 153 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar args . LexToken(cpar,')',10,345) + yacc.py: 445:Action : Shift and goto state 191 + yacc.py: 410: + yacc.py: 411:State : 191 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar args cpar . LexToken(dot,'.',10,346) + yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'type_name',10,335), [])) + yacc.py: 410: + yacc.py: 411:State : 167 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot func_call . LexToken(dot,'.',10,346) + yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( new type] with ['new','B'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar epsilon . LexToken(cpar,')',10,370) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',10,370) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 153 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar args . LexToken(cpar,')',10,370) + yacc.py: 445:Action : Shift and goto state 191 + yacc.py: 410: + yacc.py: 411:State : 191 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar args cpar . LexToken(dot,'.',10,371) + yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'type_name',10,360), [])) + yacc.py: 410: + yacc.py: 411:State : 167 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot func_call . LexToken(dot,'.',10,371) + yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( new type] with ['new','C'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar factor dot id opar epsilon . LexToken(cpar,')',10,395) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',10,395) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 153 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar factor dot id opar args . LexToken(cpar,')',10,395) + yacc.py: 445:Action : Shift and goto state 191 + yacc.py: 410: + yacc.py: 411:State : 191 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar factor dot id opar args cpar . LexToken(cpar,')',10,396) + yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'type_name',10,385), [])) + yacc.py: 410: + yacc.py: 411:State : 167 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar factor dot func_call . LexToken(cpar,')',10,396) + yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['concat','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'concat',10,372), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['concat','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'concat',10,347), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 152 + yacc.py: 506:Result : ( id larrow expr] with ['x','<-',] and goto state 196 + yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test',':','Int','<-',] and goto state 17 + yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 16 + yacc.py: 430:Defaulted state 16: Reduce using 14 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi def_attr semi epsilon . LexToken(ccur,'}',11,400) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 47 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 47 + yacc.py: 430:Defaulted state 47: Reduce using 15 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi def_attr semi feature_list . LexToken(ccur,'}',11,400) + yacc.py: 469:Action : Reduce rule [feature_list -> def_attr semi feature_list] with [,';',[]] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 53 + yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['class','Main','inherits','IO','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( def_class] with [] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 2 + yacc.py: 506:Result : ([ class_list] with [] and goto state 1 + yacc.py: 506:Result : ( ( len(method.param_types): + error_text = SemanticError.ARGUMENT_ERROR % method.name + self.errors.append(SemanticError(error_text, *pos)) + elif len(arg_types) < len(method.param_types): + for arg, arg_info in zip(method.param_names[len(arg_types):], args[len(arg_types):]): + error_text = SemanticError.ARGUMENT_ERROR % method.name + self.errors.append(SemanticError(error_text, *arg_info.pos)) + + for atype, ptype, param_name in zip(arg_types, method.param_types, method.param_names): + if not atype.conforms_to(ptype): + error_text = TypesError.INCOSISTENT_ARG_TYPE % (method.name, atype.name, param_name, ptype.name) + self.errors.append(TypesError(error_text, *pos)) + + def _get_type(self, _type: str, pos): + try: + return self.context.get_type(_type, pos) + except SemanticError as e: + self.errors.append(e) + return ErrorType() + + def _get_method(self, _type: Type, name: str, pos) -> Method: + try: + return _type.get_method(name, pos) + except SemanticError as e: + if type(_type) != ErrorType and type(_type) != AutoType: + error_text = AttributesError.DISPATCH_UNDEFINED % name + self.errors.append(AttributesError(error_text, *pos)) + return MethodError(name, [], [], ErrorType()) + + def find_variable(self, scope, lex): + var_info = scope.find_local(lex) + + if var_info is None: + var_info = scope.find_attribute(lex) + + if lex in self.current_type.attributes and var_info is None: + return VariableInfo(lex, VoidType()) + + return var_info diff --git a/src/cool/semantic/typeCollectorpy.py b/src/cool/semantic/typeCollector.py similarity index 96% rename from src/cool/semantic/typeCollectorpy.py rename to src/cool/semantic/typeCollector.py index 73805975e..e013af859 100644 --- a/src/cool/semantic/typeCollectorpy.py +++ b/src/cool/semantic/typeCollector.py @@ -5,7 +5,7 @@ class TypeCollector: - def __int__(self, errors=[]): + def __init__(self, errors=[]): self.context = None self.errors = errors diff --git a/src/cool/utils/helpers.py b/src/cool/utils/helpers.py index b0f95b503..d9e68a15d 100644 --- a/src/cool/utils/helpers.py +++ b/src/cool/utils/helpers.py @@ -1,5 +1,7 @@ import itertools from ..semantic.types import Type, SelfType +from typing import List +from .errors import SemanticError, TypesError def find_column(lexer, token): @@ -9,3 +11,28 @@ def find_column(lexer, token): def get_type(typex: Type, current_type: Type) -> Type: return current_type if typex == SelfType() else typex + + +def path_to_objet(_type): + path = [] + c_type = _type + + while c_type: + path.append(c_type) + c_type = c_type.parent + + path.reverse() + + return path + + +def get_common_base_type(types): + paths = [path_to_objet(_type) for _type in types] + tuples = zip(*paths) + + for i, t in enumerate(tuples): + gr = itertools.groupby(t) + if len(list(gr)) > 1: + return paths[0][i - 1] + + return paths[0][-1] diff --git a/src/main.py b/src/main.py index 4ef377793..e7d4365e6 100644 --- a/src/main.py +++ b/src/main.py @@ -4,6 +4,7 @@ from cool.lexer import CoolLexer, main from cool.parser.parser import CoolParser +from cool.semantic.semantic import main_semantic from cool.utils.errors import SyntacticError if __name__ == '__main__': @@ -35,4 +36,12 @@ parser = CoolParser(lexer) ast = parser.parse(text) - # print(result) + if parser.errors: + raise Exception() + + ast, errors, context, scope = main_semantic(ast, True) + + if errors: + for err in errors: + print(err) + raise Exception() \ No newline at end of file From 222a5866011a7b8b95595df29ad4b5ae53242156 Mon Sep 17 00:00:00 2001 From: JCH97 Date: Mon, 1 Nov 2021 15:39:54 -0400 Subject: [PATCH 31/44] fix(semantic): visit new type in typeBuilder --- src/cool/code.cl | 2 +- src/cool/parser/output/parselog.txt | 532 ++++++++++++++-------------- src/cool/semantic/typeBuilder.py | 17 + src/main.py | 5 +- 4 files changed, 288 insertions(+), 268 deletions(-) diff --git a/src/cool/code.cl b/src/cool/code.cl index bf94eb194..93a371e1c 100644 --- a/src/cool/code.cl +++ b/src/cool/code.cl @@ -8,4 +8,4 @@ class Main inherits IO { main(): IO { out_string("Hello World!")}; test: Int <- let x: Int <- 1 * 2 / 3 - 4 + new A.type_name().concat(new B.type_name().concat(new C.type_name())).length() in x <- x + new A.type_name().concat(new B.type_name().concat(new C.type_name())); -}; \ No newline at end of file +}; diff --git a/src/cool/parser/output/parselog.txt b/src/cool/parser/output/parselog.txt index 500000540..43b78530b 100644 --- a/src/cool/parser/output/parselog.txt +++ b/src/cool/parser/output/parselog.txt @@ -6145,7 +6145,7 @@ yacc.py: 430:Defaulted state 16: Reduce using 14 yacc.py: 434:Stack : class type ocur epsilon . LexToken(ccur,'}',3,70) yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 14 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 14 yacc.py: 434:Stack : class type ocur feature_list . LexToken(ccur,'}',3,70) @@ -6158,7 +6158,7 @@ yacc.py: 411:State : 38 yacc.py: 434:Stack : class type ocur feature_list ccur semi . LexToken(class,'class',4,73) yacc.py: 469:Action : Reduce rule [def_class -> class type ocur feature_list ccur semi] with ['class','A','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( ( epsilon] with [None] and goto state 53 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 53 yacc.py: 434:Stack : def_class class type inherits type ocur feature_list . LexToken(ccur,'}',4,94) @@ -6202,7 +6202,7 @@ yacc.py: 411:State : 102 yacc.py: 434:Stack : def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',5,97) yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','B','inherits','A','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( ( epsilon] with [None] and goto state 53 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 53 yacc.py: 434:Stack : def_class def_class class type inherits type ocur feature_list . LexToken(ccur,'}',5,118) @@ -6246,7 +6246,7 @@ yacc.py: 411:State : 102 yacc.py: 434:Stack : def_class def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',7,122) yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','C','inherits','B','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( ( epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar param_list_empty . LexToken(cpar,')',8,153) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar formals . LexToken(cpar,')',8,153) @@ -6324,48 +6324,48 @@ yacc.py: 411:State : 93 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar formals cpar colon type ocur id opar string . LexToken(cpar,')',8,186) yacc.py: 469:Action : Reduce rule [atom -> string] with ['Hello World!'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'out_string',8,161), [ id opar args cpar] with ['out_string','(',,')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'out_string',8,161), [ func_call] with [] and goto state 77 - yacc.py: 506:Result : ( func_call] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','IO','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','IO','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( id colon type] with ['x',':','Int'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'x',9,208), LexToken(type,' ...) + yacc.py: 506:Result : ((LexToken(id,'x',9,208), LexToken(type,' ...) yacc.py: 410: yacc.py: 411:State : 130 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param . LexToken(larrow,'<-',9,215) @@ -6468,22 +6468,22 @@ yacc.py: 411:State : 88 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow num . LexToken(star,'*',9,220) yacc.py: 469:Action : Reduce rule [atom -> num] with [1.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 161 - yacc.py: 506:Result : ( factor] with [] and goto state 161 + yacc.py: 506:Result : ( term star base_call] with [,'*',] and goto state 75 - yacc.py: 506:Result : ( term star base_call] with [,'*',] and goto state 75 + yacc.py: 506:Result : ( num] with [3.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 163 - yacc.py: 506:Result : ( factor] with [] and goto state 163 + yacc.py: 506:Result : ( term div base_call] with [,'/',] and goto state 75 - yacc.py: 506:Result : ( term div base_call] with [,'/',] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [4.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 160 - yacc.py: 506:Result : ( base_call] with [] and goto state 160 + yacc.py: 506:Result : ( op minus term] with [,'-',] and goto state 74 - yacc.py: 506:Result : ( op minus term] with [,'-',] and goto state 74 + yacc.py: 506:Result : ( new type] with ['new','A'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 149 yacc.py: 430:Defaulted state 149: Reduce using 92 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar arg_list_empty . LexToken(cpar,')',9,250) yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 153 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar args . LexToken(cpar,')',9,250) @@ -6637,12 +6637,12 @@ yacc.py: 411:State : 191 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar args cpar . LexToken(dot,'.',9,251) yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',9,240), [])) + yacc.py: 506:Result : ((LexToken(id,'type_name',9,240), [])) yacc.py: 410: yacc.py: 411:State : 167 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot func_call . LexToken(dot,'.',9,251) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( new type] with ['new','B'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 149 yacc.py: 430:Defaulted state 149: Reduce using 92 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',9,275) yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 153 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar args . LexToken(cpar,')',9,275) @@ -6710,12 +6710,12 @@ yacc.py: 411:State : 191 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar args cpar . LexToken(dot,'.',9,276) yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',9,265), [])) + yacc.py: 506:Result : ((LexToken(id,'type_name',9,265), [])) yacc.py: 410: yacc.py: 411:State : 167 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot func_call . LexToken(dot,'.',9,276) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( new type] with ['new','C'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 149 yacc.py: 430:Defaulted state 149: Reduce using 92 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',9,300) yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 153 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar factor dot id opar args . LexToken(cpar,')',9,300) @@ -6783,48 +6783,48 @@ yacc.py: 411:State : 191 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar factor dot id opar args cpar . LexToken(cpar,')',9,301) yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',9,290), [])) + yacc.py: 506:Result : ((LexToken(id,'type_name',9,290), [])) yacc.py: 410: yacc.py: 411:State : 167 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar factor dot func_call . LexToken(cpar,')',9,301) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['concat','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'concat',9,277), [ id opar args cpar] with ['concat','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'concat',9,277), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['concat','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'concat',9,252), [ id opar args cpar] with ['concat','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'concat',9,252), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 149 yacc.py: 430:Defaulted state 149: Reduce using 92 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar arg_list_empty . LexToken(cpar,')',9,311) yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 153 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar args . LexToken(cpar,')',9,311) @@ -6926,47 +6926,47 @@ yacc.py: 411:State : 191 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar args cpar . LexToken(in,'in',10,317) yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['length','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'length',9,304), [])) + yacc.py: 506:Result : ((LexToken(id,'length',9,304), [])) yacc.py: 410: yacc.py: 411:State : 167 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot func_call . LexToken(in,'in',10,317) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 - yacc.py: 506:Result : ( comp] with [] and goto state 198 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 - yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 + yacc.py: 506:Result : ( let_assign] with [] and goto state 128 - yacc.py: 506:Result : ([ let_assign] with [] and goto state 128 + yacc.py: 506:Result : ([ id] with ['x'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( new type] with ['new','A'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 149 yacc.py: 430:Defaulted state 149: Reduce using 92 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar arg_list_empty . LexToken(cpar,')',10,345) yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 153 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar args . LexToken(cpar,')',10,345) @@ -7067,12 +7067,12 @@ yacc.py: 411:State : 191 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar args cpar . LexToken(dot,'.',10,346) yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',10,335), [])) + yacc.py: 506:Result : ((LexToken(id,'type_name',10,335), [])) yacc.py: 410: yacc.py: 411:State : 167 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot func_call . LexToken(dot,'.',10,346) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( new type] with ['new','B'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 149 yacc.py: 430:Defaulted state 149: Reduce using 92 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',10,370) yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 153 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar args . LexToken(cpar,')',10,370) @@ -7140,12 +7140,12 @@ yacc.py: 411:State : 191 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar args cpar . LexToken(dot,'.',10,371) yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',10,360), [])) + yacc.py: 506:Result : ((LexToken(id,'type_name',10,360), [])) yacc.py: 410: yacc.py: 411:State : 167 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot func_call . LexToken(dot,'.',10,371) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( new type] with ['new','C'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 149 yacc.py: 430:Defaulted state 149: Reduce using 92 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',10,395) yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 153 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar factor dot id opar args . LexToken(cpar,')',10,395) @@ -7213,48 +7213,48 @@ yacc.py: 411:State : 191 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar factor dot id opar args cpar . LexToken(cpar,')',10,396) yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',10,385), [])) + yacc.py: 506:Result : ((LexToken(id,'type_name',10,385), [])) yacc.py: 410: yacc.py: 411:State : 167 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar factor dot func_call . LexToken(cpar,')',10,396) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['concat','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'concat',10,372), [ id opar args cpar] with ['concat','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'concat',10,372), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['concat','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'concat',10,347), [ id opar args cpar] with ['concat','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'concat',10,347), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 152 - yacc.py: 506:Result : ( comp] with [] and goto state 152 + yacc.py: 506:Result : ( id larrow expr] with ['x','<-',] and goto state 196 - yacc.py: 506:Result : ( id larrow expr] with ['x','<-',] and goto state 196 + yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 - yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test',':','Int','<-',] and goto state 17 - yacc.py: 506:Result : ( id colon type larrow expr] with ['test',':','Int','<-',] and goto state 17 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 47 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 47 yacc.py: 430:Defaulted state 47: Reduce using 15 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi def_attr semi feature_list . LexToken(ccur,'}',11,400) - yacc.py: 469:Action : Reduce rule [feature_list -> def_attr semi feature_list] with [,';',[]] and goto state 48 - yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',[]] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 53 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 53 + yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['class','Main','inherits','IO','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( class type inherits type ocur feature_list ccur semi] with ['class','Main','inherits','IO','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( def_class] with [] and goto state 6 - yacc.py: 506:Result : ([ def_class] with [] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 2 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 2 + yacc.py: 506:Result : ([ class_list] with [] and goto state 1 - yacc.py: 506:Result : ( class_list] with [] and goto state 1 + yacc.py: 506:Result : ( ( ( Date: Mon, 1 Nov 2021 15:44:45 -0400 Subject: [PATCH 32/44] chore(semantic): remove prints --- src/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.py b/src/main.py index 07e60a17f..0bb775f39 100644 --- a/src/main.py +++ b/src/main.py @@ -42,7 +42,7 @@ if parser.errors: raise Exception() - ast, errors, context, scope = main_semantic(ast, True) + ast, errors, context, scope = main_semantic(ast, False) if errors: for err in errors: From b8a4d8f749bb890371fc22f5fe14f21733e14351 Mon Sep 17 00:00:00 2001 From: JCH97 Date: Wed, 22 Dec 2021 20:56:56 -0500 Subject: [PATCH 33/44] fix(semantic): check tests --- src/cool/code.cl | 6 +- src/cool/lexer/lexer.py | 20 +- src/cool/parser/output/parselog.txt | 924 ++++++++++++++-------------- src/main.py | 16 +- 4 files changed, 491 insertions(+), 475 deletions(-) diff --git a/src/cool/code.cl b/src/cool/code.cl index 93a371e1c..2e608ee47 100644 --- a/src/cool/code.cl +++ b/src/cool/code.cl @@ -1,4 +1,4 @@ ---The static types of the two sub-expressions must be Int. +--The static type of the expression is Int. class A { }; class B inherits A { }; @@ -6,6 +6,6 @@ class C inherits B { }; class Main inherits IO { main(): IO { out_string("Hello World!")}; - test: Int <- let x: Int <- 1 * 2 / 3 - 4 + new A.type_name().concat(new B.type_name().concat(new C.type_name())).length() - in x <- x + new A.type_name().concat(new B.type_name().concat(new C.type_name())); + test: Bool <- let x: Int <- 1 / 2 - 3 + 4 * new A.type_name().concat(new B.type_name().concat(new C.type_name())).length() + in x <- x * new A.type_name().concat(new B.type_name().concat(new C.type_name())).length(); }; diff --git a/src/cool/lexer/lexer.py b/src/cool/lexer/lexer.py index 5a3b816ca..5607ea391 100644 --- a/src/cool/lexer/lexer.py +++ b/src/cool/lexer/lexer.py @@ -104,13 +104,27 @@ def t_strings_nill(self, t): def t_strings_consume(self, t): r'[^\n]' + # self._update_column(t) if t.lexer.backslash: - if t.value in ['b', 't', 'f', 'n', '\\']: - t.lexer.myString += f'\{t.value}' + if t.value == 'b': + t.lexer.myString += '\b' + + elif t.value == 't': + t.lexer.myString += '\t' + + + elif t.value == 'f': + t.lexer.myString += '\f' + + + elif t.value == 'n': + t.lexer.myString += '\n' + + elif t.value == '\\': + t.lexer.myString += '\\' else: t.lexer.myString += t.value - t.lexer.backslash = False else: if t.value != '\\': diff --git a/src/cool/parser/output/parselog.txt b/src/cool/parser/output/parselog.txt index 43b78530b..f61d7264e 100644 --- a/src/cool/parser/output/parselog.txt +++ b/src/cool/parser/output/parselog.txt @@ -6145,7 +6145,7 @@ yacc.py: 430:Defaulted state 16: Reduce using 14 yacc.py: 434:Stack : class type ocur epsilon . LexToken(ccur,'}',3,70) yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 14 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 14 yacc.py: 434:Stack : class type ocur feature_list . LexToken(ccur,'}',3,70) @@ -6158,7 +6158,7 @@ yacc.py: 411:State : 38 yacc.py: 434:Stack : class type ocur feature_list ccur semi . LexToken(class,'class',4,73) yacc.py: 469:Action : Reduce rule [def_class -> class type ocur feature_list ccur semi] with ['class','A','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( ( epsilon] with [None] and goto state 53 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 53 yacc.py: 434:Stack : def_class class type inherits type ocur feature_list . LexToken(ccur,'}',4,94) @@ -6202,7 +6202,7 @@ yacc.py: 411:State : 102 yacc.py: 434:Stack : def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',5,97) yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','B','inherits','A','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( ( epsilon] with [None] and goto state 53 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 53 yacc.py: 434:Stack : def_class def_class class type inherits type ocur feature_list . LexToken(ccur,'}',5,118) @@ -6246,7 +6246,7 @@ yacc.py: 411:State : 102 yacc.py: 434:Stack : def_class def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',7,122) yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','C','inherits','B','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( ( epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar param_list_empty . LexToken(cpar,')',8,153) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar formals . LexToken(cpar,')',8,153) @@ -6324,48 +6324,48 @@ yacc.py: 411:State : 93 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar formals cpar colon type ocur id opar string . LexToken(cpar,')',8,186) yacc.py: 469:Action : Reduce rule [atom -> string] with ['Hello World!'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'out_string',8,161), [ id opar args cpar] with ['out_string','(',,')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'out_string',8,161), [ func_call] with [] and goto state 77 - yacc.py: 506:Result : ( func_call] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','IO','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','IO','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( id colon type] with ['x',':','Int'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'x',9,208), LexToken(type,' ...) + yacc.py: 506:Result : ((LexToken(id,'x',9,208), LexToken(type,' ...) yacc.py: 410: yacc.py: 411:State : 130 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param . LexToken(larrow,'<-',9,215) @@ -6466,507 +6466,507 @@ yacc.py: 445:Action : Shift and goto state 88 yacc.py: 410: yacc.py: 411:State : 88 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow num . LexToken(star,'*',9,220) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow num . LexToken(plus,'+',9,220) yacc.py: 469:Action : Reduce rule [atom -> num] with [1.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 161 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( term star base_call] with [,'*',] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 159 + yacc.py: 506:Result : ( num] with [3.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 163 - yacc.py: 506:Result : ( term div base_call] with [,'/',] and goto state 75 - yacc.py: 506:Result : ( factor] with [] and goto state 161 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term star base_call] with [,'*',] and goto state 159 + yacc.py: 506:Result : ( num] with [4.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 163 + yacc.py: 506:Result : ( base_call] with [] and goto state 160 - yacc.py: 506:Result : ( term div base_call] with [,'/',] and goto state 159 + yacc.py: 506:Result : ( op minus term] with [,'-',] and goto state 74 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 + yacc.py: 506:Result : ( new type] with ['new','A'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 150 yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar epsilon . LexToken(cpar,')',9,250) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar epsilon . LexToken(cpar,')',9,250) yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 149 yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar arg_list_empty . LexToken(cpar,')',9,250) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar arg_list_empty . LexToken(cpar,')',9,250) yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar args . LexToken(cpar,')',9,250) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar args . LexToken(cpar,')',9,250) yacc.py: 445:Action : Shift and goto state 191 yacc.py: 410: yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar args cpar . LexToken(dot,'.',9,251) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar args cpar . LexToken(dot,'.',9,251) yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',9,240), [])) + yacc.py: 506:Result : ((LexToken(id,'type_name',9,240), [])) yacc.py: 410: yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot func_call . LexToken(dot,'.',9,251) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( new type] with ['new','B'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 150 yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar epsilon . LexToken(cpar,')',9,275) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot id opar epsilon . LexToken(cpar,')',9,275) yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 149 yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',9,275) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',9,275) yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar args . LexToken(cpar,')',9,275) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot id opar args . LexToken(cpar,')',9,275) yacc.py: 445:Action : Shift and goto state 191 yacc.py: 410: yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar args cpar . LexToken(dot,'.',9,276) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot id opar args cpar . LexToken(dot,'.',9,276) yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',9,265), [])) + yacc.py: 506:Result : ((LexToken(id,'type_name',9,265), [])) yacc.py: 410: yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot func_call . LexToken(dot,'.',9,276) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( new type] with ['new','C'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 150 yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar factor dot id opar epsilon . LexToken(cpar,')',9,300) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot id opar factor dot id opar epsilon . LexToken(cpar,')',9,300) yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 149 yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',9,300) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',9,300) yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar factor dot id opar args . LexToken(cpar,')',9,300) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot id opar factor dot id opar args . LexToken(cpar,')',9,300) yacc.py: 445:Action : Shift and goto state 191 yacc.py: 410: yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar factor dot id opar args cpar . LexToken(cpar,')',9,301) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot id opar factor dot id opar args cpar . LexToken(cpar,')',9,301) yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',9,290), [])) + yacc.py: 506:Result : ((LexToken(id,'type_name',9,290), [])) yacc.py: 410: yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar factor dot id opar factor dot func_call . LexToken(cpar,')',9,301) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['concat','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'concat',9,277), [ id opar args cpar] with ['concat','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'concat',9,277), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['concat','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'concat',9,252), [ id opar args cpar] with ['concat','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'concat',9,252), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 150 yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar epsilon . LexToken(cpar,')',9,311) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar epsilon . LexToken(cpar,')',9,311) yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 149 yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar arg_list_empty . LexToken(cpar,')',9,311) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar arg_list_empty . LexToken(cpar,')',9,311) yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar args . LexToken(cpar,')',9,311) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar args . LexToken(cpar,')',9,311) yacc.py: 445:Action : Shift and goto state 191 yacc.py: 410: yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot id opar args cpar . LexToken(in,'in',10,317) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar args cpar . LexToken(in,'in',10,317) yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['length','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'length',9,304), [])) + yacc.py: 506:Result : ((LexToken(id,'length',9,304), [])) yacc.py: 410: yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus factor dot func_call . LexToken(in,'in',10,317) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( base_call] with [] and goto state 160 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op minus term] with [,'-',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 - yacc.py: 506:Result : ( comp] with [] and goto state 198 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 - yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 + yacc.py: 506:Result : ( let_assign] with [] and goto state 128 - yacc.py: 506:Result : ([ let_assign] with [] and goto state 128 + yacc.py: 506:Result : ([ id] with ['x'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( new type] with ['new','A'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 150 yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar epsilon . LexToken(cpar,')',10,345) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar epsilon . LexToken(cpar,')',10,345) yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 149 yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar arg_list_empty . LexToken(cpar,')',10,345) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar arg_list_empty . LexToken(cpar,')',10,345) yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar args . LexToken(cpar,')',10,345) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar args . LexToken(cpar,')',10,345) yacc.py: 445:Action : Shift and goto state 191 yacc.py: 410: yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar args cpar . LexToken(dot,'.',10,346) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar args cpar . LexToken(dot,'.',10,346) yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',10,335), [])) + yacc.py: 506:Result : ((LexToken(id,'type_name',10,335), [])) yacc.py: 410: yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot func_call . LexToken(dot,'.',10,346) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( new type] with ['new','B'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 150 yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar epsilon . LexToken(cpar,')',10,370) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot id opar epsilon . LexToken(cpar,')',10,370) yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 149 yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',10,370) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',10,370) yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar args . LexToken(cpar,')',10,370) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot id opar args . LexToken(cpar,')',10,370) yacc.py: 445:Action : Shift and goto state 191 yacc.py: 410: yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar args cpar . LexToken(dot,'.',10,371) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot id opar args cpar . LexToken(dot,'.',10,371) yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',10,360), [])) + yacc.py: 506:Result : ((LexToken(id,'type_name',10,360), [])) yacc.py: 410: yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot func_call . LexToken(dot,'.',10,371) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( new type] with ['new','C'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 150 yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar factor dot id opar epsilon . LexToken(cpar,')',10,395) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot id opar factor dot id opar epsilon . LexToken(cpar,')',10,395) yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 149 yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',10,395) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',10,395) yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar factor dot id opar args . LexToken(cpar,')',10,395) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot id opar factor dot id opar args . LexToken(cpar,')',10,395) yacc.py: 445:Action : Shift and goto state 191 yacc.py: 410: yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar factor dot id opar args cpar . LexToken(cpar,')',10,396) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot id opar factor dot id opar args cpar . LexToken(cpar,')',10,396) yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',10,385), [])) + yacc.py: 506:Result : ((LexToken(id,'type_name',10,385), [])) yacc.py: 410: yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op plus factor dot id opar factor dot id opar factor dot func_call . LexToken(cpar,')',10,396) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['concat','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'concat',10,372), [ id opar args cpar] with ['concat','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'concat',10,372), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['concat','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'concat',10,347), [ id opar args cpar] with ['concat','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'concat',10,347), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 159 - yacc.py: 506:Result : ( base_call] with [] and goto state 160 + yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( op minus term] with [,'-',] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 152 - yacc.py: 506:Result : ( comp] with [] and goto state 152 + yacc.py: 506:Result : ( id larrow expr] with ['x','<-',] and goto state 196 - yacc.py: 506:Result : ( id larrow expr] with ['x','<-',] and goto state 196 + yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 - yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test',':','Int','<-',] and goto state 17 - yacc.py: 506:Result : ( id colon type larrow expr] with ['test',':','Int','<-',] and goto state 17 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 47 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 47 yacc.py: 430:Defaulted state 47: Reduce using 15 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi def_attr semi feature_list . LexToken(ccur,'}',11,400) - yacc.py: 469:Action : Reduce rule [feature_list -> def_attr semi feature_list] with [,';',[]] and goto state 48 - yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',[]] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 53 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 53 + yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['class','Main','inherits','IO','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( class type inherits type ocur feature_list ccur semi] with ['class','Main','inherits','IO','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( def_class] with [] and goto state 6 - yacc.py: 506:Result : ([ def_class] with [] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 2 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 2 + yacc.py: 506:Result : ([ class_list] with [] and goto state 1 - yacc.py: 506:Result : ( class_list] with [] and goto state 1 + yacc.py: 506:Result : ( ( ( 1 else path _out = sys.argv[2] if len(sys.argv) > 2 else None @@ -19,7 +21,7 @@ with open(_in) as file: text = file.read() - lexer = main(text, _out) + lexer = main(text, _out) # into call to tokenize text lexer.lexer.lineno = 1 lexer.lexer.linestart = 0 @@ -33,10 +35,10 @@ # print(lexer) - lexer.lexer.lineno = 1 - lexer.lexer.linestart = 0 + # lexer.lexer.lineno = 1 + # lexer.lexer.linestart = 0 - parser = CoolParser(lexer) + parser = CoolParser(CoolLexer()) ast = parser.parse(text) if parser.errors: @@ -47,4 +49,4 @@ if errors: for err in errors: print(err) - raise Exception() + raise Exception() \ No newline at end of file From 2765c8bca2165989a6b40d671dd07106702d8f5f Mon Sep 17 00:00:00 2001 From: JCH97 Date: Wed, 22 Dec 2021 21:19:31 -0500 Subject: [PATCH 34/44] fix(semantic): set right scope in FuncDeclarationNode --- src/cool/code.cl | 13 +- src/cool/parser/output/parselog.txt | 1329 ++++----------------------- src/cool/semantic/typeChecker.py | 2 +- src/main.py | 2 +- 4 files changed, 169 insertions(+), 1177 deletions(-) diff --git a/src/cool/code.cl b/src/cool/code.cl index 2e608ee47..81709b4b5 100644 --- a/src/cool/code.cl +++ b/src/cool/code.cl @@ -1,11 +1,10 @@ ---The static type of the expression is Int. - -class A { }; -class B inherits A { }; -class C inherits B { }; +(* +But it is an error to assign to self or to bind self in a let, a +case, or as a formal parameter. It is also illegal to have attributes named self. +*) class Main inherits IO { main(): IO { out_string("Hello World!")}; - test: Bool <- let x: Int <- 1 / 2 - 3 + 4 * new A.type_name().concat(new B.type_name().concat(new C.type_name())).length() - in x <- x * new A.type_name().concat(new B.type_name().concat(new C.type_name())).length(); + + test(self: IO): IO { self }; }; diff --git a/src/cool/parser/output/parselog.txt b/src/cool/parser/output/parselog.txt index f61d7264e..935bb4c21 100644 --- a/src/cool/parser/output/parselog.txt +++ b/src/cool/parser/output/parselog.txt @@ -6125,1337 +6125,330 @@ yacc.py: 362:PLY: PARSE DEBUG START yacc.py: 410: yacc.py: 411:State : 0 - yacc.py: 434:Stack : . LexToken(class,'class',3,60) + yacc.py: 434:Stack : . LexToken(class,'class',6,154) yacc.py: 445:Action : Shift and goto state 5 yacc.py: 410: yacc.py: 411:State : 5 - yacc.py: 434:Stack : class . LexToken(type,'A',3,66) + yacc.py: 434:Stack : class . LexToken(type,'Main',6,160) yacc.py: 445:Action : Shift and goto state 8 yacc.py: 410: yacc.py: 411:State : 8 - yacc.py: 434:Stack : class type . LexToken(ocur,'{',3,68) - yacc.py: 445:Action : Shift and goto state 10 - yacc.py: 410: - yacc.py: 411:State : 10 - yacc.py: 434:Stack : class type ocur . LexToken(ccur,'}',3,70) - yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 16 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 16 - yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : class type ocur epsilon . LexToken(ccur,'}',3,70) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 14 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 14 - yacc.py: 434:Stack : class type ocur feature_list . LexToken(ccur,'}',3,70) - yacc.py: 445:Action : Shift and goto state 25 - yacc.py: 410: - yacc.py: 411:State : 25 - yacc.py: 434:Stack : class type ocur feature_list ccur . LexToken(semi,';',3,71) - yacc.py: 445:Action : Shift and goto state 38 - yacc.py: 410: - yacc.py: 411:State : 38 - yacc.py: 434:Stack : class type ocur feature_list ccur semi . LexToken(class,'class',4,73) - yacc.py: 469:Action : Reduce rule [def_class -> class type ocur feature_list ccur semi] with ['class','A','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( ] with [] and goto state 16 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 16 - yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : def_class class type inherits type ocur epsilon . LexToken(ccur,'}',4,94) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 53 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 53 - yacc.py: 434:Stack : def_class class type inherits type ocur feature_list . LexToken(ccur,'}',4,94) - yacc.py: 445:Action : Shift and goto state 66 - yacc.py: 410: - yacc.py: 411:State : 66 - yacc.py: 434:Stack : def_class class type inherits type ocur feature_list ccur . LexToken(semi,';',4,95) - yacc.py: 445:Action : Shift and goto state 102 - yacc.py: 410: - yacc.py: 411:State : 102 - yacc.py: 434:Stack : def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',5,97) - yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','B','inherits','A','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( ] with [] and goto state 16 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 16 - yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur epsilon . LexToken(ccur,'}',5,118) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 53 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 53 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur feature_list . LexToken(ccur,'}',5,118) - yacc.py: 445:Action : Shift and goto state 66 - yacc.py: 410: - yacc.py: 411:State : 66 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur feature_list ccur . LexToken(semi,';',5,119) - yacc.py: 445:Action : Shift and goto state 102 - yacc.py: 410: - yacc.py: 411:State : 102 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',7,122) - yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','C','inherits','B','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( ] with [] and goto state 45 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 45 yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar epsilon . LexToken(cpar,')',8,153) + yacc.py: 434:Stack : class type inherits type ocur id opar epsilon . LexToken(cpar,')',7,185) yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar param_list_empty . LexToken(cpar,')',8,153) + yacc.py: 434:Stack : class type inherits type ocur id opar param_list_empty . LexToken(cpar,')',7,185) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar formals . LexToken(cpar,')',8,153) + yacc.py: 434:Stack : class type inherits type ocur id opar formals . LexToken(cpar,')',7,185) yacc.py: 445:Action : Shift and goto state 64 yacc.py: 410: yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar formals cpar . LexToken(colon,':',8,154) + yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar . LexToken(colon,':',7,186) yacc.py: 445:Action : Shift and goto state 100 yacc.py: 410: yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar formals cpar colon . LexToken(type,'IO',8,156) + yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon . LexToken(type,'IO',7,188) yacc.py: 445:Action : Shift and goto state 138 yacc.py: 410: yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar formals cpar colon type . LexToken(ocur,'{',8,159) + yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon type . LexToken(ocur,'{',7,191) yacc.py: 445:Action : Shift and goto state 181 yacc.py: 410: yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar formals cpar colon type ocur . LexToken(id,'out_string',8,161) + yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon type ocur . LexToken(id,'out_string',7,193) yacc.py: 445:Action : Shift and goto state 72 yacc.py: 410: yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar formals cpar colon type ocur id . LexToken(opar,'(',8,171) + yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon type ocur id . LexToken(opar,'(',7,203) yacc.py: 445:Action : Shift and goto state 113 yacc.py: 410: yacc.py: 411:State : 113 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar formals cpar colon type ocur id opar . LexToken(string,'Hello World!',8,185) + yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon type ocur id opar . LexToken(string,'Hello World!',7,217) yacc.py: 445:Action : Shift and goto state 93 yacc.py: 410: yacc.py: 411:State : 93 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur id opar formals cpar colon type ocur id opar string . LexToken(cpar,')',8,186) + yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon type ocur id opar string . LexToken(cpar,')',7,218) yacc.py: 469:Action : Reduce rule [atom -> string] with ['Hello World!'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'out_string',8,161), [ id opar args cpar] with ['out_string','(',,')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'out_string',7,193), [ func_call] with [] and goto state 77 - yacc.py: 506:Result : ( func_call] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','IO','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','IO','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( id colon type] with ['x',':','Int'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'x',9,208), LexToken(type,' ...) - yacc.py: 410: - yacc.py: 411:State : 130 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param . LexToken(larrow,'<-',9,215) - yacc.py: 445:Action : Shift and goto state 173 - yacc.py: 410: - yacc.py: 411:State : 173 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow . LexToken(num,1.0,9,218) - yacc.py: 445:Action : Shift and goto state 88 - yacc.py: 410: - yacc.py: 411:State : 88 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow num . LexToken(plus,'+',9,220) - yacc.py: 469:Action : Reduce rule [atom -> num] with [1.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( id colon type] with ['self',':','IO'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'self',9,229), LexToken(typ ...) yacc.py: 410: - yacc.py: 411:State : 74 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op . LexToken(plus,'+',9,220) - yacc.py: 445:Action : Shift and goto state 117 - yacc.py: 410: - yacc.py: 411:State : 117 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus . LexToken(num,2.0,9,222) - yacc.py: 445:Action : Shift and goto state 88 - yacc.py: 410: - yacc.py: 411:State : 88 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus num . LexToken(star,'*',9,224) - yacc.py: 469:Action : Reduce rule [atom -> num] with [2.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( param] with [] and goto state 42 + yacc.py: 506:Result : ([(LexToken(id,'self',9,229), LexToken(ty ...) yacc.py: 410: - yacc.py: 411:State : 76 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus base_call . LexToken(star,'*',9,224) - yacc.py: 469:Action : Reduce rule [term -> base_call] with [] and goto state 159 - yacc.py: 506:Result : ( num] with [3.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( param_list] with [] and goto state 51 + yacc.py: 506:Result : ([(LexToken(id,'self',9,229), LexToken(ty ...) yacc.py: 410: - yacc.py: 411:State : 77 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op plus term star factor . LexToken(div,'/',9,228) - yacc.py: 469:Action : Reduce rule [base_call -> factor] with [] and goto state 161 - yacc.py: 506:Result : ( term star base_call] with [,'*',] and goto state 159 - yacc.py: 506:Result : ( num] with [4.0] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 163 - yacc.py: 506:Result : ( term div base_call] with [,'/',] and goto state 159 - yacc.py: 506:Result : ( op plus term] with [,'+',] and goto state 74 - yacc.py: 506:Result : ( new type] with ['new','A'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar epsilon . LexToken(cpar,')',9,250) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar arg_list_empty . LexToken(cpar,')',9,250) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar args . LexToken(cpar,')',9,250) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar args cpar . LexToken(dot,'.',9,251) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',9,240), [])) - yacc.py: 410: - yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot func_call . LexToken(dot,'.',9,251) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( new type] with ['new','B'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot id opar epsilon . LexToken(cpar,')',9,275) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',9,275) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot id opar args . LexToken(cpar,')',9,275) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot id opar args cpar . LexToken(dot,'.',9,276) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',9,265), [])) - yacc.py: 410: - yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot func_call . LexToken(dot,'.',9,276) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( new type] with ['new','C'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot id opar factor dot id opar epsilon . LexToken(cpar,')',9,300) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',9,300) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot id opar factor dot id opar args . LexToken(cpar,')',9,300) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot id opar factor dot id opar args cpar . LexToken(cpar,')',9,301) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',9,290), [])) - yacc.py: 410: - yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar factor dot id opar factor dot func_call . LexToken(cpar,')',9,301) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['concat','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'concat',9,277), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['concat','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'concat',9,252), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar epsilon . LexToken(cpar,')',9,311) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar arg_list_empty . LexToken(cpar,')',9,311) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar args . LexToken(cpar,')',9,311) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot id opar args cpar . LexToken(in,'in',10,317) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['length','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'length',9,304), [])) - yacc.py: 410: - yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param larrow op minus factor dot func_call . LexToken(in,'in',10,317) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 160 - yacc.py: 506:Result : ( op minus term] with [,'-',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 198 - yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 - yacc.py: 506:Result : ( let_assign] with [] and goto state 128 - yacc.py: 506:Result : ([ id] with ['x'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( new type] with ['new','A'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar epsilon . LexToken(cpar,')',10,345) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar arg_list_empty . LexToken(cpar,')',10,345) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar args . LexToken(cpar,')',10,345) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar args cpar . LexToken(dot,'.',10,346) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',10,335), [])) - yacc.py: 410: - yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot func_call . LexToken(dot,'.',10,346) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( new type] with ['new','B'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot id opar epsilon . LexToken(cpar,')',10,370) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',10,370) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot id opar args . LexToken(cpar,')',10,370) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot id opar args cpar . LexToken(dot,'.',10,371) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',10,360), [])) - yacc.py: 410: - yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot func_call . LexToken(dot,'.',10,371) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( new type] with ['new','C'] and goto state 79 - yacc.py: 506:Result : ( id] with ['self'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot id opar factor dot id opar epsilon . LexToken(cpar,')',10,395) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot id opar factor dot id opar arg_list_empty . LexToken(cpar,')',10,395) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot id opar factor dot id opar args . LexToken(cpar,')',10,395) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot id opar factor dot id opar args cpar . LexToken(cpar,')',10,396) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['type_name','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'type_name',10,385), [])) - yacc.py: 410: - yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_list in id larrow op minus factor dot id opar factor dot id opar factor dot func_call . LexToken(cpar,')',10,396) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ comp] with [] and goto state 206 + yacc.py: 506:Result : ( arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['concat','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'concat',10,372), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['concat','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'concat',10,347), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 160 - yacc.py: 506:Result : ( op minus term] with [,'-',] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 152 - yacc.py: 506:Result : ( id larrow expr] with ['x','<-',] and goto state 196 - yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( id colon type larrow expr] with ['test',':','Int','<-',] and goto state 17 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['test','(',,')',':','IO','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 16 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 16 yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi def_attr semi epsilon . LexToken(ccur,'}',11,400) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 47 - yacc.py: 506:Result : ([]) + yacc.py: 434:Stack : class type inherits type ocur def_func semi def_func semi epsilon . LexToken(ccur,'}',10,253) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 47 - yacc.py: 430:Defaulted state 47: Reduce using 15 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_func semi def_attr semi feature_list . LexToken(ccur,'}',11,400) - yacc.py: 469:Action : Reduce rule [feature_list -> def_attr semi feature_list] with [,';',[]] and goto state 48 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',[]] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 53 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 53 + yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['class','Main','inherits','IO','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( class type inherits type ocur feature_list ccur semi] with ['class','Main','inherits','IO','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( def_class] with [] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 2 - yacc.py: 506:Result : ([ def_class] with [] and goto state 2 + yacc.py: 506:Result : ([ class_list] with [] and goto state 1 - yacc.py: 506:Result : ( class_list] with [] and goto state 1 + yacc.py: 506:Result : ( ( ( Date: Wed, 22 Dec 2021 21:56:31 -0500 Subject: [PATCH 35/44] fix(semantic): update VarDeclarationNode in typeChecker --- src/cool/parser/output/parselog.txt | 1262 +++++++++++++++++++++++---- src/cool/semantic/typeChecker.py | 2 +- src/main.py | 2 +- 3 files changed, 1103 insertions(+), 163 deletions(-) diff --git a/src/cool/parser/output/parselog.txt b/src/cool/parser/output/parselog.txt index 935bb4c21..5af99ab08 100644 --- a/src/cool/parser/output/parselog.txt +++ b/src/cool/parser/output/parselog.txt @@ -6125,330 +6125,1270 @@ yacc.py: 362:PLY: PARSE DEBUG START yacc.py: 410: yacc.py: 411:State : 0 - yacc.py: 434:Stack : . LexToken(class,'class',6,154) + yacc.py: 434:Stack : . LexToken(class,'class',3,17) yacc.py: 445:Action : Shift and goto state 5 yacc.py: 410: yacc.py: 411:State : 5 - yacc.py: 434:Stack : class . LexToken(type,'Main',6,160) + yacc.py: 434:Stack : class . LexToken(type,'A',3,23) yacc.py: 445:Action : Shift and goto state 8 yacc.py: 410: yacc.py: 411:State : 8 - yacc.py: 434:Stack : class type . LexToken(inherits,'inherits',6,165) + yacc.py: 434:Stack : class type . LexToken(ocur,'{',3,25) + yacc.py: 445:Action : Shift and goto state 10 + yacc.py: 410: + yacc.py: 411:State : 10 + yacc.py: 434:Stack : class type ocur . LexToken(ccur,'}',3,27) + yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 16 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 16 + yacc.py: 430:Defaulted state 16: Reduce using 14 + yacc.py: 434:Stack : class type ocur epsilon . LexToken(ccur,'}',3,27) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 14 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 14 + yacc.py: 434:Stack : class type ocur feature_list . LexToken(ccur,'}',3,27) + yacc.py: 445:Action : Shift and goto state 25 + yacc.py: 410: + yacc.py: 411:State : 25 + yacc.py: 434:Stack : class type ocur feature_list ccur . LexToken(semi,';',3,28) + yacc.py: 445:Action : Shift and goto state 38 + yacc.py: 410: + yacc.py: 411:State : 38 + yacc.py: 434:Stack : class type ocur feature_list ccur semi . LexToken(class,'class',4,30) + yacc.py: 469:Action : Reduce rule [def_class -> class type ocur feature_list ccur semi] with ['class','A','{',[],'}',';'] and goto state 3 + yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 16 + yacc.py: 430:Defaulted state 16: Reduce using 14 + yacc.py: 434:Stack : def_class class type inherits type ocur epsilon . LexToken(ccur,'}',4,51) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 53 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 53 + yacc.py: 434:Stack : def_class class type inherits type ocur feature_list . LexToken(ccur,'}',4,51) + yacc.py: 445:Action : Shift and goto state 66 + yacc.py: 410: + yacc.py: 411:State : 66 + yacc.py: 434:Stack : def_class class type inherits type ocur feature_list ccur . LexToken(semi,';',4,52) + yacc.py: 445:Action : Shift and goto state 102 + yacc.py: 410: + yacc.py: 411:State : 102 + yacc.py: 434:Stack : def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',5,54) + yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','B','inherits','A','{',[],'}',';'] and goto state 3 + yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 16 + yacc.py: 430:Defaulted state 16: Reduce using 14 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur epsilon . LexToken(ccur,'}',5,75) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 53 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 53 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur feature_list . LexToken(ccur,'}',5,75) + yacc.py: 445:Action : Shift and goto state 66 + yacc.py: 410: + yacc.py: 411:State : 66 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur feature_list ccur . LexToken(semi,';',5,76) + yacc.py: 445:Action : Shift and goto state 102 + yacc.py: 410: + yacc.py: 411:State : 102 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',6,78) + yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','C','inherits','B','{',[],'}',';'] and goto state 3 + yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 16 + yacc.py: 430:Defaulted state 16: Reduce using 14 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur epsilon . LexToken(ccur,'}',6,99) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 53 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 53 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur feature_list . LexToken(ccur,'}',6,99) + yacc.py: 445:Action : Shift and goto state 66 + yacc.py: 410: + yacc.py: 411:State : 66 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur feature_list ccur . LexToken(semi,';',6,100) + yacc.py: 445:Action : Shift and goto state 102 + yacc.py: 410: + yacc.py: 411:State : 102 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',7,102) + yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','D','inherits','B','{',[],'}',';'] and goto state 3 + yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 16 + yacc.py: 430:Defaulted state 16: Reduce using 14 + yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur epsilon . LexToken(ccur,'}',7,123) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 53 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 53 + yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur feature_list . LexToken(ccur,'}',7,123) + yacc.py: 445:Action : Shift and goto state 66 + yacc.py: 410: + yacc.py: 411:State : 66 + yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur feature_list ccur . LexToken(semi,';',7,124) + yacc.py: 445:Action : Shift and goto state 102 + yacc.py: 410: + yacc.py: 411:State : 102 + yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',8,127) + yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','E','inherits','B','{',[],'}',';'] and goto state 3 + yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 16 + yacc.py: 430:Defaulted state 16: Reduce using 14 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type inherits type ocur epsilon . LexToken(ccur,'}',8,148) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 53 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 53 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type inherits type ocur feature_list . LexToken(ccur,'}',8,148) + yacc.py: 445:Action : Shift and goto state 66 + yacc.py: 410: + yacc.py: 411:State : 66 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type inherits type ocur feature_list ccur . LexToken(semi,';',8,149) + yacc.py: 445:Action : Shift and goto state 102 + yacc.py: 410: + yacc.py: 411:State : 102 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',10,153) + yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','F','inherits','A','{',[],'}',';'] and goto state 3 + yacc.py: 506:Result : ( ] with [] and goto state 45 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 45 yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : class type inherits type ocur id opar epsilon . LexToken(cpar,')',7,185) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar epsilon . LexToken(cpar,')',11,184) yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : class type inherits type ocur id opar param_list_empty . LexToken(cpar,')',7,185) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar param_list_empty . LexToken(cpar,')',11,184) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 - yacc.py: 434:Stack : class type inherits type ocur id opar formals . LexToken(cpar,')',7,185) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar formals . LexToken(cpar,')',11,184) yacc.py: 445:Action : Shift and goto state 64 yacc.py: 410: yacc.py: 411:State : 64 - yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar . LexToken(colon,':',7,186) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar formals cpar . LexToken(colon,':',11,185) yacc.py: 445:Action : Shift and goto state 100 yacc.py: 410: yacc.py: 411:State : 100 - yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon . LexToken(type,'IO',7,188) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar formals cpar colon . LexToken(type,'IO',11,187) yacc.py: 445:Action : Shift and goto state 138 yacc.py: 410: yacc.py: 411:State : 138 - yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon type . LexToken(ocur,'{',7,191) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar formals cpar colon type . LexToken(ocur,'{',11,190) yacc.py: 445:Action : Shift and goto state 181 yacc.py: 410: yacc.py: 411:State : 181 - yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon type ocur . LexToken(id,'out_string',7,193) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar formals cpar colon type ocur . LexToken(id,'out_string',11,192) yacc.py: 445:Action : Shift and goto state 72 yacc.py: 410: yacc.py: 411:State : 72 - yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon type ocur id . LexToken(opar,'(',7,203) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar formals cpar colon type ocur id . LexToken(opar,'(',11,202) yacc.py: 445:Action : Shift and goto state 113 yacc.py: 410: yacc.py: 411:State : 113 - yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon type ocur id opar . LexToken(string,'Hello World!',7,217) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar formals cpar colon type ocur id opar . LexToken(string,'Hello World!',11,216) yacc.py: 445:Action : Shift and goto state 93 yacc.py: 410: yacc.py: 411:State : 93 - yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon type ocur id opar string . LexToken(cpar,')',7,218) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar formals cpar colon type ocur id opar string . LexToken(cpar,')',11,217) yacc.py: 469:Action : Reduce rule [atom -> string] with ['Hello World!'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'out_string',7,193), [ id opar args cpar] with ['out_string','(',,')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'out_string',11,192), [ func_call] with [] and goto state 77 - yacc.py: 506:Result : ( func_call] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','IO','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','IO','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( id colon type] with ['self',':','IO'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'self',9,229), LexToken(typ ...) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let id colon type . LexToken(comma,',',13,242) + yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['a',':','Bool'] and goto state 130 + yacc.py: 506:Result : ((LexToken(id,'a',13,235), LexToken(type, ...) yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : class type inherits type ocur def_func semi id opar param . LexToken(cpar,')',9,237) - yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 42 - yacc.py: 506:Result : ([(LexToken(id,'self',9,229), LexToken(ty ...) + yacc.py: 411:State : 130 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param . LexToken(comma,',',13,242) + yacc.py: 469:Action : Reduce rule [let_assign -> param] with [] and goto state 129 + yacc.py: 506:Result : ( param_list] with [] and goto state 51 - yacc.py: 506:Result : ([(LexToken(id,'self',9,229), LexToken(ty ...) + yacc.py: 411:State : 129 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign . LexToken(comma,',',13,242) + yacc.py: 445:Action : Shift and goto state 172 yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : class type inherits type ocur def_func semi id opar formals . LexToken(cpar,')',9,237) - yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 411:State : 172 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma . LexToken(id,'a',13,244) + yacc.py: 445:Action : Shift and goto state 46 yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : class type inherits type ocur def_func semi id opar formals cpar . LexToken(colon,':',9,238) - yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 411:State : 46 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma id . LexToken(colon,':',13,245) + yacc.py: 445:Action : Shift and goto state 61 yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : class type inherits type ocur def_func semi id opar formals cpar colon . LexToken(type,'IO',9,240) - yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 411:State : 61 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma id colon . LexToken(type,'Int',13,247) + yacc.py: 445:Action : Shift and goto state 96 yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : class type inherits type ocur def_func semi id opar formals cpar colon type . LexToken(ocur,'{',9,243) - yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 411:State : 96 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma id colon type . LexToken(larrow,'<-',13,251) + yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['a',':','Int'] and goto state 130 + yacc.py: 506:Result : ((LexToken(id,'a',13,244), LexToken(type, ...) yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : class type inherits type ocur def_func semi id opar formals cpar colon type ocur . LexToken(id,'self',9,245) + yacc.py: 411:State : 130 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma param . LexToken(larrow,'<-',13,251) + yacc.py: 445:Action : Shift and goto state 173 + yacc.py: 410: + yacc.py: 411:State : 173 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma param larrow . LexToken(num,5.0,13,254) + yacc.py: 445:Action : Shift and goto state 88 + yacc.py: 410: + yacc.py: 411:State : 88 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma param larrow num . LexToken(comma,',',13,255) + yacc.py: 469:Action : Reduce rule [atom -> num] with [5.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 + yacc.py: 506:Result : ( id colon type] with ['a',':','String'] and goto state 130 + yacc.py: 506:Result : ((LexToken(id,'a',13,257), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 130 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma let_assign comma param . LexToken(comma,',',13,266) + yacc.py: 469:Action : Reduce rule [let_assign -> param] with [] and goto state 129 + yacc.py: 506:Result : ( id colon type] with ['a',':','A'] and goto state 130 + yacc.py: 506:Result : ((LexToken(id,'a',13,268), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 130 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma let_assign comma let_assign comma param . LexToken(larrow,'<-',13,273) + yacc.py: 445:Action : Shift and goto state 173 + yacc.py: 410: + yacc.py: 411:State : 173 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma let_assign comma let_assign comma param larrow . LexToken(new,'new',13,276) + yacc.py: 445:Action : Shift and goto state 89 + yacc.py: 410: + yacc.py: 411:State : 89 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma let_assign comma let_assign comma param larrow new . LexToken(type,'F',13,280) + yacc.py: 445:Action : Shift and goto state 134 + yacc.py: 410: + yacc.py: 411:State : 134 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma let_assign comma let_assign comma param larrow new type . LexToken(comma,',',13,281) + yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','F'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 + yacc.py: 506:Result : ( id colon type] with ['b',':','B'] and goto state 130 + yacc.py: 506:Result : ((LexToken(id,'b',13,283), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 130 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma let_assign comma let_assign comma let_assign comma param . LexToken(larrow,'<-',13,288) + yacc.py: 445:Action : Shift and goto state 173 + yacc.py: 410: + yacc.py: 411:State : 173 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma let_assign comma let_assign comma let_assign comma param larrow . LexToken(new,'new',13,291) + yacc.py: 445:Action : Shift and goto state 89 + yacc.py: 410: + yacc.py: 411:State : 89 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma let_assign comma let_assign comma let_assign comma param larrow new . LexToken(type,'E',13,295) + yacc.py: 445:Action : Shift and goto state 134 + yacc.py: 410: + yacc.py: 411:State : 134 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma let_assign comma let_assign comma let_assign comma param larrow new type . LexToken(in,'in',13,297) + yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','E'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 + yacc.py: 506:Result : ( let_assign] with [] and goto state 197 + yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 + yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 + yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 + yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 128 + yacc.py: 506:Result : ([ id] with ['self'] and goto state 79 - yacc.py: 506:Result : ( id] with ['b'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 196 + yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['test','(',,')',':','IO','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['b',':','B','<-',] and goto state 17 + yacc.py: 506:Result : ( id colon type] with ['a',':','Bool'] and goto state 130 + yacc.py: 506:Result : ((LexToken(id,'a',14,319), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 130 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let param . LexToken(comma,',',14,326) + yacc.py: 469:Action : Reduce rule [let_assign -> param] with [] and goto state 129 + yacc.py: 506:Result : ( id colon type] with ['a',':','Int'] and goto state 130 + yacc.py: 506:Result : ((LexToken(id,'a',14,328), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 130 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma param . LexToken(larrow,'<-',14,335) + yacc.py: 445:Action : Shift and goto state 173 + yacc.py: 410: + yacc.py: 411:State : 173 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma param larrow . LexToken(num,5.0,14,338) + yacc.py: 445:Action : Shift and goto state 88 + yacc.py: 410: + yacc.py: 411:State : 88 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma param larrow num . LexToken(comma,',',14,339) + yacc.py: 469:Action : Reduce rule [atom -> num] with [5.0] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 + yacc.py: 506:Result : ( id colon type] with ['a',':','String'] and goto state 130 + yacc.py: 506:Result : ((LexToken(id,'a',14,341), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 130 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma let_assign comma param . LexToken(comma,',',14,350) + yacc.py: 469:Action : Reduce rule [let_assign -> param] with [] and goto state 129 + yacc.py: 506:Result : ( id colon type] with ['a',':','A'] and goto state 130 + yacc.py: 506:Result : ((LexToken(id,'a',14,352), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 130 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma let_assign comma let_assign comma param . LexToken(larrow,'<-',14,357) + yacc.py: 445:Action : Shift and goto state 173 + yacc.py: 410: + yacc.py: 411:State : 173 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma let_assign comma let_assign comma param larrow . LexToken(new,'new',14,360) + yacc.py: 445:Action : Shift and goto state 89 + yacc.py: 410: + yacc.py: 411:State : 89 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma let_assign comma let_assign comma param larrow new . LexToken(type,'F',14,364) + yacc.py: 445:Action : Shift and goto state 134 + yacc.py: 410: + yacc.py: 411:State : 134 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma let_assign comma let_assign comma param larrow new type . LexToken(comma,',',14,365) + yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','F'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 + yacc.py: 506:Result : ( id colon type] with ['b',':','Cadena'] and goto state 130 + yacc.py: 506:Result : ((LexToken(id,'b',14,367), LexToken(type, ...) + yacc.py: 410: + yacc.py: 411:State : 130 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma let_assign comma let_assign comma let_assign comma param . LexToken(in,'in',14,377) + yacc.py: 469:Action : Reduce rule [let_assign -> param] with [] and goto state 129 + yacc.py: 506:Result : ( let_assign] with [] and goto state 197 + yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 + yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 + yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 + yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 128 + yacc.py: 506:Result : ([ new type] with ['new','B'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 196 + yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test',':','B','<-',] and goto state 17 + yacc.py: 506:Result : ( ] with [] and goto state 16 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 16 yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : class type inherits type ocur def_func semi def_func semi epsilon . LexToken(ccur,'}',10,253) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 - yacc.py: 506:Result : ([]) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi def_attr semi epsilon . LexToken(ccur,'}',15,387) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 47 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 48 - yacc.py: 430:Defaulted state 48: Reduce using 16 - yacc.py: 434:Stack : class type inherits type ocur def_func semi def_func semi feature_list . LexToken(ccur,'}',10,253) - yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 48 - yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',[]] and goto state 47 + yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 53 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 53 + yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['class','Main','inherits','IO','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( class type inherits type ocur feature_list ccur semi] with ['class','Main','inherits','IO','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( def_class] with [] and goto state 2 - yacc.py: 506:Result : ([ def_class] with [] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 2 + yacc.py: 506:Result : ([ class_list] with [] and goto state 1 - yacc.py: 506:Result : ( class_list] with [] and goto state 1 + yacc.py: 506:Result : ( ( ( Date: Sat, 22 Jan 2022 21:56:36 -0500 Subject: [PATCH 36/44] feat(codegen): initial approach --- src/.idea/workspace.xml | 41 +++ src/cool/codegen/__init__.py | 0 src/cool/codegen/__main__.py | 0 src/cool/codegen/cilgen.py | 275 +++++++++++++++++++ src/cool/codegen/codegen.py | 3 + src/cool/codegen/utils/__init__.py | 1 + src/cool/codegen/utils/__main__.py | 0 src/cool/codegen/utils/ast_cil.py | 407 +++++++++++++++++++++++++++++ 8 files changed, 727 insertions(+) create mode 100644 src/.idea/workspace.xml create mode 100644 src/cool/codegen/__init__.py create mode 100644 src/cool/codegen/__main__.py create mode 100644 src/cool/codegen/cilgen.py create mode 100644 src/cool/codegen/codegen.py create mode 100644 src/cool/codegen/utils/__init__.py create mode 100644 src/cool/codegen/utils/__main__.py create mode 100644 src/cool/codegen/utils/ast_cil.py diff --git a/src/.idea/workspace.xml b/src/.idea/workspace.xml new file mode 100644 index 000000000..d192fca86 --- /dev/null +++ b/src/.idea/workspace.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + 1640574149282 + + + + \ No newline at end of file diff --git a/src/cool/codegen/__init__.py b/src/cool/codegen/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/cool/codegen/__main__.py b/src/cool/codegen/__main__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/cool/codegen/cilgen.py b/src/cool/codegen/cilgen.py new file mode 100644 index 000000000..314a6fde2 --- /dev/null +++ b/src/cool/codegen/cilgen.py @@ -0,0 +1,275 @@ +from .utils import ProgramNode, LocalNode, FunctionNode, TypeNode, DataNode, ParamNode +from .utils import ast_cil +from semantic.helpers import Context, VariableInfo, Scope +from semantic.types import Attribute, Type, StringType, ObjectType, IOType, Method +import re +from utils.ast import * + + +class BaseCil: + def __init__(self, context): + self.current_function = None + self.fun_nodes = [] + self.data = [] + self.types_nodes = [] + self.context = context + self.idx = 0 + self.void_data = None + + @property + def params(self): + return self.current_function.params + + @property + def index(self): + t = self.idx + self.idx += 1 + return t + + @property + def localvars(self): + return self.current_function.localvars + + @property + def instructions(self): + return self.current_function.instructions + + def register_param(self, vname, vtype): + # name = f'param_{self.current_function.name[9:]}_{vname}_{len(self.params)}' + param_node = ParamNode(vname, vtype, self.index) + self.params.append(param_node) + return vname + + def register_local(self, vname): + name = f'local_{self.current_function.name[9:]}_{vname}_{len(self.localvars)}' + local_node = LocalNode(name, self.index) + self.localvars.append(local_node) + return name + + def define_internal_local(self): + return self.register_local('internal') + + def register_instruction(self, instruction): + self.instructions.append(instruction) + instruction.index = self.index + return instruction + + def to_attr_name(self, attr_name, type_name): + return f'attribute_{attr_name}_{type_name}' + + def to_function_name(self, method_name, type_name): + return f'function_{method_name}_{type_name}' + + def to_var_name(self, var_name): + regex = re.compile(f'local_{self.current_function.name[9:]}_(.+)_\d+') + for node in reversed(self.localvars): + m = regex.match(node.name).groups()[0] + if m == var_name: + return node.name + for node in self.params: + if node.name == var_name: + return var_name + return None + + def register_function(self, function_name): + node = FunctionNode(function_name, [], [], [], self.index) + self.fun_nodes.append(node) + return node + + def register_type(self, type_name): + node = TypeNode(type_name) + self.types_nodes.append(node) + return node + + def register_data(self, value): + vname = f'data_{len(len(self.data))}' + node = DataNode(vname, value, self.index) + self.data.append(node) + return node + + def define_binary_node(self, node: BinaryNode, scope: Scope, cil_node: ast_cil.Node): + result = self.define_internal_local() + left, typex = self.visit(node.left, scope) + right, typex = self.visit(node.right, scope) + self.register_instruction(cil_node(result, left, right)) + return result, typex + + def define_unary_node(self, node: UnaryNode, scope: Scope, cil_node): + result = self.define_internal_local() + expr, typex = self.visit(node.expr, scope) + self.register_instruction(cil_node(result, expr)) + return result, typex + + def initialize_attr(self, constructor, attr: Attribute, scope: Scope): + if attr.expr: + constructor.body.expr_list.append(AssignNode(attr.name, attr.expr)) + elif attr.type == 'Int': + constructor.body.expr_list.append(AssignNode(attr.name, ConstantNumNode(0))) + elif attr.type == 'Bool': + constructor.body.expr_list.append(AssignNode(attr.name, ConstantBoolNode(False))) + elif attr.type == 'String': + constructor.body.expr_list.append(AssignNode(attr.name, ConstantStrNode(""))) + else: + constructor.body.expr_list.append(AssignNode(attr.name, ConstantVoidNode(attr.name))) + + def built_in_functions(self): + f1_params = [ParamNode("self", 'Object')] + f1_localVars = [LocalNode("local_abort_Object_self_0")] + f1_instructions = [ast_cil.AssignNode(f1_localVars[0].name, f1_params[0].name, self.index), + ast_cil.ExitNode(f1_params[0].name, idx=self.index)] + f1 = FunctionNode("function_abort_Object", f1_params, f1_localVars, f1_instructions) + + f2_params = [ParamNode("self", 'Object')] + f2_localVars = [LocalNode("local_type_name_Object_result_0")] + f2_instructions = [ast_cil.TypeOfNode(f2_params[0].name, f2_localVars[0].name, self.index), + ast_cil.ReturnNode(f2_localVars[0].name, self.index)] + f2 = FunctionNode("function_type_name_Object", f2_params, f2_localVars, f2_instructions) + + f3_params = [ParamNode("self", 'Object')] + f3_localVars = [LocalNode("local_copy_Object_result_0")] + f3_instructions = [ast_cil.CopyNode(f3_localVars[0].name, f3_params[0].name, self.index), + ast_cil.ReturnNode(f3_localVars[0].name, self.index)] + f3 = FunctionNode("function_copy_Object", f3_params, f3_localVars, f3_instructions) + + f4_params = [ParamNode("self", 'IO'), ParamNode("word", 'String')] + f4_localVars = [LocalNode("local_out_string_String_self_0")] + f4_instructions = [ast_cil.AssignNode(f4_localVars[0].name, f4_params[0].name, self.index), + ast_cil.OutStringNode(f4_params[1].name, self.index), + ast_cil.ReturnNode(f4_localVars[0].name, self.index)] + f4 = FunctionNode("function_out_string_IO", f4_params, f4_localVars, f4_instructions) + + f5_params = [ParamNode("self", 'IO'), ParamNode("number", 'Int')] + f5_localVars = [LocalNode("local_out_int_IO_self_0")] + f5_instructions = [ast_cil.AssignNode(f5_localVars[0].name, f5_params[0].name, self.index), + ast_cil.OutIntNode(f5_params[1].name, self.index), + ast_cil.ReturnNode(f5_localVars[0].name, self.index)] + f5 = FunctionNode("function_out_int_IO", f5_params, f5_localVars, f5_instructions) + + f6_params = [ParamNode("self", 'IO')] + f6_localVars = [LocalNode("local_in_int_IO_result_0")] + f6_instructions = [ast_cil.ReadIntNode(f6_localVars[0].name, self.index), + ast_cil.ReturnNode(f6_localVars[0].name, self.index)] + f6 = FunctionNode("function_in_int_IO", f6_params, f6_localVars, f6_instructions) + + f7_params = [ParamNode("self", 'IO')] + f7_localVars = [LocalNode("local_in_string_IO_result_0")] + f7_instructions = [ast_cil.ReadStringNode(f7_localVars[0].name, self.index), + ast_cil.ReturnNode(f7_localVars[0].name, self.index)] + f7 = FunctionNode("function_in_string_IO", f7_params, f7_localVars, f7_instructions) + + f8_params = [ParamNode("self", 'String')] + f8_localVars = [LocalNode("local_length_String_result_0")] + f8_instructions = [ast_cil.LengthNode(f8_localVars[0].name, f8_params[0].name, self.index), + ast_cil.ReturnNode(f8_localVars[0].name, self.index)] + f8 = FunctionNode("function_length_String", f8_params, f8_localVars, f8_instructions) + + f9_params = [ParamNode("self", 'String'), ParamNode("word", 'String')] + f9_localVars = [LocalNode("local_concat_String_result_0")] + f9_instructions = [ast_cil.ConcatNode(f9_localVars[0].name, f9_params[0].name, f9_params[1].name, self.index), + ast_cil.ReturnNode(f9_localVars[0].name, self.index)] + f9 = FunctionNode("function_concat_String", f9_params, f9_localVars, f9_instructions) + + f10_params = [ParamNode("self", 'String'), ParamNode("begin", 'Int'), ParamNode("end", 'Int')] + f10_localVars = [LocalNode("local_substr_String_result_0")] + f10_instructions = [ + ast_cil.SubstringNode(f10_localVars[0].name, f10_params[0].name, f10_params[1].name, f10_params[2].name, + self.index), + ast_cil.ReturnNode(f10_localVars[0].name, self.index)] + f10 = FunctionNode("function_substr_String", f10_params, f10_localVars, f10_instructions) + + f11_params = [ParamNode("self", 'String')] + f11_localVars = [LocalNode("local_type_name_String_result_0")] + f11_instructions = [ast_cil.LoadNode(f11_localVars[0].name, 'type_String', self.index), + ast_cil.ReturnNode(f11_localVars[0].name, self.index)] + f11 = FunctionNode("function_type_name_String", f11_params, f11_localVars, f11_instructions) + + f12_params = [ParamNode("self", 'String')] + f12_localVars = [LocalNode("local_copy_String_result_0")] + f12_instructions = [ast_cil.ConcatNode(f12_localVars[0].name, f12_params[0].name, None, self.index), + ast_cil.ReturnNode(f12_localVars[0].name, self.index)] + f12 = FunctionNode("function_copy_String", f12_params, f12_localVars, f12_instructions) + + f17_params = [ParamNode("self", 'String')] + f17_localVars = [LocalNode('local_abort_String_msg_0')] + f17_instructions = [ast_cil.LoadNode(f17_params[0].name, 'string_abort'), + ast_cil.OutStringNode(f17_params[0].name, self.index), + ast_cil.ExitNode(f17_params[0].name, idx=self.index)] + f17 = FunctionNode("function_abort_String", f17_params, f17_localVars, f17_instructions) + + f13_params = [ParamNode("self", 'Int')] + f13_localVars = [LocalNode("local_type_name_Int_result_0")] + f13_instructions = [ast_cil.LoadNode(f13_localVars[0].name, 'type_Int', self.index), + ast_cil.ReturnNode(f13_localVars[0].name, self.index)] + f13 = FunctionNode("function_type_name_Int", f13_params, f13_localVars, f13_instructions) + + f14_params = [ParamNode("self", 'Int')] + f14_localVars = [LocalNode("local_copy_Int_result_0")] + f14_instructions = [ast_cil.AssignNode(f14_localVars[0].name, f14_params[0].name), + ast_cil.ReturnNode(f14_localVars[0].name, self.index)] + f14 = FunctionNode("function_copy_Int", f14_params, f14_localVars, f14_instructions) + + f18_params = [ParamNode("self", 'Int')] + f18_localVars = [LocalNode('local_abort_Int_msg_0')] + f18_instructions = [ast_cil.LoadNode(f18_params[0].name, 'int_abort'), + ast_cil.OutStringNode(f18_params[0].name, self.index), + ast_cil.ExitNode(f18_params[0].name, idx=self.index)] + f18 = FunctionNode("function_abort_Int", f18_params, f18_localVars, f18_instructions) + + f15_params = [ParamNode("self", 'Bool')] + f15_localVars = [LocalNode("local_type_name_Bool_result_0")] + f15_instructions = [ast_cil.LoadNode(f15_localVars[0].name, 'type_Bool', self.index), + ast_cil.ReturnNode(f15_localVars[0].name, self.index)] + f15 = FunctionNode("function_type_name_Bool", f15_params, f15_localVars, f15_instructions) + + f16_params = [ParamNode("self", 'Bool')] + f16_localVars = [LocalNode("local_copy_result_Bool_0")] + f16_instructions = [ast_cil.AssignNode(f16_localVars[0].name, f16_params[0].name), + ast_cil.ReturnNode(f16_localVars[0].name, self.index)] + f16 = FunctionNode("function_copy_Bool", f16_params, f16_localVars, f16_instructions) + + f19_params = [ParamNode("self", 'Bool')] + f19_localVars = [LocalNode('local_abort_Bool_msg_0')] + f19_instructions = [ast_cil.LoadNode(f19_params[0].name, 'bool_abort'), + ast_cil.OutStringNode(f19_params[0].name, self.index), + ast_cil.ExitNode(f19_params[0].name, idx=self.index)] + f19 = FunctionNode("function_abort_Bool", f19_params, f19_localVars, f19_instructions) + + self.fun_nodes += [f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19] + object_methods = [('abort', f1.name), ('type_name', f2.name), ('copy', f3.name)] + string_methods = [('length', f8.name), ('concat', f9.name), ('substr', f10.name), ('abort', f17.name), + ('type_name', f11.name), ('copy', f12.name)] + io_methods = [('out_string', f4.name), ('out_int', f5.name), ('in_int', f6.name), ('in_string', f7.name)] + int_methods = [('abort', f18.name), ('type_name', f13.name), ('copy', f14.name)] + bool_methods = [('abort', f19.name), ('type_name', f15.name), ('copy', f16.name)] + + self.types_nodes += [TypeNode("Object", [], object_methods), + TypeNode("IO", [], object_methods + io_methods), + TypeNode("String", [], string_methods), + TypeNode('Int', [], int_methods), + TypeNode('Bool', [], bool_methods)] + + def sort_option_nodes_by_type(self, case_list): + return sorted(case_list, reverse=True, + key=lambda x: self.context.get_depth(x.typex)) + + def check_void(self, expr): + result = self.define_internal_local() + self.register_instruction(ast_cil.TypeOfNode(expr, result)) + + void_expr = self.define_internal_local() + self.register_instruction(ast_cil.LoadNode(void_expr, self.void_data)) + self.register_instruction(ast_cil.EqualNode(result, result, void_expr)) + return result + + def handle_arguments(self, args, scope, param_types): + args_node = [] + args = [self.visit(arg, scope) for arg in args] + + for (arg, typex), param_type in zip(args, param_types): + if typex.name in ['String', 'Int', 'Bool'] and param_type.name == 'Object': + auxiliar = self.define_internal_local() + self.register_instruction(ast_cil.BoxingNode(auxiliar, typex.name)) + else: + auxiliar = arg + args_node.append(ast_cil.ArgNode(auxiliar, self.index)) + return args_node diff --git a/src/cool/codegen/codegen.py b/src/cool/codegen/codegen.py new file mode 100644 index 000000000..d18091ecf --- /dev/null +++ b/src/cool/codegen/codegen.py @@ -0,0 +1,3 @@ +def run(context, ast, scope): + # transform to cil + pass diff --git a/src/cool/codegen/utils/__init__.py b/src/cool/codegen/utils/__init__.py new file mode 100644 index 000000000..22aaf749e --- /dev/null +++ b/src/cool/codegen/utils/__init__.py @@ -0,0 +1 @@ +from .ast_cil import * diff --git a/src/cool/codegen/utils/__main__.py b/src/cool/codegen/utils/__main__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/cool/codegen/utils/ast_cil.py b/src/cool/codegen/utils/ast_cil.py new file mode 100644 index 000000000..abee2dcb8 --- /dev/null +++ b/src/cool/codegen/utils/ast_cil.py @@ -0,0 +1,407 @@ +class Node: + pass + + +class ProgramNode(Node): + def __init__(self, dottypes, dotdata, dotcode, idx=None): + self.dottypes = dottypes + self.dotdata = dotdata + self.dotcode = dotcode + self.index = idx + + +class TypeNode(Node): + def __init__(self, name, atributes=None, methods=None, idx=None): + self.name = name + self.attributes = atributes if atributes is not None else [] + self.methods = methods if methods is not None else [] + self.index = idx + + +class DataNode(Node): + def __init__(self, vname, value, idx=None): + self.name = vname + self.value = value + self.index = idx + + +class FunctionNode(Node): + def __init__(self, fname, params, localvars, instructions, idx=None): + self.name = fname + self.params = params + self.localvars = localvars + self.instructions = instructions + self.index = idx + + +class ParamNode(Node): + def __init__(self, name, typex, idx=None): + self.name = name + self.type = typex + self.index = idx + + +class LocalNode(Node): + def __init__(self, name, idx=None): + self.name = name + self.index = idx + + +class InstructionNode(Node): + def __init__(self, idx=None): + self.in1 = None + self.in2 = None + self.out = None + self.index = idx + + +class AssignNode(InstructionNode): + def __init__(self, dest, source, idx=None): + super().__init__(idx) + self.dest = dest + self.source = source + + self.in1 = source + self.out = dest + + +class UnaryNode(InstructionNode): + def __init__(self, dest, expr, idx=None): + super().__init__(idx) + self.dest = dest + self.expr = expr + + self.in1 = expr + self.out = dest + + +class NotNode(UnaryNode): + pass + + +class LogicalNotNode(UnaryNode): + pass + + +class BinaryNode(InstructionNode): + def __init__(self, dest, left, right, idx=None): + super().__init__(idx) + self.dest = dest + self.left = left + self.right = right + + self.in1 = left + self.in2 = right + self.out = dest + + +class PlusNode(BinaryNode): + pass + + +class MinusNode(BinaryNode): + pass + + +class StarNode(BinaryNode): + pass + + +class DivNode(BinaryNode): + pass + + +class LessNode(BinaryNode): + pass + + +class LessEqNode(BinaryNode): + pass + + +class EqualNode(BinaryNode): + pass + + +class GetAttribNode(InstructionNode): + def __init__(self, obj, attr, typex, dest, attr_type, idx=None): + super().__init__(idx) + self.obj = obj + self.attr = attr + self.type_name = typex + # self.attr_offset = offset + self.dest = dest + self.attr_type = attr_type + + self.out = dest + self.in1 = obj + + +class SetAttribNode(InstructionNode): + def __init__(self, obj, attr, typex, value, idx=None): + super().__init__(idx) + self.obj = obj + self.attr = attr + # self.attr_offset = offset + self.value = value + self.type_name = typex + + self.out = obj + self.in1 = value + + +class GetIndexNode(InstructionNode): + pass + + +class SetIndexNode(InstructionNode): + pass + + +class AllocateNode(InstructionNode): + def __init__(self, itype, dest, idx=None): + super().__init__(idx) + self.type = itype + self.dest = dest + + self.out = dest + + +class ArrayNode(InstructionNode): + pass + + +class TypeOfNode(InstructionNode): + def __init__(self, obj, dest, idx=None): + super().__init__(idx) + self.obj = obj + self.dest = dest + + self.out = dest + self.in1 = obj + + +class LabelNode(InstructionNode): + def __init__(self, label, idx=None): + super().__init__(idx) + self.label = label + + +class GotoNode(InstructionNode): + def __init__(self, label, idx=None): + super().__init__(idx) + self.label = label + + +class GotoIfNode(InstructionNode): + def __init__(self, cond, label, idx=None): + super().__init__(idx) + self.cond = cond + self.label = label + + self.in1 = cond + + +class GotoIfFalseNode(InstructionNode): + def __init__(self, cond, label, idx=None): + super().__init__(idx) + self.cond = cond + self.label = label + + self.in1 = cond + + +class StaticCallNode(InstructionNode): + def __init__(self, xtype, function, dest, args, return_type, idx=None): + super().__init__(idx) + self.type = xtype + self.function = function + self.dest = dest + self.args = args + self.return_type = return_type + + self.out = dest + + +class DynamicCallNode(InstructionNode): + def __init__(self, xtype, obj, method, dest, args, return_type, idx=None): + super().__init__(idx) + self.type = xtype + self.method = method + self.dest = dest + self.args = args + self.return_type = return_type + self.obj = obj + + self.out = dest + self.in1 = obj + + +class ArgNode(InstructionNode): + def __init__(self, name, idx=None): + super().__init__(idx) + self.dest = name + + self.out = name + + +class ReturnNode(InstructionNode): + def __init__(self, value, idx=None): + super().__init__(idx) + self.value = value + + self.out = value + + +class LoadNode(InstructionNode): + def __init__(self, dest, msg, idx=None): + super().__init__(idx) + self.dest = dest + self.msg = msg + + self.out = dest + + +class LengthNode(InstructionNode): + def __init__(self, dest, arg, idx=None): + super().__init__(idx) + self.dest = dest + self.arg = arg + + self.out = dest + self.in1 = arg + + +class ConcatNode(InstructionNode): + def __init__(self, dest, arg1, arg2, idx=None): + super().__init__(idx) + self.dest = dest + self.arg1 = arg1 + self.arg2 = arg2 + + self.out = dest + self.in1 = arg1 + self.in2 = arg2 + + +class PrefixNode(InstructionNode): + def __init__(self, dest, word, n, idx=None): + super().__init__(idx) + self.dest = dest + self.word = word + self.n = n + + self.out = dest + self.in1 = word + self.in2 = n + + +class SubstringNode(InstructionNode): + def __init__(self, dest, word, begin, end, idx=None): + super().__init__(idx) + self.dest = dest + self.begin = begin + self.word = word + self.end = end + + self.out = dest + self.in1 = begin + self.in2 = end + + +class ToStrNode(InstructionNode): + def __init__(self, dest, ivalue, idx=None): + super().__init__(idx) + self.dest = dest + self.ivalue = ivalue + + self.out = dest + self.in1 = ivalue + + +class OutStringNode(InstructionNode): + def __init__(self, value, idx=None): + super().__init__(idx) + self.value = value + + self.in1 = value + + +class OutIntNode(InstructionNode): + def __init__(self, value, idx=None): + super().__init__(idx) + self.value = value + + self.in1 = value + + +class ReadStringNode(InstructionNode): + def __init__(self, dest, idx=None): + super().__init__(idx) + self.dest = dest + + self.out = dest + + +class ReadIntNode(InstructionNode): + def __init__(self, dest, idx=None): + super().__init__(idx) + self.dest = dest + + self.out = dest + + +class ExitNode(InstructionNode): + def __init__(self, classx, value=0, idx=None): + super().__init__(idx) + self.classx = classx # instance of the method that called the class + self.value = value + + self.in1 = value + self.in2 = classx + + +class CopyNode(InstructionNode): + def __init__(self, dest, source, idx=None): + super().__init__(idx) + self.dest = dest + self.source = source + + self.out = dest + self.in1 = source + + +class ConformsNode(InstructionNode): + "Checks if the type of expr conforms to type2" + + def __init__(self, dest, expr, type2, idx=None): + super().__init__(idx) + self.dest = dest + self.expr = expr + self.type = type2 + + self.out = dest + self.in1 = expr # is a string, so is always a variable + + +class VoidConstantNode(InstructionNode): + def __init__(self, obj, idx=None): + super().__init__(idx) + self.obj = obj + + self.out = obj + + +class ErrorNode(InstructionNode): + def __init__(self, typex, idx=None): + super().__init__(idx) + self.type = typex + + +class BoxingNode(InstructionNode): + def __init__(self, dest, type_name, idx=None): + super().__init__(idx) + self.dest = dest + self.type = type_name + + self.out = dest From 1c918e1b5242b1684c84a154fc2d1370dbd804fb Mon Sep 17 00:00:00 2001 From: JCH97 Date: Sat, 19 Feb 2022 22:18:21 -0500 Subject: [PATCH 37/44] feat(codegen): initial approach to cil_visitor --- src/cool/codegen/cil_visitor.py | 403 +++++++++++++++++++++++ src/cool/codegen/cilgen.py | 2 + src/cool/codegen/utils/ast_cil.py | 14 +- src/cool/parser/output/parselog.txt | 484 ++++++++++++++-------------- 4 files changed, 653 insertions(+), 250 deletions(-) create mode 100644 src/cool/codegen/cil_visitor.py diff --git a/src/cool/codegen/cil_visitor.py b/src/cool/codegen/cil_visitor.py new file mode 100644 index 000000000..86b048ff8 --- /dev/null +++ b/src/cool/codegen/cil_visitor.py @@ -0,0 +1,403 @@ +from .cilgen import BaseCil +from utils import visitor +from utils.ast import * +from semantic.helpers import Scope, VariableInfo +from semantic.types import * +from .utils import ast_cil +from utils.helpers import get_type, get_common_base_type + + +class CilVisitor(BaseCil): + @visitor.on('node') + def visit(self, node): + pass + + @visitor.when(ProgramNode) + def visit(self, node: ProgramNode, scope: Scope): + self.current_function = self.register_function('entry') + idx = self.index + + instance = self.define_internal_local() + result = self.define_internal_local() + self.register_instruction(ast_cil.AllocateNode('Main', instance)) + typex = self.context.get_type('Main', (0, 0)) + + if typex.all_attributes(): + self.register_instruction( + ast_cil.StaticCallNode(typex.name, typex.name, None, [ast_cil.ArgNode(instance)], typex.name)) + + self.register_instruction(ast_cil.StaticCallNode('Main', 'main', result, [ast_cil.ArgNode(instance)], 'Object')) + self.register_instruction(ast_cil.ReturnNode(0)) + + self.current_function = None + self.void_data = self.register_data(VOID_NAME).name + self.built_in_functions() + + for declaration, child_scope in zip(node.declarations, scope.children): + self.visit(declaration, child_scope) + + return ast_cil.ProgramNode(self.types_nodes, self.data, self.fun_nodes, idx) + + # result_year = [x for x in range(1986, 2011)] + + @visitor.when(ClassDeclarationNode) + def visit(self, node: ClassDeclarationNode, scope: Scope): + self.current_type = self.context.get_type(node.id, node.pos) + + cil_type = self.register_type(node.id) + attrs = self.current_type.all_attributes() + + if len(attrs) > 0: + constructor = FuncDeclarationNode(node.token, [], node.token, BlockNode([], node.token)) + func_declarations = [constructor] + self.constructors.append(node.id) + self.current_type.define_method(self.current_type.name, [], [], self.current_type, node.pos) + + scopes = [scope] + list(scope.functions.values()) + else: + func_declarations = [] + scopes = list(scope.functions.values()) + + for attr, a_type in attrs: + cil_type.attributes.append((attr.name, self.to_attr_name(attr.name, a_type.name))) + self.initialize_attr(constructor, attr, scope) + if attrs: + # Append like the last expression self type + constructor.body.expr_list.append(SelfNode()) + + for method, mtype in self.current_type.all_methods(): + cil_type.methods.append((method.name, self.to_function_name(method.name, mtype.name))) + + func_declarations += [f for f in node.features if isinstance(f, FuncDeclarationNode)] + for feature, child_scope in zip(func_declarations, scopes): + self.visit(feature, child_scope) + + @visitor.when(FuncDeclarationNode) + def visit(self, node: FuncDeclarationNode, scope: Scope): + self.current_method = self.current_type.get_method(node.id, node.pos) + + name = self.to_function_name(node.id, self.current_type.name) + self.current_function = self.register_function(name) + + self.register_param('self', self.current_type.name) + for p_name, p_type in node.params: + self.register_param(p_name, p_type.value) + + value, typex = self.visit(node.body, scope) + if not isinstance(value, str): + result = self.define_internal_local() + self.register_instruction(ast_cil.AssignNode(result, value)) + else: + result = value + + if ( + typex.name == 'Int' or typex.name == 'String' or typex.name == 'Bool') and self.current_method.return_type.name == 'Object': + self.register_instruction(ast_cil.BoxingNode(result, typex.name)) + + self.register_instruction(ast_cil.ReturnNode(result)) + self.current_method = None + + @visitor.when(VarDeclarationNode) + def visit(self, node: VarDeclarationNode, scope: Scope): + var_info = scope.find_variable(node.id) + vtype = get_type(var_info.type, self.current_type) + local_var = self.register_local(var_info.name) + + value, typex = self.visit(node.expr, scope) + if vtype.name == 'Object' and typex.name in ['String', 'Int', 'Bool']: + self.register_instruction(ast_cil.BoxingNode(local_var, typex.name)) + else: + self.register_instruction(ast_cil.AssignNode(local_var, value)) + return local_var, vtype + + @visitor.when(AssignNode) + def visit(self, node: AssignNode, scope: Scope): + var_info = scope.find_local(node.id) + value, typex = self.visit(node.expr, scope) + if var_info is None: + var_info = scope.find_attribute(node.id) + attributes = [attr.name for attr, a_type in self.current_type.all_attributes()] + if var_info.type.name == 'Object' and typex.name in ['String', 'Bool', 'Int']: + value = self.define_internal_local() + self.register_instruction(ast_cil.BoxingNode(value, typex.name)) + self.register_instruction(ast_cil.SetAttribNode('self', var_info.name, self.current_type.name, value)) + else: + local_name = self.to_var_name(var_info.name) + if var_info.type.name == 'Object' and typex.name in ['String', 'Bool', 'Int']: + self.register_instruction(ast_cil.BoxingNode(local_name, typex.name)) + else: + self.register_instruction(ast_cil.AssignNode(local_name, value)) + return value, typex + + def _return_type(self, typex: Type, node): + meth = typex.get_method(node.id, node.pos) + return get_type(meth.return_type, self.current_type) + + @visitor.when(CallNode) + def visit(self, node: CallNode, scope: Scope): + obj, otype = self.visit(node.obj, scope) + + meth = otype.get_method(node.id, node.pos) + args_node = [ast_cil.ArgNode(obj, self.index)] + self.handle_arguments(node.args, scope, meth.param_types) + + rtype = meth.return_type + result = None if isinstance(rtype, VoidType) else self.define_internal_local() + + continue_label = ast_cil.LabelNode(f'continue__{self.index}') + isvoid = self.check_void(obj) + self.register_instruction(ast_cil.GotoIfFalseNode(isvoid, continue_label.label)) + self.register_instruction(ast_cil.ErrorNode('dispatch_error')) + self.register_instruction(continue_label) + + if otype in [StringType(), IntType(), BoolType()]: + self.register_instruction(ast_cil.StaticCallNode(otype.name, node.id, result, args_node, rtype.name)) + else: + self.register_instruction(ast_cil.DynamicCallNode(otype.name, obj, node.id, result, args_node, rtype.name)) + return result, self._return_type(otype, node) + + @visitor.when(BaseCallNode) + def visit(self, node: BaseCallNode, scope: Scope): + obj, otype = self.visit(node.obj, scope) + + meth = otype.get_method(node.id, node.pos) + args_node = [ast_cil.ArgNode(obj, self.index)] + self.handle_arguments(node.args, scope, meth.param_types) + + rtype = meth.return_type + result = None if isinstance(rtype, VoidType) else self.define_internal_local() + + continue_label = ast_cil.LabelNode(f'continue__{self.index}') + isvoid = self.check_void(obj) + self.register_instruction(ast_cil.GotoIfFalseNode(isvoid, continue_label.label)) + self.register_instruction(ast_cil.ErrorNode('dispatch_error')) + self.register_instruction(continue_label) + + self.register_instruction(ast_cil.StaticCallNode(node.type, node.id, result, args_node, rtype.name)) + return result, self._return_type(otype, node) + + @visitor.when(StaticCallNode) + def visit(self, node: StaticCallNode, scope: Scope): + meth = self.current_type.get_method(node.id, node.pos) + args_node = [ast_cil.ArgNode('self', self.index)] + self.handle_arguments(node.args, scope, meth.param_types) + + rtype = meth.return_type + if isinstance(rtype, VoidType): + result = None + else: + result = self.define_internal_local() + + self.register_instruction( + ast_cil.DynamicCallNode(self.current_type.name, 'self', node.id, result, args_node, rtype.name)) + return result, self._return_type(self.current_type, node) + + @visitor.when(ConstantNumNode) + def visit(self, node: ConstantNumNode, scope: Scope): + return int(node.lex), IntType() + + @visitor.when(ConstantBoolNode) + def visit(self, node: ConstantBoolNode, scope: Scope): + return 1 if node.lex == 'true' else 0, BoolType() + + @visitor.when(ConstantStrNode) + def visit(self, node: ConstantStrNode, scope: Scope): + data = self.register_data(node.lex) + result = self.define_internal_local() + self.register_instruction(ast_cil.LoadNode(result, data.name)) + return result, StringType() + + @visitor.when(ConstantVoidNode) + def visit(self, node: ConstantVoidNode, scope: Scope): + result = self.register_local(node.lex) + void = ast_cil.VoidConstantNode(result) + self.register_instruction(void) + return result, VoidType() + + @visitor.when(SelfNode) + def visit(self, node: SelfNode, scope: Scope): + return 'self', self.current_type + + @visitor.when(VariableNode) + def visit(self, node: VariableNode, scope: Scope): + try: + typex = scope.find_local(node.lex).type + name = self.to_var_name(node.lex) + return name, get_type(typex, self.current_type) + except: + var_info = scope.find_attribute(node.lex) + local_var = self.register_local(var_info.name) + self.register_instruction( + ast_cil.GetAttribNode('self', var_info.name, self.current_type.name, local_var, var_info.type.name)) + return local_var, get_type(var_info.type, self.current_type) + + @visitor.when(InstantiateNode) + def visit(self, node: InstantiateNode, scope: Scope): + instance = self.define_internal_local() + typex = self.context.get_type(node.lex, node.pos) + typex = get_type(typex, self.current_type) + self.register_instruction(ast_cil.AllocateNode(typex.name, instance)) + + # calling the constructor to load all attributes + # Si tiene atributos entonces tendrá constructor (esto se deberia optimizar mas) + if typex.all_attributes(): + self.register_instruction( + ast_cil.StaticCallNode(typex.name, typex.name, instance, [ast_cil.ArgNode(instance)], typex.name)) + + return instance, typex + + @visitor.when(WhileNode) + def visit(self, node: WhileNode, scope: Scope): + ''' + LABEL start + IF NOT GOTO end + res = + GOTO start + LABEL end + ''' + start_label = ast_cil.LabelNode(f'start__{self.idx}') + end_label = ast_cil.LabelNode(f'end__{self.idx}') + + result = self.define_internal_local() + self.register_instruction(ast_cil.VoidConstantNode(result)) + self.register_instruction(start_label) + + cond, _ = self.visit(node.cond, scope) + self.register_instruction(ast_cil.GotoIfFalseNode(cond, end_label.label)) + expr, typex = self.visit(node.expr, scope) + self.register_instruction(ast_cil.AssignNode(result, expr)) + self.register_instruction(ast_cil.GotoNode(start_label.label)) + self.register_instruction(end_label) + + return result, ObjectType() + + @visitor.when(ConditionalNode) + def visit(self, node: ConditionalNode, scope: Scope): + ''' + IF cond GOTO true + result = + GOTO end + LABEL true + result = + LABEL end + ''' + cond, _ = self.visit(node.cond, scope) + + true_label = ast_cil.LabelNode(f"true__{self.idx}") + end_label = ast_cil.LabelNode(f"end__{self.idx}") + + result = self.define_internal_local() + self.register_instruction(ast_cil.GotoIfNode(cond, true_label.label)) + + false_expr, ftypex = self.visit(node.else_stm, scope) + self.register_instruction(ast_cil.AssignNode(result, false_expr)) + self.register_instruction(ast_cil.GotoNode(end_label.label)) + self.register_instruction(true_label) + + true_expr, ttypex = self.visit(node.stm, scope) + self.register_instruction(ast_cil.AssignNode(result, true_expr)) + self.register_instruction(end_label) + return result, get_common_base_type([ttypex, ftypex]) + + @visitor.when(BlockNode) + def visit(self, node: BlockNode, scope: Scope): + value = None + for exp in node.expr_list: + value, typex = self.visit(exp, scope) + result = self.define_internal_local() + self.register_instruction(ast_cil.AssignNode(result, value)) + return result, typex + + @visitor.when(LetNode) + def visit(self, node: LetNode, scope: Scope): + child_scope = scope.expr_dict[node] + for init in node.init_list: + self.visit(init, child_scope) + + expr, typex = self.visit(node.expr, child_scope) + return expr, typex + + @visitor.when(CaseNode) + def visit(self, node: CaseNode, scope: Scope): + expr, typex = self.visit(node.expr, scope) + + result = self.define_internal_local() + end_label = ast_cil.LabelNode(f'end__{self.idx}') + error_label = ast_cil.LabelNode(f'error__{self.idx}') + + isvoid = self.check_void(expr) + self.register_instruction(ast_cil.GotoIfNode(isvoid, error_label.label)) + + try: + new_scope = scope.expr_dict[node] + except: + new_scope = scope + sorted_case_list = self.sort_option_nodes_by_type(node.case_list) + for i, case in enumerate(sorted_case_list): + next_label = ast_cil.LabelNode(f'next__{self.idx}_{i}') + expr_i = self.visit(case, new_scope.create_child(), expr, next_label, typex) + self.register_instruction(ast_cil.AssignNode(result, expr_i)) + self.register_instruction(ast_cil.GotoNode(end_label.label)) + self.register_instruction(next_label) + + # No match before + self.register_instruction(ast_cil.ErrorNode('case_error')) + self.register_instruction(error_label) + self.register_instruction(ast_cil.ErrorNode('case_void_error')) + self.register_instruction(end_label) + return result, typex + + @visitor.when(OptionNode) + def visit(self, node: OptionNode, scope: Scope, expr, next_label, type_e): + aux = self.define_internal_local() + self.register_instruction(ast_cil.ConformsNode(aux, expr, node.typex)) + self.register_instruction(ast_cil.GotoIfFalseNode(aux, next_label.label)) + + local_var = self.register_local(node.id) + typex = self.context.get_type(node.typex, node.type_pos) + scope.define_variable(node.id, typex) + if typex.name == 'Object' and type_e.name in ['String', 'Int', 'Bool']: + self.register_instruction(ast_cil.BoxingNode(local_var, type_e.name)) + else: + self.register_instruction(ast_cil.AssignNode(local_var, expr)) + expr_i, type_expr = self.visit(node.expr, scope) + return expr_i + + @visitor.when(NotNode) + def visit(self, node: NotNode, scope: Scope): + return self._define_unary_node(node, scope, ast_cil.LogicalNotNode) + + @visitor.when(BinaryNotNode) + def visit(self, node: BinaryNotNode, scope: Scope): + return self._define_unary_node(node, scope, ast_cil.NotNode) + + @visitor.when(IsVoidNode) + def visit(self, node: IsVoidNode, scope: Scope): + expr, _ = self.visit(node.expr, scope) + result = self.check_void(expr) + return result, BoolType() + + @visitor.when(PlusNode) + def visit(self, node: PlusNode, scope: Scope): + return self._define_binary_node(node, scope, ast_cil.PlusNode) + + @visitor.when(MinusNode) + def visit(self, node: MinusNode, scope: Scope): + return self._define_binary_node(node, scope, ast_cil.MinusNode) + + @visitor.when(StarNode) + def visit(self, node: StarNode, scope: Scope): + return self._define_binary_node(node, scope, ast_cil.StarNode) + + @visitor.when(DivNode) + def visit(self, node: DivNode, scope: Scope): + return self._define_binary_node(node, scope, ast_cil.DivNode) + + @visitor.when(LessNode) + def visit(self, node: LessNode, scope: Scope): + return self._define_binary_node(node, scope, ast_cil.LessNode) + + @visitor.when(LessEqNode) + def visit(self, node: LessEqNode, scope: Scope): + return self._define_binary_node(node, scope, ast_cil.LessEqNode) + + @visitor.when(EqualNode) + def visit(self, node: EqualNode, scope: Scope): + return self._define_binary_node(node, scope, ast_cil.EqualNode) diff --git a/src/cool/codegen/cilgen.py b/src/cool/codegen/cilgen.py index 314a6fde2..bd189d6d1 100644 --- a/src/cool/codegen/cilgen.py +++ b/src/cool/codegen/cilgen.py @@ -9,6 +9,8 @@ class BaseCil: def __init__(self, context): self.current_function = None + self.current_type: Type = None + self.current_method: Method = None self.fun_nodes = [] self.data = [] self.types_nodes = [] diff --git a/src/cool/codegen/utils/ast_cil.py b/src/cool/codegen/utils/ast_cil.py index abee2dcb8..39d6def5f 100644 --- a/src/cool/codegen/utils/ast_cil.py +++ b/src/cool/codegen/utils/ast_cil.py @@ -3,17 +3,17 @@ class Node: class ProgramNode(Node): - def __init__(self, dottypes, dotdata, dotcode, idx=None): - self.dottypes = dottypes - self.dotdata = dotdata - self.dotcode = dotcode + def __init__(self, type_node, data, func_node, idx=None): + self.type_node = type_node + self.data = data + self.fun_node = func_node self.index = idx class TypeNode(Node): - def __init__(self, name, atributes=None, methods=None, idx=None): + def __init__(self, name, attributes=None, methods=None, idx=None): self.name = name - self.attributes = atributes if atributes is not None else [] + self.attributes = attributes if attributes is not None else [] self.methods = methods if methods is not None else [] self.index = idx @@ -372,8 +372,6 @@ def __init__(self, dest, source, idx=None): class ConformsNode(InstructionNode): - "Checks if the type of expr conforms to type2" - def __init__(self, dest, expr, type2, idx=None): super().__init__(idx) self.dest = dest diff --git a/src/cool/parser/output/parselog.txt b/src/cool/parser/output/parselog.txt index 5af99ab08..8157647aa 100644 --- a/src/cool/parser/output/parselog.txt +++ b/src/cool/parser/output/parselog.txt @@ -6145,7 +6145,7 @@ yacc.py: 430:Defaulted state 16: Reduce using 14 yacc.py: 434:Stack : class type ocur epsilon . LexToken(ccur,'}',3,27) yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 14 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 14 yacc.py: 434:Stack : class type ocur feature_list . LexToken(ccur,'}',3,27) @@ -6158,7 +6158,7 @@ yacc.py: 411:State : 38 yacc.py: 434:Stack : class type ocur feature_list ccur semi . LexToken(class,'class',4,30) yacc.py: 469:Action : Reduce rule [def_class -> class type ocur feature_list ccur semi] with ['class','A','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( ( epsilon] with [None] and goto state 53 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 53 yacc.py: 434:Stack : def_class class type inherits type ocur feature_list . LexToken(ccur,'}',4,51) @@ -6202,7 +6202,7 @@ yacc.py: 411:State : 102 yacc.py: 434:Stack : def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',5,54) yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','B','inherits','A','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( ( epsilon] with [None] and goto state 53 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 53 yacc.py: 434:Stack : def_class def_class class type inherits type ocur feature_list . LexToken(ccur,'}',5,75) @@ -6246,7 +6246,7 @@ yacc.py: 411:State : 102 yacc.py: 434:Stack : def_class def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',6,78) yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','C','inherits','B','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( ( epsilon] with [None] and goto state 53 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 53 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur feature_list . LexToken(ccur,'}',6,99) @@ -6290,7 +6290,7 @@ yacc.py: 411:State : 102 yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',7,102) yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','D','inherits','B','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( ( epsilon] with [None] and goto state 53 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 53 yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur feature_list . LexToken(ccur,'}',7,123) @@ -6334,7 +6334,7 @@ yacc.py: 411:State : 102 yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',8,127) yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','E','inherits','B','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( ( epsilon] with [None] and goto state 53 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 53 yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type inherits type ocur feature_list . LexToken(ccur,'}',8,148) @@ -6378,7 +6378,7 @@ yacc.py: 411:State : 102 yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',10,153) yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','F','inherits','A','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( ( epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar param_list_empty . LexToken(cpar,')',11,184) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar formals . LexToken(cpar,')',11,184) @@ -6456,48 +6456,48 @@ yacc.py: 411:State : 93 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar formals cpar colon type ocur id opar string . LexToken(cpar,')',11,217) yacc.py: 469:Action : Reduce rule [atom -> string] with ['Hello World!'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'out_string',11,192), [ id opar args cpar] with ['out_string','(',,')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'out_string',11,192), [ func_call] with [] and goto state 77 - yacc.py: 506:Result : ( func_call] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','IO','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','IO','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( id colon type] with ['a',':','Bool'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'a',13,235), LexToken(type, ...) + yacc.py: 506:Result : ((LexToken(id,'a',13,235), LexToken(type, ...) yacc.py: 410: yacc.py: 411:State : 130 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let param . LexToken(comma,',',13,242) - yacc.py: 469:Action : Reduce rule [let_assign -> param] with [] and goto state 129 - yacc.py: 506:Result : ( param] with [] and goto state 129 + yacc.py: 506:Result : ( id colon type] with ['a',':','Int'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'a',13,244), LexToken(type, ...) + yacc.py: 506:Result : ((LexToken(id,'a',13,244), LexToken(type, ...) yacc.py: 410: yacc.py: 411:State : 130 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma param . LexToken(larrow,'<-',13,251) @@ -6626,42 +6626,42 @@ yacc.py: 411:State : 88 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma param larrow num . LexToken(comma,',',13,255) yacc.py: 469:Action : Reduce rule [atom -> num] with [5.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 - yacc.py: 506:Result : ( comp] with [] and goto state 198 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 - yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 + yacc.py: 506:Result : ( id colon type] with ['a',':','String'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'a',13,257), LexToken(type, ...) + yacc.py: 506:Result : ((LexToken(id,'a',13,257), LexToken(type, ...) yacc.py: 410: yacc.py: 411:State : 130 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma let_assign comma param . LexToken(comma,',',13,266) - yacc.py: 469:Action : Reduce rule [let_assign -> param] with [] and goto state 129 - yacc.py: 506:Result : ( param] with [] and goto state 129 + yacc.py: 506:Result : ( id colon type] with ['a',':','A'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'a',13,268), LexToken(type, ...) + yacc.py: 506:Result : ((LexToken(id,'a',13,268), LexToken(type, ...) yacc.py: 410: yacc.py: 411:State : 130 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma let_assign comma let_assign comma param . LexToken(larrow,'<-',13,273) @@ -6725,42 +6725,42 @@ yacc.py: 411:State : 134 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma let_assign comma let_assign comma param larrow new type . LexToken(comma,',',13,281) yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','F'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 - yacc.py: 506:Result : ( comp] with [] and goto state 198 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 - yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 + yacc.py: 506:Result : ( id colon type] with ['b',':','B'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'b',13,283), LexToken(type, ...) + yacc.py: 506:Result : ((LexToken(id,'b',13,283), LexToken(type, ...) yacc.py: 410: yacc.py: 411:State : 130 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma let_assign comma let_assign comma let_assign comma param . LexToken(larrow,'<-',13,288) @@ -6798,71 +6798,71 @@ yacc.py: 411:State : 134 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma let_assign comma let_assign comma let_assign comma param larrow new type . LexToken(in,'in',13,297) yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','E'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 - yacc.py: 506:Result : ( comp] with [] and goto state 198 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 - yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 + yacc.py: 506:Result : ( let_assign] with [] and goto state 197 - yacc.py: 506:Result : ([ let_assign] with [] and goto state 197 + yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 - yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 + yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 - yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 + yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 - yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 + yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 128 - yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 128 + yacc.py: 506:Result : ([ id] with ['b'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 196 - yacc.py: 506:Result : ( comp] with [] and goto state 196 + yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 - yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['b',':','B','<-',] and goto state 17 - yacc.py: 506:Result : ( id colon type larrow expr] with ['b',':','B','<-',] and goto state 17 + yacc.py: 506:Result : ( id colon type] with ['a',':','Bool'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'a',14,319), LexToken(type, ...) + yacc.py: 506:Result : ((LexToken(id,'a',14,319), LexToken(type, ...) yacc.py: 410: yacc.py: 411:State : 130 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let param . LexToken(comma,',',14,326) - yacc.py: 469:Action : Reduce rule [let_assign -> param] with [] and goto state 129 - yacc.py: 506:Result : ( param] with [] and goto state 129 + yacc.py: 506:Result : ( id colon type] with ['a',':','Int'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'a',14,328), LexToken(type, ...) + yacc.py: 506:Result : ((LexToken(id,'a',14,328), LexToken(type, ...) yacc.py: 410: yacc.py: 411:State : 130 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma param . LexToken(larrow,'<-',14,335) @@ -7021,42 +7021,42 @@ yacc.py: 411:State : 88 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma param larrow num . LexToken(comma,',',14,339) yacc.py: 469:Action : Reduce rule [atom -> num] with [5.0] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 - yacc.py: 506:Result : ( comp] with [] and goto state 198 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 - yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 + yacc.py: 506:Result : ( id colon type] with ['a',':','String'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'a',14,341), LexToken(type, ...) + yacc.py: 506:Result : ((LexToken(id,'a',14,341), LexToken(type, ...) yacc.py: 410: yacc.py: 411:State : 130 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma let_assign comma param . LexToken(comma,',',14,350) - yacc.py: 469:Action : Reduce rule [let_assign -> param] with [] and goto state 129 - yacc.py: 506:Result : ( param] with [] and goto state 129 + yacc.py: 506:Result : ( id colon type] with ['a',':','A'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'a',14,352), LexToken(type, ...) + yacc.py: 506:Result : ((LexToken(id,'a',14,352), LexToken(type, ...) yacc.py: 410: yacc.py: 411:State : 130 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma let_assign comma let_assign comma param . LexToken(larrow,'<-',14,357) @@ -7120,42 +7120,42 @@ yacc.py: 411:State : 134 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma let_assign comma let_assign comma param larrow new type . LexToken(comma,',',14,365) yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','F'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 - yacc.py: 506:Result : ( comp] with [] and goto state 198 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 - yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 + yacc.py: 506:Result : ( id colon type] with ['b',':','Cadena'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'b',14,367), LexToken(type, ...) + yacc.py: 506:Result : ((LexToken(id,'b',14,367), LexToken(type, ...) yacc.py: 410: yacc.py: 411:State : 130 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma let_assign comma let_assign comma let_assign comma param . LexToken(in,'in',14,377) - yacc.py: 469:Action : Reduce rule [let_assign -> param] with [] and goto state 129 - yacc.py: 506:Result : ( param] with [] and goto state 129 + yacc.py: 506:Result : ( let_assign] with [] and goto state 197 - yacc.py: 506:Result : ([ let_assign] with [] and goto state 197 + yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 - yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 + yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 - yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 + yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 - yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 + yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 128 - yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 128 + yacc.py: 506:Result : ([ new type] with ['new','B'] and goto state 79 - yacc.py: 506:Result : ( ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 196 - yacc.py: 506:Result : ( comp] with [] and goto state 196 + yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 - yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( comp] with [] and goto state 97 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test',':','B','<-',] and goto state 17 - yacc.py: 506:Result : ( id colon type larrow expr] with ['test',':','B','<-',] and goto state 17 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 47 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 47 yacc.py: 430:Defaulted state 47: Reduce using 15 yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi def_attr semi feature_list . LexToken(ccur,'}',15,387) - yacc.py: 469:Action : Reduce rule [feature_list -> def_attr semi feature_list] with [,';',[]] and goto state 47 - yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',[]] and goto state 47 + yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 48 - yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 53 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 53 + yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['class','Main','inherits','IO','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( class type inherits type ocur feature_list ccur semi] with ['class','Main','inherits','IO','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( def_class] with [] and goto state 6 - yacc.py: 506:Result : ([ def_class] with [] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 2 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 2 + yacc.py: 506:Result : ([ class_list] with [] and goto state 1 - yacc.py: 506:Result : ( class_list] with [] and goto state 1 + yacc.py: 506:Result : ( ( ( Date: Thu, 24 Feb 2022 09:31:27 -0500 Subject: [PATCH 38/44] feat(): add BaseCilToMips. add mips_visitor --- mips-code.txt | 3924 ++++++++++++++++ src/cool/__init__.py | 1 + src/cool/__main__.py | 1 + src/cool/codegen/__init__.py | 1 + src/cool/codegen/__main__.py | 20 + src/cool/codegen/cil_visitor.py | 10 +- src/cool/codegen/cilgen.py | 18 +- src/cool/codegen/mips_visitor.py | 777 ++++ src/cool/codegen/mipsgen.py | 469 ++ src/cool/codegen/utils/ast_cil.py | 2 +- src/cool/codegen/utils/print_ast.py | 193 + src/cool/codegen/utils/tools.py | 225 + src/cool/parser/output/parselog.txt | 6496 +++++++++++++++++++++++---- src/main.py | 20 +- 14 files changed, 11302 insertions(+), 855 deletions(-) create mode 100644 mips-code.txt create mode 100644 src/cool/codegen/mips_visitor.py create mode 100644 src/cool/codegen/mipsgen.py create mode 100644 src/cool/codegen/utils/print_ast.py create mode 100644 src/cool/codegen/utils/tools.py diff --git a/mips-code.txt b/mips-code.txt new file mode 100644 index 000000000..d1badb702 --- /dev/null +++ b/mips-code.txt @@ -0,0 +1,3924 @@ +.text +.globl main +main: +# Save method directions in the methods array +la $v0, methods +la $t9, entry +sw $t9, 0($v0) +la $t9, function_abort_Object +sw $t9, 4($v0) +la $t9, function_type_name_Object +sw $t9, 8($v0) +la $t9, function_copy_Object +sw $t9, 12($v0) +la $t9, function_out_string_IO +sw $t9, 16($v0) +la $t9, function_out_int_IO +sw $t9, 20($v0) +la $t9, function_in_int_IO +sw $t9, 24($v0) +la $t9, function_in_string_IO +sw $t9, 28($v0) +la $t9, function_length_String +sw $t9, 32($v0) +la $t9, function_concat_String +sw $t9, 36($v0) +la $t9, function_substr_String +sw $t9, 40($v0) +la $t9, function_type_name_String +sw $t9, 44($v0) +la $t9, function_copy_String +sw $t9, 48($v0) +la $t9, function_type_name_Int +sw $t9, 52($v0) +la $t9, function_copy_Int +sw $t9, 56($v0) +la $t9, function_type_name_Bool +sw $t9, 60($v0) +la $t9, function_copy_Bool +sw $t9, 64($v0) +la $t9, function_abort_String +sw $t9, 68($v0) +la $t9, function_abort_Int +sw $t9, 72($v0) +la $t9, function_abort_Bool +sw $t9, 76($v0) +la $t9, function_Book_Book +sw $t9, 80($v0) +la $t9, function_initBook_Book +sw $t9, 84($v0) +la $t9, function_print_Book +sw $t9, 88($v0) +la $t9, function_Article_Article +sw $t9, 92($v0) +la $t9, function_initArticle_Article +sw $t9, 96($v0) +la $t9, function_print_Article +sw $t9, 100($v0) +la $t9, function_isNil_BookList +sw $t9, 104($v0) +la $t9, function_cons_BookList +sw $t9, 108($v0) +la $t9, function_car_BookList +sw $t9, 112($v0) +la $t9, function_cdr_BookList +sw $t9, 116($v0) +la $t9, function_print_list_BookList +sw $t9, 120($v0) +la $t9, function_Cons_Cons +sw $t9, 124($v0) +la $t9, function_isNil_Cons +sw $t9, 128($v0) +la $t9, function_init_Cons +sw $t9, 132($v0) +la $t9, function_car_Cons +sw $t9, 136($v0) +la $t9, function_cdr_Cons +sw $t9, 140($v0) +la $t9, function_print_list_Cons +sw $t9, 144($v0) +la $t9, function_isNil_Nil +sw $t9, 148($v0) +la $t9, function_print_list_Nil +sw $t9, 152($v0) +la $t9, function_Main_Main +sw $t9, 156($v0) +la $t9, function_main_Main +sw $t9, 160($v0) +# Save types directions in the types array +la $t9, types +# Save space to locate the type info +# Allocating memory +li $v0, 9 +li $a0, 12 +syscall +# Filling table methods +la $t8, type_String +sw $t8, 0($v0) +# Copying direction to array +sw $v0, 0($t9) +# Table addr is now stored in t8 +move $t8, $v0 +# Creating the dispatch table +# Allocate dispatch table in the heap +li $v0, 9 +li $a0, 28 +syscall +# I save the offset of every one of the methods of this type +# Save the direction of methods +la $v1, methods +# Save the direction of the method function_length_String in a0 +lw $a0, 32($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 4($v0) +# Save the direction of the method function_concat_String in a0 +lw $a0, 36($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 8($v0) +# Save the direction of the method function_substr_String in a0 +lw $a0, 40($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 12($v0) +# Save the direction of the method function_abort_String in a0 +lw $a0, 68($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 16($v0) +# Save the direction of the method function_type_name_String in a0 +lw $a0, 44($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 20($v0) +# Save the direction of the method function_copy_String in a0 +lw $a0, 48($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 24($v0) +sw $v0, 8($t8) +# Allocating memory +li $v0, 9 +li $a0, 12 +syscall +# Filling table methods +la $t8, type_Int +sw $t8, 0($v0) +# Copying direction to array +sw $v0, 4($t9) +# Table addr is now stored in t8 +move $t8, $v0 +# Creating the dispatch table +# Allocate dispatch table in the heap +li $v0, 9 +li $a0, 16 +syscall +# I save the offset of every one of the methods of this type +# Save the direction of methods +la $v1, methods +# Save the direction of the method function_abort_Int in a0 +lw $a0, 72($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 4($v0) +# Save the direction of the method function_type_name_Int in a0 +lw $a0, 52($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 8($v0) +# Save the direction of the method function_copy_Int in a0 +lw $a0, 56($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 12($v0) +sw $v0, 8($t8) +# Allocating memory +li $v0, 9 +li $a0, 12 +syscall +# Filling table methods +la $t8, type_Object +sw $t8, 0($v0) +# Copying direction to array +sw $v0, 8($t9) +# Table addr is now stored in t8 +move $t8, $v0 +# Creating the dispatch table +# Allocate dispatch table in the heap +li $v0, 9 +li $a0, 16 +syscall +# I save the offset of every one of the methods of this type +# Save the direction of methods +la $v1, methods +# Save the direction of the method function_abort_Object in a0 +lw $a0, 4($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 4($v0) +# Save the direction of the method function_type_name_Object in a0 +lw $a0, 8($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 8($v0) +# Save the direction of the method function_copy_Object in a0 +lw $a0, 12($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 12($v0) +sw $v0, 8($t8) +# Allocating memory +li $v0, 9 +li $a0, 12 +syscall +# Filling table methods +la $t8, type_Bool +sw $t8, 0($v0) +# Copying direction to array +sw $v0, 12($t9) +# Table addr is now stored in t8 +move $t8, $v0 +# Creating the dispatch table +# Allocate dispatch table in the heap +li $v0, 9 +li $a0, 16 +syscall +# I save the offset of every one of the methods of this type +# Save the direction of methods +la $v1, methods +# Save the direction of the method function_abort_Bool in a0 +lw $a0, 76($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 4($v0) +# Save the direction of the method function_type_name_Bool in a0 +lw $a0, 60($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 8($v0) +# Save the direction of the method function_copy_Bool in a0 +lw $a0, 64($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 12($v0) +sw $v0, 8($t8) +# Allocating memory +li $v0, 9 +li $a0, 12 +syscall +# Filling table methods +la $t8, type_IO +sw $t8, 0($v0) +# Copying direction to array +sw $v0, 16($t9) +# Table addr is now stored in t8 +move $t8, $v0 +# Creating the dispatch table +# Allocate dispatch table in the heap +li $v0, 9 +li $a0, 32 +syscall +# I save the offset of every one of the methods of this type +# Save the direction of methods +la $v1, methods +# Save the direction of the method function_abort_Object in a0 +lw $a0, 4($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 4($v0) +# Save the direction of the method function_type_name_Object in a0 +lw $a0, 8($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 8($v0) +# Save the direction of the method function_copy_Object in a0 +lw $a0, 12($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 12($v0) +# Save the direction of the method function_out_string_IO in a0 +lw $a0, 16($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 16($v0) +# Save the direction of the method function_out_int_IO in a0 +lw $a0, 20($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 20($v0) +# Save the direction of the method function_in_int_IO in a0 +lw $a0, 24($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 24($v0) +# Save the direction of the method function_in_string_IO in a0 +lw $a0, 28($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 28($v0) +sw $v0, 8($t8) +# Allocating memory +li $v0, 9 +li $a0, 12 +syscall +# Filling table methods +la $t8, type_Book +sw $t8, 0($v0) +# Copying direction to array +sw $v0, 20($t9) +# Table addr is now stored in t8 +move $t8, $v0 +# Creating the dispatch table +# Allocate dispatch table in the heap +li $v0, 9 +li $a0, 44 +syscall +# I save the offset of every one of the methods of this type +# Save the direction of methods +la $v1, methods +# Save the direction of the method function_abort_Object in a0 +lw $a0, 4($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 4($v0) +# Save the direction of the method function_type_name_Object in a0 +lw $a0, 8($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 8($v0) +# Save the direction of the method function_copy_Object in a0 +lw $a0, 12($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 12($v0) +# Save the direction of the method function_out_string_IO in a0 +lw $a0, 16($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 16($v0) +# Save the direction of the method function_out_int_IO in a0 +lw $a0, 20($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 20($v0) +# Save the direction of the method function_in_string_IO in a0 +lw $a0, 28($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 24($v0) +# Save the direction of the method function_in_int_IO in a0 +lw $a0, 24($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 28($v0) +# Save the direction of the method function_initBook_Book in a0 +lw $a0, 84($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 32($v0) +# Save the direction of the method function_print_Book in a0 +lw $a0, 88($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 36($v0) +# Save the direction of the method function_Book_Book in a0 +lw $a0, 80($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 40($v0) +sw $v0, 8($t8) +# Allocating memory +li $v0, 9 +li $a0, 12 +syscall +# Filling table methods +la $t8, type_Article +sw $t8, 0($v0) +# Copying direction to array +sw $v0, 24($t9) +# Table addr is now stored in t8 +move $t8, $v0 +# Creating the dispatch table +# Allocate dispatch table in the heap +li $v0, 9 +li $a0, 52 +syscall +# I save the offset of every one of the methods of this type +# Save the direction of methods +la $v1, methods +# Save the direction of the method function_abort_Object in a0 +lw $a0, 4($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 4($v0) +# Save the direction of the method function_type_name_Object in a0 +lw $a0, 8($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 8($v0) +# Save the direction of the method function_copy_Object in a0 +lw $a0, 12($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 12($v0) +# Save the direction of the method function_out_string_IO in a0 +lw $a0, 16($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 16($v0) +# Save the direction of the method function_out_int_IO in a0 +lw $a0, 20($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 20($v0) +# Save the direction of the method function_in_string_IO in a0 +lw $a0, 28($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 24($v0) +# Save the direction of the method function_in_int_IO in a0 +lw $a0, 24($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 28($v0) +# Save the direction of the method function_initBook_Book in a0 +lw $a0, 84($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 32($v0) +# Save the direction of the method function_print_Article in a0 +lw $a0, 100($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 36($v0) +# Save the direction of the method function_Book_Book in a0 +lw $a0, 80($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 40($v0) +# Save the direction of the method function_initArticle_Article in a0 +lw $a0, 96($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 44($v0) +# Save the direction of the method function_Article_Article in a0 +lw $a0, 92($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 48($v0) +sw $v0, 8($t8) +# Allocating memory +li $v0, 9 +li $a0, 12 +syscall +# Filling table methods +la $t8, type_BookList +sw $t8, 0($v0) +# Copying direction to array +sw $v0, 28($t9) +# Table addr is now stored in t8 +move $t8, $v0 +# Creating the dispatch table +# Allocate dispatch table in the heap +li $v0, 9 +li $a0, 52 +syscall +# I save the offset of every one of the methods of this type +# Save the direction of methods +la $v1, methods +# Save the direction of the method function_abort_Object in a0 +lw $a0, 4($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 4($v0) +# Save the direction of the method function_type_name_Object in a0 +lw $a0, 8($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 8($v0) +# Save the direction of the method function_copy_Object in a0 +lw $a0, 12($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 12($v0) +# Save the direction of the method function_out_string_IO in a0 +lw $a0, 16($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 16($v0) +# Save the direction of the method function_out_int_IO in a0 +lw $a0, 20($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 20($v0) +# Save the direction of the method function_in_string_IO in a0 +lw $a0, 28($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 24($v0) +# Save the direction of the method function_in_int_IO in a0 +lw $a0, 24($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 28($v0) +# Save the direction of the method function_isNil_BookList in a0 +lw $a0, 104($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 32($v0) +# Save the direction of the method function_cons_BookList in a0 +lw $a0, 108($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 36($v0) +# Save the direction of the method function_car_BookList in a0 +lw $a0, 112($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 40($v0) +# Save the direction of the method function_cdr_BookList in a0 +lw $a0, 116($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 44($v0) +# Save the direction of the method function_print_list_BookList in a0 +lw $a0, 120($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 48($v0) +sw $v0, 8($t8) +# Allocating memory +li $v0, 9 +li $a0, 12 +syscall +# Filling table methods +la $t8, type_Cons +sw $t8, 0($v0) +# Copying direction to array +sw $v0, 32($t9) +# Table addr is now stored in t8 +move $t8, $v0 +# Creating the dispatch table +# Allocate dispatch table in the heap +li $v0, 9 +li $a0, 60 +syscall +# I save the offset of every one of the methods of this type +# Save the direction of methods +la $v1, methods +# Save the direction of the method function_abort_Object in a0 +lw $a0, 4($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 4($v0) +# Save the direction of the method function_type_name_Object in a0 +lw $a0, 8($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 8($v0) +# Save the direction of the method function_copy_Object in a0 +lw $a0, 12($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 12($v0) +# Save the direction of the method function_out_string_IO in a0 +lw $a0, 16($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 16($v0) +# Save the direction of the method function_out_int_IO in a0 +lw $a0, 20($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 20($v0) +# Save the direction of the method function_in_string_IO in a0 +lw $a0, 28($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 24($v0) +# Save the direction of the method function_in_int_IO in a0 +lw $a0, 24($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 28($v0) +# Save the direction of the method function_isNil_Cons in a0 +lw $a0, 128($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 32($v0) +# Save the direction of the method function_cons_BookList in a0 +lw $a0, 108($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 36($v0) +# Save the direction of the method function_car_Cons in a0 +lw $a0, 136($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 40($v0) +# Save the direction of the method function_cdr_Cons in a0 +lw $a0, 140($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 44($v0) +# Save the direction of the method function_print_list_Cons in a0 +lw $a0, 144($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 48($v0) +# Save the direction of the method function_init_Cons in a0 +lw $a0, 132($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 52($v0) +# Save the direction of the method function_Cons_Cons in a0 +lw $a0, 124($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 56($v0) +sw $v0, 8($t8) +# Allocating memory +li $v0, 9 +li $a0, 12 +syscall +# Filling table methods +la $t8, type_Nil +sw $t8, 0($v0) +# Copying direction to array +sw $v0, 36($t9) +# Table addr is now stored in t8 +move $t8, $v0 +# Creating the dispatch table +# Allocate dispatch table in the heap +li $v0, 9 +li $a0, 52 +syscall +# I save the offset of every one of the methods of this type +# Save the direction of methods +la $v1, methods +# Save the direction of the method function_abort_Object in a0 +lw $a0, 4($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 4($v0) +# Save the direction of the method function_type_name_Object in a0 +lw $a0, 8($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 8($v0) +# Save the direction of the method function_copy_Object in a0 +lw $a0, 12($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 12($v0) +# Save the direction of the method function_out_string_IO in a0 +lw $a0, 16($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 16($v0) +# Save the direction of the method function_out_int_IO in a0 +lw $a0, 20($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 20($v0) +# Save the direction of the method function_in_string_IO in a0 +lw $a0, 28($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 24($v0) +# Save the direction of the method function_in_int_IO in a0 +lw $a0, 24($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 28($v0) +# Save the direction of the method function_isNil_Nil in a0 +lw $a0, 148($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 32($v0) +# Save the direction of the method function_cons_BookList in a0 +lw $a0, 108($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 36($v0) +# Save the direction of the method function_car_BookList in a0 +lw $a0, 112($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 40($v0) +# Save the direction of the method function_cdr_BookList in a0 +lw $a0, 116($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 44($v0) +# Save the direction of the method function_print_list_Nil in a0 +lw $a0, 152($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 48($v0) +sw $v0, 8($t8) +# Allocating memory +li $v0, 9 +li $a0, 12 +syscall +# Filling table methods +la $t8, type_Main +sw $t8, 0($v0) +# Copying direction to array +sw $v0, 40($t9) +# Table addr is now stored in t8 +move $t8, $v0 +# Creating the dispatch table +# Allocate dispatch table in the heap +li $v0, 9 +li $a0, 24 +syscall +# I save the offset of every one of the methods of this type +# Save the direction of methods +la $v1, methods +# Save the direction of the method function_abort_Object in a0 +lw $a0, 4($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 4($v0) +# Save the direction of the method function_type_name_Object in a0 +lw $a0, 8($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 8($v0) +# Save the direction of the method function_copy_Object in a0 +lw $a0, 12($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 12($v0) +# Save the direction of the method function_main_Main in a0 +lw $a0, 160($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 16($v0) +# Save the direction of the method function_Main_Main in a0 +lw $a0, 156($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 20($v0) +sw $v0, 8($t8) +# Copying parents +lw $v0, 0($t9) +li $t8, 0 +sw $t8, 4($v0) +lw $v0, 4($t9) +li $t8, 0 +sw $t8, 4($v0) +lw $v0, 8($t9) +li $t8, 0 +sw $t8, 4($v0) +lw $v0, 12($t9) +li $t8, 0 +sw $t8, 4($v0) +lw $v0, 16($t9) +lw $t8, 8($t9) +sw $t8, 4($v0) +lw $v0, 20($t9) +lw $t8, 16($t9) +sw $t8, 4($v0) +lw $v0, 24($t9) +lw $t8, 20($t9) +sw $t8, 4($v0) +lw $v0, 28($t9) +lw $t8, 16($t9) +sw $t8, 4($v0) +lw $v0, 32($t9) +lw $t8, 28($t9) +sw $t8, 4($v0) +lw $v0, 36($t9) +lw $t8, 28($t9) +sw $t8, 4($v0) +lw $v0, 40($t9) +lw $t8, 8($t9) +sw $t8, 4($v0) + +entry: +# Gets the params from the stack +move $fp, $sp +# Gets the frame pointer from the stack +# Updates stack pointer pushing local__internal_0 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local__internal_1 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +# Syscall to allocate memory of the object entry in heap +li $v0, 9 +li $a0, 16 +syscall +# Loads the name of the variable and saves the name like the first field +la $t9, type_Main +sw $t9, 0($v0) +# Saves the size of the node +li $t9, 16 +sw $t9, 4($v0) +move $t0, $v0 +# Adding Type Info addr +la $t8, types +lw $v0, 40($t8) +sw $v0, 8($t0) +# Static Dispatch of the method Main +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +# This function will consume the arguments +jal function_Main_Main +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -4($fp) +# Static Dispatch of the method main +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +lw $t1, -0($fp) +sw $t1, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -0($fp) +# This function will consume the arguments +jal function_main_Main +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -4($fp) +# saves the return value +move $t0, $v0 +li $v0, 0 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_abort_Object: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_abort_Object_self_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +# Moving self to local_abort_Object_self_0 +move $t1, $t0 +sw $t1, -4($fp) +# Exiting the program +li $t8, 0 +# Printing abort message +li $v0, 4 +la $a0, abort_msg +syscall +li $v0, 4 +lw $a0, 0($t0) +syscall +li $v0, 4 +la $a0, new_line +syscall +li $v0, 17 +move $a0, $t8 +syscall +sw $t0, -0($fp) +sw $t1, -4($fp) + +function_type_name_Object: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_type_name_Object_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +# local_type_name_Object_result_0 <- Type of self +lw $t1, 0($t0) +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_copy_Object: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_copy_Object_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +lw $t9, 4($t0) +# Syscall to allocate memory of the object entry in heap +li $v0, 9 +move $a0, $t9 +syscall +move $t1, $v0 +# Loop to copy every field of the previous object +# t8 the register to loop +li $t8, 0 +loop_0: +# In t9 is stored the size of the object +bge $t8, $t9, exit_0 +lw $a0, ($t0) +sw $a0, ($v0) +addi $v0, $v0, 4 +addi $t0, $t0, 4 +# Increase loop counter +addi $t8, $t8, 4 +j loop_0 +exit_0: +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_out_string_IO: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Pops the register with the param value word +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_out_string_String_self_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +lw $t1, -8($fp) +# Moving self to local_out_string_String_self_0 +move $t1, $t0 +sw $t1, -8($fp) +lw $t2, -0($fp) +# Printing a string +li $v0, 4 +move $a0, $t2 +syscall +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -8($fp) +sw $t2, -0($fp) +# Removing all locals from stack +addiu $sp, $sp, 12 +jr $ra + + +function_out_int_IO: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Pops the register with the param value number +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_out_int_IO_self_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +lw $t1, -8($fp) +# Moving self to local_out_int_IO_self_0 +move $t1, $t0 +sw $t1, -8($fp) +lw $t2, -0($fp) +# Printing an int +li $v0, 1 +move $a0, $t2 +syscall +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -8($fp) +sw $t2, -0($fp) +# Removing all locals from stack +addiu $sp, $sp, 12 +jr $ra + + +function_in_int_IO: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_in_int_IO_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Reading a int +li $v0, 5 +syscall +move $t0, $v0 +move $v0, $t0 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_in_string_IO: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_in_string_IO_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Allocating memory for the buffer +li $a0, 356 +li $v0, 9 +syscall +move $t0, $v0 +# Reading a string +# Putting buffer in a0 +move $a0, $t0 +# Putting length of string in a1 +li $a1, 356 +li $v0, 8 +syscall +# Walks to eliminate the newline +move $t9, $t0 +start_1: +lb $t8, 0($t9) +beqz $t8, end_1 +add $t9, $t9, 1 +j start_1 +end_1: +addiu $t9, $t9, -1 +sb $0, ($t9) +move $v0, $t0 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_length_String: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_length_String_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +move $t8, $t0 +# Determining the length of a string +loop_2: +lb $t9, 0($t8) +beq $t9, $zero, end_2 +addi $t8, $t8, 1 +j loop_2 +end_2: +sub $t1, $t8, $t0 +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_concat_String: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Pops the register with the param value word +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_concat_String_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +lw $t1, -0($fp) +lw $t2, -8($fp) +# Allocating memory for the buffer +li $a0, 356 +li $v0, 9 +syscall +move $t2, $v0 +# Copy the first string to dest +move $a0, $t0 +move $a1, $t2 +sw $ra, ($sp) +addiu $sp, $sp, -4 +jal strcopier +# Concatenate second string on result buffer +move $a0, $t1 +move $a1, $v0 +jal strcopier +sb $0, 0($v0) +addiu $sp, $sp, 4 +lw $ra, ($sp) +j finish_3 +# Definition of strcopier +strcopier: +# In a0 is the source and in a1 is the destination +loop_3: +lb $t8, ($a0) +beq $t8, $zero, end_3 +addiu $a0, $a0, 1 +sb $t8, ($a1) +addiu $a1, $a1, 1 +b loop_3 +end_3: +move $v0, $a1 +jr $ra +finish_3: +move $v0, $t2 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -0($fp) +sw $t2, -8($fp) +# Removing all locals from stack +addiu $sp, $sp, 12 +jr $ra + + +function_substr_String: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Pops the register with the param value begin +addiu $fp, $fp, 4 +# Pops the register with the param value end +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_substr_String_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +lw $t1, -0($fp) +lw $t2, -12($fp) +# Allocating memory for the buffer +li $a0, 356 +li $v0, 9 +syscall +move $t2, $v0 +lw $t3, -8($fp) +# Getting the substring of a node +# Move to the first position in the string +li $v0, 0 +move $t8, $t3 +start_4: +lb $t9, 0($t8) +beqz $t9, error_4 +addi $v0, 1 +bgt $v0, $t0, end_len_4 +addi $t8, 1 +j start_4 +end_len_4: +# Saving dest to iterate over him +move $v0, $t2 +loop_4: +sub $t9, $v0, $t2 +beq $t9, $t1, end_4 +lb $t9, 0($t8) +beqz $t9, error_4 +sb $t9, 0($v0) +addi $t8, $t8, 1 +addi $v0, $v0, 1 +j loop_4 +error_4: +la $a0, index_error +li $v0, 4 +move $a0, $t3 +syscall +li $v0, 1 +move $a0, $t0 +syscall +li $v0, 1 +move $a0, $t1 +syscall +j .raise +end_4: +sb $0, 0($v0) +move $v0, $t2 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -0($fp) +sw $t2, -12($fp) +sw $t3, -8($fp) +# Removing all locals from stack +addiu $sp, $sp, 16 +jr $ra + + +function_type_name_String: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_type_name_String_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Saves in local_type_name_String_result_0 type_String +la $t0, type_String +move $v0, $t0 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_copy_String: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_copy_String_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +# Allocating memory for the buffer +li $a0, 356 +li $v0, 9 +syscall +move $t1, $v0 +# Copy the first string to dest +move $a0, $t0 +move $a1, $t1 +sw $ra, ($sp) +addiu $sp, $sp, -4 +jal strcopier +sb $0, 0($v0) +addiu $sp, $sp, 4 +lw $ra, ($sp) +j finish_5 +finish_5: +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_type_name_Int: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_type_name_Int_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Saves in local_type_name_Int_result_0 type_Int +la $t0, type_Int +move $v0, $t0 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_copy_Int: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_copy_Int_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +# Moving self to local_copy_Int_result_0 +move $t1, $t0 +sw $t1, -4($fp) +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_type_name_Bool: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_type_name_Bool_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Saves in local_type_name_Bool_result_0 type_Bool +la $t0, type_Bool +move $v0, $t0 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_copy_Bool: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_copy_result_Bool_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +# Moving self to local_copy_result_Bool_0 +move $t1, $t0 +sw $t1, -4($fp) +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_abort_String: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_abort_String_msg_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +# Saves in self string_abort +la $t0, string_abort +# Printing a string +li $v0, 4 +move $a0, $t0 +syscall +# Exiting the program +li $t8, 0 +li $v0, 17 +move $a0, $t8 +syscall +sw $t0, -0($fp) + +function_abort_Int: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_abort_Int_msg_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +# Saves in self int_abort +la $t0, int_abort +# Printing a string +li $v0, 4 +move $a0, $t0 +syscall +# Exiting the program +li $t8, 0 +li $v0, 17 +move $a0, $t8 +syscall +sw $t0, -0($fp) + +function_abort_Bool: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_abort_Bool_msg_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +# Saves in self bool_abort +la $t0, bool_abort +# Printing a string +li $v0, 4 +move $a0, $t0 +syscall +# Exiting the program +li $t8, 0 +li $v0, 17 +move $a0, $t8 +syscall +sw $t0, -0($fp) + +function_Book_Book: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_Book_Book_internal_0 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_Book_Book_internal_1 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_Book_Book_internal_2 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Saves in local_Book_Book_internal_0 data_1 +la $t0, data_1 +lw $t1, -0($fp) +# self . title <- SET local_Book_Book_internal_0 +sw $t0, 12($t1) +lw $t2, -8($fp) +# Saves in local_Book_Book_internal_1 data_2 +la $t2, data_2 +# self . author <- SET local_Book_Book_internal_1 +sw $t2, 16($t1) +lw $t3, -12($fp) +# Moving self to local_Book_Book_internal_2 +move $t3, $t1 +sw $t3, -12($fp) +move $v0, $t3 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -0($fp) +sw $t2, -8($fp) +sw $t3, -12($fp) +# Removing all locals from stack +addiu $sp, $sp, 16 +jr $ra + + +function_initBook_Book: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Pops the register with the param value title_p +addiu $fp, $fp, 4 +# Pops the register with the param value author_p +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_initBook_Book_internal_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +lw $t1, -8($fp) +# self . title <- SET title_p +sw $t0, 12($t1) +lw $t2, -0($fp) +# self . author <- SET author_p +sw $t2, 16($t1) +lw $t3, -12($fp) +# Moving self to local_initBook_Book_internal_0 +move $t3, $t1 +sw $t3, -12($fp) +move $v0, $t3 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -8($fp) +sw $t2, -0($fp) +sw $t3, -12($fp) +# Removing all locals from stack +addiu $sp, $sp, 16 +jr $ra + + +function_print_Book: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_print_Book_internal_0 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_1 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_title_2 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_3 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_4 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_5 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_6 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_7 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_8 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_9 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_10 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_11 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_author_12 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_13 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_14 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_15 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_16 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_17 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_18 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_19 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Book_internal_20 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Saves in local_print_Book_internal_0 data_3 +la $t0, data_3 +lw $t1, -0($fp) +lw $t2, -8($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t1) +lw $a0, 8($t9) +# Saves in t8 the direction of function_out_string_IO +lw $t8, 16($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t1, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -0($fp) +sw $t2, -8($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -8($fp) +# saves the return value +move $t0, $v0 +lw $t1, -0($fp) +lw $t2, -12($fp) +# local_print_Book_title_2 <- GET self . title +lw $t2, 12($t1) +lw $t3, -20($fp) +# local_print_Book_internal_4 <- Type of local_print_Book_internal_1 +lw $t3, 0($t0) +lw $t4, -24($fp) +# Saves in local_print_Book_internal_5 data_0 +la $t4, data_0 +# local_print_Book_internal_4 <- local_print_Book_internal_4 = local_print_Book_internal_5 +move $t8, $t3 +move $t9, $t4 +loop_6: +lb $a0, ($t8) +lb $a1, ($t9) +beqz $a0, check_6 +beqz $a1, mismatch_6 +seq $v0, $a0, $a1 +beqz $v0, mismatch_6 +addi $t8, $t8, 1 +addi $t9, $t9, 1 +j loop_6 +mismatch_6: +li $v0, 0 +j end_6 +check_6: +bnez $a1, mismatch_6 +li $v0, 1 +end_6: +move $t3, $v0 +# If not local_print_Book_internal_4 goto continue__83 +sw $t0, -8($fp) +sw $t1, -0($fp) +sw $t2, -12($fp) +sw $t3, -20($fp) +sw $t4, -24($fp) +beqz $t3, continue__83 +la $a0, dispatch_error +j .raise +continue__83: +lw $t0, -8($fp) +lw $t1, -16($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_out_string_IO +lw $t8, 16($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +lw $t2, -12($fp) +sw $t2, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -8($fp) +sw $t1, -16($fp) +sw $t2, -12($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -16($fp) +# saves the return value +move $t0, $v0 +lw $t1, -28($fp) +# Saves in local_print_Book_internal_6 data_4 +la $t1, data_4 +lw $t2, -36($fp) +# local_print_Book_internal_8 <- Type of local_print_Book_internal_3 +lw $t2, 0($t0) +lw $t3, -40($fp) +# Saves in local_print_Book_internal_9 data_0 +la $t3, data_0 +# local_print_Book_internal_8 <- local_print_Book_internal_8 = local_print_Book_internal_9 +move $t8, $t2 +move $t9, $t3 +loop_7: +lb $a0, ($t8) +lb $a1, ($t9) +beqz $a0, check_7 +beqz $a1, mismatch_7 +seq $v0, $a0, $a1 +beqz $v0, mismatch_7 +addi $t8, $t8, 1 +addi $t9, $t9, 1 +j loop_7 +mismatch_7: +li $v0, 0 +j end_7 +check_7: +bnez $a1, mismatch_7 +li $v0, 1 +end_7: +move $t2, $v0 +# If not local_print_Book_internal_8 goto continue__99 +sw $t0, -16($fp) +sw $t1, -28($fp) +sw $t2, -36($fp) +sw $t3, -40($fp) +beqz $t2, continue__99 +la $a0, dispatch_error +j .raise +continue__99: +lw $t0, -16($fp) +lw $t1, -32($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_out_string_IO +lw $t8, 16($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +lw $t2, -28($fp) +sw $t2, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -16($fp) +sw $t1, -32($fp) +sw $t2, -28($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -32($fp) +# saves the return value +move $t0, $v0 +lw $t1, -44($fp) +# Saves in local_print_Book_internal_10 data_5 +la $t1, data_5 +lw $t2, -0($fp) +lw $t3, -48($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t2) +lw $a0, 8($t9) +# Saves in t8 the direction of function_out_string_IO +lw $t8, 16($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t1, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t2, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -32($fp) +sw $t1, -44($fp) +sw $t2, -0($fp) +sw $t3, -48($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -48($fp) +# saves the return value +move $t0, $v0 +lw $t1, -0($fp) +lw $t2, -52($fp) +# local_print_Book_author_12 <- GET self . author +lw $t2, 16($t1) +lw $t3, -60($fp) +# local_print_Book_internal_14 <- Type of local_print_Book_internal_11 +lw $t3, 0($t0) +lw $t4, -64($fp) +# Saves in local_print_Book_internal_15 data_0 +la $t4, data_0 +# local_print_Book_internal_14 <- local_print_Book_internal_14 = local_print_Book_internal_15 +move $t8, $t3 +move $t9, $t4 +loop_8: +lb $a0, ($t8) +lb $a1, ($t9) +beqz $a0, check_8 +beqz $a1, mismatch_8 +seq $v0, $a0, $a1 +beqz $v0, mismatch_8 +addi $t8, $t8, 1 +addi $t9, $t9, 1 +j loop_8 +mismatch_8: +li $v0, 0 +j end_8 +check_8: +bnez $a1, mismatch_8 +li $v0, 1 +end_8: +move $t3, $v0 +# If not local_print_Book_internal_14 goto continue__121 +sw $t0, -48($fp) +sw $t1, -0($fp) +sw $t2, -52($fp) +sw $t3, -60($fp) +sw $t4, -64($fp) +beqz $t3, continue__121 +la $a0, dispatch_error +j .raise +continue__121: +lw $t0, -48($fp) +lw $t1, -56($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_out_string_IO +lw $t8, 16($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +lw $t2, -52($fp) +sw $t2, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -48($fp) +sw $t1, -56($fp) +sw $t2, -52($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -56($fp) +# saves the return value +move $t0, $v0 +lw $t1, -68($fp) +# Saves in local_print_Book_internal_16 data_6 +la $t1, data_6 +lw $t2, -76($fp) +# local_print_Book_internal_18 <- Type of local_print_Book_internal_13 +lw $t2, 0($t0) +lw $t3, -80($fp) +# Saves in local_print_Book_internal_19 data_0 +la $t3, data_0 +# local_print_Book_internal_18 <- local_print_Book_internal_18 = local_print_Book_internal_19 +move $t8, $t2 +move $t9, $t3 +loop_9: +lb $a0, ($t8) +lb $a1, ($t9) +beqz $a0, check_9 +beqz $a1, mismatch_9 +seq $v0, $a0, $a1 +beqz $v0, mismatch_9 +addi $t8, $t8, 1 +addi $t9, $t9, 1 +j loop_9 +mismatch_9: +li $v0, 0 +j end_9 +check_9: +bnez $a1, mismatch_9 +li $v0, 1 +end_9: +move $t2, $v0 +# If not local_print_Book_internal_18 goto continue__137 +sw $t0, -56($fp) +sw $t1, -68($fp) +sw $t2, -76($fp) +sw $t3, -80($fp) +beqz $t2, continue__137 +la $a0, dispatch_error +j .raise +continue__137: +lw $t0, -56($fp) +lw $t1, -72($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_out_string_IO +lw $t8, 16($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +lw $t2, -68($fp) +sw $t2, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -56($fp) +sw $t1, -72($fp) +sw $t2, -68($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -72($fp) +# saves the return value +move $t0, $v0 +lw $t1, -0($fp) +lw $t2, -84($fp) +# Moving self to local_print_Book_internal_20 +move $t2, $t1 +sw $t2, -84($fp) +move $v0, $t2 +# Empty all used registers and saves them to memory +sw $t0, -72($fp) +sw $t1, -0($fp) +sw $t2, -84($fp) +# Removing all locals from stack +addiu $sp, $sp, 88 +jr $ra + + +function_Article_Article: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_Article_Article_internal_0 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_Article_Article_internal_1 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_Article_Article_internal_2 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_Article_Article_internal_3 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Saves in local_Article_Article_internal_0 data_7 +la $t0, data_7 +lw $t1, -0($fp) +# self . title <- SET local_Article_Article_internal_0 +sw $t0, 12($t1) +lw $t2, -8($fp) +# Saves in local_Article_Article_internal_1 data_8 +la $t2, data_8 +# self . author <- SET local_Article_Article_internal_1 +sw $t2, 16($t1) +lw $t3, -12($fp) +# Saves in local_Article_Article_internal_2 data_9 +la $t3, data_9 +# self . per_title <- SET local_Article_Article_internal_2 +sw $t3, 20($t1) +lw $t4, -16($fp) +# Moving self to local_Article_Article_internal_3 +move $t4, $t1 +sw $t4, -16($fp) +move $v0, $t4 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -0($fp) +sw $t2, -8($fp) +sw $t3, -12($fp) +sw $t4, -16($fp) +# Removing all locals from stack +addiu $sp, $sp, 20 +jr $ra + + +function_initArticle_Article: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Pops the register with the param value title_p +addiu $fp, $fp, 4 +# Pops the register with the param value author_p +addiu $fp, $fp, 4 +# Pops the register with the param value per_title_p +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_initArticle_Article_internal_0 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_initArticle_Article_internal_1 to the stack +addiu $sp, $sp, -4 +lw $t0, -12($fp) +lw $t1, -16($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_initBook_Book +lw $t8, 32($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +lw $t2, -4($fp) +sw $t2, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +lw $t3, -8($fp) +sw $t3, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -12($fp) +sw $t1, -16($fp) +sw $t2, -4($fp) +sw $t3, -8($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -16($fp) +# saves the return value +move $t0, $v0 +lw $t1, -0($fp) +lw $t2, -12($fp) +# self . per_title <- SET per_title_p +sw $t1, 20($t2) +lw $t3, -20($fp) +# Moving self to local_initArticle_Article_internal_1 +move $t3, $t2 +sw $t3, -20($fp) +move $v0, $t3 +# Empty all used registers and saves them to memory +sw $t0, -16($fp) +sw $t1, -0($fp) +sw $t2, -12($fp) +sw $t3, -20($fp) +# Removing all locals from stack +addiu $sp, $sp, 24 +jr $ra + + +function_print_Article: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_print_Article_internal_0 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Article_internal_1 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Article_internal_2 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Article_internal_3 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Article_internal_4 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Article_per_title_5 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Article_internal_6 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Article_internal_7 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Article_internal_8 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Article_internal_9 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Article_internal_10 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Article_internal_11 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Article_internal_12 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_Article_internal_13 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -8($fp) +# local_print_Article_internal_1 <- Type of self +lw $t1, 0($t0) +lw $t2, -12($fp) +# Saves in local_print_Article_internal_2 data_0 +la $t2, data_0 +# local_print_Article_internal_1 <- local_print_Article_internal_1 = local_print_Article_internal_2 +move $t8, $t1 +move $t9, $t2 +loop_10: +lb $a0, ($t8) +lb $a1, ($t9) +beqz $a0, check_10 +beqz $a1, mismatch_10 +seq $v0, $a0, $a1 +beqz $v0, mismatch_10 +addi $t8, $t8, 1 +addi $t9, $t9, 1 +j loop_10 +mismatch_10: +li $v0, 0 +j end_10 +check_10: +bnez $a1, mismatch_10 +li $v0, 1 +end_10: +move $t1, $v0 +# If not local_print_Article_internal_1 goto continue__185 +sw $t0, -0($fp) +sw $t1, -8($fp) +sw $t2, -12($fp) +beqz $t1, continue__185 +la $a0, dispatch_error +j .raise +continue__185: +lw $t0, -4($fp) +# Static Dispatch of the method print +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +lw $t1, -0($fp) +sw $t1, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -0($fp) +# This function will consume the arguments +jal function_print_Book +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -4($fp) +# saves the return value +move $t0, $v0 +lw $t1, -16($fp) +# Saves in local_print_Article_internal_3 data_10 +la $t1, data_10 +lw $t2, -0($fp) +lw $t3, -20($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t2) +lw $a0, 8($t9) +# Saves in t8 the direction of function_out_string_IO +lw $t8, 16($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t1, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t2, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -16($fp) +sw $t2, -0($fp) +sw $t3, -20($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -20($fp) +# saves the return value +move $t0, $v0 +lw $t1, -0($fp) +lw $t2, -24($fp) +# local_print_Article_per_title_5 <- GET self . per_title +lw $t2, 20($t1) +lw $t3, -32($fp) +# local_print_Article_internal_7 <- Type of local_print_Article_internal_4 +lw $t3, 0($t0) +lw $t4, -36($fp) +# Saves in local_print_Article_internal_8 data_0 +la $t4, data_0 +# local_print_Article_internal_7 <- local_print_Article_internal_7 = local_print_Article_internal_8 +move $t8, $t3 +move $t9, $t4 +loop_11: +lb $a0, ($t8) +lb $a1, ($t9) +beqz $a0, check_11 +beqz $a1, mismatch_11 +seq $v0, $a0, $a1 +beqz $v0, mismatch_11 +addi $t8, $t8, 1 +addi $t9, $t9, 1 +j loop_11 +mismatch_11: +li $v0, 0 +j end_11 +check_11: +bnez $a1, mismatch_11 +li $v0, 1 +end_11: +move $t3, $v0 +# If not local_print_Article_internal_7 goto continue__207 +sw $t0, -20($fp) +sw $t1, -0($fp) +sw $t2, -24($fp) +sw $t3, -32($fp) +sw $t4, -36($fp) +beqz $t3, continue__207 +la $a0, dispatch_error +j .raise +continue__207: +lw $t0, -20($fp) +lw $t1, -28($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_out_string_IO +lw $t8, 16($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +lw $t2, -24($fp) +sw $t2, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -20($fp) +sw $t1, -28($fp) +sw $t2, -24($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -28($fp) +# saves the return value +move $t0, $v0 +lw $t1, -40($fp) +# Saves in local_print_Article_internal_9 data_11 +la $t1, data_11 +lw $t2, -48($fp) +# local_print_Article_internal_11 <- Type of local_print_Article_internal_6 +lw $t2, 0($t0) +lw $t3, -52($fp) +# Saves in local_print_Article_internal_12 data_0 +la $t3, data_0 +# local_print_Article_internal_11 <- local_print_Article_internal_11 = local_print_Article_internal_12 +move $t8, $t2 +move $t9, $t3 +loop_12: +lb $a0, ($t8) +lb $a1, ($t9) +beqz $a0, check_12 +beqz $a1, mismatch_12 +seq $v0, $a0, $a1 +beqz $v0, mismatch_12 +addi $t8, $t8, 1 +addi $t9, $t9, 1 +j loop_12 +mismatch_12: +li $v0, 0 +j end_12 +check_12: +bnez $a1, mismatch_12 +li $v0, 1 +end_12: +move $t2, $v0 +# If not local_print_Article_internal_11 goto continue__223 +sw $t0, -28($fp) +sw $t1, -40($fp) +sw $t2, -48($fp) +sw $t3, -52($fp) +beqz $t2, continue__223 +la $a0, dispatch_error +j .raise +continue__223: +lw $t0, -28($fp) +lw $t1, -44($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_out_string_IO +lw $t8, 16($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +lw $t2, -40($fp) +sw $t2, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -28($fp) +sw $t1, -44($fp) +sw $t2, -40($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -44($fp) +# saves the return value +move $t0, $v0 +lw $t1, -0($fp) +lw $t2, -56($fp) +# Moving self to local_print_Article_internal_13 +move $t2, $t1 +sw $t2, -56($fp) +move $v0, $t2 +# Empty all used registers and saves them to memory +sw $t0, -44($fp) +sw $t1, -0($fp) +sw $t2, -56($fp) +# Removing all locals from stack +addiu $sp, $sp, 60 +jr $ra + + +function_isNil_BookList: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_isNil_BookList_internal_0 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_isNil_BookList_internal_1 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_abort_Object +lw $t8, 4($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -4($fp) +# saves the return value +move $t0, $v0 +lw $t1, -8($fp) +# Moving 1 to local_isNil_BookList_internal_1 +li $t1, 1 +sw $t1, -8($fp) +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -8($fp) +# Removing all locals from stack +addiu $sp, $sp, 12 +jr $ra + + +function_cons_BookList: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Pops the register with the param value hd +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_cons_BookList_new_cell_0 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_cons_BookList_internal_1 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_cons_BookList_internal_2 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_cons_BookList_internal_3 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_cons_BookList_internal_4 to the stack +addiu $sp, $sp, -4 +lw $t0, -12($fp) +# Syscall to allocate memory of the object entry in heap +li $v0, 9 +li $a0, 20 +syscall +# Loads the name of the variable and saves the name like the first field +la $t9, type_Cons +sw $t9, 0($v0) +# Saves the size of the node +li $t9, 20 +sw $t9, 4($v0) +move $t0, $v0 +# Adding Type Info addr +la $t8, types +lw $v0, 32($t8) +sw $v0, 8($t0) +# Static Dispatch of the method Cons +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -12($fp) +# This function will consume the arguments +jal function_Cons_Cons +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -12($fp) +# saves the return value +move $t0, $v0 +lw $t1, -8($fp) +# Moving local_cons_BookList_internal_1 to local_cons_BookList_new_cell_0 +move $t1, $t0 +sw $t1, -8($fp) +lw $t2, -20($fp) +# local_cons_BookList_internal_3 <- Type of local_cons_BookList_new_cell_0 +lw $t2, 0($t1) +lw $t3, -24($fp) +# Saves in local_cons_BookList_internal_4 data_0 +la $t3, data_0 +# local_cons_BookList_internal_3 <- local_cons_BookList_internal_3 = local_cons_BookList_internal_4 +move $t8, $t2 +move $t9, $t3 +loop_13: +lb $a0, ($t8) +lb $a1, ($t9) +beqz $a0, check_13 +beqz $a1, mismatch_13 +seq $v0, $a0, $a1 +beqz $v0, mismatch_13 +addi $t8, $t8, 1 +addi $t9, $t9, 1 +j loop_13 +mismatch_13: +li $v0, 0 +j end_13 +check_13: +bnez $a1, mismatch_13 +li $v0, 1 +end_13: +move $t2, $v0 +# If not local_cons_BookList_internal_3 goto continue__256 +sw $t0, -12($fp) +sw $t1, -8($fp) +sw $t2, -20($fp) +sw $t3, -24($fp) +beqz $t2, continue__256 +la $a0, dispatch_error +j .raise +continue__256: +lw $t0, -8($fp) +lw $t1, -16($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_init_Cons +lw $t8, 52($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +lw $t2, -4($fp) +sw $t2, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +lw $t3, -0($fp) +sw $t3, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -8($fp) +sw $t1, -16($fp) +sw $t2, -4($fp) +sw $t3, -0($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -16($fp) +# saves the return value +move $t0, $v0 +move $v0, $t0 +# Empty all used registers and saves them to memory +sw $t0, -16($fp) +# Removing all locals from stack +addiu $sp, $sp, 28 +jr $ra + + +function_car_BookList: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_car_BookList_internal_0 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_car_BookList_internal_1 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_car_BookList_internal_2 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_abort_Object +lw $t8, 4($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -4($fp) +# saves the return value +move $t0, $v0 +lw $t1, -8($fp) +# Syscall to allocate memory of the object entry in heap +li $v0, 9 +li $a0, 20 +syscall +# Loads the name of the variable and saves the name like the first field +la $t9, type_Book +sw $t9, 0($v0) +# Saves the size of the node +li $t9, 20 +sw $t9, 4($v0) +move $t1, $v0 +# Adding Type Info addr +la $t8, types +lw $v0, 20($t8) +sw $v0, 8($t1) +# Static Dispatch of the method Book +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t1, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -8($fp) +# This function will consume the arguments +jal function_Book_Book +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -8($fp) +# saves the return value +move $t0, $v0 +lw $t1, -12($fp) +# Moving local_car_BookList_internal_1 to local_car_BookList_internal_2 +move $t1, $t0 +sw $t1, -12($fp) +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -8($fp) +sw $t1, -12($fp) +# Removing all locals from stack +addiu $sp, $sp, 16 +jr $ra + + +function_cdr_BookList: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_cdr_BookList_internal_0 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_cdr_BookList_internal_1 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_cdr_BookList_internal_2 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_abort_Object +lw $t8, 4($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -4($fp) +# saves the return value +move $t0, $v0 +lw $t1, -8($fp) +# Syscall to allocate memory of the object entry in heap +li $v0, 9 +li $a0, 12 +syscall +# Loads the name of the variable and saves the name like the first field +la $t9, type_BookList +sw $t9, 0($v0) +# Saves the size of the node +li $t9, 12 +sw $t9, 4($v0) +move $t1, $v0 +# Adding Type Info addr +la $t8, types +lw $v0, 28($t8) +sw $v0, 8($t1) +lw $t2, -12($fp) +# Moving local_cdr_BookList_internal_1 to local_cdr_BookList_internal_2 +move $t2, $t1 +sw $t2, -12($fp) +move $v0, $t2 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -8($fp) +sw $t2, -12($fp) +# Removing all locals from stack +addiu $sp, $sp, 16 +jr $ra + + +function_print_list_BookList: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_print_list_BookList_internal_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_abort_Object +lw $t8, 4($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -4($fp) +# saves the return value +move $t0, $v0 +move $v0, $t0 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_Cons_Cons: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_Cons_Cons_xcar_0 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_Cons_Cons_xcdr_1 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_Cons_Cons_internal_2 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Initialize void node +li $a0, 4 +li $v0, 9 +syscall +# Loads the name of the variable and saves the name like the first field +la $t9, type_Void +sw $t9, 0($v0) +move $t0, $v0 +lw $t1, -0($fp) +# self . xcar <- SET local_Cons_Cons_xcar_0 +sw $t0, 12($t1) +lw $t2, -8($fp) +# Initialize void node +li $a0, 4 +li $v0, 9 +syscall +# Loads the name of the variable and saves the name like the first field +la $t9, type_Void +sw $t9, 0($v0) +move $t2, $v0 +# self . xcdr <- SET local_Cons_Cons_xcdr_1 +sw $t2, 16($t1) +lw $t3, -12($fp) +# Moving self to local_Cons_Cons_internal_2 +move $t3, $t1 +sw $t3, -12($fp) +move $v0, $t3 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -0($fp) +sw $t2, -8($fp) +sw $t3, -12($fp) +# Removing all locals from stack +addiu $sp, $sp, 16 +jr $ra + + +function_isNil_Cons: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_isNil_Cons_internal_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Moving 0 to local_isNil_Cons_internal_0 +li $t0, 0 +sw $t0, -4($fp) +move $v0, $t0 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_init_Cons: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Pops the register with the param value hd +addiu $fp, $fp, 4 +# Pops the register with the param value tl +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_init_Cons_internal_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +lw $t1, -8($fp) +# self . xcar <- SET hd +sw $t0, 12($t1) +lw $t2, -0($fp) +# self . xcdr <- SET tl +sw $t2, 16($t1) +lw $t3, -12($fp) +# Moving self to local_init_Cons_internal_0 +move $t3, $t1 +sw $t3, -12($fp) +move $v0, $t3 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -8($fp) +sw $t2, -0($fp) +sw $t3, -12($fp) +# Removing all locals from stack +addiu $sp, $sp, 16 +jr $ra + + +function_car_Cons: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_car_Cons_xcar_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +# local_car_Cons_xcar_0 <- GET self . xcar +lw $t1, 12($t0) +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_cdr_Cons: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_cdr_Cons_xcdr_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +# local_cdr_Cons_xcdr_0 <- GET self . xcdr +lw $t1, 16($t0) +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_print_list_Cons: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_print_list_Cons_xcar_0 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_internal_1 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_internal_2 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_internal_3 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_internal_4 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_internal_5 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_internal_6 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_internal_7 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_dummy_8 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_internal_9 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_internal_10 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_internal_11 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_dummy_12 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_internal_13 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_internal_14 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_xcdr_15 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_internal_16 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_internal_17 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_internal_18 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_print_list_Cons_internal_19 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +# local_print_list_Cons_xcar_0 <- GET self . xcar +lw $t1, 12($t0) +lw $t2, -12($fp) +# local_print_list_Cons_internal_2 <- Type of local_print_list_Cons_xcar_0 +lw $t2, 0($t1) +lw $t3, -16($fp) +# Saves in local_print_list_Cons_internal_3 data_0 +la $t3, data_0 +# local_print_list_Cons_internal_2 <- local_print_list_Cons_internal_2 = local_print_list_Cons_internal_3 +move $t8, $t2 +move $t9, $t3 +loop_14: +lb $a0, ($t8) +lb $a1, ($t9) +beqz $a0, check_14 +beqz $a1, mismatch_14 +seq $v0, $a0, $a1 +beqz $v0, mismatch_14 +addi $t8, $t8, 1 +addi $t9, $t9, 1 +j loop_14 +mismatch_14: +li $v0, 0 +j end_14 +check_14: +bnez $a1, mismatch_14 +li $v0, 1 +end_14: +move $t2, $v0 +# If not local_print_list_Cons_internal_2 goto continue__335 +sw $t0, -0($fp) +sw $t1, -4($fp) +sw $t2, -12($fp) +sw $t3, -16($fp) +beqz $t2, continue__335 +la $a0, dispatch_error +j .raise +continue__335: +lw $t0, -4($fp) +lw $t1, -8($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_print_Book +lw $t8, 36($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -8($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -8($fp) +# saves the return value +move $t0, $v0 +lw $t1, -24($fp) +# local_print_list_Cons_internal_5 <- Type of local_print_list_Cons_internal_1 +lw $t1, 0($t0) +lw $t2, -28($fp) +# Saves in local_print_list_Cons_internal_6 data_0 +la $t2, data_0 +# local_print_list_Cons_internal_5 <- local_print_list_Cons_internal_5 = local_print_list_Cons_internal_6 +move $t8, $t1 +move $t9, $t2 +loop_15: +lb $a0, ($t8) +lb $a1, ($t9) +beqz $a0, check_15 +beqz $a1, mismatch_15 +seq $v0, $a0, $a1 +beqz $v0, mismatch_15 +addi $t8, $t8, 1 +addi $t9, $t9, 1 +j loop_15 +mismatch_15: +li $v0, 0 +j end_15 +check_15: +bnez $a1, mismatch_15 +li $v0, 1 +end_15: +move $t1, $v0 +# If local_print_list_Cons_internal_5 goto error__346 +sw $t0, -8($fp) +sw $t1, -24($fp) +sw $t2, -28($fp) +bnez $t1, error__346 +lw $t0, -8($fp) +lw $t1, -32($fp) +la $t9, type_Article +lw $v0, 8($t0) +loop_16: +move $t8, $v0 +beqz $t8, false_16 +lw $v1, 0($t8) +beq $t9, $v1, true_16 +lw $v0, 4($t8) +j loop_16 +true_16: +li $t1, 1 +j end_16 +false_16: +li $t1, 0 +end_16: +# If not local_print_list_Cons_internal_7 goto next__352_0 +sw $t0, -8($fp) +sw $t1, -32($fp) +beqz $t1, next__352_0 +lw $t0, -8($fp) +lw $t1, -36($fp) +# Moving local_print_list_Cons_internal_1 to local_print_list_Cons_dummy_8 +move $t1, $t0 +sw $t1, -36($fp) +lw $t2, -40($fp) +# Saves in local_print_list_Cons_internal_9 data_12 +la $t2, data_12 +lw $t3, -0($fp) +lw $t4, -44($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t3) +lw $a0, 8($t9) +# Saves in t8 the direction of function_out_string_IO +lw $t8, 16($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t2, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t3, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -8($fp) +sw $t1, -36($fp) +sw $t2, -40($fp) +sw $t3, -0($fp) +sw $t4, -44($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -44($fp) +# saves the return value +move $t0, $v0 +lw $t1, -20($fp) +# Moving local_print_list_Cons_internal_10 to local_print_list_Cons_internal_4 +move $t1, $t0 +sw $t1, -20($fp) +sw $t0, -44($fp) +sw $t1, -20($fp) +j end__346 +next__352_0: +lw $t0, -8($fp) +lw $t1, -48($fp) +la $t9, type_Book +lw $v0, 8($t0) +loop_17: +move $t8, $v0 +beqz $t8, false_17 +lw $v1, 0($t8) +beq $t9, $v1, true_17 +lw $v0, 4($t8) +j loop_17 +true_17: +li $t1, 1 +j end_17 +false_17: +li $t1, 0 +end_17: +# If not local_print_list_Cons_internal_11 goto next__367_1 +sw $t0, -8($fp) +sw $t1, -48($fp) +beqz $t1, next__367_1 +lw $t0, -8($fp) +lw $t1, -52($fp) +# Moving local_print_list_Cons_internal_1 to local_print_list_Cons_dummy_12 +move $t1, $t0 +sw $t1, -52($fp) +lw $t2, -56($fp) +# Saves in local_print_list_Cons_internal_13 data_13 +la $t2, data_13 +lw $t3, -0($fp) +lw $t4, -60($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t3) +lw $a0, 8($t9) +# Saves in t8 the direction of function_out_string_IO +lw $t8, 16($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t2, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t3, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -8($fp) +sw $t1, -52($fp) +sw $t2, -56($fp) +sw $t3, -0($fp) +sw $t4, -60($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -60($fp) +# saves the return value +move $t0, $v0 +lw $t1, -20($fp) +# Moving local_print_list_Cons_internal_14 to local_print_list_Cons_internal_4 +move $t1, $t0 +sw $t1, -20($fp) +sw $t0, -60($fp) +sw $t1, -20($fp) +j end__346 +next__367_1: +la $a0, case_error +j .raise +error__346: +la $a0, case_void_error +j .raise +end__346: +lw $t0, -0($fp) +lw $t1, -64($fp) +# local_print_list_Cons_xcdr_15 <- GET self . xcdr +lw $t1, 16($t0) +lw $t2, -72($fp) +# local_print_list_Cons_internal_17 <- Type of local_print_list_Cons_xcdr_15 +lw $t2, 0($t1) +lw $t3, -76($fp) +# Saves in local_print_list_Cons_internal_18 data_0 +la $t3, data_0 +# local_print_list_Cons_internal_17 <- local_print_list_Cons_internal_17 = local_print_list_Cons_internal_18 +move $t8, $t2 +move $t9, $t3 +loop_18: +lb $a0, ($t8) +lb $a1, ($t9) +beqz $a0, check_18 +beqz $a1, mismatch_18 +seq $v0, $a0, $a1 +beqz $v0, mismatch_18 +addi $t8, $t8, 1 +addi $t9, $t9, 1 +j loop_18 +mismatch_18: +li $v0, 0 +j end_18 +check_18: +bnez $a1, mismatch_18 +li $v0, 1 +end_18: +move $t2, $v0 +# If not local_print_list_Cons_internal_17 goto continue__390 +sw $t0, -0($fp) +sw $t1, -64($fp) +sw $t2, -72($fp) +sw $t3, -76($fp) +beqz $t2, continue__390 +la $a0, dispatch_error +j .raise +continue__390: +lw $t0, -64($fp) +lw $t1, -68($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_print_list_BookList +lw $t8, 48($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -64($fp) +sw $t1, -68($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -68($fp) +# saves the return value +move $t0, $v0 +lw $t1, -80($fp) +# Moving local_print_list_Cons_internal_16 to local_print_list_Cons_internal_19 +move $t1, $t0 +sw $t1, -80($fp) +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -68($fp) +sw $t1, -80($fp) +# Removing all locals from stack +addiu $sp, $sp, 84 +jr $ra + + +function_isNil_Nil: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_isNil_Nil_internal_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Moving 1 to local_isNil_Nil_internal_0 +li $t0, 1 +sw $t0, -4($fp) +move $v0, $t0 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_print_list_Nil: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_print_list_Nil_internal_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Moving 1 to local_print_list_Nil_internal_0 +li $t0, 1 +sw $t0, -4($fp) +# Initialize new node +li $a0, 12 +li $v0, 9 +syscall +la $t9, type_Bool +sw $t9, 0($v0) +li $t9, 12 +sw $t9, 4($v0) +move $t0, $v0 +# Saving the methods of object +# Adding Type Info addr +la $t8, types +lw $v0, 8($t8) +sw $v0, 8($t0) +move $v0, $t0 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_Main_Main: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_Main_Main_books_0 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_Main_Main_internal_1 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Initialize void node +li $a0, 4 +li $v0, 9 +syscall +# Loads the name of the variable and saves the name like the first field +la $t9, type_Void +sw $t9, 0($v0) +move $t0, $v0 +lw $t1, -0($fp) +# self . books <- SET local_Main_Main_books_0 +sw $t0, 12($t1) +lw $t2, -8($fp) +# Moving self to local_Main_Main_internal_1 +move $t2, $t1 +sw $t2, -8($fp) +move $v0, $t2 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -0($fp) +sw $t2, -8($fp) +# Removing all locals from stack +addiu $sp, $sp, 12 +jr $ra + + +function_main_Main: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_main_Main_a_book_0 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_1 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_2 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_3 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_4 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_5 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_6 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_an_article_7 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_8 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_9 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_10 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_11 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_12 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_13 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_14 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_15 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_16 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_17 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_18 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_19 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_20 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_21 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_books_22 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_23 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_24 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_25 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_26 to the stack +addiu $sp, $sp, -4 +lw $t0, -8($fp) +# Syscall to allocate memory of the object entry in heap +li $v0, 9 +li $a0, 20 +syscall +# Loads the name of the variable and saves the name like the first field +la $t9, type_Book +sw $t9, 0($v0) +# Saves the size of the node +li $t9, 20 +sw $t9, 4($v0) +move $t0, $v0 +# Adding Type Info addr +la $t8, types +lw $v0, 20($t8) +sw $v0, 8($t0) +# Static Dispatch of the method Book +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -8($fp) +# This function will consume the arguments +jal function_Book_Book +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -8($fp) +# saves the return value +move $t0, $v0 +lw $t1, -12($fp) +# Saves in local_main_Main_internal_2 data_14 +la $t1, data_14 +lw $t2, -16($fp) +# Saves in local_main_Main_internal_3 data_15 +la $t2, data_15 +lw $t3, -24($fp) +# local_main_Main_internal_5 <- Type of local_main_Main_internal_1 +lw $t3, 0($t0) +lw $t4, -28($fp) +# Saves in local_main_Main_internal_6 data_0 +la $t4, data_0 +# local_main_Main_internal_5 <- local_main_Main_internal_5 = local_main_Main_internal_6 +move $t8, $t3 +move $t9, $t4 +loop_19: +lb $a0, ($t8) +lb $a1, ($t9) +beqz $a0, check_19 +beqz $a1, mismatch_19 +seq $v0, $a0, $a1 +beqz $v0, mismatch_19 +addi $t8, $t8, 1 +addi $t9, $t9, 1 +j loop_19 +mismatch_19: +li $v0, 0 +j end_19 +check_19: +bnez $a1, mismatch_19 +li $v0, 1 +end_19: +move $t3, $v0 +# If not local_main_Main_internal_5 goto continue__438 +sw $t0, -8($fp) +sw $t1, -12($fp) +sw $t2, -16($fp) +sw $t3, -24($fp) +sw $t4, -28($fp) +beqz $t3, continue__438 +la $a0, dispatch_error +j .raise +continue__438: +lw $t0, -8($fp) +lw $t1, -20($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_initBook_Book +lw $t8, 32($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +lw $t2, -16($fp) +sw $t2, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +lw $t3, -12($fp) +sw $t3, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -8($fp) +sw $t1, -20($fp) +sw $t2, -16($fp) +sw $t3, -12($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -20($fp) +# saves the return value +move $t0, $v0 +lw $t1, -4($fp) +# Moving local_main_Main_internal_4 to local_main_Main_a_book_0 +move $t1, $t0 +sw $t1, -4($fp) +lw $t2, -36($fp) +# Syscall to allocate memory of the object entry in heap +li $v0, 9 +li $a0, 24 +syscall +# Loads the name of the variable and saves the name like the first field +la $t9, type_Article +sw $t9, 0($v0) +# Saves the size of the node +li $t9, 24 +sw $t9, 4($v0) +move $t2, $v0 +# Adding Type Info addr +la $t8, types +lw $v0, 24($t8) +sw $v0, 8($t2) +# Static Dispatch of the method Article +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t2, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -20($fp) +sw $t1, -4($fp) +sw $t2, -36($fp) +# This function will consume the arguments +jal function_Article_Article +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -36($fp) +# saves the return value +move $t0, $v0 +lw $t1, -40($fp) +# Saves in local_main_Main_internal_9 data_16 +la $t1, data_16 +lw $t2, -44($fp) +# Saves in local_main_Main_internal_10 data_17 +la $t2, data_17 +lw $t3, -48($fp) +# Saves in local_main_Main_internal_11 data_18 +la $t3, data_18 +lw $t4, -56($fp) +# local_main_Main_internal_13 <- Type of local_main_Main_internal_8 +lw $t4, 0($t0) +lw $t5, -60($fp) +# Saves in local_main_Main_internal_14 data_0 +la $t5, data_0 +# local_main_Main_internal_13 <- local_main_Main_internal_13 = local_main_Main_internal_14 +move $t8, $t4 +move $t9, $t5 +loop_20: +lb $a0, ($t8) +lb $a1, ($t9) +beqz $a0, check_20 +beqz $a1, mismatch_20 +seq $v0, $a0, $a1 +beqz $v0, mismatch_20 +addi $t8, $t8, 1 +addi $t9, $t9, 1 +j loop_20 +mismatch_20: +li $v0, 0 +j end_20 +check_20: +bnez $a1, mismatch_20 +li $v0, 1 +end_20: +move $t4, $v0 +# If not local_main_Main_internal_13 goto continue__467 +sw $t0, -36($fp) +sw $t1, -40($fp) +sw $t2, -44($fp) +sw $t3, -48($fp) +sw $t4, -56($fp) +sw $t5, -60($fp) +beqz $t4, continue__467 +la $a0, dispatch_error +j .raise +continue__467: +lw $t0, -36($fp) +lw $t1, -52($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_initArticle_Article +lw $t8, 44($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +lw $t2, -48($fp) +sw $t2, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +lw $t3, -44($fp) +sw $t3, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +lw $t4, -40($fp) +sw $t4, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -36($fp) +sw $t1, -52($fp) +sw $t2, -48($fp) +sw $t3, -44($fp) +sw $t4, -40($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -52($fp) +# saves the return value +move $t0, $v0 +lw $t1, -32($fp) +# Moving local_main_Main_internal_12 to local_main_Main_an_article_7 +move $t1, $t0 +sw $t1, -32($fp) +lw $t2, -64($fp) +# Syscall to allocate memory of the object entry in heap +li $v0, 9 +li $a0, 12 +syscall +# Loads the name of the variable and saves the name like the first field +la $t9, type_Nil +sw $t9, 0($v0) +# Saves the size of the node +li $t9, 12 +sw $t9, 4($v0) +move $t2, $v0 +# Adding Type Info addr +la $t8, types +lw $v0, 36($t8) +sw $v0, 8($t2) +lw $t3, -72($fp) +# local_main_Main_internal_17 <- Type of local_main_Main_internal_15 +lw $t3, 0($t2) +lw $t4, -76($fp) +# Saves in local_main_Main_internal_18 data_0 +la $t4, data_0 +# local_main_Main_internal_17 <- local_main_Main_internal_17 = local_main_Main_internal_18 +move $t8, $t3 +move $t9, $t4 +loop_21: +lb $a0, ($t8) +lb $a1, ($t9) +beqz $a0, check_21 +beqz $a1, mismatch_21 +seq $v0, $a0, $a1 +beqz $v0, mismatch_21 +addi $t8, $t8, 1 +addi $t9, $t9, 1 +j loop_21 +mismatch_21: +li $v0, 0 +j end_21 +check_21: +bnez $a1, mismatch_21 +li $v0, 1 +end_21: +move $t3, $v0 +# If not local_main_Main_internal_17 goto continue__483 +sw $t0, -52($fp) +sw $t1, -32($fp) +sw $t2, -64($fp) +sw $t3, -72($fp) +sw $t4, -76($fp) +beqz $t3, continue__483 +la $a0, dispatch_error +j .raise +continue__483: +lw $t0, -64($fp) +lw $t1, -68($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_cons_BookList +lw $t8, 36($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +lw $t2, -4($fp) +sw $t2, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -64($fp) +sw $t1, -68($fp) +sw $t2, -4($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -68($fp) +# saves the return value +move $t0, $v0 +lw $t1, -84($fp) +# local_main_Main_internal_20 <- Type of local_main_Main_internal_16 +lw $t1, 0($t0) +lw $t2, -88($fp) +# Saves in local_main_Main_internal_21 data_0 +la $t2, data_0 +# local_main_Main_internal_20 <- local_main_Main_internal_20 = local_main_Main_internal_21 +move $t8, $t1 +move $t9, $t2 +loop_22: +lb $a0, ($t8) +lb $a1, ($t9) +beqz $a0, check_22 +beqz $a1, mismatch_22 +seq $v0, $a0, $a1 +beqz $v0, mismatch_22 +addi $t8, $t8, 1 +addi $t9, $t9, 1 +j loop_22 +mismatch_22: +li $v0, 0 +j end_22 +check_22: +bnez $a1, mismatch_22 +li $v0, 1 +end_22: +move $t1, $v0 +# If not local_main_Main_internal_20 goto continue__496 +sw $t0, -68($fp) +sw $t1, -84($fp) +sw $t2, -88($fp) +beqz $t1, continue__496 +la $a0, dispatch_error +j .raise +continue__496: +lw $t0, -68($fp) +lw $t1, -80($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_cons_BookList +lw $t8, 36($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +lw $t2, -32($fp) +sw $t2, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -68($fp) +sw $t1, -80($fp) +sw $t2, -32($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -80($fp) +# saves the return value +move $t0, $v0 +lw $t1, -0($fp) +# self . books <- SET local_main_Main_internal_19 +sw $t0, 12($t1) +lw $t2, -92($fp) +# local_main_Main_books_22 <- GET self . books +lw $t2, 12($t1) +lw $t3, -100($fp) +# local_main_Main_internal_24 <- Type of local_main_Main_books_22 +lw $t3, 0($t2) +lw $t4, -104($fp) +# Saves in local_main_Main_internal_25 data_0 +la $t4, data_0 +# local_main_Main_internal_24 <- local_main_Main_internal_24 = local_main_Main_internal_25 +move $t8, $t3 +move $t9, $t4 +loop_23: +lb $a0, ($t8) +lb $a1, ($t9) +beqz $a0, check_23 +beqz $a1, mismatch_23 +seq $v0, $a0, $a1 +beqz $v0, mismatch_23 +addi $t8, $t8, 1 +addi $t9, $t9, 1 +j loop_23 +mismatch_23: +li $v0, 0 +j end_23 +check_23: +bnez $a1, mismatch_23 +li $v0, 1 +end_23: +move $t3, $v0 +# If not local_main_Main_internal_24 goto continue__511 +sw $t0, -80($fp) +sw $t1, -0($fp) +sw $t2, -92($fp) +sw $t3, -100($fp) +sw $t4, -104($fp) +beqz $t3, continue__511 +la $a0, dispatch_error +j .raise +continue__511: +lw $t0, -92($fp) +lw $t1, -96($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t0) +lw $a0, 8($t9) +# Saves in t8 the direction of function_print_list_BookList +lw $t8, 48($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -92($fp) +sw $t1, -96($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -96($fp) +# saves the return value +move $t0, $v0 +lw $t1, -108($fp) +# Moving local_main_Main_internal_23 to local_main_Main_internal_26 +move $t1, $t0 +sw $t1, -108($fp) +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -96($fp) +sw $t1, -108($fp) +# Removing all locals from stack +addiu $sp, $sp, 112 +jr $ra + +# Raise exception method +.raise: +li $v0, 4 +syscall +li $v0, 17 +li $a0, 1 +syscall + +.data +abort_msg: .asciiz "Abort called from class " +new_line: .asciiz " +" +string_abort: .asciiz "Abort called from class String +" +int_abort: .asciiz "Abort called from class Int +" +bool_abort: .asciiz "Abort called from class Bool +" +type_Object: .asciiz "Object" +type_IO: .asciiz "IO" +type_String: .asciiz "String" +type_Int: .asciiz "Int" +type_Bool: .asciiz "Bool" +type_Book: .asciiz "Book" +type_Article: .asciiz "Article" +type_BookList: .asciiz "BookList" +type_Cons: .asciiz "Cons" +type_Nil: .asciiz "Nil" +type_Main: .asciiz "Main" +methods: .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +type_Void: .asciiz "Void" +types: .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +data_0: .asciiz "Void" +data_1: .asciiz "" +data_2: .asciiz "" +data_3: .asciiz "title: " +data_4: .asciiz " +" +data_5: .asciiz "author: " +data_6: .asciiz " +" +data_7: .asciiz "" +data_8: .asciiz "" +data_9: .asciiz "" +data_10: .asciiz "periodical: " +data_11: .asciiz " +" +data_12: .asciiz "- dynamic type was Article - +" +data_13: .asciiz "- dynamic type was Book - +" +data_14: .asciiz "Compilers, Principles, Techniques, and Tools" +data_15: .asciiz "Aho, Sethi, and Ullman" +data_16: .asciiz "The Top 100 CD_ROMs" +data_17: .asciiz "Ulanoff" +data_18: .asciiz "PC Magazine" +zero_error: .asciiz "Division by zero error +" +case_void_error: .asciiz "Case on void error +" +dispatch_error: .asciiz "Dispatch on void error +" +case_error: .asciiz "Case statement without a matching branch error +" +index_error: .asciiz "Substring out of range error +" +heap_error: .asciiz "Heap overflow error +" \ No newline at end of file diff --git a/src/cool/__init__.py b/src/cool/__init__.py index d1f3e8e44..2f2f644af 100644 --- a/src/cool/__init__.py +++ b/src/cool/__init__.py @@ -2,3 +2,4 @@ from .lexer import * from .semantic import * from .parser import * +from .codegen import * diff --git a/src/cool/__main__.py b/src/cool/__main__.py index ce5a27d17..231e764b3 100644 --- a/src/cool/__main__.py +++ b/src/cool/__main__.py @@ -2,3 +2,4 @@ from .parser import * from .semantic import * from .utils import * +from .codegen import * diff --git a/src/cool/codegen/__init__.py b/src/cool/codegen/__init__.py index e69de29bb..7ccd228f2 100644 --- a/src/cool/codegen/__init__.py +++ b/src/cool/codegen/__init__.py @@ -0,0 +1 @@ +from .codegen import * \ No newline at end of file diff --git a/src/cool/codegen/__main__.py b/src/cool/codegen/__main__.py index e69de29bb..a92a9f72d 100644 --- a/src/cool/codegen/__main__.py +++ b/src/cool/codegen/__main__.py @@ -0,0 +1,20 @@ +from .cil_visitor import CilVisitor +from .mips_visitor import MipsVisitor +from ..semantic.helpers import Context + + +def run_pipeline(context: Context, ast, scope): + cool_to_cil = CilVisitor(context) + cil_ast = cool_to_cil.visit(ast, scope) + + inherit_graph = context.build_inheritance_graph() + + data_code, text_code = MipsVisitor(inherit_graph).visit(cil_ast) + + return make_code(data_code, text_code) + + +def make_code(data_code, text_code) -> str: + ans = '\n'.join(text_code) + '\n' + '\n'.join(data_code) + + return ans diff --git a/src/cool/codegen/cil_visitor.py b/src/cool/codegen/cil_visitor.py index 86b048ff8..33a3427af 100644 --- a/src/cool/codegen/cil_visitor.py +++ b/src/cool/codegen/cil_visitor.py @@ -1,10 +1,10 @@ from .cilgen import BaseCil -from utils import visitor -from utils.ast import * -from semantic.helpers import Scope, VariableInfo -from semantic.types import * +from ..utils import visitor +from ..utils.ast import * +from ..semantic.helpers import Scope, VariableInfo +from ..semantic.types import * from .utils import ast_cil -from utils.helpers import get_type, get_common_base_type +from ..utils.helpers import get_type, get_common_base_type class CilVisitor(BaseCil): diff --git a/src/cool/codegen/cilgen.py b/src/cool/codegen/cilgen.py index bd189d6d1..754c744ef 100644 --- a/src/cool/codegen/cilgen.py +++ b/src/cool/codegen/cilgen.py @@ -1,9 +1,10 @@ from .utils import ProgramNode, LocalNode, FunctionNode, TypeNode, DataNode, ParamNode from .utils import ast_cil -from semantic.helpers import Context, VariableInfo, Scope -from semantic.types import Attribute, Type, StringType, ObjectType, IOType, Method +from ..semantic.helpers import Context, VariableInfo, Scope +from ..semantic.types import Attribute, Type, StringType, ObjectType, IOType, Method import re -from utils.ast import * +from ..utils.ast import BinaryNode, UnaryNode, AssignNode, ConstantBoolNode, ConstantVoidNode, ConstantStrNode, \ + ConstantNumNode class BaseCil: @@ -17,6 +18,9 @@ def __init__(self, context): self.context = context self.idx = 0 self.void_data = None + self.constructors = [] + self.void_data = None + self.inherit_graph = {} @property def params(self): @@ -84,19 +88,19 @@ def register_type(self, type_name): return node def register_data(self, value): - vname = f'data_{len(len(self.data))}' + vname = f'data_{len(self.data)}' node = DataNode(vname, value, self.index) self.data.append(node) return node - def define_binary_node(self, node: BinaryNode, scope: Scope, cil_node: ast_cil.Node): + def _define_binary_node(self, node: BinaryNode, scope: Scope, cil_node: ast_cil.Node): result = self.define_internal_local() left, typex = self.visit(node.left, scope) right, typex = self.visit(node.right, scope) self.register_instruction(cil_node(result, left, right)) return result, typex - def define_unary_node(self, node: UnaryNode, scope: Scope, cil_node): + def _define_unary_node(self, node: UnaryNode, scope: Scope, cil_node): result = self.define_internal_local() expr, typex = self.visit(node.expr, scope) self.register_instruction(cil_node(result, expr)) @@ -244,6 +248,8 @@ def built_in_functions(self): int_methods = [('abort', f18.name), ('type_name', f13.name), ('copy', f14.name)] bool_methods = [('abort', f19.name), ('type_name', f15.name), ('copy', f16.name)] + a = TypeNode("String", [], string_methods) + self.types_nodes += [TypeNode("Object", [], object_methods), TypeNode("IO", [], object_methods + io_methods), TypeNode("String", [], string_methods), diff --git a/src/cool/codegen/mips_visitor.py b/src/cool/codegen/mips_visitor.py new file mode 100644 index 000000000..c5b5a3c4a --- /dev/null +++ b/src/cool/codegen/mips_visitor.py @@ -0,0 +1,777 @@ +from .mipsgen import BaseMips +from ..utils import visitor +from .utils.tools import SymbolTable, AddressDescriptor, RegisterDescriptor, AddrType +from ..semantic.helpers import VariableInfo +from ..semantic.types import VOID_NAME +from .utils.ast_cil import * + + +class MipsVisitor(BaseMips): + ''' + Registers: + v0-v1: Used for expression evaluations and to hold the integer type + function results. Also used to pass the static link when calling + nested procedures. + a0-a3: Used to pass the first 4 words of integer type actual + arguments, their values are not preserved across procedure + calls. + t0-t7: Temporary registers used for expression evaluations; their + values aren’t preserved across procedure calls. + s0-s7: Saved registers. Their values must be preserved across + procedure calls. + t8-t9: Temporary registers used for expression evaluations; their + values aren’t preserved across procedure calls. + k0-k1: Reserved for the operating system kernel. + gp: Contains the global pointer. + sp: Contains the stack pointer. + fp: Contains the frame pointer (if needed); otherwise a saved register. + ra: Contains the return address and is used for expression evaluation. + Register $ra only needs to be saved if the callee itself makes a call. + + ''' + + @visitor.on('node') + def visit(self, node): + pass + + @visitor.when(ProgramNode) + def visit(self, node: ProgramNode): + # ? Quizá tenga que cambiar el orden en que estas cosas se visitan + # visit TypeNodes + for type_ in node.type_node: + self.visit(type_) + + # guardo las direcciones de cada método + self.save_meth_addr(node.func_node) + self.data_code.append(f"type_Void: .asciiz \"Void\"") # guarda el nombre de Void Type + # guardo las direcciones de cada tipo + self.save_types_addr(node.type_node) + # visit DataNodes + for d in node.data: + self.visit(d) + # visit code instrunctions + for code in node.func_node: + self.visit(code) + + self.initialize_runtime_errors() + + return self.data_code, self.code + + @visitor.when(TypeNode) + def visit(self, node: TypeNode): + self.obj_table.add_entry(node.name, node.methods, node.attributes) + self.data_code.append( + f"type_{node.name}: .asciiz \"{node.name}\"") # guarda el nombre de la variable en la memoria + + @visitor.when(DataNode) + def visit(self, node: DataNode): + self.data_code.append(f"{node.name}: .asciiz \"{node.value}\"") + + @visitor.when(FunctionNode) + def visit(self, node: FunctionNode): + self.code.append('') + self.code.append(f'{node.name}:') + self.locals = 0 # pointer to count the ammount of locals that are pushed into the stack + + self.code.append('# Gets the params from the stack') + self.code.append(f'move $fp, $sp') # gets the frame pointer from the stack + n = len(node.params) + for i, param in enumerate(node.params, 1): # gets the params from the stack + self.visit(param, i, n) + self.code.append('# Gets the frame pointer from the stack') + for i, var in enumerate(node.localvars, len(node.params)): + self.visit(var, i) + self.locals = len(node.params) + len(node.localvars) + blocks = self.get_basic_blocks(node.instructions) + self.next_use = self.construct_next_use(blocks) + + for block in blocks: + self.block = block + for inst in block: + self.inst = inst + self.get_reg(inst) + self.visit(inst) + inst = block[-1] + if not (isinstance(inst, GotoNode) or isinstance(inst, GotoIfNode) or isinstance(inst, ReturnNode) \ + or isinstance(inst, StaticCallNode) or isinstance(inst, DynamicCallNode)): + self.empty_registers() + # self.empty_registers() + + @visitor.when(ParamNode) + def visit(self, node: ParamNode, idx: int, length: int): + self.symbol_table.insert_name(node.name) + self.var_address[node.name] = self.get_type(node.type) + self.code.append(f'# Pops the register with the param value {node.name}') + self.code.append('addiu $fp, $fp, 4') # pops the register with the param value from stack + self.addr_desc.insert_var(node.name, length - idx) + + @visitor.when(LocalNode) + def visit(self, node: LocalNode, idx: int): + self.symbol_table.insert_name(node.name) # inserts the var in the symbol table, local by default + self.addr_desc.insert_var(node.name, idx) # saves the address relative from the actual fp + self.code.append(f'# Updates stack pointer pushing {node.name} to the stack') + self.code.append(f'addiu $sp, $sp, -4') # updates stack pointers (pushing this value) + + @visitor.when(AssignNode) + def visit(self, node: AssignNode): + rdest = self.addr_desc.get_var_reg(node.dest) + self.code.append(f'# Moving {node.source} to {node.dest}') + if self.is_variable(node.source): + rsrc = self.addr_desc.get_var_reg(node.source) + self.code.append(f'move ${rdest}, ${rsrc}') + self.var_address[node.dest] = self.var_address[node.source] + elif self.is_int(node.source): + self.code.append(f'li ${rdest}, {node.source}') + self.var_address[node.dest] = AddrType.INT + self.save_var_code(node.dest) + + @visitor.when(NotNode) + def visit(self, node: NotNode): + rdest = self.addr_desc.get_var_reg(node.dest) + rsrc = self.save_to_register(node.expr) + self.code.append(f'# {node.dest} <- ~{node.expr}') + self.code.append(f'not ${rdest}, ${rsrc}') + self.code.append(f'addi ${rdest}, ${rdest}, 1') + self.var_address[node.dest] = AddrType.INT + + @visitor.when(LogicalNotNode) + def visit(self, node: LogicalNotNode): + rdest = self.addr_desc.get_var_reg(node.dest) + rsrc = self.save_to_register(node.expr) + self.code.append(f'# {node.dest} <- not {node.expr}') + self.code.append(f'beqz ${rsrc}, false_{self.loop_idx}') + self.code.append(f'li ${rdest}, 0') + self.code.append(f'j end_{self.loop_idx}') + self.code.append(f'false_{self.loop_idx}:') + self.code.append(f'li ${rdest}, 1') + self.code.append(f'end_{self.loop_idx}:') + self.loop_idx += 1 + self.var_address[node.dest] = AddrType.BOOL + + @visitor.when(PlusNode) + def visit(self, node: PlusNode): + rdest = self.addr_desc.get_var_reg(node.dest) + self.code.append(f'# {node.dest} <- {node.left} + {node.right}') + if self.is_variable(node.left): + rleft = self.addr_desc.get_var_reg(node.left) + if self.is_variable(node.right): + rright = self.addr_desc.get_var_reg(node.right) + self.code.append(f"add ${rdest}, ${rleft}, ${rright}") + elif self.is_int(node.right): + self.code.append(f"addi ${rdest}, ${rleft}, {node.right}") + elif self.is_int(node.left): + if self.is_int(node.right): + self.code.append(f"li ${rdest}, {node.left + node.right}") + elif self.is_variable(node.right): + rright = self.addr_desc.get_var_reg(node.right) + self.code.append(f"addi ${rdest}, ${rright}, {node.left}") + self.var_address[node.dest] = AddrType.INT + + @visitor.when(MinusNode) + def visit(self, node: MinusNode): + rdest = self.addr_desc.get_var_reg(node.dest) + self.code.append(f'# {node.dest} <- {node.left} - {node.right}') + if self.is_variable(node.left): + rleft = self.addr_desc.get_var_reg(node.left) + if self.is_variable(node.right): + rright = self.addr_desc.get_var_reg(node.right) + self.code.append(f"sub ${rdest}, ${rleft}, ${rright}") + elif self.is_int(node.right): + self.code.append(f"addi ${rdest}, ${rleft}, -{node.right}") + elif self.is_int(node.left): + if self.is_int(node.right): + self.code.append(f"li ${rdest}, {node.left - node.right}") + elif self.is_variable(node.right): + rright = self.addr_desc.get_var_reg(node.right) + self.code.append(f"sub $t9, $zero, {rright}") + self.code.append(f"addi ${rdest}, {node.left}, $t9") + self.var_address[node.dest] = AddrType.INT + + @visitor.when(StarNode) + def visit(self, node: StarNode): + self.code.append(f'# {node.dest} <- {node.left} * {node.right}') + self._code_to_mult_div(node, op='mult', func_op=lambda x, y: x * y) + + @visitor.when(DivNode) + def visit(self, node: DivNode): + self.code.append(f'# {node.dest} <- {node.left} / {node.right}') + self._code_to_mult_div(node, op='div', func_op=lambda x, y: int(x / y)) + + def _code_to_mult_div(self, node, op: str, func_op): + rdest = self.addr_desc.get_var_reg(node.dest) + if self.is_int(node.left) and self.is_int(node.right): + try: + self.code.append(f"li ${rdest}, {func_op(node.left, node.right)}") + except ZeroDivisionError: + self.code.append('la $a0, zero_error') + self.code.append('j .raise') + else: + if self.is_variable(node.left): + rleft = self.addr_desc.get_var_reg(node.left) + if self.is_variable(node.right): + rright = self.addr_desc.get_var_reg(node.right) + elif self.is_int(node.right): + self.code.append(f"li $t9, {node.right}") + rright = 't9' + elif self.is_int(node.left): + # right es una variable porque falló el primer if + rright = self.addr_desc.get_var_reg(node.right) + self.code.append(f"li $t9, {node.left}") + rleft = 't9' + if op == 'div': + self.code.append('la $a0, zero_error') + self.code.append(f'beqz ${rright}, .raise') + self.code.append(f"{op} ${rleft}, ${rright}") + self.code.append(f"mflo ${rdest}") + self.var_address[node.dest] = AddrType.INT + + @visitor.when(LessNode) + def visit(self, node: LessNode): + self.code.append(f'# {node.dest} <- {node.left} < {node.right}') + self._code_to_comp(node, 'slt', lambda x, y: x < y) + + @visitor.when(LessEqNode) + def visit(self, node: MinusNode): + self.code.append(f'# {node.dest} <- {node.left} <= {node.right}') + self._code_to_comp(node, 'sle', lambda x, y: x <= y) + + @visitor.when(EqualNode) + def visit(self, node: MinusNode): + self.code.append(f'# {node.dest} <- {node.left} = {node.right}') + if self.is_variable(node.left) and self.is_variable(node.right) and self.var_address[ + node.left] == AddrType.STR and self.var_address[node.right] == AddrType.STR: + self.compare_strings(node) + else: + self._code_to_comp(node, 'seq', lambda x, y: x == y) + + def _code_to_comp(self, node, op, func_op): + rdest = self.addr_desc.get_var_reg(node.dest) + if self.is_variable(node.left): + rleft = self.addr_desc.get_var_reg(node.left) + if self.is_variable(node.right): + rright = self.addr_desc.get_var_reg(node.right) + self.code.append(f"{op} ${rdest}, ${rleft}, ${rright}") + elif self.is_int(node.right): + self.code.append(f"li $t9, {node.right}") + self.code.append(f"{op} ${rdest}, ${rleft}, $t9") + elif self.is_int(node.left): + if self.is_int(node.right): + self.code.append(f"li ${rdest}, {int(func_op(node.left, node.right))}") + elif self.is_variable(node.right): + rright = self.addr_desc.get_var_reg(node.right) + self.code.append(f"li $t9, {node.left}") + self.code.append(f"{op} ${rdest}, $t9, ${rright}") + self.var_address[node.dest] = AddrType.BOOL + + @visitor.when(GetAttribNode) + def visit(self, node: GetAttribNode): + self.code.append(f'# {node.dest} <- GET {node.obj} . {node.attr}') + rdest = self.addr_desc.get_var_reg(node.dest) + self.var_address[node.dest] = self.get_type(node.attr_type) + rsrc = self.addr_desc.get_var_reg(node.obj) + attr_offset = 4 * self.get_attr_offset(node.attr, node.type_name) + self.code.append(f'lw ${rdest}, {attr_offset}(${rsrc})') + + @visitor.when(SetAttribNode) + def visit(self, node: SetAttribNode): + self.code.append(f'# {node.obj} . {node.attr} <- SET {node.value}') + rdest = self.addr_desc.get_var_reg(node.obj) + attr_offset = 4 * self.get_attr_offset(node.attr, node.type_name) + if self.is_variable(node.value): + rsrc = self.addr_desc.get_var_reg(node.value) + elif self.is_int(node.value): + self.code.append(f'li $t9, {node.value}') + rsrc = 't9' + elif self.is_void(node.value): + self.code.append(f'la $t9, type_{VOID_NAME}') + rsrc = 't9' + self.code.append(f'sw ${rsrc}, {attr_offset}(${rdest})') # saves the new value in the attr offset + + @visitor.when(AllocateNode) + def visit(self, node: AllocateNode): + rdest = self.addr_desc.get_var_reg(node.dest) + size = 4 * self.obj_table.size_of_entry(node.type) # size of the table entry of the new type + self.var_address[node.dest] = AddrType.REF + # syscall to allocate memory of the object entry in heap + + self.code.append('# Syscall to allocate memory of the object entry in heap') + self.code.append('li $v0, 9') # code to request memory + self.code.append(f'li $a0, {size}') # argument (size) + self.code.append('syscall') + # in v0 is the address of the new memory + addrs_stack = self.addr_desc.get_var_addr(node.dest) + # self.code.append('# Save the address in the stack') + # self.code.append(f'sw $v0, -{addrs_stack}($fp)') # save the address in the stack (where is the local variable) + + self.code.append('# Loads the name of the variable and saves the name like the first field') + self.code.append(f'la $t9, type_{node.type}') # loads the name of the variable + self.code.append(f'sw $t9, 0($v0)') # saves the name like the first field + + self.code.append(f'# Saves the size of the node') + self.code.append(f'li $t9, {size}') # saves the size of the node + self.code.append(f'sw $t9, 4($v0)') # this is the second file of the table offset + self.code.append(f'move ${rdest}, $v0') # guarda la nueva dirección de la variable en el registro destino + + idx = self.types.index(node.type) + self.code.append('# Adding Type Info addr') + self.code.append('la $t8, types') + self.code.append(f'lw $v0, {4 * idx}($t8)') + self.code.append(f'sw $v0, 8(${rdest})') + + @visitor.when(TypeOfNode) + def visit(self, node: TypeOfNode): + rdest = self.addr_desc.get_var_reg(node.dest) + self.code.append(f'# {node.dest} <- Type of {node.obj}') + if self.is_variable(node.obj): + rsrc = self.addr_desc.get_var_reg(node.obj) + if self.var_address[node.obj] == AddrType.REF: + self.code.append(f'lw ${rdest}, 0(${rsrc})') # como en el offset 0 está el nombre del tipo this is ok + elif self.var_address[node.obj] == AddrType.STR: + self.code.append(f'la ${rdest}, type_String') + elif self.var_address[node.obj] == AddrType.INT: + self.code.append(f'la ${rdest}, type_Int') + elif self.var_address[node.obj] == AddrType.BOOL: + self.code.append(f'la ${rdest}, type_Bool') + elif self.is_int(node.obj): + self.code.append(f'la ${rdest}, type_Int') + self.var_address[node.dest] = AddrType.STR + + @visitor.when(LabelNode) + def visit(self, node: LabelNode): + self.code.append(f'{node.label}:') + + @visitor.when(GotoNode) + def visit(self, node: GotoNode): + self.empty_registers() + self.code.append(f'j {node.label}') + + @visitor.when(GotoIfNode) + def visit(self, node: GotoIfNode): + reg = self.save_to_register(node.cond) + self.code.append(f'# If {node.cond} goto {node.label}') + self.empty_registers() + self.code.append(f'bnez ${reg}, {node.label}') + + @visitor.when(GotoIfFalseNode) + def visit(self, node: GotoIfNode): + reg = self.save_to_register(node.cond) + self.code.append(f'# If not {node.cond} goto {node.label}') + self.empty_registers() + self.code.append(f'beqz ${reg}, {node.label}') + + @visitor.when(StaticCallNode) + def visit(self, node: StaticCallNode): + function = self.dispatch_table.find_full_name(node.type, node.function) + self.code.append(f'# Static Dispatch of the method {node.function}') + self._code_to_function_call(node.args, function, node.dest) + + self.var_address[node.dest] = self.get_type(node.return_type) + + @visitor.when(DynamicCallNode) + def visit(self, node: DynamicCallNode): + # Find the actual name of the method in the dispatch table + self.code.append('# Find the actual name in the dispatch table') + reg = self.addr_desc.get_var_reg(node.obj) # obtiene la instancia actual + + self.code.append('# Gets in a0 the actual direction of the dispatch table') + self.code.append(f'lw $t9, 8(${reg})') # obtiene en t9 la dirección del dispatch table + self.code.append('lw $a0, 8($t9)') + function = self.dispatch_table.find_full_name(node.type, node.method) + index = 4 * self.dispatch_table.get_offset(node.type, function) + 4 # guarda el offset del me + self.code.append(f'# Saves in t8 the direction of {function}') + self.code.append(f'lw $t8, {index}($a0)') # guarda en $t8 la dirección de la función a llamar + # Call function + self._code_to_function_call(node.args, '$t8', node.dest, function) + + self.var_address[node.dest] = self.get_type(node.return_type) + + def _code_to_function_call(self, args, function, dest, function_name=None): + self.push_register('fp') # pushes fp register to the stack + self.push_register('ra') # pushes ra register to the stack + self.code.append('# Push the arguments to the stack') + for arg in reversed(args): # push the arguments to the stack + self.visit(arg) + + self.code.append('# Empty all used registers and saves them to memory') + self.empty_registers() + self.code.append('# This function will consume the arguments') + + self.code.append(f'jal {function}') # this function will consume the arguments + self.code.append('# Pop ra register of return function of the stack') + self.pop_register('ra') # pop register ra from the stack + self.code.append('# Pop fp register from the stack') + self.pop_register('fp') # pop fp register from the stack + if dest is not None: + self.get_reg_var(dest) + rdest = self.addr_desc.get_var_reg(dest) + self.code.append('# saves the return value') + self.code.append(f'move ${rdest}, $v0') # v0 es usado para guardar el valor de retorno + + @visitor.when(ArgNode) + def visit(self, node: ArgNode): + self.code.append('# The rest of the arguments are push into the stack') + if self.is_variable(node.dest): + self.get_reg_var(node.dest) + reg = self.addr_desc.get_var_reg(node.dest) + self.code.append(f'sw ${reg}, ($sp)') + elif self.is_int(node.dest): + self.code.append(f'li $t9, {node.dest}') + self.code.append(f'sw $t9, ($sp)') + self.code.append('addiu $sp, $sp, -4') + + @visitor.when(ReturnNode) + def visit(self, node: ReturnNode): + # save the return value + if self.is_variable(node.value): + rdest = self.addr_desc.get_var_reg(node.value) + self.code.append(f'move $v0, ${rdest}') + elif self.is_int(node.value): + self.code.append(f'li $v0, {node.value}') + self.code.append('# Empty all used registers and saves them to memory') + self.empty_registers() # empty all used registers and saves them to memory + self.code.append('# Removing all locals from stack') + self.code.append(f'addiu $sp, $sp, {self.locals * 4}') + # return to the caller + self.code.append(f'jr $ra') + + self.code.append('') + + @visitor.when(LoadNode) + def visit(self, node: LoadNode): + rdest = self.addr_desc.get_var_reg(node.dest) + self.code.append(f'# Saves in {node.dest} {node.msg}') + self.var_address[node.dest] = AddrType.STR + self.code.append(f'la ${rdest}, {node.msg}') + + @visitor.when(LengthNode) + def visit(self, node: LengthNode): + rdest = self.addr_desc.get_var_reg(node.dest) + reg = self.addr_desc.get_var_reg(node.arg) + loop = f'loop_{self.loop_idx}' + end = f'end_{self.loop_idx}' + # saving the value of reg to iterate + self.code.append(f'move $t8, ${reg}') + self.code.append('# Determining the length of a string') + self.code.append(f'{loop}:') + self.code.append(f'lb $t9, 0($t8)') + self.code.append(f'beq $t9, $zero, {end}') + self.code.append(f'addi $t8, $t8, 1') + self.code.append(f'j {loop}') + self.code.append(f'{end}:') + + self.code.append(f'sub ${rdest}, $t8, ${reg}') + self.loop_idx += 1 + + @visitor.when(ConcatNode) + def visit(self, node: ConcatNode): + rdest = self.addr_desc.get_var_reg(node.dest) + self.code.append('# Allocating memory for the buffer') + self.code.append('li $a0, 356') + self.code.append('li $v0, 9') + self.code.append('syscall') + self.code.append(f'move ${rdest}, $v0') + + rsrc1 = self.addr_desc.get_var_reg(node.arg1) + if node.arg2 is not None: + rsrc2 = self.addr_desc.get_var_reg(node.arg2) + + self.code.append('# Copy the first string to dest') + var = self.save_reg_if_occupied('a1') + self.code.append(f'move $a0, ${rsrc1}') + self.code.append(f'move $a1, ${rdest}') + self.push_register('ra') + self.code.append('jal strcopier') + + if node.arg2 is not None: + self.code.append('# Concatenate second string on result buffer') + self.code.append(f'move $a0, ${rsrc2}') + self.code.append(f'move $a1, $v0') + self.code.append('jal strcopier') + self.code.append('sb $0, 0($v0)') + self.pop_register('ra') + self.code.append(f'j finish_{self.loop_idx}') + + if self.first_defined['strcopier']: + self.code.append('# Definition of strcopier') + self.code.append('strcopier:') + self.code.append('# In a0 is the source and in a1 is the destination') + self.code.append(f'loop_{self.loop_idx}:') + self.code.append('lb $t8, ($a0)') + self.code.append(f'beq $t8, $zero, end_{self.loop_idx}') + self.code.append('addiu $a0, $a0, 1') + self.code.append('sb $t8, ($a1)') + self.code.append('addiu $a1, $a1, 1') + self.code.append(f'b loop_{self.loop_idx}') + self.code.append(f'end_{self.loop_idx}:') + self.code.append('move $v0, $a1') + self.code.append('jr $ra') + self.first_defined['strcopier'] = False + + self.code.append(f'finish_{self.loop_idx}:') + self.load_var_if_occupied(var) + self.loop_idx += 1 + + @visitor.when(SubstringNode) + def visit(self, node: SubstringNode): + rdest = self.addr_desc.get_var_reg(node.dest) + self.code.append('# Allocating memory for the buffer') + self.code.append('li $a0, 356') + self.code.append('li $v0, 9') + self.code.append('syscall') + self.code.append(f'move ${rdest}, $v0') + + if self.is_variable(node.begin): + rstart = self.addr_desc.get_var_reg(node.begin) + elif self.is_int(node.begin): + rstart = 't8' + self.code.append(f'li $t8, {node.begin}') + if self.is_variable(node.end): + rend = self.addr_desc.get_var_reg(node.end) + var = None + elif self.is_int(node.end): + var = self.save_reg_if_occupied('a3') + rend = 'a3' + self.code.append(f'li $a3, {node.end}') + + self.get_reg_var(node.word) + rself = self.addr_desc.get_var_reg(node.word) + + self.code.append("# Getting the substring of a node") + # Moves to the first position of the string + # self.code.append(f'sll $t9, ${rstart}, 2') # multiplicar por 4 + start = f'start_{self.loop_idx}' + error = f'error_{self.loop_idx}' + end_lp = f'end_len_{self.loop_idx}' + + self.code.append('# Move to the first position in the string') + self.code.append('li $v0, 0') + + self.code.append(f'move $t8, ${rself}') + self.code.append(f'{start}:') + self.code.append('lb $t9, 0($t8)') + self.code.append(f'beqz $t9, {error}') + self.code.append('addi $v0, 1') + self.code.append(f'bgt $v0, ${rstart}, {end_lp}') + self.code.append(f'addi $t8, 1') + self.code.append(f'j {start}') + self.code.append(f'{end_lp}:') + + self.code.append('# Saving dest to iterate over him') + self.code.append(f'move $v0, ${rdest}') + + loop = f'loop_{self.loop_idx}' + end = f'end_{self.loop_idx}' + # Loops moving the bytes until reaching to end + self.code.append(f'{loop}:') + self.code.append(f'sub $t9, $v0, ${rdest}') + + self.code.append(f'beq $t9, ${rend}, {end}') + self.code.append(f'lb $t9, 0($t8)') + self.code.append(f'beqz $t9, {error}') # if $t9 is zero error cause havent finished + self.code.append(f'sb $t9, 0($v0)') + self.code.append('addi $t8, $t8, 1') + self.code.append(f'addi $v0, $v0, 1') + self.code.append(f'j {loop}') + self.code.append(f'{error}:') + self.code.append('la $a0, index_error') + + self.code.append('li $v0, 4') + self.code.append(f'move $a0, ${rself}') + self.code.append('syscall') + + self.code.append('li $v0, 1') + self.code.append(f'move $a0, ${rstart}') + self.code.append('syscall') + + self.code.append('li $v0, 1') + self.code.append(f'move $a0, ${rend}') + self.code.append('syscall') + + self.code.append('j .raise') + self.code.append(f'{end}:') + self.code.append('sb $0, 0($v0)') + self.load_var_if_occupied(var) + self.loop_idx += 1 + + @visitor.when(OutStringNode) + def visit(self, node: OutStringNode): + reg = self.addr_desc.get_var_reg(node.value) + self.code.append('# Printing a string') + self.code.append('li $v0, 4') + self.code.append(f'move $a0, ${reg}') + self.code.append('syscall') + + @visitor.when(OutIntNode) + def visit(self, node: OutIntNode): + if self.is_variable(node.value): + reg = self.addr_desc.get_var_reg(node.value) + elif self.is_int(node.value): + reg = 't8' + self.code.append(f'li $t8, ${node.value}') + + self.code.append('# Printing an int') + self.code.append('li $v0, 1') + self.code.append(f'move $a0, ${reg}') + self.code.append('syscall') + + @visitor.when(ReadStringNode) + def visit(self, node: ReadStringNode): + # self.data_code.append(f'{node.dest}: .space 20') + rdest = self.addr_desc.get_var_reg(node.dest) + self.code.append('# Allocating memory for the buffer') + self.code.append('li $a0, 356') + self.code.append('li $v0, 9') + self.code.append('syscall') + self.code.append(f'move ${rdest}, $v0') + # self.code.append(f'sb $0, 0(${rdest})') + + self.code.append('# Reading a string') + var = self.save_reg_if_occupied('a1') + self.code.append('# Putting buffer in a0') + self.code.append(f'move $a0, ${rdest}') # Get length of the string + self.code.append('# Putting length of string in a1') + self.code.append(f'li $a1, 356') + self.code.append('li $v0, 8') + self.code.append('syscall') + self.code.append('# Walks to eliminate the newline') + + start = f'start_{self.loop_idx}' + end = f'end_{self.loop_idx}' + + self.code.append(f'move $t9, ${rdest}') + self.code.append(f'{start}:') # moves to the newline + self.code.append('lb $t8, 0($t9)') + self.code.append(f"beqz $t8, {end}") + self.code.append('add $t9, $t9, 1') + self.code.append(f'j {start}') + self.code.append(f'{end}:') + self.code.append('addiu $t9, $t9, -1') + self.code.append('sb $0, ($t9)') # overwrites the newline with zero + self.loop_idx += 1 + self.load_var_if_occupied(var) + + @visitor.when(ReadIntNode) + def visit(self, node: ReadIntNode): + rdest = self.addr_desc.get_var_reg(node.dest) + self.code.append('# Reading a int') + self.code.append('li $v0, 5') + self.code.append('syscall') + self.code.append(f'move ${rdest}, $v0') + + @visitor.when(ExitNode) + def visit(self, node: ExitNode): + self.code.append('# Exiting the program') + if self.is_variable(node.value): + reg = self.addr_desc.get_var_reg(node.value) + elif self.is_int(node.value): + reg = 't8' + self.code.append(f'li $t8, {node.value}') + + rself = self.addr_desc.get_var_reg(node.classx) + + 'Abort called from class String' + if self.var_address[node.classx] == AddrType.REF: + self.code.append('# Printing abort message') + self.code.append('li $v0, 4') + self.code.append(f'la $a0, abort_msg') + self.code.append('syscall') + + self.code.append('li $v0, 4') + self.code.append(f'lw $a0, 0(${rself})') + self.code.append('syscall') + self.code.append('li $v0, 4') + self.code.append(f'la $a0, new_line') + self.code.append('syscall') + + self.code.append('li $v0, 17') + self.code.append(f'move $a0, ${reg}') + self.code.append('syscall') + + @visitor.when(CopyNode) + def visit(self, node: CopyNode): + rdest = self.addr_desc.get_var_reg(node.dest) + rsrc = self.addr_desc.get_var_reg(node.source) + + self.code.append(f'lw $t9, 4(${rsrc})') # getting the size of the object + self.code.append('# Syscall to allocate memory of the object entry in heap') + self.code.append('li $v0, 9') # code to request memory + self.code.append(f'move $a0, $t9') # argument (size) + self.code.append('syscall') + + self.code.append(f'move ${rdest}, $v0') + + self.code.append('# Loop to copy every field of the previous object') + # loop to copy every field of the previous object + self.code.append('# t8 the register to loop') + self.code.append('li $t8, 0') + self.code.append(f'loop_{self.loop_idx}:') + self.code.append('# In t9 is stored the size of the object') + self.code.append(f'bge $t8, $t9, exit_{self.loop_idx}') + self.code.append(f'lw $a0, (${rsrc})') + self.code.append('sw $a0, ($v0)') + # offset in the copied element + self.code.append('addi $v0, $v0, 4') + # offset in the original element + self.code.append(f'addi ${rsrc}, ${rsrc}, 4') + self.code.append('# Increase loop counter') + self.code.append('addi $t8, $t8, 4') + self.code.append(f'j loop_{self.loop_idx}') + self.code.append(f'exit_{self.loop_idx}:') + self.loop_idx += 1 + + @visitor.when(ConformsNode) + def visit(self, node: ConformsNode): + rdest = self.addr_desc.get_var_reg(node.dest) + if self.is_variable(node.expr): + rsrc = self.addr_desc.get_var_reg(node.expr) + if self.var_address[node.expr] == AddrType.REF: + self.conforms_to(rsrc, rdest, node.type) + elif self.var_address[node.expr] == AddrType.STR: + self.value_conforms_to_obj(rdest, 'String', node.type) + elif self.var_address[node.expr] == AddrType.INT: + self.value_conforms_to_obj(rdest, 'Int', node.type) + elif self.var_address[node.expr] == AddrType.BOOL: + self.value_conforms_to_obj(rdest, 'Bool', node.type) + elif self.is_int(node.expr): + self.value_conforms_to_obj(rdest, 'Int', node.type) + + @visitor.when(ErrorNode) + def visit(self, node: ErrorNode): + self.code.append(f'la $a0, {node.type}') + self.code.append('j .raise') + + @visitor.when(VoidConstantNode) + def visit(self, node: VoidConstantNode): + rdest = self.addr_desc.get_var_reg(node.out) + self.code.append('# Initialize void node') + self.code.append(f'li $a0, 4') # argument (size) + self.code.append('li $v0, 9') # code to request memory + self.code.append('syscall') + self.code.append('# Loads the name of the variable and saves the name like the first field') + self.code.append(f'la $t9, type_{VOID_NAME}') # loads the name of the variable + self.code.append('sw $t9, 0($v0)') # saves the name like the first field + self.code.append(f'move ${rdest}, $v0') + self.var_address[node.obj] = AddrType.REF + + @visitor.when(BoxingNode) + def visit(self, node: BoxingNode): + "Node to convert a value type into object" + rdest = self.addr_desc.get_var_reg(node.dest) + self.code.append('# Initialize new node') + self.code.append('li $a0, 12') + self.code.append('li $v0, 9') + self.code.append('syscall') + + self.code.append(f'la $t9, type_{node.type}') + self.code.append('sw $t9, 0($v0)') # saves the name like the first field + self.code.append('li $t9, 12') + self.code.append('sw $t9, 4($v0)') # saves the size like the second field + self.code.append(f'move ${rdest}, $v0') + + self.code.append('# Saving the methods of object') + idx = self.types.index('Object') + self.code.append('# Adding Type Info addr') + self.code.append('la $t8, types') + self.code.append(f'lw $v0, {4 * idx}($t8)') + self.code.append(f'sw $v0, 8(${rdest})') + self.var_address[node.dest] = AddrType.REF diff --git a/src/cool/codegen/mipsgen.py b/src/cool/codegen/mipsgen.py new file mode 100644 index 000000000..45d9a67a6 --- /dev/null +++ b/src/cool/codegen/mipsgen.py @@ -0,0 +1,469 @@ +from .utils.tools import * +from typing import List +from ..semantic.helpers import VariableInfo +from ..semantic.types import Attribute +from .utils.ast_cil import * + + +class BaseMips: + def __init__(self, inherit_graph): + self.code: list = ['.text', '.globl main', 'main:'] + self.initialize_data_code() + self.symbol_table = SymbolTable() + self.reg_desc = RegisterDescriptor() + self.addr_desc = AddressDescriptor() + + self.dispatch_table: DispatchTable = DispatchTable() + self.obj_table: ObjTable = ObjTable(self.dispatch_table) + self.initialize_methods() + self.load_abort_messages() + # Will hold the type of any of the vars + self.var_address = {'self': AddrType.REF} + + self.loop_idx = 0 # to count the generic loops in the app + self.first_defined = { + 'strcopier': True} # bool to keep in account when the first defined string function was defined + self.inherit_graph = inherit_graph + self.space_idx = 0 + + def initialize_methods(self): + self.methods = [] + # Built in methods added + for entry in self.obj_table: + entry: ObjTabEntry + self.methods.extend(entry.dispatch_table_entry) + + def initialize_data_code(self): + self.data_code = ['.data'] + + def initialize_runtime_errors(self): + self.code.append('# Raise exception method') + self.code.append('.raise:') + # Waits in $a0 error msg + self.code.append('li $v0, 4') + # Prints error message + self.code.append('syscall') + + self.code.append('li $v0, 17') + self.code.append('li $a0, 1') + # Exists + self.code.append('syscall\n') + + self.data_code.append('zero_error: .asciiz \"Division by zero error\n\"') + self.data_code.append('case_void_error: .asciiz \"Case on void error\n\"') + self.data_code.append('dispatch_error: .asciiz \"Dispatch on void error\n\"') + self.data_code.append('case_error: .asciiz \"Case statement without a matching branch error\n\"') + self.data_code.append('index_error: .asciiz \"Substring out of range error\n\"') + self.data_code.append('heap_error: .asciiz \"Heap overflow error\n\"') # no idea how to check for this + + def load_abort_messages(self): + self.data_code.append( + "abort_msg: .asciiz \"Abort called from class \"") # guarda el nombre de Void Type + self.data_code.append(f"new_line: .asciiz \"\n\"") # guarda el nombre de Void Type + self.data_code.append('string_abort: .asciiz \"Abort called from class String\n\"') + self.data_code.append('int_abort: .asciiz \"Abort called from class Int\n\"') + self.data_code.append('bool_abort: .asciiz \"Abort called from class Bool\n\"') + + def get_basic_blocks(self, instructions: List[InstructionNode]): + leaders = self.find_leaders(instructions) + blocks = [instructions[leaders[i - 1]:leaders[i]] for i in range(1, len(leaders))] + return blocks + + def find_leaders(self, instructions: List[InstructionNode]): + "Returns the positions in the block that are leaders" + leaders = {0, len(instructions)} + for i, inst in enumerate(instructions): + if isinstance(inst, GotoNode) or isinstance(inst, GotoIfNode) or isinstance(inst, ReturnNode) \ + or isinstance(inst, StaticCallNode) or isinstance(inst, DynamicCallNode): + leaders.add(i + 1) + elif isinstance(inst, LabelNode) or isinstance(inst, FunctionNode): + leaders.add(i) + return sorted(list(leaders)) + + def is_variable(self, expr): + return isinstance(expr, str) + + def is_int(self, expr): + return isinstance(expr, int) + + def is_void(self, expr): + return isinstance(expr, VoidConstantNode) + + def add_entry_symb_tab(self, name): + "Method to add a entry in the symbol table. (Local)" + self.symbol_table.insert(name) + + def construct_next_use(self, basic_blocks: List[List[InstructionNode]]): + next_use = {} + for basic_block in basic_blocks: + # Flush Symbol table's nextuse islive information + for x in self.symbol_table: + self.symbol_table[x].is_live = False + self.symbol_table[x].next_use = None + + for inst in reversed(basic_block): + in1 = inst.in1 if self.is_variable(inst.in1) else None + in2 = inst.in2 if self.is_variable(inst.in2) else None + out = inst.out if self.is_variable(inst.out) else None + + in1nextuse = None + in2nextuse = None + outnextuse = None + in1islive = False + in2islive = False + outislive = False + + entry_in1 = self.symbol_table.lookup(in1) + entry_in2 = self.symbol_table.lookup(in2) + entry_out = self.symbol_table.lookup(out) + if out is not None: + if entry_out is not None: + outnextuse = entry_out.next_use + outislive = entry_out.is_live + else: + # Esto no debería pasar + entry_out = SymbolTabEntry(out) + entry_out.next_use = None + entry_out.is_live = False + self.symbol_table.insert(entry_out) + if in1 is not None: + if entry_in1 is not None: + in1nextuse = entry_in1.next_use + in1islive = entry_in1.is_live + else: + # Esto no debería pasar + entry_in1 = SymbolTabEntry(out) + entry_in1.next_use = inst.index + entry_in1.is_live = True + self.symbol_table.insert(entry_in1) + if in2 is not None: + if entry_in2 is not None: + in2nextuse = entry_in2.next_use + in2islive = entry_in2.is_live + else: + # Esto no debería pasar + entry_in2 = SymbolTabEntry(in2) + entry_in2.next_use = inst.index + entry_in2.is_live = True + self.symbol_table.insert(entry_in2) + + n_entry = NextUseEntry(in1, in2, out, in1nextuse, in2nextuse, outnextuse, in1islive, in2islive, + outislive) + next_use[inst.index] = n_entry + return next_use + + def get_reg(self, inst: InstructionNode): + if self.is_variable(inst.in1): + in1_reg = self.get_reg_var(inst.in1) + if self.is_variable(inst.in2): + in2_reg = self.get_reg_var(inst.in2) + + # Comprobar si se puede usar uno de estos registros tambien para el destino + nu_entry = self.next_use[inst.index] + if nu_entry.in1islive and nu_entry.in1nextuse < inst.index: + self.update_register(inst.out, in1_reg) + return + if nu_entry.in2islive and nu_entry.in2nextuse < inst.index: + self.update_register(inst.out, in2_reg) + return + # Si no buscar un registro para z por el otro procedimiento + if self.is_variable(inst.out): + self.get_reg_var(inst.out) + + def get_reg_var(self, var): + curr_inst = self.inst + register = self.addr_desc.get_var_reg(var) + if register is not None: # ya la variable está en un registro + return register + + var_st = self.symbol_table.lookup(var) + register = self.reg_desc.find_empty_reg() + if register is not None: + self.update_register(var, register) + self.load_var_code(var) + return register + + next_use = self.next_use[curr_inst.index] + # Choose a register that requires the minimal number of load and store instructions + score = self.initialize_score() # keeps the score of each variable (the amount of times a variable in a register is used) + for inst in self.block[1:]: + inst: InstructionNode + if self.is_variable(inst.in1) and inst.in1 not in [curr_inst.in1, curr_inst.in2, + curr_inst.out] and next_use.in1islive: + self._update_score(score, inst.in1) + if self.is_variable(inst.in2) and inst.in2 not in [curr_inst.in1, curr_inst.in2, + curr_inst.out] and next_use.in2islive: + self._update_score(score, inst.in2) + if self.is_variable(inst.out) and inst.out not in [curr_inst.in1, curr_inst.in2, + curr_inst.out] and next_use.outislive: + self._update_score(score, inst.out) + + # Chooses the one that is used less + register = min(score, key=lambda x: score[x]) + + # register, memory, _ = self.addr_desc.get_var_storage(n_var) + + self.update_register(var, register) + self.load_var_code(var) + return register + + def initialize_score(self): + score = {} + for reg in self.reg_desc.registers: + score[reg] = 0 + try: + reg = self.addr_desc.get_var_reg(self.inst.in1) + if reg: + score[reg] = 999 + except: + pass + try: + reg = self.addr_desc.get_var_reg(self.inst.in2) + if reg: + score[reg] = 999 + except: + pass + try: + reg = self.addr_desc.get_var_reg(self.inst.out) + if reg: + score[reg] = 999 + except: + pass + return score + + def _update_score(self, score, var): + reg = self.addr_desc.get_var_reg(var) + if reg is None: + return + try: + score[reg] += 1 + except: + score[reg] = 1 + + def update_register(self, var, register): + content = self.reg_desc.get_content(register) + if content is not None: + self.save_var_code(content) + self.addr_desc.set_var_reg(content, None) + self.reg_desc.insert_register(register, var) + self.addr_desc.set_var_reg(var, register) + + def save_var_code(self, var): + "Code to save a variable to memory" + memory, register, _ = self.addr_desc.get_var_storage(var) + self.code.append(f"sw ${register}, -{memory}($fp)") + + def load_var_code(self, var): + "Code to load a variable from memory" + memory, register, _ = self.addr_desc.get_var_storage(var) + self.code.append(f'lw ${register}, -{memory}($fp)') + + def load_used_reg(self, registers): + "Loads the used variables in there registers" + for reg in registers: + self.code.append('addiu $sp, $sp, 4') + self.code.append(f'lw ${reg}, ($sp)') + + def empty_registers(self, save=True): + "Empty all used registers and saves there values to memory" + registers = self.reg_desc.used_registers() + for reg, var in registers: + if save: + self.save_var_code(var) + self.addr_desc.set_var_reg(var, None) + self.reg_desc.insert_register(reg, None) + + def push_register(self, register): + "Pushes the register to the stack" + self.code.append(f'sw ${register}, ($sp)') + self.code.append('addiu $sp, $sp, -4') + + def pop_register(self, register): + "Popes the register from the stack" + self.code.append('addiu $sp, $sp, 4') + self.code.append(f'lw ${register}, ($sp)') + + def save_to_register(self, expr): + "Aditional code to save an expression into a register. Returns the register" + if self.is_int(expr): + self.code.append(f'li $t9, {expr}') + return 't9' + elif self.is_variable(expr): + return self.addr_desc.get_var_reg(expr) + + def get_attr_offset(self, attr_name: str, type_name: str): + return self.obj_table[type_name].attr_offset(attr_name) + + def get_method_offset(self, type_name, method_name): + self.obj_table[type_name].method_offset(method_name) + + def save_meth_addr(self, func_nodes: List[FunctionNode]): + self.methods += [funct.name for funct in func_nodes] + words = 'methods: .word ' + ', '.join(map(lambda x: '0', self.methods)) + self.data_code.append(words) + # guardo la dirección del método en el array de métodos + self.code.append('# Save method directions in the methods array') + self.code.append('la $v0, methods') + for i, meth in enumerate(self.methods): + self.code.append(f'la $t9, {meth}') + self.code.append(f'sw $t9, {4 * i}($v0)') + + def save_types_addr(self, type_nodes: List[FunctionNode]): + "Saves the structure where the type information is stored" + words = 'types: .word ' + ', '.join(map(lambda x: '0', self.inherit_graph)) + self.data_code.append(words) + self.code.append('# Save types directions in the types array') + self.code.append('la $t9, types') + self.types = [] + self.code.append('# Save space to locate the type info') + for i, (ntype, nparent) in enumerate(self.inherit_graph.items()): + self.code.append('# Allocating memory') + self.code.append('li $v0, 9') + self.code.append(f'li $a0, 12') + self.code.append('syscall') + self.types.append(ntype) + + self.code.append('# Filling table methods') + self.code.append(f'la $t8, type_{ntype}') + self.code.append(f'sw $t8, 0($v0)') + + self.code.append('# Copying direction to array') + self.code.append(f'sw $v0, {4 * i}($t9)') + + self.code.append('# Table addr is now stored in t8') + self.code.append('move $t8, $v0') + self.code.append('# Creating the dispatch table') + self.create_dispatch_table(ntype) # table addr is stored in $v0 + self.code.append('sw $v0, 8($t8)') + + # self.code.append('la $t9, types') + self.code.append('# Copying parents') + for i, ntype in enumerate(self.types): + self.code.append(f'lw $v0, {4 * i}($t9)') + # self.code.append('lw $v0, 0($t8)') + nparent = self.inherit_graph[ntype] + if nparent is not None: + parent_idx = self.types.index(nparent) + + self.code.append(f'lw $t8, {4 * parent_idx}($t9)') + else: + self.code.append('li $t8, 0') + self.code.append('sw $t8, 4($v0)') + + def create_dispatch_table(self, type_name): + # Get methods of the dispatch table + methods = self.dispatch_table.get_methods(type_name) + # Allocate the dispatch table in the heap + self.code.append('# Allocate dispatch table in the heap') + self.code.append('li $v0, 9') # code to request memory + dispatch_table_size = 4 * len(methods) + self.code.append(f'li $a0, {dispatch_table_size + 4}') + self.code.append('syscall') # Memory of the dispatch table in v0 + + var = self.save_reg_if_occupied('v1') + + self.code.append(f'# I save the offset of every one of the methods of this type') + self.code.append('# Save the direction of methods') + self.code.append('la $v1, methods') # cargo la dirección de methods + for i, meth in enumerate(methods, 1): + # guardo el offset de cada uno de los métodos de este tipo + + offset = 4 * self.methods.index(meth) + self.code.append(f'# Save the direction of the method {meth} in a0') + self.code.append(f'lw $a0, {offset}($v1)') # cargo la dirección del método en t9 + self.code.append('# Save the direction of the method in his position in the dispatch table') + self.code.append( + f'sw $a0, {4 * i}($v0)') # guardo la direccion del metodo en su posicion en el dispatch table + self.load_var_if_occupied(var) + + def get_type(self, xtype): + 'Return the var address type according to its static type' + if xtype == 'Int': + return AddrType.INT + elif xtype == 'Bool': + return AddrType.BOOL + elif xtype == 'String': + return AddrType.STR + return AddrType.REF + + def save_reg_if_occupied(self, reg): + var = self.reg_desc.get_content(reg) + if var is not None: + self.code.append(f'# Saving content of {reg} to memory to use that register') + self.save_var_code(var) + return var + + def load_var_if_occupied(self, var): + if var is not None: + self.code.append(f'# Restore the variable of {var}') + self.load_var_code(var) + + def compare_strings(self, node: EqualNode): + rdest = self.addr_desc.get_var_reg(node.dest) + rleft = self.addr_desc.get_var_reg(node.left) + rright = self.addr_desc.get_var_reg(node.right) + + var = self.save_reg_if_occupied('a1') + loop_idx = self.loop_idx + + self.code.append(f'move $t8, ${rleft}') # counter + self.code.append(f'move $t9, ${rright}') + self.code.append(f'loop_{loop_idx}:') + self.code.append(f'lb $a0, ($t8)') # load byte from each string + self.code.append(f'lb $a1, ($t9)') + self.code.append(f'beqz $a0, check_{loop_idx}') # str1 ended + self.code.append(f'beqz $a1, mismatch_{loop_idx}') # str2 ended when str1 hasnt ended + self.code.append('seq $v0, $a0, $a1') # compare two bytes + self.code.append(f'beqz $v0, mismatch_{loop_idx}') # bytes are different + self.code.append('addi $t8, $t8, 1') # Point to the next byte of str + self.code.append('addi $t9, $t9, 1') + self.code.append(f'j loop_{loop_idx}') + + self.code.append(f'mismatch_{loop_idx}:') + self.code.append('li $v0, 0') + self.code.append(f'j end_{loop_idx}') + self.code.append(f'check_{loop_idx}:') + self.code.append(f'bnez $a1, mismatch_{loop_idx}') + self.code.append('li $v0, 1') + self.code.append(f'end_{loop_idx}:') + self.code.append(f'move ${rdest}, $v0') + self.load_var_if_occupied(var) + self.loop_idx += 1 + + def conforms_to(self, rsrc, rdest, type_name): + "Returns if the object in rsrc conforms to type_name" + self.code.append(f'la $t9, type_{type_name}') + + loop_idx = self.loop_idx + self.code.append(f'lw $v0, 8(${rsrc})') # saves the direction to the type info table + self.code.append(f'loop_{loop_idx}:') + self.code.append(f'move $t8, $v0') # Saves parent addr + self.code.append(f'beqz $t8, false_{loop_idx}') + self.code.append('lw $v1, 0($t8)') + self.code.append(f'beq $t9, $v1, true_{loop_idx}') + self.code.append('lw $v0, 4($t8)') + self.code.append(f'j loop_{loop_idx}') + + self.code.append(f'true_{loop_idx}:') + self.code.append(f'li ${rdest}, 1') + self.code.append(f'j end_{loop_idx}') + self.code.append(f'false_{loop_idx}:') + self.code.append(f'li ${rdest}, 0') + self.code.append(f'end_{loop_idx}:') + self.loop_idx += 1 + + def value_conforms_to_obj(self, rdest, typex, branch_type): + self.code.append('# Comparing value types in case node') + true_label = f'true_{self.loop_idx}' + end_label = f'end_{self.loop_idx}' + self.code.append('la $t9, type_Object') # si es de tipo object entonces se conforma + self.code.append(f'la $t8, type_{branch_type}') + self.code.append(f'beq $t9, $t8, {true_label}') + self.code.append(f'la $t9, type_{typex}') # si es del mismo tipo que él entonces se conforma + self.code.append(f'beq $t9, $t8, {true_label}') + self.code.append(f'li ${rdest}, 0') + self.code.append(f'j {end_label}') + self.code.append(f'{true_label}:') + self.code.append(f'li ${rdest}, 1') + self.code.append(f'{end_label}:') + self.loop_idx += 1 diff --git a/src/cool/codegen/utils/ast_cil.py b/src/cool/codegen/utils/ast_cil.py index 39d6def5f..52474d9d6 100644 --- a/src/cool/codegen/utils/ast_cil.py +++ b/src/cool/codegen/utils/ast_cil.py @@ -6,7 +6,7 @@ class ProgramNode(Node): def __init__(self, type_node, data, func_node, idx=None): self.type_node = type_node self.data = data - self.fun_node = func_node + self.func_node = func_node self.index = idx diff --git a/src/cool/codegen/utils/print_ast.py b/src/cool/codegen/utils/print_ast.py new file mode 100644 index 000000000..c7c725fa8 --- /dev/null +++ b/src/cool/codegen/utils/print_ast.py @@ -0,0 +1,193 @@ +from utils import visitor +from .ast_cil import * + + +def get_formatter(): + class PrintVisitor(object): + @visitor.on('node') + def visit(self, node): + pass + + @visitor.when(ProgramNode) + def visit(self, node: ProgramNode): + dottypes = '\n'.join(self.visit(t) for t in node.type_node) + dotdata = '\n'.join(self.visit(t) for t in node.data) + dotcode = '\n'.join(self.visit(t) for t in node.func_node) + + return f'.TYPES\n{dottypes}\n\n.DATA\n{dotdata}\n\n.CODE\n{dotcode}' + + @visitor.when(TypeNode) + def visit(self, node: TypeNode): + attributes = '\n\t'.join(f'attribute {x}: {y}' for x, y in node.attributes) + methods = '\n\t'.join(f'method {x}: {y}' for x, y in node.methods) + + return f'type {node.name} {{\n\t{attributes}\n\n\t{methods}\n}}' + + @visitor.when(FunctionNode) + def visit(self, node: FunctionNode): + params = '\n\t'.join(self.visit(x) for x in node.params) + localvars = '\n\t'.join(self.visit(x) for x in node.localvars) + instructions = '\n\t'.join(self.visit(x) for x in node.instructions) + + return f'function {node.name} {{\n\t{params}\n\n\t{localvars}\n\n\t{instructions}\n}}' + + @visitor.when(DataNode) + def visit(self, node: DataNode): + return f'{node.name} = "{node.value}"' + + @visitor.when(ParamNode) + def visit(self, node: ParamNode): + return f'PARAM {node.name}' + + @visitor.when(LocalNode) + def visit(self, node: LocalNode): + return f'LOCAL {node.name}' + + @visitor.when(AssignNode) + def visit(self, node: AssignNode): + return f'{node.dest} = {node.source}' + + @visitor.when(NotNode) + def visit(self, node: NotNode): + return f'{node.dest} = ~{node.expr}' + + @visitor.when(LogicalNotNode) + def visit(self, node: LogicalNotNode): + return f'{node.dest} = NOT {node.expr}' + + @visitor.when(VoidConstantNode) + def visit(self, node: VoidConstantNode): + return f'{node.obj} = Void' + + @visitor.when(PlusNode) + def visit(self, node: PlusNode): + return f'{node.dest} = {node.left} + {node.right}' + + @visitor.when(MinusNode) + def visit(self, node: MinusNode): + return f'{node.dest} = {node.left} - {node.right}' + + @visitor.when(StarNode) + def visit(self, node: StarNode): + return f'{node.dest} = {node.left} * {node.right}' + + @visitor.when(DivNode) + def visit(self, node: DivNode): + return f'{node.dest} = {node.left} / {node.right}' + + @visitor.when(LessEqNode) + def visit(self, node: LessEqNode): + return f'{node.dest} = {node.left} <= {node.right}' + + @visitor.when(LessNode) + def visit(self, node: LessNode): + return f'{node.dest} = {node.left} < {node.right}' + + @visitor.when(EqualNode) + def visit(self, node: StarNode): + return f'{node.dest} = {node.left} = {node.right}' + + @visitor.when(AllocateNode) + def visit(self, node: AllocateNode): + return f'{node.dest} = ALLOCATE {node.type}' + + @visitor.when(TypeOfNode) + def visit(self, node: TypeOfNode): + return f'{node.dest} = TYPEOF {node.obj}' + + @visitor.when(GotoNode) + def visit(self, node: GotoNode): + return f'GOTO {node.label}' + + @visitor.when(GotoIfNode) + def visit(self, node: GotoIfNode): + return f'IF {node.cond} GOTO {node.label}' + + @visitor.when(GotoIfFalseNode) + def visit(self, node: GotoIfFalseNode): + return f'IF NOT {node.cond} GOTO {node.label}' + + @visitor.when(LabelNode) + def visit(self, node: LabelNode): + return f'LABEL {node.label}' + + @visitor.when(StaticCallNode) + def visit(self, node: StaticCallNode): + args = '\n\t'.join(self.visit(arg) for arg in node.args) + return f'{args}\n' + f'\t{node.dest} = CALL {node.function}' + + @visitor.when(LoadNode) + def visit(self, node: LoadNode): + return f'{node.dest} = LOAD {node.msg}' + + @visitor.when(DynamicCallNode) + def visit(self, node: DynamicCallNode): + args = '\n\t'.join(self.visit(arg) for arg in node.args) + return f'{args}\n' + f'\t{node.dest} = VCALL {node.type} {node.method}' + + @visitor.when(ArgNode) + def visit(self, node: ArgNode): + return f'ARG {node.dest}' + + @visitor.when(ReturnNode) + def visit(self, node: ReturnNode): + return f'RETURN {node.value if node.value is not None else ""}' + + @visitor.when(GetAttribNode) + def visit(self, node: GetAttribNode): + return f'{node.dest} = GETATTR {node.obj} {node.attr}' + + @visitor.when(SetAttribNode) + def visit(self, node: SetAttribNode): + return f'SETATTR {node.obj} {node.attr} = {node.value}' + + @visitor.when(LengthNode) + def visit(self, node: LengthNode): + return f'{node.dest} = LENGTH {node.arg}' + + @visitor.when(ConcatNode) + def visit(self, node: ConcatNode): + return f'{node.dest} = CONCAT {node.arg1} {node.arg2}' + + @visitor.when(SubstringNode) + def visit(self, node: SubstringNode): + return f'{node.dest} = SUBSTRING {node.word} {node.begin} {node.end}' + + @visitor.when(ToStrNode) + def visit(self, node: ToStrNode): + return f'{node.dest} = STR {node.ivalue}' + + @visitor.when(OutStringNode) + def visit(self, node: OutStringNode): + return f'OUT_STR {node.value}' + + @visitor.when(OutIntNode) + def visit(self, node: OutIntNode): + return f'OUT_INT {node.value}' + + @visitor.when(ReadStringNode) + def visit(self, node: ReadStringNode): + return f'{node.dest} = READ_STR' + + @visitor.when(ReadIntNode) + def visit(self, node: ReadIntNode): + return f'{node.dest} = READ_INT' + + @visitor.when(ExitNode) + def visit(self, node: ExitNode): + return f'EXIT {node.value}' + + @visitor.when(CopyNode) + def visit(self, node: CopyNode): + return f'{node.dest} = COPY {node.source}' + + @visitor.when(ConformsNode) + def visit(self, node: ConformsNode): + return f'{node.dest} = CONFORMS {node.expr} {node.type}' + + @visitor.when(ErrorNode) + def visit(self, node: ErrorNode): + return f'ERROR {node.type}' + + printer = PrintVisitor() + return lambda ast: printer.visit(ast) diff --git a/src/cool/codegen/utils/tools.py b/src/cool/codegen/utils/tools.py new file mode 100644 index 000000000..559edbd97 --- /dev/null +++ b/src/cool/codegen/utils/tools.py @@ -0,0 +1,225 @@ +from typing import List, Dict +from enum import Enum +from collections import OrderedDict +import re + + +class SymbolTabEntry: + def __init__(self, name, is_live=False, next_use=None): + self.name = name + self.is_live = is_live + self.next_use = next_use + + +class SymbolTable: + def __init__(self, entries: List[SymbolTabEntry] = None): + values = entries if entries is not None else [] + self.entries = {v.name: v for v in values} + + def lookup(self, entry_name: str) -> SymbolTabEntry: + if entry_name != None: + if entry_name in self.entries.keys(): + return self.entries[entry_name] + + def insert(self, entry: SymbolTabEntry): + self.entries[entry.name] = entry + + def insert_name(self, name): + self.entries[name] = SymbolTabEntry(name) + + def __getitem__(self, item): + return self.entries[item] + + def __iter__(self): + return iter(self.entries) + + +class NextUseEntry: + """For each line : for all three variables involved their next use and is live information""" + + def __init__(self, in1, in2, out, in1nextuse, in2nextuse, outnextuse, in1islive, in2islive, outislive): + self.in1 = in1 + self.in2 = in2 + self.out = out + self.in1nextuse = in1nextuse + self.in2nextuse = in2nextuse + self.outnextuse = outnextuse + self.in1islive = in1islive + self.in2islive = in2islive + self.outislive = outislive + + +class AddrType(Enum): + REF = 1, + STR = 2, + BOOL = 3, + INT = 4, + VOID = 5 + + +class AddressDescriptor: + 'Stores the location of each variable' + + def __init__(self): + self.vars = {} + + def insert_var(self, name, address, register=None, stack=None): + if address is not None: + self.vars[name] = [4 * address, register, stack] + else: + self.vars[name] = [address, register, stack] + + def get_var_addr(self, name): + return self.vars[name][0] + + def set_var_addr(self, name, addr): + self.vars[name][0] = 4 * addr + + def get_var_reg(self, var): + return self.vars[var][1] + + def set_var_reg(self, name, reg): + self.vars[name][1] = reg + + def get_var_stack(self, name): + return self.vars[name][2] + + def set_var_stack(self, name, stack_pos): + self.vars[name][1] = stack_pos + + def get_var_storage(self, name): + return self.vars[name] + + +class RegisterType(Enum): + TEMP = 0 + GLOBAL = 1 + ARG = 2 + RETURN = 3 + + +class RegisterDescriptor: + 'Stores the contents of each register' + + def __init__(self): + registers = ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7', 'a1', 'a2', 'a3', \ + 's0', 's1', 's2', 's3', 's4', 's5', 's6', 's7', 'v1'] + self.registers = {reg: None for reg in registers} + + def insert_register(self, register: str, content: str): + self.registers[register] = content + + def get_content(self, register: str): + return self.registers[register] + + def find_empty_reg(self): + for k, v in self.registers.items(): + if v is None: + return k + + def used_registers(self): + return [(k, v) for k, v in self.registers.items() if v is not None] + + def empty_registers(self): + for k in self.registers: + self.registers[k] = None + + +class DispatchTable: + def __init__(self): + self.classes = OrderedDict() + self.regex = re.compile(r'function_(.+)_\w+') + + def add_class(self, type_name, methods): + self.classes[type_name] = methods + + def get_offset(self, type_name, method): + return self.classes[type_name].index(method) + + def find_full_name(self, type_name, mth_name): + for meth in self.classes[type_name]: + # format of methods: 'function_{method_name}_{type_name}' + name = self.regex.search(meth).groups()[0] + if name == mth_name: + return meth + return None + + def get_methods(self, type_name): + "Returns all the methods of a specific type" + + return self.classes[type_name] + + def __len__(self): + return len(self.classes) + + +class ObjTabEntry: + def __init__(self, name, methods, attrs): + self.class_tag: str = name + self.size: int = 3 + len(attrs) + self.dispatch_table_size = len(methods) + self.dispatch_table_entry = methods + self.attrs = attrs + + @property + def class_tag_offset(self): + return 0 + + @property + def size_offset(self): + return 1 + + @property + def dispatch_ptr_offset(self): + return 2 + + def attr_offset(self, attr): + return self.attrs.index(attr) + 3 + + def method_offset(self, meth): + "Method offset in dispatch table" + return self.dispatch_table_entry.index(meth) + + +class ObjTable: + def __init__(self, dispatch_table: DispatchTable): + self.objects: Dict[str, ObjTabEntry] = {} # self.initialize_built_in() + self.dispatch_table = dispatch_table + + def initialize_built_in(self): + object_methods = [ + 'function_abort_Object', + 'function_type_name_Object', + 'function_copy_Object'] + io_methods = [ + 'function_out_string_IO', + 'function_out_int_IO', + 'function_in_string_IO', + 'function_in_int_IO'] + str_methods = [ + 'function_length_String', + 'function_concat_String', + 'function_substr_String'] + return { + 'Int': ObjTabEntry('Int', [], []), + 'Bool': ObjTabEntry('Bool', [], []), + 'IO': ObjTabEntry('IO', io_methods, []), + 'String': ObjTabEntry('String', str_methods, []), + 'Object': ObjTabEntry('Object', object_methods, []) + } + + def add_entry(self, name, methods, attrs): + methods = [y for x, y in methods] + attrs = [x for x, y in attrs] + self.objects[name] = ObjTabEntry(name, methods, attrs) + # Adding the methods in the dispatch table + self.dispatch_table.add_class(name, methods) + + def size_of_entry(self, name): + return self.objects[name].size + + def __getitem__(self, item) -> ObjTabEntry: + return self.objects[item] + + def __iter__(self): + return iter(self.objects.values()) diff --git a/src/cool/parser/output/parselog.txt b/src/cool/parser/output/parselog.txt index 8157647aa..fed32c634 100644 --- a/src/cool/parser/output/parselog.txt +++ b/src/cool/parser/output/parselog.txt @@ -6125,1270 +6125,6098 @@ yacc.py: 362:PLY: PARSE DEBUG START yacc.py: 410: yacc.py: 411:State : 0 - yacc.py: 434:Stack : . LexToken(class,'class',3,17) + yacc.py: 434:Stack : . LexToken(class,'Class',3,64) yacc.py: 445:Action : Shift and goto state 5 yacc.py: 410: yacc.py: 411:State : 5 - yacc.py: 434:Stack : class . LexToken(type,'A',3,23) + yacc.py: 434:Stack : class . LexToken(type,'Book',3,70) yacc.py: 445:Action : Shift and goto state 8 yacc.py: 410: yacc.py: 411:State : 8 - yacc.py: 434:Stack : class type . LexToken(ocur,'{',3,25) - yacc.py: 445:Action : Shift and goto state 10 + yacc.py: 434:Stack : class type . LexToken(inherits,'inherits',3,75) + yacc.py: 445:Action : Shift and goto state 11 + yacc.py: 410: + yacc.py: 411:State : 11 + yacc.py: 434:Stack : class type inherits . LexToken(type,'IO',3,84) + yacc.py: 445:Action : Shift and goto state 20 + yacc.py: 410: + yacc.py: 411:State : 20 + yacc.py: 434:Stack : class type inherits type . LexToken(ocur,'{',3,87) + yacc.py: 445:Action : Shift and goto state 33 + yacc.py: 410: + yacc.py: 411:State : 33 + yacc.py: 434:Stack : class type inherits type ocur . LexToken(id,'title',4,93) + yacc.py: 445:Action : Shift and goto state 19 + yacc.py: 410: + yacc.py: 411:State : 19 + yacc.py: 434:Stack : class type inherits type ocur id . LexToken(colon,':',4,99) + yacc.py: 445:Action : Shift and goto state 31 + yacc.py: 410: + yacc.py: 411:State : 31 + yacc.py: 434:Stack : class type inherits type ocur id colon . LexToken(type,'String',4,101) + yacc.py: 445:Action : Shift and goto state 49 + yacc.py: 410: + yacc.py: 411:State : 49 + yacc.py: 434:Stack : class type inherits type ocur id colon type . LexToken(semi,';',4,107) + yacc.py: 469:Action : Reduce rule [def_attr -> id colon type] with ['title',':','String'] and goto state 17 + yacc.py: 506:Result : ( id colon type] with ['author',':','String'] and goto state 17 + yacc.py: 506:Result : ( id colon type] with ['title_p',':','String'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'title_p',7,144), LexToken( ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar param . LexToken(comma,',',7,160) + yacc.py: 445:Action : Shift and goto state 60 + yacc.py: 410: + yacc.py: 411:State : 60 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar param comma . LexToken(id,'author_p',7,162) + yacc.py: 445:Action : Shift and goto state 46 + yacc.py: 410: + yacc.py: 411:State : 46 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar param comma id . LexToken(colon,':',7,171) + yacc.py: 445:Action : Shift and goto state 61 + yacc.py: 410: + yacc.py: 411:State : 61 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar param comma id colon . LexToken(type,'String',7,173) + yacc.py: 445:Action : Shift and goto state 96 + yacc.py: 410: + yacc.py: 411:State : 96 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar param comma id colon type . LexToken(cpar,')',7,179) + yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['author_p',':','String'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'author_p',7,162), LexToken ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar param comma param . LexToken(cpar,')',7,179) + yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 + yacc.py: 506:Result : ([(LexToken(id,'author_p',7,162), LexToke ...) + yacc.py: 410: + yacc.py: 411:State : 95 + yacc.py: 430:Defaulted state 95: Reduce using 33 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar param comma param_list . LexToken(cpar,')',7,179) + yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 + yacc.py: 506:Result : ([(LexToken(id,'title_p',7,144), LexToken ...) + yacc.py: 410: + yacc.py: 411:State : 42 + yacc.py: 430:Defaulted state 42: Reduce using 30 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar param_list . LexToken(cpar,')',7,179) + yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 + yacc.py: 506:Result : ([(LexToken(id,'title_p',7,144), LexToken ...) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals . LexToken(cpar,')',7,179) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals cpar . LexToken(colon,':',7,181) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon . LexToken(type,'Book',7,183) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',7,188) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type ocur . LexToken(ocur,'{',8,198) + yacc.py: 445:Action : Shift and goto state 90 + yacc.py: 410: + yacc.py: 411:State : 90 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type ocur ocur . LexToken(id,'title',9,212) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type ocur ocur id . LexToken(larrow,'<-',9,218) + yacc.py: 445:Action : Shift and goto state 112 + yacc.py: 410: + yacc.py: 411:State : 112 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type ocur ocur id larrow . LexToken(id,'title_p',9,221) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type ocur ocur id larrow id . LexToken(semi,';',9,228) + yacc.py: 469:Action : Reduce rule [atom -> id] with ['title_p'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 152 + yacc.py: 506:Result : ( id larrow expr] with ['title','<-',] and goto state 111 + yacc.py: 506:Result : ( id] with ['author_p'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 152 + yacc.py: 506:Result : ( id larrow expr] with ['author','<-',] and goto state 111 + yacc.py: 506:Result : ( id] with ['self'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 + yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 190 + yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 + yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['initBook','(',,')',':','Book','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar epsilon . LexToken(cpar,')',15,308) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param_list_empty . LexToken(cpar,')',15,308) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals . LexToken(cpar,')',15,308) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar . LexToken(colon,':',15,310) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon . LexToken(type,'Book',15,312) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',15,317) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur . LexToken(ocur,'{',16,327) + yacc.py: 445:Action : Shift and goto state 90 + yacc.py: 410: + yacc.py: 411:State : 90 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur . LexToken(id,'out_string',17,341) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur id . LexToken(opar,'(',17,351) + yacc.py: 445:Action : Shift and goto state 113 + yacc.py: 410: + yacc.py: 411:State : 113 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur id opar . LexToken(string,'title: ',17,365) + yacc.py: 445:Action : Shift and goto state 93 + yacc.py: 410: + yacc.py: 411:State : 93 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur id opar string . LexToken(cpar,')',17,366) + yacc.py: 469:Action : Reduce rule [atom -> string] with ['title: '] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'out_string',17,341), [ func_call] with [] and goto state 77 + yacc.py: 506:Result : ( id] with ['title'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'out_string',17,368), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( string] with ['\n'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'out_string',17,386), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( string] with ['author: '] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'out_string',18,416), [ func_call] with [] and goto state 77 + yacc.py: 506:Result : ( id] with ['author'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'out_string',18,443), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( string] with ['\n'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'out_string',18,462), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( id] with ['self'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 + yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 190 + yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 + yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['print','(',[],')',':','Book','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 16 + yacc.py: 430:Defaulted state 16: Reduce using 14 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi epsilon . LexToken(ccur,'}',22,515) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 48 + yacc.py: 430:Defaulted state 48: Reduce using 16 + yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi feature_list . LexToken(ccur,'}',22,515) + yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 47 + yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 47 + yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 53 + yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['Class','Book','inherits','IO','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( id colon type] with ['per_title',':','String'] and goto state 17 + yacc.py: 506:Result : ( id colon type] with ['title_p',':','String'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'title_p',27,590), LexToken ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param . LexToken(comma,',',27,606) + yacc.py: 445:Action : Shift and goto state 60 + yacc.py: 410: + yacc.py: 411:State : 60 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma . LexToken(id,'author_p',27,608) + yacc.py: 445:Action : Shift and goto state 46 + yacc.py: 410: + yacc.py: 411:State : 46 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma id . LexToken(colon,':',27,617) + yacc.py: 445:Action : Shift and goto state 61 + yacc.py: 410: + yacc.py: 411:State : 61 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma id colon . LexToken(type,'String',27,619) + yacc.py: 445:Action : Shift and goto state 96 + yacc.py: 410: + yacc.py: 411:State : 96 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma id colon type . LexToken(comma,',',27,625) + yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['author_p',':','String'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'author_p',27,608), LexToke ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma param . LexToken(comma,',',27,625) + yacc.py: 445:Action : Shift and goto state 60 + yacc.py: 410: + yacc.py: 411:State : 60 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma param comma . LexToken(id,'per_title_p',28,629) + yacc.py: 445:Action : Shift and goto state 46 + yacc.py: 410: + yacc.py: 411:State : 46 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma param comma id . LexToken(colon,':',28,641) + yacc.py: 445:Action : Shift and goto state 61 + yacc.py: 410: + yacc.py: 411:State : 61 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma param comma id colon . LexToken(type,'String',28,643) + yacc.py: 445:Action : Shift and goto state 96 + yacc.py: 410: + yacc.py: 411:State : 96 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma param comma id colon type . LexToken(cpar,')',28,649) + yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['per_title_p',':','String'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'per_title_p',28,629), LexT ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma param comma param . LexToken(cpar,')',28,649) + yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 + yacc.py: 506:Result : ([(LexToken(id,'per_title_p',28,629), Lex ...) + yacc.py: 410: + yacc.py: 411:State : 95 + yacc.py: 430:Defaulted state 95: Reduce using 33 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma param comma param_list . LexToken(cpar,')',28,649) + yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 95 + yacc.py: 506:Result : ([(LexToken(id,'author_p',27,608), LexTok ...) + yacc.py: 410: + yacc.py: 411:State : 95 + yacc.py: 430:Defaulted state 95: Reduce using 33 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma param_list . LexToken(cpar,')',28,649) + yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 + yacc.py: 506:Result : ([(LexToken(id,'title_p',27,590), LexToke ...) + yacc.py: 410: + yacc.py: 411:State : 42 + yacc.py: 430:Defaulted state 42: Reduce using 30 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param_list . LexToken(cpar,')',28,649) + yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 + yacc.py: 506:Result : ([(LexToken(id,'title_p',27,590), LexToke ...) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals . LexToken(cpar,')',28,649) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals cpar . LexToken(colon,':',28,651) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals cpar colon . LexToken(type,'Article',28,653) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',28,661) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals cpar colon type ocur . LexToken(ocur,'{',29,671) + yacc.py: 445:Action : Shift and goto state 90 + yacc.py: 410: + yacc.py: 411:State : 90 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals cpar colon type ocur ocur . LexToken(id,'initBook',30,685) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals cpar colon type ocur ocur id . LexToken(opar,'(',30,693) + yacc.py: 445:Action : Shift and goto state 113 + yacc.py: 410: + yacc.py: 411:State : 113 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals cpar colon type ocur ocur id opar . LexToken(id,'title_p',30,694) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals cpar colon type ocur ocur id opar id . LexToken(comma,',',30,701) + yacc.py: 469:Action : Reduce rule [atom -> id] with ['title_p'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( id] with ['author_p'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 211 + yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['initBook','(',,')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'initBook',30,685), [ func_call] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( id] with ['per_title_p'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 152 + yacc.py: 506:Result : ( id larrow expr] with ['per_title','<-',] and goto state 111 + yacc.py: 506:Result : ( id] with ['self'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 + yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 190 + yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 + yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['initArticle','(',,')',':','Article','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar epsilon . LexToken(cpar,')',36,798) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar param_list_empty . LexToken(cpar,')',36,798) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals . LexToken(cpar,')',36,798) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar . LexToken(colon,':',36,800) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon . LexToken(type,'Book',36,802) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',36,807) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type ocur . LexToken(ocur,'{',37,817) + yacc.py: 445:Action : Shift and goto state 90 + yacc.py: 410: + yacc.py: 411:State : 90 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type ocur ocur . LexToken(id,'self',38,824) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type ocur ocur id . LexToken(arroba,'@',38,828) + yacc.py: 469:Action : Reduce rule [atom -> id] with ['self'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type ocur ocur factor arroba type dot id opar epsilon . LexToken(cpar,')',38,840) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type ocur ocur factor arroba type dot id opar arg_list_empty . LexToken(cpar,')',38,840) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 153 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type ocur ocur factor arroba type dot id opar args . LexToken(cpar,')',38,840) + yacc.py: 445:Action : Shift and goto state 191 + yacc.py: 410: + yacc.py: 411:State : 191 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type ocur ocur factor arroba type dot id opar args cpar . LexToken(semi,';',38,841) + yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['print','(',[],')'] and goto state 212 + yacc.py: 506:Result : ((LexToken(id,'print',38,834), [])) + yacc.py: 410: + yacc.py: 411:State : 212 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type ocur ocur factor arroba type dot func_call . LexToken(semi,';',38,841) + yacc.py: 469:Action : Reduce rule [base_call -> factor arroba type dot func_call] with [,'@','Book','.',] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( string] with ['periodical: '] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'out_string',39,855), [ func_call] with [] and goto state 77 + yacc.py: 506:Result : ( id] with ['per_title'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'out_string',39,883), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( string] with ['\n'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'out_string',39,905), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( id] with ['self'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 + yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 190 + yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 + yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['print','(',[],')',':','Book','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 16 + yacc.py: 430:Defaulted state 16: Reduce using 14 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi def_func semi epsilon . LexToken(ccur,'}',43,958) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 48 + yacc.py: 430:Defaulted state 48: Reduce using 16 + yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi def_func semi feature_list . LexToken(ccur,'}',43,958) + yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 47 + yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 53 + yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['Class','Article','inherits','Book','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar epsilon . LexToken(cpar,')',50,1199) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar param_list_empty . LexToken(cpar,')',50,1199) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals . LexToken(cpar,')',50,1199) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar . LexToken(colon,':',50,1201) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon . LexToken(type,'Bool',50,1203) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type . LexToken(ocur,'{',50,1208) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur . LexToken(ocur,'{',50,1210) + yacc.py: 445:Action : Shift and goto state 90 + yacc.py: 410: + yacc.py: 411:State : 90 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur ocur . LexToken(id,'abort',50,1212) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur ocur id . LexToken(opar,'(',50,1217) + yacc.py: 445:Action : Shift and goto state 113 + yacc.py: 410: + yacc.py: 411:State : 113 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur ocur id opar . LexToken(cpar,')',50,1218) + yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 150 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur ocur id opar epsilon . LexToken(cpar,')',50,1218) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur ocur id opar arg_list_empty . LexToken(cpar,')',50,1218) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 153 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur ocur id opar args . LexToken(cpar,')',50,1218) + yacc.py: 445:Action : Shift and goto state 191 + yacc.py: 410: + yacc.py: 411:State : 191 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur ocur id opar args cpar . LexToken(semi,';',50,1219) + yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['abort','(',[],')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'abort',50,1212), [])) + yacc.py: 410: + yacc.py: 411:State : 78 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur ocur func_call . LexToken(semi,';',50,1219) + yacc.py: 469:Action : Reduce rule [factor -> func_call] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( true] with ['true'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 + yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 + yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['isNil','(',[],')',':','Bool','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( id colon type] with ['hd',':','Book'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'hd',52,1246), LexToken(typ ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar param . LexToken(cpar,')',52,1255) + yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 42 + yacc.py: 506:Result : ([(LexToken(id,'hd',52,1246), LexToken(ty ...) + yacc.py: 410: + yacc.py: 411:State : 42 + yacc.py: 430:Defaulted state 42: Reduce using 30 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar param_list . LexToken(cpar,')',52,1255) + yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 + yacc.py: 506:Result : ([(LexToken(id,'hd',52,1246), LexToken(ty ...) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals . LexToken(cpar,')',52,1255) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar . LexToken(colon,':',52,1257) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon . LexToken(type,'Cons',52,1259) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type . LexToken(ocur,'{',52,1264) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur . LexToken(opar,'(',53,1274) + yacc.py: 445:Action : Shift and goto state 80 + yacc.py: 410: + yacc.py: 411:State : 80 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar . LexToken(let,'let',53,1275) + yacc.py: 445:Action : Shift and goto state 84 + yacc.py: 410: + yacc.py: 411:State : 84 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar let . LexToken(id,'new_cell',53,1279) + yacc.py: 445:Action : Shift and goto state 46 + yacc.py: 410: + yacc.py: 411:State : 46 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar let id . LexToken(colon,':',53,1288) + yacc.py: 445:Action : Shift and goto state 61 + yacc.py: 410: + yacc.py: 411:State : 61 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar let id colon . LexToken(type,'Cons',53,1290) + yacc.py: 445:Action : Shift and goto state 96 + yacc.py: 410: + yacc.py: 411:State : 96 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar let id colon type . LexToken(larrow,'<-',53,1295) + yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['new_cell',':','Cons'] and goto state 130 + yacc.py: 506:Result : ((LexToken(id,'new_cell',53,1279), LexTok ...) + yacc.py: 410: + yacc.py: 411:State : 130 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar let param . LexToken(larrow,'<-',53,1295) + yacc.py: 445:Action : Shift and goto state 173 + yacc.py: 410: + yacc.py: 411:State : 173 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar let param larrow . LexToken(new,'new',53,1298) + yacc.py: 445:Action : Shift and goto state 89 + yacc.py: 410: + yacc.py: 411:State : 89 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar let param larrow new . LexToken(type,'Cons',53,1302) + yacc.py: 445:Action : Shift and goto state 134 + yacc.py: 410: + yacc.py: 411:State : 134 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar let param larrow new type . LexToken(in,'in',53,1307) + yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','Cons'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 + yacc.py: 506:Result : ( let_assign] with [] and goto state 128 + yacc.py: 506:Result : ([ id] with ['new_cell'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( id] with ['hd'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( id] with ['self'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 211 + yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['init','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'init',54,1331), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 196 + yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 123 + yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['cons','(',,')',':','Cons','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar epsilon . LexToken(cpar,')',62,1568) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',62,1568) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals . LexToken(cpar,')',62,1568) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar . LexToken(colon,':',62,1570) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon . LexToken(type,'Book',62,1572) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',62,1577) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(ocur,'{',62,1579) + yacc.py: 445:Action : Shift and goto state 90 + yacc.py: 410: + yacc.py: 411:State : 90 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur ocur . LexToken(id,'abort',62,1581) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur ocur id . LexToken(opar,'(',62,1586) + yacc.py: 445:Action : Shift and goto state 113 + yacc.py: 410: + yacc.py: 411:State : 113 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar . LexToken(cpar,')',62,1587) + yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 150 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar epsilon . LexToken(cpar,')',62,1587) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar arg_list_empty . LexToken(cpar,')',62,1587) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 153 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar args . LexToken(cpar,')',62,1587) + yacc.py: 445:Action : Shift and goto state 191 + yacc.py: 410: + yacc.py: 411:State : 191 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar args cpar . LexToken(semi,';',62,1588) + yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['abort','(',[],')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'abort',62,1581), [])) + yacc.py: 410: + yacc.py: 411:State : 78 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur ocur func_call . LexToken(semi,';',62,1588) + yacc.py: 469:Action : Reduce rule [factor -> func_call] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( new type] with ['new','Book'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 + yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 + yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['car','(',[],')',':','Book','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',68,1819) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',68,1819) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals . LexToken(cpar,')',68,1819) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',68,1821) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'BookList',68,1823) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',68,1832) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(ocur,'{',68,1834) + yacc.py: 445:Action : Shift and goto state 90 + yacc.py: 410: + yacc.py: 411:State : 90 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur . LexToken(id,'abort',68,1836) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur id . LexToken(opar,'(',68,1841) + yacc.py: 445:Action : Shift and goto state 113 + yacc.py: 410: + yacc.py: 411:State : 113 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar . LexToken(cpar,')',68,1842) + yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 150 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar epsilon . LexToken(cpar,')',68,1842) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar arg_list_empty . LexToken(cpar,')',68,1842) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 153 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar args . LexToken(cpar,')',68,1842) + yacc.py: 445:Action : Shift and goto state 191 + yacc.py: 410: + yacc.py: 411:State : 191 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar args cpar . LexToken(semi,';',68,1843) + yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['abort','(',[],')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'abort',68,1836), [])) + yacc.py: 410: + yacc.py: 411:State : 78 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur func_call . LexToken(semi,';',68,1843) + yacc.py: 469:Action : Reduce rule [factor -> func_call] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( new type] with ['new','BookList'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 + yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 + yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['cdr','(',[],')',':','BookList','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',70,1884) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',70,1884) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals . LexToken(cpar,')',70,1884) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',70,1886) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'Object',70,1888) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',70,1895) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(id,'abort',70,1897) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur id . LexToken(opar,'(',70,1902) + yacc.py: 445:Action : Shift and goto state 113 + yacc.py: 410: + yacc.py: 411:State : 113 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur id opar . LexToken(cpar,')',70,1903) + yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 150 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur id opar epsilon . LexToken(cpar,')',70,1903) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur id opar arg_list_empty . LexToken(cpar,')',70,1903) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 153 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur id opar args . LexToken(cpar,')',70,1903) + yacc.py: 445:Action : Shift and goto state 191 + yacc.py: 410: + yacc.py: 411:State : 191 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur id opar args cpar . LexToken(ccur,'}',70,1905) + yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['abort','(',[],')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'abort',70,1897), [])) + yacc.py: 410: + yacc.py: 411:State : 78 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur func_call . LexToken(ccur,'}',70,1905) + yacc.py: 469:Action : Reduce rule [factor -> func_call] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['print_list','(',[],')',':','Object','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 16 + yacc.py: 430:Defaulted state 16: Reduce using 14 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi def_func semi epsilon . LexToken(ccur,'}',71,1908) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 48 + yacc.py: 430:Defaulted state 48: Reduce using 16 + yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi def_func semi feature_list . LexToken(ccur,'}',71,1908) + yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 53 + yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['Class','BookList','inherits','IO','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( id colon type] with ['xcar',':','Book'] and goto state 17 + yacc.py: 506:Result : ( id colon type] with ['xcdr',':','BookList'] and goto state 17 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi id opar epsilon . LexToken(cpar,')',79,2194) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi id opar param_list_empty . LexToken(cpar,')',79,2194) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi id opar formals . LexToken(cpar,')',79,2194) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi id opar formals cpar . LexToken(colon,':',79,2196) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon . LexToken(type,'Bool',79,2198) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',79,2203) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type ocur . LexToken(false,'false',79,2205) + yacc.py: 445:Action : Shift and goto state 92 + yacc.py: 410: + yacc.py: 411:State : 92 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type ocur false . LexToken(ccur,'}',79,2211) + yacc.py: 469:Action : Reduce rule [atom -> false] with ['false'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['isNil','(',[],')',':','Bool','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( id colon type] with ['hd',':','Book'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'hd',81,2228), LexToken(typ ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param . LexToken(comma,',',81,2237) + yacc.py: 445:Action : Shift and goto state 60 + yacc.py: 410: + yacc.py: 411:State : 60 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param comma . LexToken(id,'tl',81,2239) + yacc.py: 445:Action : Shift and goto state 46 + yacc.py: 410: + yacc.py: 411:State : 46 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param comma id . LexToken(colon,':',81,2242) + yacc.py: 445:Action : Shift and goto state 61 + yacc.py: 410: + yacc.py: 411:State : 61 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param comma id colon . LexToken(type,'BookList',81,2244) + yacc.py: 445:Action : Shift and goto state 96 + yacc.py: 410: + yacc.py: 411:State : 96 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param comma id colon type . LexToken(cpar,')',81,2252) + yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['tl',':','BookList'] and goto state 44 + yacc.py: 506:Result : ((LexToken(id,'tl',81,2239), LexToken(typ ...) + yacc.py: 410: + yacc.py: 411:State : 44 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param comma param . LexToken(cpar,')',81,2252) + yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 + yacc.py: 506:Result : ([(LexToken(id,'tl',81,2239), LexToken(ty ...) + yacc.py: 410: + yacc.py: 411:State : 95 + yacc.py: 430:Defaulted state 95: Reduce using 33 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param comma param_list . LexToken(cpar,')',81,2252) + yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 + yacc.py: 506:Result : ([(LexToken(id,'hd',81,2228), LexToken(ty ...) + yacc.py: 410: + yacc.py: 411:State : 42 + yacc.py: 430:Defaulted state 42: Reduce using 30 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param_list . LexToken(cpar,')',81,2252) + yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 + yacc.py: 506:Result : ([(LexToken(id,'hd',81,2228), LexToken(ty ...) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals . LexToken(cpar,')',81,2252) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar . LexToken(colon,':',81,2254) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon . LexToken(type,'Cons',81,2256) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',81,2261) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur . LexToken(ocur,'{',82,2271) + yacc.py: 445:Action : Shift and goto state 90 + yacc.py: 410: + yacc.py: 411:State : 90 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur . LexToken(id,'xcar',83,2285) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur id . LexToken(larrow,'<-',83,2290) + yacc.py: 445:Action : Shift and goto state 112 + yacc.py: 410: + yacc.py: 411:State : 112 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur id larrow . LexToken(id,'hd',83,2293) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur id larrow id . LexToken(semi,';',83,2295) + yacc.py: 469:Action : Reduce rule [atom -> id] with ['hd'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 152 + yacc.py: 506:Result : ( id larrow expr] with ['xcar','<-',] and goto state 111 + yacc.py: 506:Result : ( id] with ['tl'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 152 + yacc.py: 506:Result : ( id larrow expr] with ['xcdr','<-',] and goto state 111 + yacc.py: 506:Result : ( id] with ['self'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 + yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 190 + yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 + yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['init','(',,')',':','Cons','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',89,2365) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',89,2365) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi id opar formals . LexToken(cpar,')',89,2365) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',89,2367) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'Book',89,2369) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',89,2374) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(id,'xcar',89,2376) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur id . LexToken(ccur,'}',89,2381) + yacc.py: 469:Action : Reduce rule [atom -> id] with ['xcar'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['car','(',[],')',':','Book','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 45 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',91,2393) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',91,2393) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi id opar formals . LexToken(cpar,')',91,2393) + yacc.py: 445:Action : Shift and goto state 64 + yacc.py: 410: + yacc.py: 411:State : 64 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',91,2395) + yacc.py: 445:Action : Shift and goto state 100 + yacc.py: 410: + yacc.py: 411:State : 100 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'BookList',91,2397) + yacc.py: 445:Action : Shift and goto state 138 + yacc.py: 410: + yacc.py: 411:State : 138 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',91,2406) + yacc.py: 445:Action : Shift and goto state 181 + yacc.py: 410: + yacc.py: 411:State : 181 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(id,'xcdr',91,2408) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur id . LexToken(ccur,'}',91,2413) + yacc.py: 469:Action : Reduce rule [atom -> id] with ['xcdr'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['cdr','(',[],')',':','BookList','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 411:State : 32 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar . LexToken(cpar,')',93,2436) + yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 45 yacc.py: 548:Result : (None) yacc.py: 410: - yacc.py: 411:State : 16 - yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : class type ocur epsilon . LexToken(ccur,'}',3,27) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 14 - yacc.py: 506:Result : ([]) + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',93,2436) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 14 - yacc.py: 434:Stack : class type ocur feature_list . LexToken(ccur,'}',3,27) - yacc.py: 445:Action : Shift and goto state 25 + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',93,2436) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 25 - yacc.py: 434:Stack : class type ocur feature_list ccur . LexToken(semi,';',3,28) - yacc.py: 445:Action : Shift and goto state 38 + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals . LexToken(cpar,')',93,2436) + yacc.py: 445:Action : Shift and goto state 64 yacc.py: 410: - yacc.py: 411:State : 38 - yacc.py: 434:Stack : class type ocur feature_list ccur semi . LexToken(class,'class',4,30) - yacc.py: 469:Action : Reduce rule [def_class -> class type ocur feature_list ccur semi] with ['class','A','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case id . LexToken(dot,'.',95,2480) + yacc.py: 469:Action : Reduce rule [atom -> id] with ['xcar'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 yacc.py: 548:Result : (None) yacc.py: 410: - yacc.py: 411:State : 16 - yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : def_class class type inherits type ocur epsilon . LexToken(ccur,'}',4,51) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 53 - yacc.py: 506:Result : ([]) + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case factor dot id opar epsilon . LexToken(cpar,')',95,2487) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 53 - yacc.py: 434:Stack : def_class class type inherits type ocur feature_list . LexToken(ccur,'}',4,51) - yacc.py: 445:Action : Shift and goto state 66 + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case factor dot id opar arg_list_empty . LexToken(cpar,')',95,2487) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 66 - yacc.py: 434:Stack : def_class class type inherits type ocur feature_list ccur . LexToken(semi,';',4,52) - yacc.py: 445:Action : Shift and goto state 102 + yacc.py: 411:State : 153 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case factor dot id opar args . LexToken(cpar,')',95,2487) + yacc.py: 445:Action : Shift and goto state 191 yacc.py: 410: - yacc.py: 411:State : 102 - yacc.py: 434:Stack : def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',5,54) - yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','B','inherits','A','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( id opar args cpar] with ['print','(',[],')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'print',95,2481), [])) yacc.py: 410: - yacc.py: 411:State : 3 - yacc.py: 434:Stack : def_class def_class . LexToken(class,'class',5,54) - yacc.py: 445:Action : Shift and goto state 5 + yacc.py: 411:State : 167 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case factor dot func_call . LexToken(of,'of',95,2489) + yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 131 + yacc.py: 506:Result : (',96,2521) + yacc.py: 445:Action : Shift and goto state 229 + yacc.py: 410: + yacc.py: 411:State : 229 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case expr of id colon type rarrow . LexToken(id,'out_string',96,2524) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case expr of id colon type rarrow id . LexToken(opar,'(',96,2534) + yacc.py: 445:Action : Shift and goto state 113 + yacc.py: 410: + yacc.py: 411:State : 113 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case expr of id colon type rarrow id opar . LexToken(string,'- dynamic type was Book -\n',96,2563) + yacc.py: 445:Action : Shift and goto state 93 + yacc.py: 410: + yacc.py: 411:State : 93 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case expr of id colon type rarrow id opar string . LexToken(cpar,')',96,2564) + yacc.py: 469:Action : Reduce rule [atom -> string] with [] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'out_string',96,2524), [ func_call] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 231 + yacc.py: 506:Result : ( id colon type rarrow expr] with ['dummy',':','Book','=>',] and goto state 200 + yacc.py: 506:Result : (',97,2599) + yacc.py: 445:Action : Shift and goto state 229 + yacc.py: 410: + yacc.py: 411:State : 229 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case expr of casep semi id colon type rarrow . LexToken(id,'out_string',97,2602) + yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 410: + yacc.py: 411:State : 72 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case expr of casep semi id colon type rarrow id . LexToken(opar,'(',97,2612) + yacc.py: 445:Action : Shift and goto state 113 + yacc.py: 410: + yacc.py: 411:State : 113 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case expr of casep semi id colon type rarrow id opar . LexToken(string,'- dynamic type was Article -\n',97,2644) + yacc.py: 445:Action : Shift and goto state 93 + yacc.py: 410: + yacc.py: 411:State : 93 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case expr of casep semi id colon type rarrow id opar string . LexToken(cpar,')',97,2645) + yacc.py: 469:Action : Reduce rule [atom -> string] with [] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'out_string',97,2602), [ func_call] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 231 + yacc.py: 506:Result : ( id colon type rarrow expr] with ['dummy',':','Article','=>',] and goto state 200 + yacc.py: 506:Result : ( casep semi] with [,';'] and goto state 226 + yacc.py: 506:Result : ([ casep semi cases_list] with [,';',] and goto state 199 + yacc.py: 506:Result : ([ case expr of cases_list esac] with ['case',,'of',,'esac'] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( id] with ['xcdr'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 150 + yacc.py: 548:Result : (None) + yacc.py: 410: + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur expr semi factor dot id opar epsilon . LexToken(cpar,')',99,2694) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur expr semi factor dot id opar arg_list_empty . LexToken(cpar,')',99,2694) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 153 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur expr semi factor dot id opar args . LexToken(cpar,')',99,2694) + yacc.py: 445:Action : Shift and goto state 191 + yacc.py: 410: + yacc.py: 411:State : 191 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur expr semi factor dot id opar args cpar . LexToken(semi,';',99,2695) + yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['print_list','(',[],')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'print_list',99,2683), [])) + yacc.py: 410: + yacc.py: 411:State : 167 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur expr semi factor dot func_call . LexToken(semi,';',99,2695) + yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 + yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 + yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['print_list','(',[],')',':','Object','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 16 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 16 yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur epsilon . LexToken(ccur,'}',5,75) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 53 - yacc.py: 506:Result : ([]) + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi def_func semi epsilon . LexToken(ccur,'}',102,2714) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 48 + yacc.py: 430:Defaulted state 48: Reduce using 16 + yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi def_func semi feature_list . LexToken(ccur,'}',102,2714) + yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 47 + yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 47 + yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 53 + yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['class','C','inherits','B','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( class type inherits type ocur feature_list ccur semi] with ['Class','Cons','inherits','BookList','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur . LexToken(id,'isNil',105,2752) + yacc.py: 445:Action : Shift and goto state 19 + yacc.py: 410: + yacc.py: 411:State : 19 + yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur id . LexToken(opar,'(',105,2757) + yacc.py: 445:Action : Shift and goto state 32 + yacc.py: 410: + yacc.py: 411:State : 32 + yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur id opar . LexToken(cpar,')',105,2758) + yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 45 yacc.py: 548:Result : (None) yacc.py: 410: - yacc.py: 411:State : 16 - yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur epsilon . LexToken(ccur,'}',6,99) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 53 - yacc.py: 506:Result : ([]) + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur id opar epsilon . LexToken(cpar,')',105,2758) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 53 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur feature_list . LexToken(ccur,'}',6,99) - yacc.py: 445:Action : Shift and goto state 66 + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur id opar param_list_empty . LexToken(cpar,')',105,2758) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 66 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur feature_list ccur . LexToken(semi,';',6,100) - yacc.py: 445:Action : Shift and goto state 102 + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur id opar formals . LexToken(cpar,')',105,2758) + yacc.py: 445:Action : Shift and goto state 64 yacc.py: 410: - yacc.py: 411:State : 102 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',7,102) - yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','D','inherits','B','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( true] with ['true'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 411:State : 77 + yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur id opar formals cpar colon type ocur factor . LexToken(ccur,'}',105,2774) + yacc.py: 469:Action : Reduce rule [base_call -> factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['isNil','(',[],')',':','Bool','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 45 yacc.py: 548:Result : (None) yacc.py: 410: - yacc.py: 411:State : 16 - yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur epsilon . LexToken(ccur,'}',7,123) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 53 - yacc.py: 506:Result : ([]) + yacc.py: 411:State : 45 + yacc.py: 430:Defaulted state 45: Reduce using 34 + yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur def_func semi id opar epsilon . LexToken(cpar,')',107,2793) + yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 53 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur feature_list . LexToken(ccur,'}',7,123) - yacc.py: 445:Action : Shift and goto state 66 + yacc.py: 411:State : 43 + yacc.py: 430:Defaulted state 43: Reduce using 31 + yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur def_func semi id opar param_list_empty . LexToken(cpar,')',107,2793) + yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 66 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur feature_list ccur . LexToken(semi,';',7,124) - yacc.py: 445:Action : Shift and goto state 102 + yacc.py: 411:State : 51 + yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur def_func semi id opar formals . LexToken(cpar,')',107,2793) + yacc.py: 445:Action : Shift and goto state 64 yacc.py: 410: - yacc.py: 411:State : 102 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur feature_list ccur semi . LexToken(class,'class',8,127) - yacc.py: 469:Action : Reduce rule [def_class -> class type inherits type ocur feature_list ccur semi] with ['class','E','inherits','B','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( true] with ['true'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['print_list','(',[],')',':','Object','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 16 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 16 yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type inherits type ocur epsilon . LexToken(ccur,'}',8,148) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 53 - yacc.py: 506:Result : ([]) + yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur def_func semi def_func semi epsilon . LexToken(ccur,'}',108,2814) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 + yacc.py: 506:Result : ([]) + yacc.py: 410: + yacc.py: 411:State : 48 + yacc.py: 430:Defaulted state 48: Reduce using 16 + yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur def_func semi def_func semi feature_list . LexToken(ccur,'}',108,2814) + yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 48 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 53 + yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['class','F','inherits','A','{',[],'}',';'] and goto state 3 - yacc.py: 506:Result : ( class type inherits type ocur feature_list ccur semi] with ['Class','Nil','inherits','BookList','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( id colon type] with ['books',':','BookList'] and goto state 17 + yacc.py: 506:Result : ( ] with [] and goto state 45 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 45 yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar epsilon . LexToken(cpar,')',11,184) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar epsilon . LexToken(cpar,')',115,2865) yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar param_list_empty . LexToken(cpar,')',11,184) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar param_list_empty . LexToken(cpar,')',115,2865) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar formals . LexToken(cpar,')',11,184) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals . LexToken(cpar,')',115,2865) yacc.py: 445:Action : Shift and goto state 64 yacc.py: 410: yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar formals cpar . LexToken(colon,':',11,185) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar . LexToken(colon,':',115,2867) yacc.py: 445:Action : Shift and goto state 100 yacc.py: 410: yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar formals cpar colon . LexToken(type,'IO',11,187) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon . LexToken(type,'Object',115,2869) yacc.py: 445:Action : Shift and goto state 138 yacc.py: 410: yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar formals cpar colon type . LexToken(ocur,'{',11,190) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',115,2876) yacc.py: 445:Action : Shift and goto state 181 yacc.py: 410: yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar formals cpar colon type ocur . LexToken(id,'out_string',11,192) - yacc.py: 445:Action : Shift and goto state 72 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur . LexToken(opar,'(',116,2886) + yacc.py: 445:Action : Shift and goto state 80 yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur id opar formals cpar colon type ocur id . LexToken(opar,'(',11,202) + yacc.py: 411:State : 80 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar . LexToken(let,'let',116,2887) + yacc.py: 445:Action : Shift and goto state 84 + yacc.py: 410: + yacc.py: 411:State : 84 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let . LexToken(id,'a_book',116,2891) + yacc.py: 445:Action : Shift and goto state 46 + yacc.py: 410: + yacc.py: 411:State : 46 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let id . LexToken(colon,':',116,2898) + yacc.py: 445:Action : Shift and goto state 61 + yacc.py: 410: + yacc.py: 411:State : 61 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let id colon . LexToken(type,'Book',116,2900) + yacc.py: 445:Action : Shift and goto state 96 + yacc.py: 410: + yacc.py: 411:State : 96 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let id colon type . LexToken(larrow,'<-',116,2905) + yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['a_book',':','Book'] and goto state 130 + yacc.py: 506:Result : ((LexToken(id,'a_book',116,2891), LexToke ...) + yacc.py: 410: + yacc.py: 411:State : 130 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let param . LexToken(larrow,'<-',116,2905) + yacc.py: 445:Action : Shift and goto state 173 + yacc.py: 410: + yacc.py: 411:State : 173 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let param larrow . LexToken(opar,'(',117,2920) + yacc.py: 445:Action : Shift and goto state 80 + yacc.py: 410: + yacc.py: 411:State : 80 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let param larrow opar . LexToken(new,'new',117,2921) + yacc.py: 445:Action : Shift and goto state 89 + yacc.py: 410: + yacc.py: 411:State : 89 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let param larrow opar new . LexToken(type,'Book',117,2925) + yacc.py: 445:Action : Shift and goto state 134 + yacc.py: 410: + yacc.py: 411:State : 134 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let param larrow opar new type . LexToken(cpar,')',117,2929) + yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','Book'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 123 + yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 + yacc.py: 506:Result : ( string] with ['Hello World!'] and goto state 79 - yacc.py: 506:Result : ( string] with [] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'out_string',11,192), [ string] with [] and goto state 79 + yacc.py: 506:Result : ( func_call] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','IO','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( expr] with [] and goto state 211 + yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['initBook','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'initBook',117,2931), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( id colon type] with ['a',':','Bool'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'a',13,235), LexToken(type, ...) + yacc.py: 411:State : 73 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let param larrow comp . LexToken(in,'in',119,3054) + yacc.py: 469:Action : Reduce rule [expr -> comp] with [] and goto state 198 + yacc.py: 506:Result : ( param] with [] and goto state 129 - yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 + yacc.py: 506:Result : ( let_assign] with [] and goto state 128 + yacc.py: 506:Result : ([ id colon type] with ['a',':','Int'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'a',13,244), LexToken(type, ...) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let id colon type . LexToken(larrow,'<-',120,3095) + yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['an_article',':','Article'] and goto state 130 + yacc.py: 506:Result : ((LexToken(id,'an_article',120,3074), Lex ...) yacc.py: 410: yacc.py: 411:State : 130 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma param . LexToken(larrow,'<-',13,251) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let param . LexToken(larrow,'<-',120,3095) yacc.py: 445:Action : Shift and goto state 173 yacc.py: 410: yacc.py: 411:State : 173 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma param larrow . LexToken(num,5.0,13,254) - yacc.py: 445:Action : Shift and goto state 88 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let param larrow . LexToken(opar,'(',121,3114) + yacc.py: 445:Action : Shift and goto state 80 + yacc.py: 410: + yacc.py: 411:State : 80 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let param larrow opar . LexToken(new,'new',121,3115) + yacc.py: 445:Action : Shift and goto state 89 yacc.py: 410: - yacc.py: 411:State : 88 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma param larrow num . LexToken(comma,',',13,255) - yacc.py: 469:Action : Reduce rule [atom -> num] with [5.0] and goto state 79 - yacc.py: 506:Result : ( new type] with ['new','Article'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 - yacc.py: 506:Result : ( comp] with [] and goto state 123 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 - yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 + yacc.py: 506:Result : ( id colon type] with ['a',':','String'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'a',13,257), LexToken(type, ...) + yacc.py: 411:State : 113 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let param larrow factor dot id opar . LexToken(string,'The Top 100 CD_ROMs',121,3160) + yacc.py: 445:Action : Shift and goto state 93 yacc.py: 410: - yacc.py: 411:State : 130 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi id colon type larrow let let_assign comma let_assign comma param . LexToken(comma,',',13,266) - yacc.py: 469:Action : Reduce rule [let_assign -> param] with [] and goto state 129 - yacc.py: 506:Result : ( string] with [] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( id colon type] with ['a',':','A'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'a',13,268), LexToken(type, ...) + yacc.py: 411:State : 74 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let param larrow factor dot id opar op . LexToken(comma,',',121,3161) + yacc.py: 469:Action : Reduce rule [comp -> op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( new type] with ['new','F'] and goto state 79 - yacc.py: 506:Result : ( string] with ['Ulanoff'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 - yacc.py: 506:Result : ( string] with ['PC Magazine'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( id colon type] with ['b',':','B'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'b',13,283), LexToken(type, ...) + yacc.py: 411:State : 76 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let param larrow factor dot id opar expr comma expr comma base_call . LexToken(cpar,')',123,3271) + yacc.py: 469:Action : Reduce rule [term -> base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( new type] with ['new','E'] and goto state 79 - yacc.py: 506:Result : ( expr] with [] and goto state 211 + yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 211 + yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 + yacc.py: 506:Result : ([ atom] with [] and goto state 77 - yacc.py: 506:Result : ( arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['initArticle','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'initArticle',121,3128), [< ...) + yacc.py: 410: + yacc.py: 411:State : 167 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let param larrow factor dot func_call . LexToken(in,'in',124,3285) + yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 - yacc.py: 506:Result : ( comp] with [] and goto state 198 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 - yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 + yacc.py: 506:Result : ( let_assign] with [] and goto state 197 - yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 - yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 - yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 - yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 128 - yacc.py: 506:Result : ([ let_assign] with [] and goto state 128 + yacc.py: 506:Result : ([ id] with ['b'] and goto state 79 - yacc.py: 506:Result : ( new type] with ['new','Nil'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 196 - yacc.py: 506:Result : ( comp] with [] and goto state 123 + yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 - yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 + yacc.py: 506:Result : ( id] with ['a_book'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( id colon type larrow expr] with ['b',':','B','<-',] and goto state 17 - yacc.py: 506:Result : ( expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['cons','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'cons',126,3345), [ factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( id] with ['an_article'] and goto state 79 + yacc.py: 506:Result : ( id colon type] with ['a',':','Bool'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'a',14,319), LexToken(type, ...) + yacc.py: 411:State : 79 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let let_list in ocur id larrow factor dot id opar atom . LexToken(cpar,')',126,3373) + yacc.py: 469:Action : Reduce rule [factor -> atom] with [] and goto state 77 + yacc.py: 506:Result : ( param] with [] and goto state 129 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( id colon type] with ['a',':','Int'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'a',14,328), LexToken(type, ...) + yacc.py: 411:State : 155 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let let_list in ocur id larrow factor dot id opar expr . LexToken(cpar,')',126,3373) + yacc.py: 469:Action : Reduce rule [arg_list -> expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ num] with [5.0] and goto state 79 - yacc.py: 506:Result : ( id opar args cpar] with ['cons','(',,')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'cons',126,3358), [ atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 - yacc.py: 506:Result : ( comp] with [] and goto state 152 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 - yacc.py: 506:Result : ( id larrow expr] with ['books','<-',] and goto state 111 + yacc.py: 506:Result : ( id] with ['books'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( id colon type] with ['a',':','String'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'a',14,341), LexToken(type, ...) + yacc.py: 411:State : 77 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let let_list in ocur expr semi factor . LexToken(dot,'.',127,3401) + yacc.py: 445:Action : Shift and goto state 122 yacc.py: 410: - yacc.py: 411:State : 130 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma let_assign comma param . LexToken(comma,',',14,350) - yacc.py: 469:Action : Reduce rule [let_assign -> param] with [] and goto state 129 - yacc.py: 506:Result : ( ] with [] and goto state 150 + yacc.py: 548:Result : (None) yacc.py: 410: - yacc.py: 411:State : 46 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma let_assign comma let_assign comma id . LexToken(colon,':',14,353) - yacc.py: 445:Action : Shift and goto state 61 + yacc.py: 411:State : 150 + yacc.py: 430:Defaulted state 150: Reduce using 96 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let let_list in ocur expr semi factor dot id opar epsilon . LexToken(cpar,')',127,3413) + yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 61 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma let_assign comma let_assign comma id colon . LexToken(type,'A',14,355) - yacc.py: 445:Action : Shift and goto state 96 + yacc.py: 411:State : 149 + yacc.py: 430:Defaulted state 149: Reduce using 92 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let let_list in ocur expr semi factor dot id opar arg_list_empty . LexToken(cpar,')',127,3413) + yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 96 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma let_assign comma let_assign comma id colon type . LexToken(larrow,'<-',14,357) - yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['a',':','A'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'a',14,352), LexToken(type, ...) + yacc.py: 411:State : 153 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let let_list in ocur expr semi factor dot id opar args . LexToken(cpar,')',127,3413) + yacc.py: 445:Action : Shift and goto state 191 yacc.py: 410: - yacc.py: 411:State : 130 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma let_assign comma let_assign comma param . LexToken(larrow,'<-',14,357) - yacc.py: 445:Action : Shift and goto state 173 + yacc.py: 411:State : 191 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let let_list in ocur expr semi factor dot id opar args cpar . LexToken(semi,';',127,3414) + yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['print_list','(',[],')'] and goto state 167 + yacc.py: 506:Result : ((LexToken(id,'print_list',127,3402), [])) yacc.py: 410: - yacc.py: 411:State : 173 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi id colon type larrow let let_assign comma let_assign comma let_assign comma param larrow . LexToken(new,'new',14,360) - yacc.py: 445:Action : Shift and goto state 89 + yacc.py: 411:State : 167 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let let_list in ocur expr semi factor dot func_call . LexToken(semi,';',127,3414) + yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( new type] with ['new','F'] and goto state 79 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 111 + yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 + yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 + yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 198 - yacc.py: 506:Result : ( comp] with [] and goto state 196 + yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 - yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( id colon type] with ['b',':','Cadena'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'b',14,367), LexToken(type, ...) + yacc.py: 411:State : 73 + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar comp . LexToken(cpar,')',129,3446) + yacc.py: 469:Action : Reduce rule [expr -> comp] with [] and goto state 123 + yacc.py: 506:Result : ( param] with [] and goto state 129 - yacc.py: 506:Result : ( let_assign] with [] and goto state 197 - yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 - yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 - yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 197 - yacc.py: 506:Result : ([ let_assign comma let_list] with [,',',] and goto state 128 - yacc.py: 506:Result : ([ opar expr cpar] with ['(',,')'] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( new type] with ['new','B'] and goto state 79 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( comp] with [] and goto state 196 + yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 196 - yacc.py: 506:Result : ( comp] with [] and goto state 123 + yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 - yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 97 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id colon type larrow expr] with ['test',':','B','<-',] and goto state 17 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','Object','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( ] with [] and goto state 16 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 16 yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi def_attr semi epsilon . LexToken(ccur,'}',15,387) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 47 - yacc.py: 506:Result : ([]) + yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi def_func semi epsilon . LexToken(ccur,'}',132,3507) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 47 - yacc.py: 430:Defaulted state 47: Reduce using 15 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class def_class class type inherits type ocur def_func semi def_attr semi def_attr semi feature_list . LexToken(ccur,'}',15,387) - yacc.py: 469:Action : Reduce rule [feature_list -> def_attr semi feature_list] with [,';',[]] and goto state 47 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',[]] and goto state 47 + yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 48 - yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 14 + yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 53 - yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['class','Main','inherits','IO','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( class type ocur feature_list ccur semi] with ['Class','Main','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( def_class] with [] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class] with [] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 + yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 2 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 2 + yacc.py: 506:Result : ([ class_list] with [] and goto state 1 - yacc.py: 506:Result : ( class_list] with [] and goto state 1 + yacc.py: 506:Result : ( ( ( 1 else path - _out = sys.argv[2] if len(sys.argv) > 2 else None + _out = sys.argv[2] if len(sys.argv) > 2 else out text: str = '' with open(_in) as file: text = file.read() - lexer = main(text, _out) # into call to tokenize text + lexer = main(text, _out) # into call to tokenize text lexer.lexer.lineno = 1 lexer.lexer.linestart = 0 @@ -33,11 +36,6 @@ print(SyntacticError(error_text, 0, 0)) raise Exception() - # print(lexer) - - # lexer.lexer.lineno = 1 - # lexer.lexer.linestart = 0 - parser = CoolParser(CoolLexer()) ast = parser.parse(text) @@ -49,4 +47,8 @@ if errors: for err in errors: print(err) - raise Exception() \ No newline at end of file + raise Exception() + else: + mips_code = run_pipeline(context, ast, scope) + with open(_out, 'w+') as file: + file.write(mips_code) From e7cbc2a28b53df377fac8757c4e34ce01b1dab3b Mon Sep 17 00:00:00 2001 From: JCH97 Date: Thu, 24 Feb 2022 23:11:39 -0500 Subject: [PATCH 39/44] fix(codegen): fix details --- mips-code.asm | 1028 +++++ mips-code.txt | 3924 ----------------- src/cool/codegen/__init__.py | 2 +- src/cool/codegen/__main__.py | 20 - src/cool/codegen/cil_visitor.py | 19 - src/cool/codegen/cilgen.py | 261 +- src/cool/codegen/codegen.py | 23 +- src/cool/codegen/mips_visitor.py | 208 +- src/cool/codegen/mipsgen.py | 105 +- src/cool/codegen/utils/ast_cil.py | 5 +- src/cool/codegen/utils/tools.py | 11 +- src/cool/parser/output/parselog.txt | 6097 +-------------------------- src/main.py | 6 +- 13 files changed, 1413 insertions(+), 10296 deletions(-) create mode 100644 mips-code.asm delete mode 100644 mips-code.txt diff --git a/mips-code.asm b/mips-code.asm new file mode 100644 index 000000000..5b9e044e4 --- /dev/null +++ b/mips-code.asm @@ -0,0 +1,1028 @@ +.text +.globl main +main: +# Save method directions in the methods array +la $v0, methods +la $t9, entry +sw $t9, 0($v0) +la $t9, function_abort_Object +sw $t9, 4($v0) +la $t9, function_type_name_Object +sw $t9, 8($v0) +la $t9, function_copy_Object +sw $t9, 12($v0) +la $t9, function_out_string_IO +sw $t9, 16($v0) +la $t9, function_out_int_IO +sw $t9, 20($v0) +la $t9, function_in_int_IO +sw $t9, 24($v0) +la $t9, function_in_string_IO +sw $t9, 28($v0) +la $t9, function_length_String +sw $t9, 32($v0) +la $t9, function_concat_String +sw $t9, 36($v0) +la $t9, function_substr_String +sw $t9, 40($v0) +la $t9, function_type_name_String +sw $t9, 44($v0) +la $t9, function_copy_String +sw $t9, 48($v0) +la $t9, function_type_name_Int +sw $t9, 52($v0) +la $t9, function_copy_Int +sw $t9, 56($v0) +la $t9, function_type_name_Bool +sw $t9, 60($v0) +la $t9, function_copy_Bool +sw $t9, 64($v0) +la $t9, function_abort_String +sw $t9, 68($v0) +la $t9, function_abort_Int +sw $t9, 72($v0) +la $t9, function_abort_Bool +sw $t9, 76($v0) +la $t9, function_main_Main +sw $t9, 80($v0) +# Save types directions in the types array +la $t9, types +# Save space to locate the type info +# Allocating memory +li $v0, 9 +li $a0, 12 +syscall +# Filling table methods +la $t8, type_String +sw $t8, 0($v0) +# Copying direction to array +sw $v0, 0($t9) +# Table addr is now stored in t8 +move $t8, $v0 +# Creating the dispatch table +# Allocate dispatch table in the heap +li $v0, 9 +li $a0, 28 +syscall +# I save the offset of every one of the methods of this type +# Save the direction of methods +la $v1, methods +# Save the direction of the method function_length_String in a0 +lw $a0, 32($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 4($v0) +# Save the direction of the method function_concat_String in a0 +lw $a0, 36($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 8($v0) +# Save the direction of the method function_substr_String in a0 +lw $a0, 40($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 12($v0) +# Save the direction of the method function_abort_String in a0 +lw $a0, 68($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 16($v0) +# Save the direction of the method function_type_name_String in a0 +lw $a0, 44($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 20($v0) +# Save the direction of the method function_copy_String in a0 +lw $a0, 48($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 24($v0) +sw $v0, 8($t8) +# Allocating memory +li $v0, 9 +li $a0, 12 +syscall +# Filling table methods +la $t8, type_Int +sw $t8, 0($v0) +# Copying direction to array +sw $v0, 4($t9) +# Table addr is now stored in t8 +move $t8, $v0 +# Creating the dispatch table +# Allocate dispatch table in the heap +li $v0, 9 +li $a0, 16 +syscall +# I save the offset of every one of the methods of this type +# Save the direction of methods +la $v1, methods +# Save the direction of the method function_abort_Int in a0 +lw $a0, 72($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 4($v0) +# Save the direction of the method function_type_name_Int in a0 +lw $a0, 52($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 8($v0) +# Save the direction of the method function_copy_Int in a0 +lw $a0, 56($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 12($v0) +sw $v0, 8($t8) +# Allocating memory +li $v0, 9 +li $a0, 12 +syscall +# Filling table methods +la $t8, type_Object +sw $t8, 0($v0) +# Copying direction to array +sw $v0, 8($t9) +# Table addr is now stored in t8 +move $t8, $v0 +# Creating the dispatch table +# Allocate dispatch table in the heap +li $v0, 9 +li $a0, 16 +syscall +# I save the offset of every one of the methods of this type +# Save the direction of methods +la $v1, methods +# Save the direction of the method function_abort_Object in a0 +lw $a0, 4($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 4($v0) +# Save the direction of the method function_type_name_Object in a0 +lw $a0, 8($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 8($v0) +# Save the direction of the method function_copy_Object in a0 +lw $a0, 12($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 12($v0) +sw $v0, 8($t8) +# Allocating memory +li $v0, 9 +li $a0, 12 +syscall +# Filling table methods +la $t8, type_Bool +sw $t8, 0($v0) +# Copying direction to array +sw $v0, 12($t9) +# Table addr is now stored in t8 +move $t8, $v0 +# Creating the dispatch table +# Allocate dispatch table in the heap +li $v0, 9 +li $a0, 16 +syscall +# I save the offset of every one of the methods of this type +# Save the direction of methods +la $v1, methods +# Save the direction of the method function_abort_Bool in a0 +lw $a0, 76($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 4($v0) +# Save the direction of the method function_type_name_Bool in a0 +lw $a0, 60($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 8($v0) +# Save the direction of the method function_copy_Bool in a0 +lw $a0, 64($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 12($v0) +sw $v0, 8($t8) +# Allocating memory +li $v0, 9 +li $a0, 12 +syscall +# Filling table methods +la $t8, type_IO +sw $t8, 0($v0) +# Copying direction to array +sw $v0, 16($t9) +# Table addr is now stored in t8 +move $t8, $v0 +# Creating the dispatch table +# Allocate dispatch table in the heap +li $v0, 9 +li $a0, 32 +syscall +# I save the offset of every one of the methods of this type +# Save the direction of methods +la $v1, methods +# Save the direction of the method function_abort_Object in a0 +lw $a0, 4($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 4($v0) +# Save the direction of the method function_type_name_Object in a0 +lw $a0, 8($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 8($v0) +# Save the direction of the method function_copy_Object in a0 +lw $a0, 12($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 12($v0) +# Save the direction of the method function_out_string_IO in a0 +lw $a0, 16($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 16($v0) +# Save the direction of the method function_out_int_IO in a0 +lw $a0, 20($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 20($v0) +# Save the direction of the method function_in_int_IO in a0 +lw $a0, 24($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 24($v0) +# Save the direction of the method function_in_string_IO in a0 +lw $a0, 28($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 28($v0) +sw $v0, 8($t8) +# Allocating memory +li $v0, 9 +li $a0, 12 +syscall +# Filling table methods +la $t8, type_Main +sw $t8, 0($v0) +# Copying direction to array +sw $v0, 20($t9) +# Table addr is now stored in t8 +move $t8, $v0 +# Creating the dispatch table +# Allocate dispatch table in the heap +li $v0, 9 +li $a0, 36 +syscall +# I save the offset of every one of the methods of this type +# Save the direction of methods +la $v1, methods +# Save the direction of the method function_abort_Object in a0 +lw $a0, 4($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 4($v0) +# Save the direction of the method function_type_name_Object in a0 +lw $a0, 8($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 8($v0) +# Save the direction of the method function_copy_Object in a0 +lw $a0, 12($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 12($v0) +# Save the direction of the method function_out_string_IO in a0 +lw $a0, 16($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 16($v0) +# Save the direction of the method function_out_int_IO in a0 +lw $a0, 20($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 20($v0) +# Save the direction of the method function_in_string_IO in a0 +lw $a0, 28($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 24($v0) +# Save the direction of the method function_in_int_IO in a0 +lw $a0, 24($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 28($v0) +# Save the direction of the method function_main_Main in a0 +lw $a0, 80($v1) +# Save the direction of the method in his position in the dispatch table +sw $a0, 32($v0) +sw $v0, 8($t8) +# Copying parents +lw $v0, 0($t9) +li $t8, 0 +sw $t8, 4($v0) +lw $v0, 4($t9) +li $t8, 0 +sw $t8, 4($v0) +lw $v0, 8($t9) +li $t8, 0 +sw $t8, 4($v0) +lw $v0, 12($t9) +li $t8, 0 +sw $t8, 4($v0) +lw $v0, 16($t9) +lw $t8, 8($t9) +sw $t8, 4($v0) +lw $v0, 20($t9) +lw $t8, 16($t9) +sw $t8, 4($v0) + +entry: +# Gets the params from the stack +move $fp, $sp +# Gets the frame pointer from the stack +# Updates stack pointer pushing local__internal_0 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local__internal_1 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +# Syscall to allocate memory of the object entry in heap +li $v0, 9 +li $a0, 12 +syscall +# Loads the name of the variable and saves the name like the first field +la $t9, type_Main +sw $t9, 0($v0) +# Saves the size of the node +li $t9, 12 +sw $t9, 4($v0) +move $t0, $v0 +# Adding Type Info addr +la $t8, types +lw $v0, 20($t8) +sw $v0, 8($t0) +lw $t1, -4($fp) +# Static Dispatch of the method main +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# This function will consume the arguments +jal function_main_Main +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -4($fp) +# saves the return value +move $t0, $v0 +li $v0, 0 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_abort_Object: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_abort_Object_self_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +# Moving self to local_abort_Object_self_0 +move $t1, $t0 +sw $t1, -4($fp) +# Exiting the program +li $t8, 0 +# Printing abort message +li $v0, 4 +la $a0, abort_msg +syscall +li $v0, 4 +lw $a0, 0($t0) +syscall +li $v0, 4 +la $a0, new_line +syscall +li $v0, 17 +move $a0, $t8 +syscall +sw $t0, -0($fp) +sw $t1, -4($fp) + +function_type_name_Object: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_type_name_Object_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +# local_type_name_Object_result_0 <- Type of self +lw $t1, 0($t0) +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_copy_Object: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_copy_Object_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +lw $t9, 4($t0) +# Syscall to allocate memory of the object entry in heap +li $v0, 9 +move $a0, $t9 +syscall +move $t1, $v0 +# Loop to copy every field of the previous object +# t8 the register to loop +li $t8, 0 +loop_0: +# In t9 is stored the size of the object +bge $t8, $t9, exit_0 +lw $a0, ($t0) +sw $a0, ($v0) +addi $v0, $v0, 4 +addi $t0, $t0, 4 +# Increase loop counter +addi $t8, $t8, 4 +j loop_0 +exit_0: +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_out_string_IO: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Pops the register with the param value word +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_out_string_String_self_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +lw $t1, -8($fp) +# Moving self to local_out_string_String_self_0 +move $t1, $t0 +sw $t1, -8($fp) +lw $t2, -0($fp) +# Printing a string +li $v0, 4 +move $a0, $t2 +syscall +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -8($fp) +sw $t2, -0($fp) +# Removing all locals from stack +addiu $sp, $sp, 12 +jr $ra + + +function_out_int_IO: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Pops the register with the param value number +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_out_int_IO_self_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +lw $t1, -8($fp) +# Moving self to local_out_int_IO_self_0 +move $t1, $t0 +sw $t1, -8($fp) +lw $t2, -0($fp) +# Printing an int +li $v0, 1 +move $a0, $t2 +syscall +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -8($fp) +sw $t2, -0($fp) +# Removing all locals from stack +addiu $sp, $sp, 12 +jr $ra + + +function_in_int_IO: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_in_int_IO_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Reading a int +li $v0, 5 +syscall +move $t0, $v0 +move $v0, $t0 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_in_string_IO: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_in_string_IO_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Allocating memory for the buffer +li $a0, 356 +li $v0, 9 +syscall +move $t0, $v0 +# Reading a string +# Putting buffer in a0 +move $a0, $t0 +# Putting length of string in a1 +li $a1, 356 +li $v0, 8 +syscall +# Walks to eliminate the newline +move $t9, $t0 +start_1: +lb $t8, 0($t9) +beqz $t8, end_1 +add $t9, $t9, 1 +j start_1 +end_1: +addiu $t9, $t9, -1 +sb $0, ($t9) +move $v0, $t0 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_length_String: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_length_String_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +move $t8, $t0 +# Determining the length of a string +loop_2: +lb $t9, 0($t8) +beq $t9, $zero, end_2 +addi $t8, $t8, 1 +j loop_2 +end_2: +sub $t1, $t8, $t0 +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_concat_String: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Pops the register with the param value word +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_concat_String_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +lw $t1, -0($fp) +lw $t2, -8($fp) +# Allocating memory for the buffer +li $a0, 356 +li $v0, 9 +syscall +move $t2, $v0 +# Copy the first string to dest +move $a0, $t0 +move $a1, $t2 +sw $ra, ($sp) +addiu $sp, $sp, -4 +jal strcopier +# Concatenate second string on result buffer +move $a0, $t1 +move $a1, $v0 +jal strcopier +sb $0, 0($v0) +addiu $sp, $sp, 4 +lw $ra, ($sp) +j finish_3 +# Definition of strcopier +strcopier: +# In a0 is the source and in a1 is the destination +loop_3: +lb $t8, ($a0) +beq $t8, $zero, end_3 +addiu $a0, $a0, 1 +sb $t8, ($a1) +addiu $a1, $a1, 1 +b loop_3 +end_3: +move $v0, $a1 +jr $ra +finish_3: +move $v0, $t2 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -0($fp) +sw $t2, -8($fp) +# Removing all locals from stack +addiu $sp, $sp, 12 +jr $ra + + +function_substr_String: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Pops the register with the param value begin +addiu $fp, $fp, 4 +# Pops the register with the param value end +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_substr_String_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +lw $t1, -0($fp) +lw $t2, -12($fp) +# Allocating memory for the buffer +li $a0, 356 +li $v0, 9 +syscall +move $t2, $v0 +lw $t3, -8($fp) +# Getting the substring of a node +# Move to the first position in the string +li $v0, 0 +move $t8, $t3 +start_4: +lb $t9, 0($t8) +beqz $t9, error_4 +addi $v0, 1 +bgt $v0, $t0, end_len_4 +addi $t8, 1 +j start_4 +end_len_4: +# Saving dest to iterate over him +move $v0, $t2 +loop_4: +sub $t9, $v0, $t2 +beq $t9, $t1, end_4 +lb $t9, 0($t8) +beqz $t9, error_4 +sb $t9, 0($v0) +addi $t8, $t8, 1 +addi $v0, $v0, 1 +j loop_4 +error_4: +la $a0, index_error +li $v0, 4 +move $a0, $t3 +syscall +li $v0, 1 +move $a0, $t0 +syscall +li $v0, 1 +move $a0, $t1 +syscall +j .raise +end_4: +sb $0, 0($v0) +move $v0, $t2 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -0($fp) +sw $t2, -12($fp) +sw $t3, -8($fp) +# Removing all locals from stack +addiu $sp, $sp, 16 +jr $ra + + +function_type_name_String: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_type_name_String_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Saves in local_type_name_String_result_0 type_String +la $t0, type_String +move $v0, $t0 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_copy_String: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_copy_String_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +# Allocating memory for the buffer +li $a0, 356 +li $v0, 9 +syscall +move $t1, $v0 +# Copy the first string to dest +move $a0, $t0 +move $a1, $t1 +sw $ra, ($sp) +addiu $sp, $sp, -4 +jal strcopier +sb $0, 0($v0) +addiu $sp, $sp, 4 +lw $ra, ($sp) +j finish_5 +finish_5: +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_type_name_Int: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_type_name_Int_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Saves in local_type_name_Int_result_0 type_Int +la $t0, type_Int +move $v0, $t0 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_copy_Int: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_copy_Int_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +# Moving self to local_copy_Int_result_0 +move $t1, $t0 +sw $t1, -4($fp) +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_type_name_Bool: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_type_name_Bool_result_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Saves in local_type_name_Bool_result_0 type_Bool +la $t0, type_Bool +move $v0, $t0 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_copy_Bool: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_copy_result_Bool_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +lw $t1, -4($fp) +# Moving self to local_copy_result_Bool_0 +move $t1, $t0 +sw $t1, -4($fp) +move $v0, $t1 +# Empty all used registers and saves them to memory +sw $t0, -0($fp) +sw $t1, -4($fp) +# Removing all locals from stack +addiu $sp, $sp, 8 +jr $ra + + +function_abort_String: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_abort_String_msg_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +# Saves in self string_abort +la $t0, string_abort +# Printing a string +li $v0, 4 +move $a0, $t0 +syscall +# Exiting the program +li $t8, 0 +li $v0, 17 +move $a0, $t8 +syscall +sw $t0, -0($fp) + +function_abort_Int: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_abort_Int_msg_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +# Saves in self int_abort +la $t0, int_abort +# Printing a string +li $v0, 4 +move $a0, $t0 +syscall +# Exiting the program +li $t8, 0 +li $v0, 17 +move $a0, $t8 +syscall +sw $t0, -0($fp) + +function_abort_Bool: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_abort_Bool_msg_0 to the stack +addiu $sp, $sp, -4 +lw $t0, -0($fp) +# Saves in self bool_abort +la $t0, bool_abort +# Printing a string +li $v0, 4 +move $a0, $t0 +syscall +# Exiting the program +li $t8, 0 +li $v0, 17 +move $a0, $t8 +syscall +sw $t0, -0($fp) + +function_main_Main: +# Gets the params from the stack +move $fp, $sp +# Pops the register with the param value self +addiu $fp, $fp, 4 +# Gets the frame pointer from the stack +# Updates stack pointer pushing local_main_Main_internal_0 to the stack +addiu $sp, $sp, -4 +# Updates stack pointer pushing local_main_Main_internal_1 to the stack +addiu $sp, $sp, -4 +lw $t0, -4($fp) +# Saves in local_main_Main_internal_0 data_1 +la $t0, data_1 +lw $t1, -0($fp) +lw $t2, -8($fp) +# Find the actual name in the dispatch table +# Gets in a0 the actual direction of the dispatch table +lw $t9, 8($t1) +lw $a0, 8($t9) +# Saves in t8 the direction of function_out_string_IO +lw $t8, 16($a0) +sw $fp, ($sp) +addiu $sp, $sp, -4 +sw $ra, ($sp) +addiu $sp, $sp, -4 +# Push the arguments to the stack +# The rest of the arguments are push into the stack +sw $t0, ($sp) +addiu $sp, $sp, -4 +# The rest of the arguments are push into the stack +sw $t1, ($sp) +addiu $sp, $sp, -4 +# Empty all used registers and saves them to memory +sw $t0, -4($fp) +sw $t1, -0($fp) +sw $t2, -8($fp) +# This function will consume the arguments +jal $t8 +# Pop ra register of return function of the stack +addiu $sp, $sp, 4 +lw $ra, ($sp) +# Pop fp register from the stack +addiu $sp, $sp, 4 +lw $fp, ($sp) +lw $t0, -8($fp) +# saves the return value +move $t0, $v0 +move $v0, $t0 +# Empty all used registers and saves them to memory +sw $t0, -8($fp) +# Removing all locals from stack +addiu $sp, $sp, 12 +jr $ra + +# Raise exception method +.raise: +li $v0, 4 +syscall +li $v0, 17 +li $a0, 1 +syscall + +.data +abort_msg: .asciiz "Abort called from class " +new_line: .asciiz " +" +string_abort: .asciiz "Abort called from class String +" +int_abort: .asciiz "Abort called from class Int +" +bool_abort: .asciiz "Abort called from class Bool +" +type_Object: .asciiz "Object" +type_IO: .asciiz "IO" +type_String: .asciiz "String" +type_Int: .asciiz "Int" +type_Bool: .asciiz "Bool" +type_Main: .asciiz "Main" +methods: .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +type_Void: .asciiz "Void" +types: .word 0, 0, 0, 0, 0, 0 +data_0: .asciiz "Void" +data_1: .asciiz "Hello, World. +" +zero_error: .asciiz "Division by zero error +" +case_void_error: .asciiz "Case on void error +" +dispatch_error: .asciiz "Dispatch on void error +" +case_error: .asciiz "Case statement without a matching branch error +" +index_error: .asciiz "Substring out of range error +" +heap_error: .asciiz "Heap overflow error +" \ No newline at end of file diff --git a/mips-code.txt b/mips-code.txt deleted file mode 100644 index d1badb702..000000000 --- a/mips-code.txt +++ /dev/null @@ -1,3924 +0,0 @@ -.text -.globl main -main: -# Save method directions in the methods array -la $v0, methods -la $t9, entry -sw $t9, 0($v0) -la $t9, function_abort_Object -sw $t9, 4($v0) -la $t9, function_type_name_Object -sw $t9, 8($v0) -la $t9, function_copy_Object -sw $t9, 12($v0) -la $t9, function_out_string_IO -sw $t9, 16($v0) -la $t9, function_out_int_IO -sw $t9, 20($v0) -la $t9, function_in_int_IO -sw $t9, 24($v0) -la $t9, function_in_string_IO -sw $t9, 28($v0) -la $t9, function_length_String -sw $t9, 32($v0) -la $t9, function_concat_String -sw $t9, 36($v0) -la $t9, function_substr_String -sw $t9, 40($v0) -la $t9, function_type_name_String -sw $t9, 44($v0) -la $t9, function_copy_String -sw $t9, 48($v0) -la $t9, function_type_name_Int -sw $t9, 52($v0) -la $t9, function_copy_Int -sw $t9, 56($v0) -la $t9, function_type_name_Bool -sw $t9, 60($v0) -la $t9, function_copy_Bool -sw $t9, 64($v0) -la $t9, function_abort_String -sw $t9, 68($v0) -la $t9, function_abort_Int -sw $t9, 72($v0) -la $t9, function_abort_Bool -sw $t9, 76($v0) -la $t9, function_Book_Book -sw $t9, 80($v0) -la $t9, function_initBook_Book -sw $t9, 84($v0) -la $t9, function_print_Book -sw $t9, 88($v0) -la $t9, function_Article_Article -sw $t9, 92($v0) -la $t9, function_initArticle_Article -sw $t9, 96($v0) -la $t9, function_print_Article -sw $t9, 100($v0) -la $t9, function_isNil_BookList -sw $t9, 104($v0) -la $t9, function_cons_BookList -sw $t9, 108($v0) -la $t9, function_car_BookList -sw $t9, 112($v0) -la $t9, function_cdr_BookList -sw $t9, 116($v0) -la $t9, function_print_list_BookList -sw $t9, 120($v0) -la $t9, function_Cons_Cons -sw $t9, 124($v0) -la $t9, function_isNil_Cons -sw $t9, 128($v0) -la $t9, function_init_Cons -sw $t9, 132($v0) -la $t9, function_car_Cons -sw $t9, 136($v0) -la $t9, function_cdr_Cons -sw $t9, 140($v0) -la $t9, function_print_list_Cons -sw $t9, 144($v0) -la $t9, function_isNil_Nil -sw $t9, 148($v0) -la $t9, function_print_list_Nil -sw $t9, 152($v0) -la $t9, function_Main_Main -sw $t9, 156($v0) -la $t9, function_main_Main -sw $t9, 160($v0) -# Save types directions in the types array -la $t9, types -# Save space to locate the type info -# Allocating memory -li $v0, 9 -li $a0, 12 -syscall -# Filling table methods -la $t8, type_String -sw $t8, 0($v0) -# Copying direction to array -sw $v0, 0($t9) -# Table addr is now stored in t8 -move $t8, $v0 -# Creating the dispatch table -# Allocate dispatch table in the heap -li $v0, 9 -li $a0, 28 -syscall -# I save the offset of every one of the methods of this type -# Save the direction of methods -la $v1, methods -# Save the direction of the method function_length_String in a0 -lw $a0, 32($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 4($v0) -# Save the direction of the method function_concat_String in a0 -lw $a0, 36($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 8($v0) -# Save the direction of the method function_substr_String in a0 -lw $a0, 40($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 12($v0) -# Save the direction of the method function_abort_String in a0 -lw $a0, 68($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 16($v0) -# Save the direction of the method function_type_name_String in a0 -lw $a0, 44($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 20($v0) -# Save the direction of the method function_copy_String in a0 -lw $a0, 48($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 24($v0) -sw $v0, 8($t8) -# Allocating memory -li $v0, 9 -li $a0, 12 -syscall -# Filling table methods -la $t8, type_Int -sw $t8, 0($v0) -# Copying direction to array -sw $v0, 4($t9) -# Table addr is now stored in t8 -move $t8, $v0 -# Creating the dispatch table -# Allocate dispatch table in the heap -li $v0, 9 -li $a0, 16 -syscall -# I save the offset of every one of the methods of this type -# Save the direction of methods -la $v1, methods -# Save the direction of the method function_abort_Int in a0 -lw $a0, 72($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 4($v0) -# Save the direction of the method function_type_name_Int in a0 -lw $a0, 52($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 8($v0) -# Save the direction of the method function_copy_Int in a0 -lw $a0, 56($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 12($v0) -sw $v0, 8($t8) -# Allocating memory -li $v0, 9 -li $a0, 12 -syscall -# Filling table methods -la $t8, type_Object -sw $t8, 0($v0) -# Copying direction to array -sw $v0, 8($t9) -# Table addr is now stored in t8 -move $t8, $v0 -# Creating the dispatch table -# Allocate dispatch table in the heap -li $v0, 9 -li $a0, 16 -syscall -# I save the offset of every one of the methods of this type -# Save the direction of methods -la $v1, methods -# Save the direction of the method function_abort_Object in a0 -lw $a0, 4($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 4($v0) -# Save the direction of the method function_type_name_Object in a0 -lw $a0, 8($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 8($v0) -# Save the direction of the method function_copy_Object in a0 -lw $a0, 12($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 12($v0) -sw $v0, 8($t8) -# Allocating memory -li $v0, 9 -li $a0, 12 -syscall -# Filling table methods -la $t8, type_Bool -sw $t8, 0($v0) -# Copying direction to array -sw $v0, 12($t9) -# Table addr is now stored in t8 -move $t8, $v0 -# Creating the dispatch table -# Allocate dispatch table in the heap -li $v0, 9 -li $a0, 16 -syscall -# I save the offset of every one of the methods of this type -# Save the direction of methods -la $v1, methods -# Save the direction of the method function_abort_Bool in a0 -lw $a0, 76($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 4($v0) -# Save the direction of the method function_type_name_Bool in a0 -lw $a0, 60($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 8($v0) -# Save the direction of the method function_copy_Bool in a0 -lw $a0, 64($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 12($v0) -sw $v0, 8($t8) -# Allocating memory -li $v0, 9 -li $a0, 12 -syscall -# Filling table methods -la $t8, type_IO -sw $t8, 0($v0) -# Copying direction to array -sw $v0, 16($t9) -# Table addr is now stored in t8 -move $t8, $v0 -# Creating the dispatch table -# Allocate dispatch table in the heap -li $v0, 9 -li $a0, 32 -syscall -# I save the offset of every one of the methods of this type -# Save the direction of methods -la $v1, methods -# Save the direction of the method function_abort_Object in a0 -lw $a0, 4($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 4($v0) -# Save the direction of the method function_type_name_Object in a0 -lw $a0, 8($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 8($v0) -# Save the direction of the method function_copy_Object in a0 -lw $a0, 12($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 12($v0) -# Save the direction of the method function_out_string_IO in a0 -lw $a0, 16($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 16($v0) -# Save the direction of the method function_out_int_IO in a0 -lw $a0, 20($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 20($v0) -# Save the direction of the method function_in_int_IO in a0 -lw $a0, 24($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 24($v0) -# Save the direction of the method function_in_string_IO in a0 -lw $a0, 28($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 28($v0) -sw $v0, 8($t8) -# Allocating memory -li $v0, 9 -li $a0, 12 -syscall -# Filling table methods -la $t8, type_Book -sw $t8, 0($v0) -# Copying direction to array -sw $v0, 20($t9) -# Table addr is now stored in t8 -move $t8, $v0 -# Creating the dispatch table -# Allocate dispatch table in the heap -li $v0, 9 -li $a0, 44 -syscall -# I save the offset of every one of the methods of this type -# Save the direction of methods -la $v1, methods -# Save the direction of the method function_abort_Object in a0 -lw $a0, 4($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 4($v0) -# Save the direction of the method function_type_name_Object in a0 -lw $a0, 8($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 8($v0) -# Save the direction of the method function_copy_Object in a0 -lw $a0, 12($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 12($v0) -# Save the direction of the method function_out_string_IO in a0 -lw $a0, 16($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 16($v0) -# Save the direction of the method function_out_int_IO in a0 -lw $a0, 20($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 20($v0) -# Save the direction of the method function_in_string_IO in a0 -lw $a0, 28($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 24($v0) -# Save the direction of the method function_in_int_IO in a0 -lw $a0, 24($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 28($v0) -# Save the direction of the method function_initBook_Book in a0 -lw $a0, 84($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 32($v0) -# Save the direction of the method function_print_Book in a0 -lw $a0, 88($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 36($v0) -# Save the direction of the method function_Book_Book in a0 -lw $a0, 80($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 40($v0) -sw $v0, 8($t8) -# Allocating memory -li $v0, 9 -li $a0, 12 -syscall -# Filling table methods -la $t8, type_Article -sw $t8, 0($v0) -# Copying direction to array -sw $v0, 24($t9) -# Table addr is now stored in t8 -move $t8, $v0 -# Creating the dispatch table -# Allocate dispatch table in the heap -li $v0, 9 -li $a0, 52 -syscall -# I save the offset of every one of the methods of this type -# Save the direction of methods -la $v1, methods -# Save the direction of the method function_abort_Object in a0 -lw $a0, 4($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 4($v0) -# Save the direction of the method function_type_name_Object in a0 -lw $a0, 8($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 8($v0) -# Save the direction of the method function_copy_Object in a0 -lw $a0, 12($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 12($v0) -# Save the direction of the method function_out_string_IO in a0 -lw $a0, 16($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 16($v0) -# Save the direction of the method function_out_int_IO in a0 -lw $a0, 20($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 20($v0) -# Save the direction of the method function_in_string_IO in a0 -lw $a0, 28($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 24($v0) -# Save the direction of the method function_in_int_IO in a0 -lw $a0, 24($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 28($v0) -# Save the direction of the method function_initBook_Book in a0 -lw $a0, 84($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 32($v0) -# Save the direction of the method function_print_Article in a0 -lw $a0, 100($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 36($v0) -# Save the direction of the method function_Book_Book in a0 -lw $a0, 80($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 40($v0) -# Save the direction of the method function_initArticle_Article in a0 -lw $a0, 96($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 44($v0) -# Save the direction of the method function_Article_Article in a0 -lw $a0, 92($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 48($v0) -sw $v0, 8($t8) -# Allocating memory -li $v0, 9 -li $a0, 12 -syscall -# Filling table methods -la $t8, type_BookList -sw $t8, 0($v0) -# Copying direction to array -sw $v0, 28($t9) -# Table addr is now stored in t8 -move $t8, $v0 -# Creating the dispatch table -# Allocate dispatch table in the heap -li $v0, 9 -li $a0, 52 -syscall -# I save the offset of every one of the methods of this type -# Save the direction of methods -la $v1, methods -# Save the direction of the method function_abort_Object in a0 -lw $a0, 4($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 4($v0) -# Save the direction of the method function_type_name_Object in a0 -lw $a0, 8($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 8($v0) -# Save the direction of the method function_copy_Object in a0 -lw $a0, 12($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 12($v0) -# Save the direction of the method function_out_string_IO in a0 -lw $a0, 16($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 16($v0) -# Save the direction of the method function_out_int_IO in a0 -lw $a0, 20($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 20($v0) -# Save the direction of the method function_in_string_IO in a0 -lw $a0, 28($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 24($v0) -# Save the direction of the method function_in_int_IO in a0 -lw $a0, 24($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 28($v0) -# Save the direction of the method function_isNil_BookList in a0 -lw $a0, 104($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 32($v0) -# Save the direction of the method function_cons_BookList in a0 -lw $a0, 108($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 36($v0) -# Save the direction of the method function_car_BookList in a0 -lw $a0, 112($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 40($v0) -# Save the direction of the method function_cdr_BookList in a0 -lw $a0, 116($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 44($v0) -# Save the direction of the method function_print_list_BookList in a0 -lw $a0, 120($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 48($v0) -sw $v0, 8($t8) -# Allocating memory -li $v0, 9 -li $a0, 12 -syscall -# Filling table methods -la $t8, type_Cons -sw $t8, 0($v0) -# Copying direction to array -sw $v0, 32($t9) -# Table addr is now stored in t8 -move $t8, $v0 -# Creating the dispatch table -# Allocate dispatch table in the heap -li $v0, 9 -li $a0, 60 -syscall -# I save the offset of every one of the methods of this type -# Save the direction of methods -la $v1, methods -# Save the direction of the method function_abort_Object in a0 -lw $a0, 4($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 4($v0) -# Save the direction of the method function_type_name_Object in a0 -lw $a0, 8($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 8($v0) -# Save the direction of the method function_copy_Object in a0 -lw $a0, 12($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 12($v0) -# Save the direction of the method function_out_string_IO in a0 -lw $a0, 16($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 16($v0) -# Save the direction of the method function_out_int_IO in a0 -lw $a0, 20($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 20($v0) -# Save the direction of the method function_in_string_IO in a0 -lw $a0, 28($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 24($v0) -# Save the direction of the method function_in_int_IO in a0 -lw $a0, 24($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 28($v0) -# Save the direction of the method function_isNil_Cons in a0 -lw $a0, 128($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 32($v0) -# Save the direction of the method function_cons_BookList in a0 -lw $a0, 108($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 36($v0) -# Save the direction of the method function_car_Cons in a0 -lw $a0, 136($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 40($v0) -# Save the direction of the method function_cdr_Cons in a0 -lw $a0, 140($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 44($v0) -# Save the direction of the method function_print_list_Cons in a0 -lw $a0, 144($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 48($v0) -# Save the direction of the method function_init_Cons in a0 -lw $a0, 132($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 52($v0) -# Save the direction of the method function_Cons_Cons in a0 -lw $a0, 124($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 56($v0) -sw $v0, 8($t8) -# Allocating memory -li $v0, 9 -li $a0, 12 -syscall -# Filling table methods -la $t8, type_Nil -sw $t8, 0($v0) -# Copying direction to array -sw $v0, 36($t9) -# Table addr is now stored in t8 -move $t8, $v0 -# Creating the dispatch table -# Allocate dispatch table in the heap -li $v0, 9 -li $a0, 52 -syscall -# I save the offset of every one of the methods of this type -# Save the direction of methods -la $v1, methods -# Save the direction of the method function_abort_Object in a0 -lw $a0, 4($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 4($v0) -# Save the direction of the method function_type_name_Object in a0 -lw $a0, 8($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 8($v0) -# Save the direction of the method function_copy_Object in a0 -lw $a0, 12($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 12($v0) -# Save the direction of the method function_out_string_IO in a0 -lw $a0, 16($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 16($v0) -# Save the direction of the method function_out_int_IO in a0 -lw $a0, 20($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 20($v0) -# Save the direction of the method function_in_string_IO in a0 -lw $a0, 28($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 24($v0) -# Save the direction of the method function_in_int_IO in a0 -lw $a0, 24($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 28($v0) -# Save the direction of the method function_isNil_Nil in a0 -lw $a0, 148($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 32($v0) -# Save the direction of the method function_cons_BookList in a0 -lw $a0, 108($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 36($v0) -# Save the direction of the method function_car_BookList in a0 -lw $a0, 112($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 40($v0) -# Save the direction of the method function_cdr_BookList in a0 -lw $a0, 116($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 44($v0) -# Save the direction of the method function_print_list_Nil in a0 -lw $a0, 152($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 48($v0) -sw $v0, 8($t8) -# Allocating memory -li $v0, 9 -li $a0, 12 -syscall -# Filling table methods -la $t8, type_Main -sw $t8, 0($v0) -# Copying direction to array -sw $v0, 40($t9) -# Table addr is now stored in t8 -move $t8, $v0 -# Creating the dispatch table -# Allocate dispatch table in the heap -li $v0, 9 -li $a0, 24 -syscall -# I save the offset of every one of the methods of this type -# Save the direction of methods -la $v1, methods -# Save the direction of the method function_abort_Object in a0 -lw $a0, 4($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 4($v0) -# Save the direction of the method function_type_name_Object in a0 -lw $a0, 8($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 8($v0) -# Save the direction of the method function_copy_Object in a0 -lw $a0, 12($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 12($v0) -# Save the direction of the method function_main_Main in a0 -lw $a0, 160($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 16($v0) -# Save the direction of the method function_Main_Main in a0 -lw $a0, 156($v1) -# Save the direction of the method in his position in the dispatch table -sw $a0, 20($v0) -sw $v0, 8($t8) -# Copying parents -lw $v0, 0($t9) -li $t8, 0 -sw $t8, 4($v0) -lw $v0, 4($t9) -li $t8, 0 -sw $t8, 4($v0) -lw $v0, 8($t9) -li $t8, 0 -sw $t8, 4($v0) -lw $v0, 12($t9) -li $t8, 0 -sw $t8, 4($v0) -lw $v0, 16($t9) -lw $t8, 8($t9) -sw $t8, 4($v0) -lw $v0, 20($t9) -lw $t8, 16($t9) -sw $t8, 4($v0) -lw $v0, 24($t9) -lw $t8, 20($t9) -sw $t8, 4($v0) -lw $v0, 28($t9) -lw $t8, 16($t9) -sw $t8, 4($v0) -lw $v0, 32($t9) -lw $t8, 28($t9) -sw $t8, 4($v0) -lw $v0, 36($t9) -lw $t8, 28($t9) -sw $t8, 4($v0) -lw $v0, 40($t9) -lw $t8, 8($t9) -sw $t8, 4($v0) - -entry: -# Gets the params from the stack -move $fp, $sp -# Gets the frame pointer from the stack -# Updates stack pointer pushing local__internal_0 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local__internal_1 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -# Syscall to allocate memory of the object entry in heap -li $v0, 9 -li $a0, 16 -syscall -# Loads the name of the variable and saves the name like the first field -la $t9, type_Main -sw $t9, 0($v0) -# Saves the size of the node -li $t9, 16 -sw $t9, 4($v0) -move $t0, $v0 -# Adding Type Info addr -la $t8, types -lw $v0, 40($t8) -sw $v0, 8($t0) -# Static Dispatch of the method Main -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -0($fp) -# This function will consume the arguments -jal function_Main_Main -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -4($fp) -# Static Dispatch of the method main -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -lw $t1, -0($fp) -sw $t1, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -0($fp) -# This function will consume the arguments -jal function_main_Main -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -4($fp) -# saves the return value -move $t0, $v0 -li $v0, 0 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_abort_Object: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_abort_Object_self_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -lw $t1, -4($fp) -# Moving self to local_abort_Object_self_0 -move $t1, $t0 -sw $t1, -4($fp) -# Exiting the program -li $t8, 0 -# Printing abort message -li $v0, 4 -la $a0, abort_msg -syscall -li $v0, 4 -lw $a0, 0($t0) -syscall -li $v0, 4 -la $a0, new_line -syscall -li $v0, 17 -move $a0, $t8 -syscall -sw $t0, -0($fp) -sw $t1, -4($fp) - -function_type_name_Object: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_type_name_Object_result_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -lw $t1, -4($fp) -# local_type_name_Object_result_0 <- Type of self -lw $t1, 0($t0) -move $v0, $t1 -# Empty all used registers and saves them to memory -sw $t0, -0($fp) -sw $t1, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_copy_Object: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_copy_Object_result_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -lw $t1, -4($fp) -lw $t9, 4($t0) -# Syscall to allocate memory of the object entry in heap -li $v0, 9 -move $a0, $t9 -syscall -move $t1, $v0 -# Loop to copy every field of the previous object -# t8 the register to loop -li $t8, 0 -loop_0: -# In t9 is stored the size of the object -bge $t8, $t9, exit_0 -lw $a0, ($t0) -sw $a0, ($v0) -addi $v0, $v0, 4 -addi $t0, $t0, 4 -# Increase loop counter -addi $t8, $t8, 4 -j loop_0 -exit_0: -move $v0, $t1 -# Empty all used registers and saves them to memory -sw $t0, -0($fp) -sw $t1, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_out_string_IO: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Pops the register with the param value word -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_out_string_String_self_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -lw $t1, -8($fp) -# Moving self to local_out_string_String_self_0 -move $t1, $t0 -sw $t1, -8($fp) -lw $t2, -0($fp) -# Printing a string -li $v0, 4 -move $a0, $t2 -syscall -move $v0, $t1 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -8($fp) -sw $t2, -0($fp) -# Removing all locals from stack -addiu $sp, $sp, 12 -jr $ra - - -function_out_int_IO: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Pops the register with the param value number -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_out_int_IO_self_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -lw $t1, -8($fp) -# Moving self to local_out_int_IO_self_0 -move $t1, $t0 -sw $t1, -8($fp) -lw $t2, -0($fp) -# Printing an int -li $v0, 1 -move $a0, $t2 -syscall -move $v0, $t1 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -8($fp) -sw $t2, -0($fp) -# Removing all locals from stack -addiu $sp, $sp, 12 -jr $ra - - -function_in_int_IO: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_in_int_IO_result_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -# Reading a int -li $v0, 5 -syscall -move $t0, $v0 -move $v0, $t0 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_in_string_IO: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_in_string_IO_result_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -# Allocating memory for the buffer -li $a0, 356 -li $v0, 9 -syscall -move $t0, $v0 -# Reading a string -# Putting buffer in a0 -move $a0, $t0 -# Putting length of string in a1 -li $a1, 356 -li $v0, 8 -syscall -# Walks to eliminate the newline -move $t9, $t0 -start_1: -lb $t8, 0($t9) -beqz $t8, end_1 -add $t9, $t9, 1 -j start_1 -end_1: -addiu $t9, $t9, -1 -sb $0, ($t9) -move $v0, $t0 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_length_String: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_length_String_result_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -lw $t1, -4($fp) -move $t8, $t0 -# Determining the length of a string -loop_2: -lb $t9, 0($t8) -beq $t9, $zero, end_2 -addi $t8, $t8, 1 -j loop_2 -end_2: -sub $t1, $t8, $t0 -move $v0, $t1 -# Empty all used registers and saves them to memory -sw $t0, -0($fp) -sw $t1, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_concat_String: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Pops the register with the param value word -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_concat_String_result_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -lw $t1, -0($fp) -lw $t2, -8($fp) -# Allocating memory for the buffer -li $a0, 356 -li $v0, 9 -syscall -move $t2, $v0 -# Copy the first string to dest -move $a0, $t0 -move $a1, $t2 -sw $ra, ($sp) -addiu $sp, $sp, -4 -jal strcopier -# Concatenate second string on result buffer -move $a0, $t1 -move $a1, $v0 -jal strcopier -sb $0, 0($v0) -addiu $sp, $sp, 4 -lw $ra, ($sp) -j finish_3 -# Definition of strcopier -strcopier: -# In a0 is the source and in a1 is the destination -loop_3: -lb $t8, ($a0) -beq $t8, $zero, end_3 -addiu $a0, $a0, 1 -sb $t8, ($a1) -addiu $a1, $a1, 1 -b loop_3 -end_3: -move $v0, $a1 -jr $ra -finish_3: -move $v0, $t2 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -0($fp) -sw $t2, -8($fp) -# Removing all locals from stack -addiu $sp, $sp, 12 -jr $ra - - -function_substr_String: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Pops the register with the param value begin -addiu $fp, $fp, 4 -# Pops the register with the param value end -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_substr_String_result_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -lw $t1, -0($fp) -lw $t2, -12($fp) -# Allocating memory for the buffer -li $a0, 356 -li $v0, 9 -syscall -move $t2, $v0 -lw $t3, -8($fp) -# Getting the substring of a node -# Move to the first position in the string -li $v0, 0 -move $t8, $t3 -start_4: -lb $t9, 0($t8) -beqz $t9, error_4 -addi $v0, 1 -bgt $v0, $t0, end_len_4 -addi $t8, 1 -j start_4 -end_len_4: -# Saving dest to iterate over him -move $v0, $t2 -loop_4: -sub $t9, $v0, $t2 -beq $t9, $t1, end_4 -lb $t9, 0($t8) -beqz $t9, error_4 -sb $t9, 0($v0) -addi $t8, $t8, 1 -addi $v0, $v0, 1 -j loop_4 -error_4: -la $a0, index_error -li $v0, 4 -move $a0, $t3 -syscall -li $v0, 1 -move $a0, $t0 -syscall -li $v0, 1 -move $a0, $t1 -syscall -j .raise -end_4: -sb $0, 0($v0) -move $v0, $t2 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -0($fp) -sw $t2, -12($fp) -sw $t3, -8($fp) -# Removing all locals from stack -addiu $sp, $sp, 16 -jr $ra - - -function_type_name_String: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_type_name_String_result_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -# Saves in local_type_name_String_result_0 type_String -la $t0, type_String -move $v0, $t0 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_copy_String: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_copy_String_result_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -lw $t1, -4($fp) -# Allocating memory for the buffer -li $a0, 356 -li $v0, 9 -syscall -move $t1, $v0 -# Copy the first string to dest -move $a0, $t0 -move $a1, $t1 -sw $ra, ($sp) -addiu $sp, $sp, -4 -jal strcopier -sb $0, 0($v0) -addiu $sp, $sp, 4 -lw $ra, ($sp) -j finish_5 -finish_5: -move $v0, $t1 -# Empty all used registers and saves them to memory -sw $t0, -0($fp) -sw $t1, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_type_name_Int: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_type_name_Int_result_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -# Saves in local_type_name_Int_result_0 type_Int -la $t0, type_Int -move $v0, $t0 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_copy_Int: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_copy_Int_result_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -lw $t1, -4($fp) -# Moving self to local_copy_Int_result_0 -move $t1, $t0 -sw $t1, -4($fp) -move $v0, $t1 -# Empty all used registers and saves them to memory -sw $t0, -0($fp) -sw $t1, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_type_name_Bool: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_type_name_Bool_result_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -# Saves in local_type_name_Bool_result_0 type_Bool -la $t0, type_Bool -move $v0, $t0 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_copy_Bool: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_copy_result_Bool_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -lw $t1, -4($fp) -# Moving self to local_copy_result_Bool_0 -move $t1, $t0 -sw $t1, -4($fp) -move $v0, $t1 -# Empty all used registers and saves them to memory -sw $t0, -0($fp) -sw $t1, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_abort_String: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_abort_String_msg_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -# Saves in self string_abort -la $t0, string_abort -# Printing a string -li $v0, 4 -move $a0, $t0 -syscall -# Exiting the program -li $t8, 0 -li $v0, 17 -move $a0, $t8 -syscall -sw $t0, -0($fp) - -function_abort_Int: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_abort_Int_msg_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -# Saves in self int_abort -la $t0, int_abort -# Printing a string -li $v0, 4 -move $a0, $t0 -syscall -# Exiting the program -li $t8, 0 -li $v0, 17 -move $a0, $t8 -syscall -sw $t0, -0($fp) - -function_abort_Bool: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_abort_Bool_msg_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -# Saves in self bool_abort -la $t0, bool_abort -# Printing a string -li $v0, 4 -move $a0, $t0 -syscall -# Exiting the program -li $t8, 0 -li $v0, 17 -move $a0, $t8 -syscall -sw $t0, -0($fp) - -function_Book_Book: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_Book_Book_internal_0 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_Book_Book_internal_1 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_Book_Book_internal_2 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -# Saves in local_Book_Book_internal_0 data_1 -la $t0, data_1 -lw $t1, -0($fp) -# self . title <- SET local_Book_Book_internal_0 -sw $t0, 12($t1) -lw $t2, -8($fp) -# Saves in local_Book_Book_internal_1 data_2 -la $t2, data_2 -# self . author <- SET local_Book_Book_internal_1 -sw $t2, 16($t1) -lw $t3, -12($fp) -# Moving self to local_Book_Book_internal_2 -move $t3, $t1 -sw $t3, -12($fp) -move $v0, $t3 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -0($fp) -sw $t2, -8($fp) -sw $t3, -12($fp) -# Removing all locals from stack -addiu $sp, $sp, 16 -jr $ra - - -function_initBook_Book: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Pops the register with the param value title_p -addiu $fp, $fp, 4 -# Pops the register with the param value author_p -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_initBook_Book_internal_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -lw $t1, -8($fp) -# self . title <- SET title_p -sw $t0, 12($t1) -lw $t2, -0($fp) -# self . author <- SET author_p -sw $t2, 16($t1) -lw $t3, -12($fp) -# Moving self to local_initBook_Book_internal_0 -move $t3, $t1 -sw $t3, -12($fp) -move $v0, $t3 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -8($fp) -sw $t2, -0($fp) -sw $t3, -12($fp) -# Removing all locals from stack -addiu $sp, $sp, 16 -jr $ra - - -function_print_Book: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_print_Book_internal_0 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_1 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_title_2 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_3 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_4 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_5 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_6 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_7 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_8 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_9 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_10 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_11 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_author_12 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_13 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_14 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_15 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_16 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_17 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_18 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_19 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Book_internal_20 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -# Saves in local_print_Book_internal_0 data_3 -la $t0, data_3 -lw $t1, -0($fp) -lw $t2, -8($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t1) -lw $a0, 8($t9) -# Saves in t8 the direction of function_out_string_IO -lw $t8, 16($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -sw $t1, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -0($fp) -sw $t2, -8($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -8($fp) -# saves the return value -move $t0, $v0 -lw $t1, -0($fp) -lw $t2, -12($fp) -# local_print_Book_title_2 <- GET self . title -lw $t2, 12($t1) -lw $t3, -20($fp) -# local_print_Book_internal_4 <- Type of local_print_Book_internal_1 -lw $t3, 0($t0) -lw $t4, -24($fp) -# Saves in local_print_Book_internal_5 data_0 -la $t4, data_0 -# local_print_Book_internal_4 <- local_print_Book_internal_4 = local_print_Book_internal_5 -move $t8, $t3 -move $t9, $t4 -loop_6: -lb $a0, ($t8) -lb $a1, ($t9) -beqz $a0, check_6 -beqz $a1, mismatch_6 -seq $v0, $a0, $a1 -beqz $v0, mismatch_6 -addi $t8, $t8, 1 -addi $t9, $t9, 1 -j loop_6 -mismatch_6: -li $v0, 0 -j end_6 -check_6: -bnez $a1, mismatch_6 -li $v0, 1 -end_6: -move $t3, $v0 -# If not local_print_Book_internal_4 goto continue__83 -sw $t0, -8($fp) -sw $t1, -0($fp) -sw $t2, -12($fp) -sw $t3, -20($fp) -sw $t4, -24($fp) -beqz $t3, continue__83 -la $a0, dispatch_error -j .raise -continue__83: -lw $t0, -8($fp) -lw $t1, -16($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_out_string_IO -lw $t8, 16($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -lw $t2, -12($fp) -sw $t2, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -8($fp) -sw $t1, -16($fp) -sw $t2, -12($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -16($fp) -# saves the return value -move $t0, $v0 -lw $t1, -28($fp) -# Saves in local_print_Book_internal_6 data_4 -la $t1, data_4 -lw $t2, -36($fp) -# local_print_Book_internal_8 <- Type of local_print_Book_internal_3 -lw $t2, 0($t0) -lw $t3, -40($fp) -# Saves in local_print_Book_internal_9 data_0 -la $t3, data_0 -# local_print_Book_internal_8 <- local_print_Book_internal_8 = local_print_Book_internal_9 -move $t8, $t2 -move $t9, $t3 -loop_7: -lb $a0, ($t8) -lb $a1, ($t9) -beqz $a0, check_7 -beqz $a1, mismatch_7 -seq $v0, $a0, $a1 -beqz $v0, mismatch_7 -addi $t8, $t8, 1 -addi $t9, $t9, 1 -j loop_7 -mismatch_7: -li $v0, 0 -j end_7 -check_7: -bnez $a1, mismatch_7 -li $v0, 1 -end_7: -move $t2, $v0 -# If not local_print_Book_internal_8 goto continue__99 -sw $t0, -16($fp) -sw $t1, -28($fp) -sw $t2, -36($fp) -sw $t3, -40($fp) -beqz $t2, continue__99 -la $a0, dispatch_error -j .raise -continue__99: -lw $t0, -16($fp) -lw $t1, -32($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_out_string_IO -lw $t8, 16($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -lw $t2, -28($fp) -sw $t2, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -16($fp) -sw $t1, -32($fp) -sw $t2, -28($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -32($fp) -# saves the return value -move $t0, $v0 -lw $t1, -44($fp) -# Saves in local_print_Book_internal_10 data_5 -la $t1, data_5 -lw $t2, -0($fp) -lw $t3, -48($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t2) -lw $a0, 8($t9) -# Saves in t8 the direction of function_out_string_IO -lw $t8, 16($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -sw $t1, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -sw $t2, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -32($fp) -sw $t1, -44($fp) -sw $t2, -0($fp) -sw $t3, -48($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -48($fp) -# saves the return value -move $t0, $v0 -lw $t1, -0($fp) -lw $t2, -52($fp) -# local_print_Book_author_12 <- GET self . author -lw $t2, 16($t1) -lw $t3, -60($fp) -# local_print_Book_internal_14 <- Type of local_print_Book_internal_11 -lw $t3, 0($t0) -lw $t4, -64($fp) -# Saves in local_print_Book_internal_15 data_0 -la $t4, data_0 -# local_print_Book_internal_14 <- local_print_Book_internal_14 = local_print_Book_internal_15 -move $t8, $t3 -move $t9, $t4 -loop_8: -lb $a0, ($t8) -lb $a1, ($t9) -beqz $a0, check_8 -beqz $a1, mismatch_8 -seq $v0, $a0, $a1 -beqz $v0, mismatch_8 -addi $t8, $t8, 1 -addi $t9, $t9, 1 -j loop_8 -mismatch_8: -li $v0, 0 -j end_8 -check_8: -bnez $a1, mismatch_8 -li $v0, 1 -end_8: -move $t3, $v0 -# If not local_print_Book_internal_14 goto continue__121 -sw $t0, -48($fp) -sw $t1, -0($fp) -sw $t2, -52($fp) -sw $t3, -60($fp) -sw $t4, -64($fp) -beqz $t3, continue__121 -la $a0, dispatch_error -j .raise -continue__121: -lw $t0, -48($fp) -lw $t1, -56($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_out_string_IO -lw $t8, 16($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -lw $t2, -52($fp) -sw $t2, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -48($fp) -sw $t1, -56($fp) -sw $t2, -52($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -56($fp) -# saves the return value -move $t0, $v0 -lw $t1, -68($fp) -# Saves in local_print_Book_internal_16 data_6 -la $t1, data_6 -lw $t2, -76($fp) -# local_print_Book_internal_18 <- Type of local_print_Book_internal_13 -lw $t2, 0($t0) -lw $t3, -80($fp) -# Saves in local_print_Book_internal_19 data_0 -la $t3, data_0 -# local_print_Book_internal_18 <- local_print_Book_internal_18 = local_print_Book_internal_19 -move $t8, $t2 -move $t9, $t3 -loop_9: -lb $a0, ($t8) -lb $a1, ($t9) -beqz $a0, check_9 -beqz $a1, mismatch_9 -seq $v0, $a0, $a1 -beqz $v0, mismatch_9 -addi $t8, $t8, 1 -addi $t9, $t9, 1 -j loop_9 -mismatch_9: -li $v0, 0 -j end_9 -check_9: -bnez $a1, mismatch_9 -li $v0, 1 -end_9: -move $t2, $v0 -# If not local_print_Book_internal_18 goto continue__137 -sw $t0, -56($fp) -sw $t1, -68($fp) -sw $t2, -76($fp) -sw $t3, -80($fp) -beqz $t2, continue__137 -la $a0, dispatch_error -j .raise -continue__137: -lw $t0, -56($fp) -lw $t1, -72($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_out_string_IO -lw $t8, 16($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -lw $t2, -68($fp) -sw $t2, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -56($fp) -sw $t1, -72($fp) -sw $t2, -68($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -72($fp) -# saves the return value -move $t0, $v0 -lw $t1, -0($fp) -lw $t2, -84($fp) -# Moving self to local_print_Book_internal_20 -move $t2, $t1 -sw $t2, -84($fp) -move $v0, $t2 -# Empty all used registers and saves them to memory -sw $t0, -72($fp) -sw $t1, -0($fp) -sw $t2, -84($fp) -# Removing all locals from stack -addiu $sp, $sp, 88 -jr $ra - - -function_Article_Article: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_Article_Article_internal_0 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_Article_Article_internal_1 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_Article_Article_internal_2 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_Article_Article_internal_3 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -# Saves in local_Article_Article_internal_0 data_7 -la $t0, data_7 -lw $t1, -0($fp) -# self . title <- SET local_Article_Article_internal_0 -sw $t0, 12($t1) -lw $t2, -8($fp) -# Saves in local_Article_Article_internal_1 data_8 -la $t2, data_8 -# self . author <- SET local_Article_Article_internal_1 -sw $t2, 16($t1) -lw $t3, -12($fp) -# Saves in local_Article_Article_internal_2 data_9 -la $t3, data_9 -# self . per_title <- SET local_Article_Article_internal_2 -sw $t3, 20($t1) -lw $t4, -16($fp) -# Moving self to local_Article_Article_internal_3 -move $t4, $t1 -sw $t4, -16($fp) -move $v0, $t4 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -0($fp) -sw $t2, -8($fp) -sw $t3, -12($fp) -sw $t4, -16($fp) -# Removing all locals from stack -addiu $sp, $sp, 20 -jr $ra - - -function_initArticle_Article: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Pops the register with the param value title_p -addiu $fp, $fp, 4 -# Pops the register with the param value author_p -addiu $fp, $fp, 4 -# Pops the register with the param value per_title_p -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_initArticle_Article_internal_0 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_initArticle_Article_internal_1 to the stack -addiu $sp, $sp, -4 -lw $t0, -12($fp) -lw $t1, -16($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_initBook_Book -lw $t8, 32($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -lw $t2, -4($fp) -sw $t2, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -lw $t3, -8($fp) -sw $t3, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -12($fp) -sw $t1, -16($fp) -sw $t2, -4($fp) -sw $t3, -8($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -16($fp) -# saves the return value -move $t0, $v0 -lw $t1, -0($fp) -lw $t2, -12($fp) -# self . per_title <- SET per_title_p -sw $t1, 20($t2) -lw $t3, -20($fp) -# Moving self to local_initArticle_Article_internal_1 -move $t3, $t2 -sw $t3, -20($fp) -move $v0, $t3 -# Empty all used registers and saves them to memory -sw $t0, -16($fp) -sw $t1, -0($fp) -sw $t2, -12($fp) -sw $t3, -20($fp) -# Removing all locals from stack -addiu $sp, $sp, 24 -jr $ra - - -function_print_Article: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_print_Article_internal_0 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Article_internal_1 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Article_internal_2 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Article_internal_3 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Article_internal_4 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Article_per_title_5 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Article_internal_6 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Article_internal_7 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Article_internal_8 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Article_internal_9 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Article_internal_10 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Article_internal_11 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Article_internal_12 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_Article_internal_13 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -lw $t1, -8($fp) -# local_print_Article_internal_1 <- Type of self -lw $t1, 0($t0) -lw $t2, -12($fp) -# Saves in local_print_Article_internal_2 data_0 -la $t2, data_0 -# local_print_Article_internal_1 <- local_print_Article_internal_1 = local_print_Article_internal_2 -move $t8, $t1 -move $t9, $t2 -loop_10: -lb $a0, ($t8) -lb $a1, ($t9) -beqz $a0, check_10 -beqz $a1, mismatch_10 -seq $v0, $a0, $a1 -beqz $v0, mismatch_10 -addi $t8, $t8, 1 -addi $t9, $t9, 1 -j loop_10 -mismatch_10: -li $v0, 0 -j end_10 -check_10: -bnez $a1, mismatch_10 -li $v0, 1 -end_10: -move $t1, $v0 -# If not local_print_Article_internal_1 goto continue__185 -sw $t0, -0($fp) -sw $t1, -8($fp) -sw $t2, -12($fp) -beqz $t1, continue__185 -la $a0, dispatch_error -j .raise -continue__185: -lw $t0, -4($fp) -# Static Dispatch of the method print -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -lw $t1, -0($fp) -sw $t1, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -0($fp) -# This function will consume the arguments -jal function_print_Book -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -4($fp) -# saves the return value -move $t0, $v0 -lw $t1, -16($fp) -# Saves in local_print_Article_internal_3 data_10 -la $t1, data_10 -lw $t2, -0($fp) -lw $t3, -20($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t2) -lw $a0, 8($t9) -# Saves in t8 the direction of function_out_string_IO -lw $t8, 16($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -sw $t1, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -sw $t2, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -16($fp) -sw $t2, -0($fp) -sw $t3, -20($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -20($fp) -# saves the return value -move $t0, $v0 -lw $t1, -0($fp) -lw $t2, -24($fp) -# local_print_Article_per_title_5 <- GET self . per_title -lw $t2, 20($t1) -lw $t3, -32($fp) -# local_print_Article_internal_7 <- Type of local_print_Article_internal_4 -lw $t3, 0($t0) -lw $t4, -36($fp) -# Saves in local_print_Article_internal_8 data_0 -la $t4, data_0 -# local_print_Article_internal_7 <- local_print_Article_internal_7 = local_print_Article_internal_8 -move $t8, $t3 -move $t9, $t4 -loop_11: -lb $a0, ($t8) -lb $a1, ($t9) -beqz $a0, check_11 -beqz $a1, mismatch_11 -seq $v0, $a0, $a1 -beqz $v0, mismatch_11 -addi $t8, $t8, 1 -addi $t9, $t9, 1 -j loop_11 -mismatch_11: -li $v0, 0 -j end_11 -check_11: -bnez $a1, mismatch_11 -li $v0, 1 -end_11: -move $t3, $v0 -# If not local_print_Article_internal_7 goto continue__207 -sw $t0, -20($fp) -sw $t1, -0($fp) -sw $t2, -24($fp) -sw $t3, -32($fp) -sw $t4, -36($fp) -beqz $t3, continue__207 -la $a0, dispatch_error -j .raise -continue__207: -lw $t0, -20($fp) -lw $t1, -28($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_out_string_IO -lw $t8, 16($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -lw $t2, -24($fp) -sw $t2, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -20($fp) -sw $t1, -28($fp) -sw $t2, -24($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -28($fp) -# saves the return value -move $t0, $v0 -lw $t1, -40($fp) -# Saves in local_print_Article_internal_9 data_11 -la $t1, data_11 -lw $t2, -48($fp) -# local_print_Article_internal_11 <- Type of local_print_Article_internal_6 -lw $t2, 0($t0) -lw $t3, -52($fp) -# Saves in local_print_Article_internal_12 data_0 -la $t3, data_0 -# local_print_Article_internal_11 <- local_print_Article_internal_11 = local_print_Article_internal_12 -move $t8, $t2 -move $t9, $t3 -loop_12: -lb $a0, ($t8) -lb $a1, ($t9) -beqz $a0, check_12 -beqz $a1, mismatch_12 -seq $v0, $a0, $a1 -beqz $v0, mismatch_12 -addi $t8, $t8, 1 -addi $t9, $t9, 1 -j loop_12 -mismatch_12: -li $v0, 0 -j end_12 -check_12: -bnez $a1, mismatch_12 -li $v0, 1 -end_12: -move $t2, $v0 -# If not local_print_Article_internal_11 goto continue__223 -sw $t0, -28($fp) -sw $t1, -40($fp) -sw $t2, -48($fp) -sw $t3, -52($fp) -beqz $t2, continue__223 -la $a0, dispatch_error -j .raise -continue__223: -lw $t0, -28($fp) -lw $t1, -44($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_out_string_IO -lw $t8, 16($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -lw $t2, -40($fp) -sw $t2, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -28($fp) -sw $t1, -44($fp) -sw $t2, -40($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -44($fp) -# saves the return value -move $t0, $v0 -lw $t1, -0($fp) -lw $t2, -56($fp) -# Moving self to local_print_Article_internal_13 -move $t2, $t1 -sw $t2, -56($fp) -move $v0, $t2 -# Empty all used registers and saves them to memory -sw $t0, -44($fp) -sw $t1, -0($fp) -sw $t2, -56($fp) -# Removing all locals from stack -addiu $sp, $sp, 60 -jr $ra - - -function_isNil_BookList: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_isNil_BookList_internal_0 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_isNil_BookList_internal_1 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -lw $t1, -4($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_abort_Object -lw $t8, 4($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -0($fp) -sw $t1, -4($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -4($fp) -# saves the return value -move $t0, $v0 -lw $t1, -8($fp) -# Moving 1 to local_isNil_BookList_internal_1 -li $t1, 1 -sw $t1, -8($fp) -move $v0, $t1 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -8($fp) -# Removing all locals from stack -addiu $sp, $sp, 12 -jr $ra - - -function_cons_BookList: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Pops the register with the param value hd -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_cons_BookList_new_cell_0 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_cons_BookList_internal_1 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_cons_BookList_internal_2 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_cons_BookList_internal_3 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_cons_BookList_internal_4 to the stack -addiu $sp, $sp, -4 -lw $t0, -12($fp) -# Syscall to allocate memory of the object entry in heap -li $v0, 9 -li $a0, 20 -syscall -# Loads the name of the variable and saves the name like the first field -la $t9, type_Cons -sw $t9, 0($v0) -# Saves the size of the node -li $t9, 20 -sw $t9, 4($v0) -move $t0, $v0 -# Adding Type Info addr -la $t8, types -lw $v0, 32($t8) -sw $v0, 8($t0) -# Static Dispatch of the method Cons -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -12($fp) -# This function will consume the arguments -jal function_Cons_Cons -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -12($fp) -# saves the return value -move $t0, $v0 -lw $t1, -8($fp) -# Moving local_cons_BookList_internal_1 to local_cons_BookList_new_cell_0 -move $t1, $t0 -sw $t1, -8($fp) -lw $t2, -20($fp) -# local_cons_BookList_internal_3 <- Type of local_cons_BookList_new_cell_0 -lw $t2, 0($t1) -lw $t3, -24($fp) -# Saves in local_cons_BookList_internal_4 data_0 -la $t3, data_0 -# local_cons_BookList_internal_3 <- local_cons_BookList_internal_3 = local_cons_BookList_internal_4 -move $t8, $t2 -move $t9, $t3 -loop_13: -lb $a0, ($t8) -lb $a1, ($t9) -beqz $a0, check_13 -beqz $a1, mismatch_13 -seq $v0, $a0, $a1 -beqz $v0, mismatch_13 -addi $t8, $t8, 1 -addi $t9, $t9, 1 -j loop_13 -mismatch_13: -li $v0, 0 -j end_13 -check_13: -bnez $a1, mismatch_13 -li $v0, 1 -end_13: -move $t2, $v0 -# If not local_cons_BookList_internal_3 goto continue__256 -sw $t0, -12($fp) -sw $t1, -8($fp) -sw $t2, -20($fp) -sw $t3, -24($fp) -beqz $t2, continue__256 -la $a0, dispatch_error -j .raise -continue__256: -lw $t0, -8($fp) -lw $t1, -16($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_init_Cons -lw $t8, 52($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -lw $t2, -4($fp) -sw $t2, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -lw $t3, -0($fp) -sw $t3, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -8($fp) -sw $t1, -16($fp) -sw $t2, -4($fp) -sw $t3, -0($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -16($fp) -# saves the return value -move $t0, $v0 -move $v0, $t0 -# Empty all used registers and saves them to memory -sw $t0, -16($fp) -# Removing all locals from stack -addiu $sp, $sp, 28 -jr $ra - - -function_car_BookList: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_car_BookList_internal_0 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_car_BookList_internal_1 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_car_BookList_internal_2 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -lw $t1, -4($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_abort_Object -lw $t8, 4($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -0($fp) -sw $t1, -4($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -4($fp) -# saves the return value -move $t0, $v0 -lw $t1, -8($fp) -# Syscall to allocate memory of the object entry in heap -li $v0, 9 -li $a0, 20 -syscall -# Loads the name of the variable and saves the name like the first field -la $t9, type_Book -sw $t9, 0($v0) -# Saves the size of the node -li $t9, 20 -sw $t9, 4($v0) -move $t1, $v0 -# Adding Type Info addr -la $t8, types -lw $v0, 20($t8) -sw $v0, 8($t1) -# Static Dispatch of the method Book -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -sw $t1, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -8($fp) -# This function will consume the arguments -jal function_Book_Book -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -8($fp) -# saves the return value -move $t0, $v0 -lw $t1, -12($fp) -# Moving local_car_BookList_internal_1 to local_car_BookList_internal_2 -move $t1, $t0 -sw $t1, -12($fp) -move $v0, $t1 -# Empty all used registers and saves them to memory -sw $t0, -8($fp) -sw $t1, -12($fp) -# Removing all locals from stack -addiu $sp, $sp, 16 -jr $ra - - -function_cdr_BookList: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_cdr_BookList_internal_0 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_cdr_BookList_internal_1 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_cdr_BookList_internal_2 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -lw $t1, -4($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_abort_Object -lw $t8, 4($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -0($fp) -sw $t1, -4($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -4($fp) -# saves the return value -move $t0, $v0 -lw $t1, -8($fp) -# Syscall to allocate memory of the object entry in heap -li $v0, 9 -li $a0, 12 -syscall -# Loads the name of the variable and saves the name like the first field -la $t9, type_BookList -sw $t9, 0($v0) -# Saves the size of the node -li $t9, 12 -sw $t9, 4($v0) -move $t1, $v0 -# Adding Type Info addr -la $t8, types -lw $v0, 28($t8) -sw $v0, 8($t1) -lw $t2, -12($fp) -# Moving local_cdr_BookList_internal_1 to local_cdr_BookList_internal_2 -move $t2, $t1 -sw $t2, -12($fp) -move $v0, $t2 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -8($fp) -sw $t2, -12($fp) -# Removing all locals from stack -addiu $sp, $sp, 16 -jr $ra - - -function_print_list_BookList: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_print_list_BookList_internal_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -lw $t1, -4($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_abort_Object -lw $t8, 4($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -0($fp) -sw $t1, -4($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -4($fp) -# saves the return value -move $t0, $v0 -move $v0, $t0 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_Cons_Cons: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_Cons_Cons_xcar_0 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_Cons_Cons_xcdr_1 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_Cons_Cons_internal_2 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -# Initialize void node -li $a0, 4 -li $v0, 9 -syscall -# Loads the name of the variable and saves the name like the first field -la $t9, type_Void -sw $t9, 0($v0) -move $t0, $v0 -lw $t1, -0($fp) -# self . xcar <- SET local_Cons_Cons_xcar_0 -sw $t0, 12($t1) -lw $t2, -8($fp) -# Initialize void node -li $a0, 4 -li $v0, 9 -syscall -# Loads the name of the variable and saves the name like the first field -la $t9, type_Void -sw $t9, 0($v0) -move $t2, $v0 -# self . xcdr <- SET local_Cons_Cons_xcdr_1 -sw $t2, 16($t1) -lw $t3, -12($fp) -# Moving self to local_Cons_Cons_internal_2 -move $t3, $t1 -sw $t3, -12($fp) -move $v0, $t3 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -0($fp) -sw $t2, -8($fp) -sw $t3, -12($fp) -# Removing all locals from stack -addiu $sp, $sp, 16 -jr $ra - - -function_isNil_Cons: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_isNil_Cons_internal_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -# Moving 0 to local_isNil_Cons_internal_0 -li $t0, 0 -sw $t0, -4($fp) -move $v0, $t0 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_init_Cons: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Pops the register with the param value hd -addiu $fp, $fp, 4 -# Pops the register with the param value tl -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_init_Cons_internal_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -lw $t1, -8($fp) -# self . xcar <- SET hd -sw $t0, 12($t1) -lw $t2, -0($fp) -# self . xcdr <- SET tl -sw $t2, 16($t1) -lw $t3, -12($fp) -# Moving self to local_init_Cons_internal_0 -move $t3, $t1 -sw $t3, -12($fp) -move $v0, $t3 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -8($fp) -sw $t2, -0($fp) -sw $t3, -12($fp) -# Removing all locals from stack -addiu $sp, $sp, 16 -jr $ra - - -function_car_Cons: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_car_Cons_xcar_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -lw $t1, -4($fp) -# local_car_Cons_xcar_0 <- GET self . xcar -lw $t1, 12($t0) -move $v0, $t1 -# Empty all used registers and saves them to memory -sw $t0, -0($fp) -sw $t1, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_cdr_Cons: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_cdr_Cons_xcdr_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -lw $t1, -4($fp) -# local_cdr_Cons_xcdr_0 <- GET self . xcdr -lw $t1, 16($t0) -move $v0, $t1 -# Empty all used registers and saves them to memory -sw $t0, -0($fp) -sw $t1, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_print_list_Cons: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_print_list_Cons_xcar_0 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_internal_1 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_internal_2 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_internal_3 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_internal_4 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_internal_5 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_internal_6 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_internal_7 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_dummy_8 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_internal_9 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_internal_10 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_internal_11 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_dummy_12 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_internal_13 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_internal_14 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_xcdr_15 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_internal_16 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_internal_17 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_internal_18 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_print_list_Cons_internal_19 to the stack -addiu $sp, $sp, -4 -lw $t0, -0($fp) -lw $t1, -4($fp) -# local_print_list_Cons_xcar_0 <- GET self . xcar -lw $t1, 12($t0) -lw $t2, -12($fp) -# local_print_list_Cons_internal_2 <- Type of local_print_list_Cons_xcar_0 -lw $t2, 0($t1) -lw $t3, -16($fp) -# Saves in local_print_list_Cons_internal_3 data_0 -la $t3, data_0 -# local_print_list_Cons_internal_2 <- local_print_list_Cons_internal_2 = local_print_list_Cons_internal_3 -move $t8, $t2 -move $t9, $t3 -loop_14: -lb $a0, ($t8) -lb $a1, ($t9) -beqz $a0, check_14 -beqz $a1, mismatch_14 -seq $v0, $a0, $a1 -beqz $v0, mismatch_14 -addi $t8, $t8, 1 -addi $t9, $t9, 1 -j loop_14 -mismatch_14: -li $v0, 0 -j end_14 -check_14: -bnez $a1, mismatch_14 -li $v0, 1 -end_14: -move $t2, $v0 -# If not local_print_list_Cons_internal_2 goto continue__335 -sw $t0, -0($fp) -sw $t1, -4($fp) -sw $t2, -12($fp) -sw $t3, -16($fp) -beqz $t2, continue__335 -la $a0, dispatch_error -j .raise -continue__335: -lw $t0, -4($fp) -lw $t1, -8($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_print_Book -lw $t8, 36($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -8($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -8($fp) -# saves the return value -move $t0, $v0 -lw $t1, -24($fp) -# local_print_list_Cons_internal_5 <- Type of local_print_list_Cons_internal_1 -lw $t1, 0($t0) -lw $t2, -28($fp) -# Saves in local_print_list_Cons_internal_6 data_0 -la $t2, data_0 -# local_print_list_Cons_internal_5 <- local_print_list_Cons_internal_5 = local_print_list_Cons_internal_6 -move $t8, $t1 -move $t9, $t2 -loop_15: -lb $a0, ($t8) -lb $a1, ($t9) -beqz $a0, check_15 -beqz $a1, mismatch_15 -seq $v0, $a0, $a1 -beqz $v0, mismatch_15 -addi $t8, $t8, 1 -addi $t9, $t9, 1 -j loop_15 -mismatch_15: -li $v0, 0 -j end_15 -check_15: -bnez $a1, mismatch_15 -li $v0, 1 -end_15: -move $t1, $v0 -# If local_print_list_Cons_internal_5 goto error__346 -sw $t0, -8($fp) -sw $t1, -24($fp) -sw $t2, -28($fp) -bnez $t1, error__346 -lw $t0, -8($fp) -lw $t1, -32($fp) -la $t9, type_Article -lw $v0, 8($t0) -loop_16: -move $t8, $v0 -beqz $t8, false_16 -lw $v1, 0($t8) -beq $t9, $v1, true_16 -lw $v0, 4($t8) -j loop_16 -true_16: -li $t1, 1 -j end_16 -false_16: -li $t1, 0 -end_16: -# If not local_print_list_Cons_internal_7 goto next__352_0 -sw $t0, -8($fp) -sw $t1, -32($fp) -beqz $t1, next__352_0 -lw $t0, -8($fp) -lw $t1, -36($fp) -# Moving local_print_list_Cons_internal_1 to local_print_list_Cons_dummy_8 -move $t1, $t0 -sw $t1, -36($fp) -lw $t2, -40($fp) -# Saves in local_print_list_Cons_internal_9 data_12 -la $t2, data_12 -lw $t3, -0($fp) -lw $t4, -44($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t3) -lw $a0, 8($t9) -# Saves in t8 the direction of function_out_string_IO -lw $t8, 16($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -sw $t2, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -sw $t3, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -8($fp) -sw $t1, -36($fp) -sw $t2, -40($fp) -sw $t3, -0($fp) -sw $t4, -44($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -44($fp) -# saves the return value -move $t0, $v0 -lw $t1, -20($fp) -# Moving local_print_list_Cons_internal_10 to local_print_list_Cons_internal_4 -move $t1, $t0 -sw $t1, -20($fp) -sw $t0, -44($fp) -sw $t1, -20($fp) -j end__346 -next__352_0: -lw $t0, -8($fp) -lw $t1, -48($fp) -la $t9, type_Book -lw $v0, 8($t0) -loop_17: -move $t8, $v0 -beqz $t8, false_17 -lw $v1, 0($t8) -beq $t9, $v1, true_17 -lw $v0, 4($t8) -j loop_17 -true_17: -li $t1, 1 -j end_17 -false_17: -li $t1, 0 -end_17: -# If not local_print_list_Cons_internal_11 goto next__367_1 -sw $t0, -8($fp) -sw $t1, -48($fp) -beqz $t1, next__367_1 -lw $t0, -8($fp) -lw $t1, -52($fp) -# Moving local_print_list_Cons_internal_1 to local_print_list_Cons_dummy_12 -move $t1, $t0 -sw $t1, -52($fp) -lw $t2, -56($fp) -# Saves in local_print_list_Cons_internal_13 data_13 -la $t2, data_13 -lw $t3, -0($fp) -lw $t4, -60($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t3) -lw $a0, 8($t9) -# Saves in t8 the direction of function_out_string_IO -lw $t8, 16($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -sw $t2, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -sw $t3, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -8($fp) -sw $t1, -52($fp) -sw $t2, -56($fp) -sw $t3, -0($fp) -sw $t4, -60($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -60($fp) -# saves the return value -move $t0, $v0 -lw $t1, -20($fp) -# Moving local_print_list_Cons_internal_14 to local_print_list_Cons_internal_4 -move $t1, $t0 -sw $t1, -20($fp) -sw $t0, -60($fp) -sw $t1, -20($fp) -j end__346 -next__367_1: -la $a0, case_error -j .raise -error__346: -la $a0, case_void_error -j .raise -end__346: -lw $t0, -0($fp) -lw $t1, -64($fp) -# local_print_list_Cons_xcdr_15 <- GET self . xcdr -lw $t1, 16($t0) -lw $t2, -72($fp) -# local_print_list_Cons_internal_17 <- Type of local_print_list_Cons_xcdr_15 -lw $t2, 0($t1) -lw $t3, -76($fp) -# Saves in local_print_list_Cons_internal_18 data_0 -la $t3, data_0 -# local_print_list_Cons_internal_17 <- local_print_list_Cons_internal_17 = local_print_list_Cons_internal_18 -move $t8, $t2 -move $t9, $t3 -loop_18: -lb $a0, ($t8) -lb $a1, ($t9) -beqz $a0, check_18 -beqz $a1, mismatch_18 -seq $v0, $a0, $a1 -beqz $v0, mismatch_18 -addi $t8, $t8, 1 -addi $t9, $t9, 1 -j loop_18 -mismatch_18: -li $v0, 0 -j end_18 -check_18: -bnez $a1, mismatch_18 -li $v0, 1 -end_18: -move $t2, $v0 -# If not local_print_list_Cons_internal_17 goto continue__390 -sw $t0, -0($fp) -sw $t1, -64($fp) -sw $t2, -72($fp) -sw $t3, -76($fp) -beqz $t2, continue__390 -la $a0, dispatch_error -j .raise -continue__390: -lw $t0, -64($fp) -lw $t1, -68($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_print_list_BookList -lw $t8, 48($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -64($fp) -sw $t1, -68($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -68($fp) -# saves the return value -move $t0, $v0 -lw $t1, -80($fp) -# Moving local_print_list_Cons_internal_16 to local_print_list_Cons_internal_19 -move $t1, $t0 -sw $t1, -80($fp) -move $v0, $t1 -# Empty all used registers and saves them to memory -sw $t0, -68($fp) -sw $t1, -80($fp) -# Removing all locals from stack -addiu $sp, $sp, 84 -jr $ra - - -function_isNil_Nil: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_isNil_Nil_internal_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -# Moving 1 to local_isNil_Nil_internal_0 -li $t0, 1 -sw $t0, -4($fp) -move $v0, $t0 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_print_list_Nil: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_print_list_Nil_internal_0 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -# Moving 1 to local_print_list_Nil_internal_0 -li $t0, 1 -sw $t0, -4($fp) -# Initialize new node -li $a0, 12 -li $v0, 9 -syscall -la $t9, type_Bool -sw $t9, 0($v0) -li $t9, 12 -sw $t9, 4($v0) -move $t0, $v0 -# Saving the methods of object -# Adding Type Info addr -la $t8, types -lw $v0, 8($t8) -sw $v0, 8($t0) -move $v0, $t0 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -# Removing all locals from stack -addiu $sp, $sp, 8 -jr $ra - - -function_Main_Main: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_Main_Main_books_0 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_Main_Main_internal_1 to the stack -addiu $sp, $sp, -4 -lw $t0, -4($fp) -# Initialize void node -li $a0, 4 -li $v0, 9 -syscall -# Loads the name of the variable and saves the name like the first field -la $t9, type_Void -sw $t9, 0($v0) -move $t0, $v0 -lw $t1, -0($fp) -# self . books <- SET local_Main_Main_books_0 -sw $t0, 12($t1) -lw $t2, -8($fp) -# Moving self to local_Main_Main_internal_1 -move $t2, $t1 -sw $t2, -8($fp) -move $v0, $t2 -# Empty all used registers and saves them to memory -sw $t0, -4($fp) -sw $t1, -0($fp) -sw $t2, -8($fp) -# Removing all locals from stack -addiu $sp, $sp, 12 -jr $ra - - -function_main_Main: -# Gets the params from the stack -move $fp, $sp -# Pops the register with the param value self -addiu $fp, $fp, 4 -# Gets the frame pointer from the stack -# Updates stack pointer pushing local_main_Main_a_book_0 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_1 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_2 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_3 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_4 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_5 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_6 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_an_article_7 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_8 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_9 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_10 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_11 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_12 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_13 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_14 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_15 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_16 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_17 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_18 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_19 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_20 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_21 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_books_22 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_23 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_24 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_25 to the stack -addiu $sp, $sp, -4 -# Updates stack pointer pushing local_main_Main_internal_26 to the stack -addiu $sp, $sp, -4 -lw $t0, -8($fp) -# Syscall to allocate memory of the object entry in heap -li $v0, 9 -li $a0, 20 -syscall -# Loads the name of the variable and saves the name like the first field -la $t9, type_Book -sw $t9, 0($v0) -# Saves the size of the node -li $t9, 20 -sw $t9, 4($v0) -move $t0, $v0 -# Adding Type Info addr -la $t8, types -lw $v0, 20($t8) -sw $v0, 8($t0) -# Static Dispatch of the method Book -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -8($fp) -# This function will consume the arguments -jal function_Book_Book -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -8($fp) -# saves the return value -move $t0, $v0 -lw $t1, -12($fp) -# Saves in local_main_Main_internal_2 data_14 -la $t1, data_14 -lw $t2, -16($fp) -# Saves in local_main_Main_internal_3 data_15 -la $t2, data_15 -lw $t3, -24($fp) -# local_main_Main_internal_5 <- Type of local_main_Main_internal_1 -lw $t3, 0($t0) -lw $t4, -28($fp) -# Saves in local_main_Main_internal_6 data_0 -la $t4, data_0 -# local_main_Main_internal_5 <- local_main_Main_internal_5 = local_main_Main_internal_6 -move $t8, $t3 -move $t9, $t4 -loop_19: -lb $a0, ($t8) -lb $a1, ($t9) -beqz $a0, check_19 -beqz $a1, mismatch_19 -seq $v0, $a0, $a1 -beqz $v0, mismatch_19 -addi $t8, $t8, 1 -addi $t9, $t9, 1 -j loop_19 -mismatch_19: -li $v0, 0 -j end_19 -check_19: -bnez $a1, mismatch_19 -li $v0, 1 -end_19: -move $t3, $v0 -# If not local_main_Main_internal_5 goto continue__438 -sw $t0, -8($fp) -sw $t1, -12($fp) -sw $t2, -16($fp) -sw $t3, -24($fp) -sw $t4, -28($fp) -beqz $t3, continue__438 -la $a0, dispatch_error -j .raise -continue__438: -lw $t0, -8($fp) -lw $t1, -20($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_initBook_Book -lw $t8, 32($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -lw $t2, -16($fp) -sw $t2, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -lw $t3, -12($fp) -sw $t3, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -8($fp) -sw $t1, -20($fp) -sw $t2, -16($fp) -sw $t3, -12($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -20($fp) -# saves the return value -move $t0, $v0 -lw $t1, -4($fp) -# Moving local_main_Main_internal_4 to local_main_Main_a_book_0 -move $t1, $t0 -sw $t1, -4($fp) -lw $t2, -36($fp) -# Syscall to allocate memory of the object entry in heap -li $v0, 9 -li $a0, 24 -syscall -# Loads the name of the variable and saves the name like the first field -la $t9, type_Article -sw $t9, 0($v0) -# Saves the size of the node -li $t9, 24 -sw $t9, 4($v0) -move $t2, $v0 -# Adding Type Info addr -la $t8, types -lw $v0, 24($t8) -sw $v0, 8($t2) -# Static Dispatch of the method Article -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -sw $t2, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -20($fp) -sw $t1, -4($fp) -sw $t2, -36($fp) -# This function will consume the arguments -jal function_Article_Article -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -36($fp) -# saves the return value -move $t0, $v0 -lw $t1, -40($fp) -# Saves in local_main_Main_internal_9 data_16 -la $t1, data_16 -lw $t2, -44($fp) -# Saves in local_main_Main_internal_10 data_17 -la $t2, data_17 -lw $t3, -48($fp) -# Saves in local_main_Main_internal_11 data_18 -la $t3, data_18 -lw $t4, -56($fp) -# local_main_Main_internal_13 <- Type of local_main_Main_internal_8 -lw $t4, 0($t0) -lw $t5, -60($fp) -# Saves in local_main_Main_internal_14 data_0 -la $t5, data_0 -# local_main_Main_internal_13 <- local_main_Main_internal_13 = local_main_Main_internal_14 -move $t8, $t4 -move $t9, $t5 -loop_20: -lb $a0, ($t8) -lb $a1, ($t9) -beqz $a0, check_20 -beqz $a1, mismatch_20 -seq $v0, $a0, $a1 -beqz $v0, mismatch_20 -addi $t8, $t8, 1 -addi $t9, $t9, 1 -j loop_20 -mismatch_20: -li $v0, 0 -j end_20 -check_20: -bnez $a1, mismatch_20 -li $v0, 1 -end_20: -move $t4, $v0 -# If not local_main_Main_internal_13 goto continue__467 -sw $t0, -36($fp) -sw $t1, -40($fp) -sw $t2, -44($fp) -sw $t3, -48($fp) -sw $t4, -56($fp) -sw $t5, -60($fp) -beqz $t4, continue__467 -la $a0, dispatch_error -j .raise -continue__467: -lw $t0, -36($fp) -lw $t1, -52($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_initArticle_Article -lw $t8, 44($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -lw $t2, -48($fp) -sw $t2, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -lw $t3, -44($fp) -sw $t3, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -lw $t4, -40($fp) -sw $t4, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -36($fp) -sw $t1, -52($fp) -sw $t2, -48($fp) -sw $t3, -44($fp) -sw $t4, -40($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -52($fp) -# saves the return value -move $t0, $v0 -lw $t1, -32($fp) -# Moving local_main_Main_internal_12 to local_main_Main_an_article_7 -move $t1, $t0 -sw $t1, -32($fp) -lw $t2, -64($fp) -# Syscall to allocate memory of the object entry in heap -li $v0, 9 -li $a0, 12 -syscall -# Loads the name of the variable and saves the name like the first field -la $t9, type_Nil -sw $t9, 0($v0) -# Saves the size of the node -li $t9, 12 -sw $t9, 4($v0) -move $t2, $v0 -# Adding Type Info addr -la $t8, types -lw $v0, 36($t8) -sw $v0, 8($t2) -lw $t3, -72($fp) -# local_main_Main_internal_17 <- Type of local_main_Main_internal_15 -lw $t3, 0($t2) -lw $t4, -76($fp) -# Saves in local_main_Main_internal_18 data_0 -la $t4, data_0 -# local_main_Main_internal_17 <- local_main_Main_internal_17 = local_main_Main_internal_18 -move $t8, $t3 -move $t9, $t4 -loop_21: -lb $a0, ($t8) -lb $a1, ($t9) -beqz $a0, check_21 -beqz $a1, mismatch_21 -seq $v0, $a0, $a1 -beqz $v0, mismatch_21 -addi $t8, $t8, 1 -addi $t9, $t9, 1 -j loop_21 -mismatch_21: -li $v0, 0 -j end_21 -check_21: -bnez $a1, mismatch_21 -li $v0, 1 -end_21: -move $t3, $v0 -# If not local_main_Main_internal_17 goto continue__483 -sw $t0, -52($fp) -sw $t1, -32($fp) -sw $t2, -64($fp) -sw $t3, -72($fp) -sw $t4, -76($fp) -beqz $t3, continue__483 -la $a0, dispatch_error -j .raise -continue__483: -lw $t0, -64($fp) -lw $t1, -68($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_cons_BookList -lw $t8, 36($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -lw $t2, -4($fp) -sw $t2, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -64($fp) -sw $t1, -68($fp) -sw $t2, -4($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -68($fp) -# saves the return value -move $t0, $v0 -lw $t1, -84($fp) -# local_main_Main_internal_20 <- Type of local_main_Main_internal_16 -lw $t1, 0($t0) -lw $t2, -88($fp) -# Saves in local_main_Main_internal_21 data_0 -la $t2, data_0 -# local_main_Main_internal_20 <- local_main_Main_internal_20 = local_main_Main_internal_21 -move $t8, $t1 -move $t9, $t2 -loop_22: -lb $a0, ($t8) -lb $a1, ($t9) -beqz $a0, check_22 -beqz $a1, mismatch_22 -seq $v0, $a0, $a1 -beqz $v0, mismatch_22 -addi $t8, $t8, 1 -addi $t9, $t9, 1 -j loop_22 -mismatch_22: -li $v0, 0 -j end_22 -check_22: -bnez $a1, mismatch_22 -li $v0, 1 -end_22: -move $t1, $v0 -# If not local_main_Main_internal_20 goto continue__496 -sw $t0, -68($fp) -sw $t1, -84($fp) -sw $t2, -88($fp) -beqz $t1, continue__496 -la $a0, dispatch_error -j .raise -continue__496: -lw $t0, -68($fp) -lw $t1, -80($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_cons_BookList -lw $t8, 36($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -lw $t2, -32($fp) -sw $t2, ($sp) -addiu $sp, $sp, -4 -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -68($fp) -sw $t1, -80($fp) -sw $t2, -32($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -80($fp) -# saves the return value -move $t0, $v0 -lw $t1, -0($fp) -# self . books <- SET local_main_Main_internal_19 -sw $t0, 12($t1) -lw $t2, -92($fp) -# local_main_Main_books_22 <- GET self . books -lw $t2, 12($t1) -lw $t3, -100($fp) -# local_main_Main_internal_24 <- Type of local_main_Main_books_22 -lw $t3, 0($t2) -lw $t4, -104($fp) -# Saves in local_main_Main_internal_25 data_0 -la $t4, data_0 -# local_main_Main_internal_24 <- local_main_Main_internal_24 = local_main_Main_internal_25 -move $t8, $t3 -move $t9, $t4 -loop_23: -lb $a0, ($t8) -lb $a1, ($t9) -beqz $a0, check_23 -beqz $a1, mismatch_23 -seq $v0, $a0, $a1 -beqz $v0, mismatch_23 -addi $t8, $t8, 1 -addi $t9, $t9, 1 -j loop_23 -mismatch_23: -li $v0, 0 -j end_23 -check_23: -bnez $a1, mismatch_23 -li $v0, 1 -end_23: -move $t3, $v0 -# If not local_main_Main_internal_24 goto continue__511 -sw $t0, -80($fp) -sw $t1, -0($fp) -sw $t2, -92($fp) -sw $t3, -100($fp) -sw $t4, -104($fp) -beqz $t3, continue__511 -la $a0, dispatch_error -j .raise -continue__511: -lw $t0, -92($fp) -lw $t1, -96($fp) -# Find the actual name in the dispatch table -# Gets in a0 the actual direction of the dispatch table -lw $t9, 8($t0) -lw $a0, 8($t9) -# Saves in t8 the direction of function_print_list_BookList -lw $t8, 48($a0) -sw $fp, ($sp) -addiu $sp, $sp, -4 -sw $ra, ($sp) -addiu $sp, $sp, -4 -# Push the arguments to the stack -# The rest of the arguments are push into the stack -sw $t0, ($sp) -addiu $sp, $sp, -4 -# Empty all used registers and saves them to memory -sw $t0, -92($fp) -sw $t1, -96($fp) -# This function will consume the arguments -jal $t8 -# Pop ra register of return function of the stack -addiu $sp, $sp, 4 -lw $ra, ($sp) -# Pop fp register from the stack -addiu $sp, $sp, 4 -lw $fp, ($sp) -lw $t0, -96($fp) -# saves the return value -move $t0, $v0 -lw $t1, -108($fp) -# Moving local_main_Main_internal_23 to local_main_Main_internal_26 -move $t1, $t0 -sw $t1, -108($fp) -move $v0, $t1 -# Empty all used registers and saves them to memory -sw $t0, -96($fp) -sw $t1, -108($fp) -# Removing all locals from stack -addiu $sp, $sp, 112 -jr $ra - -# Raise exception method -.raise: -li $v0, 4 -syscall -li $v0, 17 -li $a0, 1 -syscall - -.data -abort_msg: .asciiz "Abort called from class " -new_line: .asciiz " -" -string_abort: .asciiz "Abort called from class String -" -int_abort: .asciiz "Abort called from class Int -" -bool_abort: .asciiz "Abort called from class Bool -" -type_Object: .asciiz "Object" -type_IO: .asciiz "IO" -type_String: .asciiz "String" -type_Int: .asciiz "Int" -type_Bool: .asciiz "Bool" -type_Book: .asciiz "Book" -type_Article: .asciiz "Article" -type_BookList: .asciiz "BookList" -type_Cons: .asciiz "Cons" -type_Nil: .asciiz "Nil" -type_Main: .asciiz "Main" -methods: .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -type_Void: .asciiz "Void" -types: .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -data_0: .asciiz "Void" -data_1: .asciiz "" -data_2: .asciiz "" -data_3: .asciiz "title: " -data_4: .asciiz " -" -data_5: .asciiz "author: " -data_6: .asciiz " -" -data_7: .asciiz "" -data_8: .asciiz "" -data_9: .asciiz "" -data_10: .asciiz "periodical: " -data_11: .asciiz " -" -data_12: .asciiz "- dynamic type was Article - -" -data_13: .asciiz "- dynamic type was Book - -" -data_14: .asciiz "Compilers, Principles, Techniques, and Tools" -data_15: .asciiz "Aho, Sethi, and Ullman" -data_16: .asciiz "The Top 100 CD_ROMs" -data_17: .asciiz "Ulanoff" -data_18: .asciiz "PC Magazine" -zero_error: .asciiz "Division by zero error -" -case_void_error: .asciiz "Case on void error -" -dispatch_error: .asciiz "Dispatch on void error -" -case_error: .asciiz "Case statement without a matching branch error -" -index_error: .asciiz "Substring out of range error -" -heap_error: .asciiz "Heap overflow error -" \ No newline at end of file diff --git a/src/cool/codegen/__init__.py b/src/cool/codegen/__init__.py index 7ccd228f2..ded6df751 100644 --- a/src/cool/codegen/__init__.py +++ b/src/cool/codegen/__init__.py @@ -1 +1 @@ -from .codegen import * \ No newline at end of file +from .codegen import * diff --git a/src/cool/codegen/__main__.py b/src/cool/codegen/__main__.py index a92a9f72d..e69de29bb 100644 --- a/src/cool/codegen/__main__.py +++ b/src/cool/codegen/__main__.py @@ -1,20 +0,0 @@ -from .cil_visitor import CilVisitor -from .mips_visitor import MipsVisitor -from ..semantic.helpers import Context - - -def run_pipeline(context: Context, ast, scope): - cool_to_cil = CilVisitor(context) - cil_ast = cool_to_cil.visit(ast, scope) - - inherit_graph = context.build_inheritance_graph() - - data_code, text_code = MipsVisitor(inherit_graph).visit(cil_ast) - - return make_code(data_code, text_code) - - -def make_code(data_code, text_code) -> str: - ans = '\n'.join(text_code) + '\n' + '\n'.join(data_code) - - return ans diff --git a/src/cool/codegen/cil_visitor.py b/src/cool/codegen/cil_visitor.py index 33a3427af..a12d946cd 100644 --- a/src/cool/codegen/cil_visitor.py +++ b/src/cool/codegen/cil_visitor.py @@ -38,8 +38,6 @@ def visit(self, node: ProgramNode, scope: Scope): return ast_cil.ProgramNode(self.types_nodes, self.data, self.fun_nodes, idx) - # result_year = [x for x in range(1986, 2011)] - @visitor.when(ClassDeclarationNode) def visit(self, node: ClassDeclarationNode, scope: Scope): self.current_type = self.context.get_type(node.id, node.pos) @@ -235,8 +233,6 @@ def visit(self, node: InstantiateNode, scope: Scope): typex = get_type(typex, self.current_type) self.register_instruction(ast_cil.AllocateNode(typex.name, instance)) - # calling the constructor to load all attributes - # Si tiene atributos entonces tendrá constructor (esto se deberia optimizar mas) if typex.all_attributes(): self.register_instruction( ast_cil.StaticCallNode(typex.name, typex.name, instance, [ast_cil.ArgNode(instance)], typex.name)) @@ -245,13 +241,6 @@ def visit(self, node: InstantiateNode, scope: Scope): @visitor.when(WhileNode) def visit(self, node: WhileNode, scope: Scope): - ''' - LABEL start - IF NOT GOTO end - res = - GOTO start - LABEL end - ''' start_label = ast_cil.LabelNode(f'start__{self.idx}') end_label = ast_cil.LabelNode(f'end__{self.idx}') @@ -270,14 +259,6 @@ def visit(self, node: WhileNode, scope: Scope): @visitor.when(ConditionalNode) def visit(self, node: ConditionalNode, scope: Scope): - ''' - IF cond GOTO true - result = - GOTO end - LABEL true - result = - LABEL end - ''' cond, _ = self.visit(node.cond, scope) true_label = ast_cil.LabelNode(f"true__{self.idx}") diff --git a/src/cool/codegen/cilgen.py b/src/cool/codegen/cilgen.py index 754c744ef..8d2a5cc12 100644 --- a/src/cool/codegen/cilgen.py +++ b/src/cool/codegen/cilgen.py @@ -119,136 +119,139 @@ def initialize_attr(self, constructor, attr: Attribute, scope: Scope): constructor.body.expr_list.append(AssignNode(attr.name, ConstantVoidNode(attr.name))) def built_in_functions(self): - f1_params = [ParamNode("self", 'Object')] - f1_localVars = [LocalNode("local_abort_Object_self_0")] - f1_instructions = [ast_cil.AssignNode(f1_localVars[0].name, f1_params[0].name, self.index), - ast_cil.ExitNode(f1_params[0].name, idx=self.index)] - f1 = FunctionNode("function_abort_Object", f1_params, f1_localVars, f1_instructions) - - f2_params = [ParamNode("self", 'Object')] - f2_localVars = [LocalNode("local_type_name_Object_result_0")] - f2_instructions = [ast_cil.TypeOfNode(f2_params[0].name, f2_localVars[0].name, self.index), - ast_cil.ReturnNode(f2_localVars[0].name, self.index)] - f2 = FunctionNode("function_type_name_Object", f2_params, f2_localVars, f2_instructions) - - f3_params = [ParamNode("self", 'Object')] - f3_localVars = [LocalNode("local_copy_Object_result_0")] - f3_instructions = [ast_cil.CopyNode(f3_localVars[0].name, f3_params[0].name, self.index), - ast_cil.ReturnNode(f3_localVars[0].name, self.index)] - f3 = FunctionNode("function_copy_Object", f3_params, f3_localVars, f3_instructions) - - f4_params = [ParamNode("self", 'IO'), ParamNode("word", 'String')] - f4_localVars = [LocalNode("local_out_string_String_self_0")] - f4_instructions = [ast_cil.AssignNode(f4_localVars[0].name, f4_params[0].name, self.index), - ast_cil.OutStringNode(f4_params[1].name, self.index), - ast_cil.ReturnNode(f4_localVars[0].name, self.index)] - f4 = FunctionNode("function_out_string_IO", f4_params, f4_localVars, f4_instructions) - - f5_params = [ParamNode("self", 'IO'), ParamNode("number", 'Int')] - f5_localVars = [LocalNode("local_out_int_IO_self_0")] - f5_instructions = [ast_cil.AssignNode(f5_localVars[0].name, f5_params[0].name, self.index), - ast_cil.OutIntNode(f5_params[1].name, self.index), - ast_cil.ReturnNode(f5_localVars[0].name, self.index)] - f5 = FunctionNode("function_out_int_IO", f5_params, f5_localVars, f5_instructions) - - f6_params = [ParamNode("self", 'IO')] - f6_localVars = [LocalNode("local_in_int_IO_result_0")] - f6_instructions = [ast_cil.ReadIntNode(f6_localVars[0].name, self.index), - ast_cil.ReturnNode(f6_localVars[0].name, self.index)] - f6 = FunctionNode("function_in_int_IO", f6_params, f6_localVars, f6_instructions) - - f7_params = [ParamNode("self", 'IO')] - f7_localVars = [LocalNode("local_in_string_IO_result_0")] - f7_instructions = [ast_cil.ReadStringNode(f7_localVars[0].name, self.index), - ast_cil.ReturnNode(f7_localVars[0].name, self.index)] - f7 = FunctionNode("function_in_string_IO", f7_params, f7_localVars, f7_instructions) - - f8_params = [ParamNode("self", 'String')] - f8_localVars = [LocalNode("local_length_String_result_0")] - f8_instructions = [ast_cil.LengthNode(f8_localVars[0].name, f8_params[0].name, self.index), - ast_cil.ReturnNode(f8_localVars[0].name, self.index)] - f8 = FunctionNode("function_length_String", f8_params, f8_localVars, f8_instructions) - - f9_params = [ParamNode("self", 'String'), ParamNode("word", 'String')] - f9_localVars = [LocalNode("local_concat_String_result_0")] - f9_instructions = [ast_cil.ConcatNode(f9_localVars[0].name, f9_params[0].name, f9_params[1].name, self.index), - ast_cil.ReturnNode(f9_localVars[0].name, self.index)] - f9 = FunctionNode("function_concat_String", f9_params, f9_localVars, f9_instructions) - - f10_params = [ParamNode("self", 'String'), ParamNode("begin", 'Int'), ParamNode("end", 'Int')] - f10_localVars = [LocalNode("local_substr_String_result_0")] - f10_instructions = [ - ast_cil.SubstringNode(f10_localVars[0].name, f10_params[0].name, f10_params[1].name, f10_params[2].name, + func1_params = [ParamNode("self", 'Object')] + func1_localVars = [LocalNode("local_abort_Object_self_0")] + func1_instructions = [ast_cil.AssignNode(func1_localVars[0].name, func1_params[0].name, self.index), + ast_cil.ExitNode(func1_params[0].name, idx=self.index)] + func1 = FunctionNode("function_abort_Object", func1_params, func1_localVars, func1_instructions) + + func2_params = [ParamNode("self", 'Object')] + func2_localVars = [LocalNode("local_type_name_Object_result_0")] + func2_instructions = [ast_cil.TypeOfNode(func2_params[0].name, func2_localVars[0].name, self.index), + ast_cil.ReturnNode(func2_localVars[0].name, self.index)] + func2 = FunctionNode("function_type_name_Object", func2_params, func2_localVars, func2_instructions) + + func3_params = [ParamNode("self", 'Object')] + func3_localVars = [LocalNode("local_copy_Object_result_0")] + func3_instructions = [ast_cil.CopyNode(func3_localVars[0].name, func3_params[0].name, self.index), + ast_cil.ReturnNode(func3_localVars[0].name, self.index)] + func3 = FunctionNode("function_copy_Object", func3_params, func3_localVars, func3_instructions) + + func4_params = [ParamNode("self", 'IO'), ParamNode("word", 'String')] + func4_localVars = [LocalNode("local_out_string_String_self_0")] + func4_instructions = [ast_cil.AssignNode(func4_localVars[0].name, func4_params[0].name, self.index), + ast_cil.OutStringNode(func4_params[1].name, self.index), + ast_cil.ReturnNode(func4_localVars[0].name, self.index)] + func4 = FunctionNode("function_out_string_IO", func4_params, func4_localVars, func4_instructions) + + func5_params = [ParamNode("self", 'IO'), ParamNode("number", 'Int')] + func5_localVars = [LocalNode("local_out_int_IO_self_0")] + func5_instructions = [ast_cil.AssignNode(func5_localVars[0].name, func5_params[0].name, self.index), + ast_cil.OutIntNode(func5_params[1].name, self.index), + ast_cil.ReturnNode(func5_localVars[0].name, self.index)] + func5 = FunctionNode("function_out_int_IO", func5_params, func5_localVars, func5_instructions) + + func6_params = [ParamNode("self", 'IO')] + func6_localVars = [LocalNode("local_in_int_IO_result_0")] + func6_instructions = [ast_cil.ReadIntNode(func6_localVars[0].name, self.index), + ast_cil.ReturnNode(func6_localVars[0].name, self.index)] + func6 = FunctionNode("function_in_int_IO", func6_params, func6_localVars, func6_instructions) + + func7_params = [ParamNode("self", 'IO')] + func7_localVars = [LocalNode("local_in_string_IO_result_0")] + func7_instructions = [ast_cil.ReadStringNode(func7_localVars[0].name, self.index), + ast_cil.ReturnNode(func7_localVars[0].name, self.index)] + func7 = FunctionNode("function_in_string_IO", func7_params, func7_localVars, func7_instructions) + + func8_params = [ParamNode("self", 'String')] + func8_localVars = [LocalNode("local_length_String_result_0")] + func8_instructions = [ast_cil.LengthNode(func8_localVars[0].name, func8_params[0].name, self.index), + ast_cil.ReturnNode(func8_localVars[0].name, self.index)] + func8 = FunctionNode("function_length_String", func8_params, func8_localVars, func8_instructions) + + func9_params = [ParamNode("self", 'String'), ParamNode("word", 'String')] + func9_localVars = [LocalNode("local_concat_String_result_0")] + func9_instructions = [ + ast_cil.ConcatNode(func9_localVars[0].name, func9_params[0].name, func9_params[1].name, self.index), + ast_cil.ReturnNode(func9_localVars[0].name, self.index)] + func9 = FunctionNode("function_concat_String", func9_params, func9_localVars, func9_instructions) + + func10_params = [ParamNode("self", 'String'), ParamNode("begin", 'Int'), ParamNode("end", 'Int')] + func10_localVars = [LocalNode("local_substr_String_result_0")] + func10_instructions = [ + ast_cil.SubstringNode(func10_localVars[0].name, func10_params[0].name, func10_params[1].name, + func10_params[2].name, self.index), - ast_cil.ReturnNode(f10_localVars[0].name, self.index)] - f10 = FunctionNode("function_substr_String", f10_params, f10_localVars, f10_instructions) - - f11_params = [ParamNode("self", 'String')] - f11_localVars = [LocalNode("local_type_name_String_result_0")] - f11_instructions = [ast_cil.LoadNode(f11_localVars[0].name, 'type_String', self.index), - ast_cil.ReturnNode(f11_localVars[0].name, self.index)] - f11 = FunctionNode("function_type_name_String", f11_params, f11_localVars, f11_instructions) - - f12_params = [ParamNode("self", 'String')] - f12_localVars = [LocalNode("local_copy_String_result_0")] - f12_instructions = [ast_cil.ConcatNode(f12_localVars[0].name, f12_params[0].name, None, self.index), - ast_cil.ReturnNode(f12_localVars[0].name, self.index)] - f12 = FunctionNode("function_copy_String", f12_params, f12_localVars, f12_instructions) - - f17_params = [ParamNode("self", 'String')] - f17_localVars = [LocalNode('local_abort_String_msg_0')] - f17_instructions = [ast_cil.LoadNode(f17_params[0].name, 'string_abort'), - ast_cil.OutStringNode(f17_params[0].name, self.index), - ast_cil.ExitNode(f17_params[0].name, idx=self.index)] - f17 = FunctionNode("function_abort_String", f17_params, f17_localVars, f17_instructions) - - f13_params = [ParamNode("self", 'Int')] - f13_localVars = [LocalNode("local_type_name_Int_result_0")] - f13_instructions = [ast_cil.LoadNode(f13_localVars[0].name, 'type_Int', self.index), - ast_cil.ReturnNode(f13_localVars[0].name, self.index)] - f13 = FunctionNode("function_type_name_Int", f13_params, f13_localVars, f13_instructions) - - f14_params = [ParamNode("self", 'Int')] - f14_localVars = [LocalNode("local_copy_Int_result_0")] - f14_instructions = [ast_cil.AssignNode(f14_localVars[0].name, f14_params[0].name), - ast_cil.ReturnNode(f14_localVars[0].name, self.index)] - f14 = FunctionNode("function_copy_Int", f14_params, f14_localVars, f14_instructions) - - f18_params = [ParamNode("self", 'Int')] - f18_localVars = [LocalNode('local_abort_Int_msg_0')] - f18_instructions = [ast_cil.LoadNode(f18_params[0].name, 'int_abort'), - ast_cil.OutStringNode(f18_params[0].name, self.index), - ast_cil.ExitNode(f18_params[0].name, idx=self.index)] - f18 = FunctionNode("function_abort_Int", f18_params, f18_localVars, f18_instructions) - - f15_params = [ParamNode("self", 'Bool')] - f15_localVars = [LocalNode("local_type_name_Bool_result_0")] - f15_instructions = [ast_cil.LoadNode(f15_localVars[0].name, 'type_Bool', self.index), - ast_cil.ReturnNode(f15_localVars[0].name, self.index)] - f15 = FunctionNode("function_type_name_Bool", f15_params, f15_localVars, f15_instructions) - - f16_params = [ParamNode("self", 'Bool')] - f16_localVars = [LocalNode("local_copy_result_Bool_0")] - f16_instructions = [ast_cil.AssignNode(f16_localVars[0].name, f16_params[0].name), - ast_cil.ReturnNode(f16_localVars[0].name, self.index)] - f16 = FunctionNode("function_copy_Bool", f16_params, f16_localVars, f16_instructions) - - f19_params = [ParamNode("self", 'Bool')] - f19_localVars = [LocalNode('local_abort_Bool_msg_0')] - f19_instructions = [ast_cil.LoadNode(f19_params[0].name, 'bool_abort'), - ast_cil.OutStringNode(f19_params[0].name, self.index), - ast_cil.ExitNode(f19_params[0].name, idx=self.index)] - f19 = FunctionNode("function_abort_Bool", f19_params, f19_localVars, f19_instructions) - - self.fun_nodes += [f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19] - object_methods = [('abort', f1.name), ('type_name', f2.name), ('copy', f3.name)] - string_methods = [('length', f8.name), ('concat', f9.name), ('substr', f10.name), ('abort', f17.name), - ('type_name', f11.name), ('copy', f12.name)] - io_methods = [('out_string', f4.name), ('out_int', f5.name), ('in_int', f6.name), ('in_string', f7.name)] - int_methods = [('abort', f18.name), ('type_name', f13.name), ('copy', f14.name)] - bool_methods = [('abort', f19.name), ('type_name', f15.name), ('copy', f16.name)] - - a = TypeNode("String", [], string_methods) + ast_cil.ReturnNode(func10_localVars[0].name, self.index)] + func10 = FunctionNode("function_substr_String", func10_params, func10_localVars, func10_instructions) + + func11_params = [ParamNode("self", 'String')] + func11_localVars = [LocalNode("local_type_name_String_result_0")] + func11_instructions = [ast_cil.LoadNode(func11_localVars[0].name, 'type_String', self.index), + ast_cil.ReturnNode(func11_localVars[0].name, self.index)] + func11 = FunctionNode("function_type_name_String", func11_params, func11_localVars, func11_instructions) + + func12_params = [ParamNode("self", 'String')] + func12_localVars = [LocalNode("local_copy_String_result_0")] + func12_instructions = [ast_cil.ConcatNode(func12_localVars[0].name, func12_params[0].name, None, self.index), + ast_cil.ReturnNode(func12_localVars[0].name, self.index)] + func12 = FunctionNode("function_copy_String", func12_params, func12_localVars, func12_instructions) + + func17_params = [ParamNode("self", 'String')] + func17_localVars = [LocalNode('local_abort_String_msg_0')] + func17_instructions = [ast_cil.LoadNode(func17_params[0].name, 'string_abort'), + ast_cil.OutStringNode(func17_params[0].name, self.index), + ast_cil.ExitNode(func17_params[0].name, idx=self.index)] + func17 = FunctionNode("function_abort_String", func17_params, func17_localVars, func17_instructions) + + func13_params = [ParamNode("self", 'Int')] + func13_localVars = [LocalNode("local_type_name_Int_result_0")] + func13_instructions = [ast_cil.LoadNode(func13_localVars[0].name, 'type_Int', self.index), + ast_cil.ReturnNode(func13_localVars[0].name, self.index)] + func13 = FunctionNode("function_type_name_Int", func13_params, func13_localVars, func13_instructions) + + func14_params = [ParamNode("self", 'Int')] + func14_localVars = [LocalNode("local_copy_Int_result_0")] + func14_instructions = [ast_cil.AssignNode(func14_localVars[0].name, func14_params[0].name), + ast_cil.ReturnNode(func14_localVars[0].name, self.index)] + func14 = FunctionNode("function_copy_Int", func14_params, func14_localVars, func14_instructions) + + func18_params = [ParamNode("self", 'Int')] + func18_localVars = [LocalNode('local_abort_Int_msg_0')] + func18_instructions = [ast_cil.LoadNode(func18_params[0].name, 'int_abort'), + ast_cil.OutStringNode(func18_params[0].name, self.index), + ast_cil.ExitNode(func18_params[0].name, idx=self.index)] + func18 = FunctionNode("function_abort_Int", func18_params, func18_localVars, func18_instructions) + + func15_params = [ParamNode("self", 'Bool')] + func15_localVars = [LocalNode("local_type_name_Bool_result_0")] + func15_instructions = [ast_cil.LoadNode(func15_localVars[0].name, 'type_Bool', self.index), + ast_cil.ReturnNode(func15_localVars[0].name, self.index)] + func15 = FunctionNode("function_type_name_Bool", func15_params, func15_localVars, func15_instructions) + + func16_params = [ParamNode("self", 'Bool')] + func16_localVars = [LocalNode("local_copy_result_Bool_0")] + func16_instructions = [ast_cil.AssignNode(func16_localVars[0].name, func16_params[0].name), + ast_cil.ReturnNode(func16_localVars[0].name, self.index)] + func16 = FunctionNode("function_copy_Bool", func16_params, func16_localVars, func16_instructions) + + func19_params = [ParamNode("self", 'Bool')] + func19_localVars = [LocalNode('local_abort_Bool_msg_0')] + func19_instructions = [ast_cil.LoadNode(func19_params[0].name, 'bool_abort'), + ast_cil.OutStringNode(func19_params[0].name, self.index), + ast_cil.ExitNode(func19_params[0].name, idx=self.index)] + func19 = FunctionNode("function_abort_Bool", func19_params, func19_localVars, func19_instructions) + + self.fun_nodes += [func1, func2, func3, func4, func5, func6, func7, func8, func9, func10, func11, func12, + func13, func14, func15, func16, func17, func18, func19] + object_methods = [('abort', func1.name), ('type_name', func2.name), ('copy', func3.name)] + string_methods = [('length', func8.name), ('concat', func9.name), ('substr', func10.name), + ('abort', func17.name), + ('type_name', func11.name), ('copy', func12.name)] + io_methods = [('out_string', func4.name), ('out_int', func5.name), ('in_int', func6.name), + ('in_string', func7.name)] + int_methods = [('abort', func18.name), ('type_name', func13.name), ('copy', func14.name)] + bool_methods = [('abort', func19.name), ('type_name', func15.name), ('copy', func16.name)] self.types_nodes += [TypeNode("Object", [], object_methods), TypeNode("IO", [], object_methods + io_methods), diff --git a/src/cool/codegen/codegen.py b/src/cool/codegen/codegen.py index d18091ecf..a92a9f72d 100644 --- a/src/cool/codegen/codegen.py +++ b/src/cool/codegen/codegen.py @@ -1,3 +1,20 @@ -def run(context, ast, scope): - # transform to cil - pass +from .cil_visitor import CilVisitor +from .mips_visitor import MipsVisitor +from ..semantic.helpers import Context + + +def run_pipeline(context: Context, ast, scope): + cool_to_cil = CilVisitor(context) + cil_ast = cool_to_cil.visit(ast, scope) + + inherit_graph = context.build_inheritance_graph() + + data_code, text_code = MipsVisitor(inherit_graph).visit(cil_ast) + + return make_code(data_code, text_code) + + +def make_code(data_code, text_code) -> str: + ans = '\n'.join(text_code) + '\n' + '\n'.join(data_code) + + return ans diff --git a/src/cool/codegen/mips_visitor.py b/src/cool/codegen/mips_visitor.py index c5b5a3c4a..0ec8a45e9 100644 --- a/src/cool/codegen/mips_visitor.py +++ b/src/cool/codegen/mips_visitor.py @@ -1,55 +1,29 @@ from .mipsgen import BaseMips from ..utils import visitor -from .utils.tools import SymbolTable, AddressDescriptor, RegisterDescriptor, AddrType +from .utils.tools import SymbolTable, AddrDescriptor, RegisterDescriptor, AddrType from ..semantic.helpers import VariableInfo from ..semantic.types import VOID_NAME from .utils.ast_cil import * class MipsVisitor(BaseMips): - ''' - Registers: - v0-v1: Used for expression evaluations and to hold the integer type - function results. Also used to pass the static link when calling - nested procedures. - a0-a3: Used to pass the first 4 words of integer type actual - arguments, their values are not preserved across procedure - calls. - t0-t7: Temporary registers used for expression evaluations; their - values aren’t preserved across procedure calls. - s0-s7: Saved registers. Their values must be preserved across - procedure calls. - t8-t9: Temporary registers used for expression evaluations; their - values aren’t preserved across procedure calls. - k0-k1: Reserved for the operating system kernel. - gp: Contains the global pointer. - sp: Contains the stack pointer. - fp: Contains the frame pointer (if needed); otherwise a saved register. - ra: Contains the return address and is used for expression evaluation. - Register $ra only needs to be saved if the callee itself makes a call. - - ''' - @visitor.on('node') def visit(self, node): pass @visitor.when(ProgramNode) def visit(self, node: ProgramNode): - # ? Quizá tenga que cambiar el orden en que estas cosas se visitan - # visit TypeNodes + self.code.append('# debug: ProgramNode') for type_ in node.type_node: self.visit(type_) - # guardo las direcciones de cada método self.save_meth_addr(node.func_node) - self.data_code.append(f"type_Void: .asciiz \"Void\"") # guarda el nombre de Void Type - # guardo las direcciones de cada tipo + self.data_code.append(f"type_Void: .asciiz \"Void\"") self.save_types_addr(node.type_node) - # visit DataNodes + for d in node.data: self.visit(d) - # visit code instrunctions + for code in node.func_node: self.visit(code) @@ -59,20 +33,22 @@ def visit(self, node: ProgramNode): @visitor.when(TypeNode) def visit(self, node: TypeNode): + self.code.append('# debug: TypeNode') self.obj_table.add_entry(node.name, node.methods, node.attributes) self.data_code.append( - f"type_{node.name}: .asciiz \"{node.name}\"") # guarda el nombre de la variable en la memoria + f"type_{node.name}: .asciiz \"{node.name}\"") @visitor.when(DataNode) def visit(self, node: DataNode): + self.code.append('# debug: DataNode') self.data_code.append(f"{node.name}: .asciiz \"{node.value}\"") @visitor.when(FunctionNode) def visit(self, node: FunctionNode): + self.code.append('# debug: FunctionNode') self.code.append('') self.code.append(f'{node.name}:') - self.locals = 0 # pointer to count the ammount of locals that are pushed into the stack - + self.locals = 0 self.code.append('# Gets the params from the stack') self.code.append(f'move $fp, $sp') # gets the frame pointer from the stack n = len(node.params) @@ -95,25 +71,27 @@ def visit(self, node: FunctionNode): if not (isinstance(inst, GotoNode) or isinstance(inst, GotoIfNode) or isinstance(inst, ReturnNode) \ or isinstance(inst, StaticCallNode) or isinstance(inst, DynamicCallNode)): self.empty_registers() - # self.empty_registers() @visitor.when(ParamNode) def visit(self, node: ParamNode, idx: int, length: int): + self.code.append('# debug: ParamNode') self.symbol_table.insert_name(node.name) self.var_address[node.name] = self.get_type(node.type) self.code.append(f'# Pops the register with the param value {node.name}') - self.code.append('addiu $fp, $fp, 4') # pops the register with the param value from stack + self.code.append('addiu $fp, $fp, 4') self.addr_desc.insert_var(node.name, length - idx) @visitor.when(LocalNode) def visit(self, node: LocalNode, idx: int): - self.symbol_table.insert_name(node.name) # inserts the var in the symbol table, local by default - self.addr_desc.insert_var(node.name, idx) # saves the address relative from the actual fp + self.code.append('# debug: LocalNode') + self.symbol_table.insert_name(node.name) + self.addr_desc.insert_var(node.name, idx) self.code.append(f'# Updates stack pointer pushing {node.name} to the stack') - self.code.append(f'addiu $sp, $sp, -4') # updates stack pointers (pushing this value) + self.code.append(f'addiu $sp, $sp, -4') @visitor.when(AssignNode) def visit(self, node: AssignNode): + self.code.append('# debug: AssignNode') rdest = self.addr_desc.get_var_reg(node.dest) self.code.append(f'# Moving {node.source} to {node.dest}') if self.is_variable(node.source): @@ -127,6 +105,7 @@ def visit(self, node: AssignNode): @visitor.when(NotNode) def visit(self, node: NotNode): + self.code.append('#debug: NotNode') rdest = self.addr_desc.get_var_reg(node.dest) rsrc = self.save_to_register(node.expr) self.code.append(f'# {node.dest} <- ~{node.expr}') @@ -136,6 +115,7 @@ def visit(self, node: NotNode): @visitor.when(LogicalNotNode) def visit(self, node: LogicalNotNode): + self.code.append('#debug: LogicalNotNode') rdest = self.addr_desc.get_var_reg(node.dest) rsrc = self.save_to_register(node.expr) self.code.append(f'# {node.dest} <- not {node.expr}') @@ -150,6 +130,7 @@ def visit(self, node: LogicalNotNode): @visitor.when(PlusNode) def visit(self, node: PlusNode): + self.code.append('#debug: PlusNode') rdest = self.addr_desc.get_var_reg(node.dest) self.code.append(f'# {node.dest} <- {node.left} + {node.right}') if self.is_variable(node.left): @@ -169,6 +150,7 @@ def visit(self, node: PlusNode): @visitor.when(MinusNode) def visit(self, node: MinusNode): + self.code.append('#debug: MinusNode') rdest = self.addr_desc.get_var_reg(node.dest) self.code.append(f'# {node.dest} <- {node.left} - {node.right}') if self.is_variable(node.left): @@ -189,11 +171,13 @@ def visit(self, node: MinusNode): @visitor.when(StarNode) def visit(self, node: StarNode): + self.code.append('#debug: StartNode') self.code.append(f'# {node.dest} <- {node.left} * {node.right}') self._code_to_mult_div(node, op='mult', func_op=lambda x, y: x * y) @visitor.when(DivNode) def visit(self, node: DivNode): + self.code.append('#debug: DivNode') self.code.append(f'# {node.dest} <- {node.left} / {node.right}') self._code_to_mult_div(node, op='div', func_op=lambda x, y: int(x / y)) @@ -227,16 +211,19 @@ def _code_to_mult_div(self, node, op: str, func_op): @visitor.when(LessNode) def visit(self, node: LessNode): + self.code.append('#debug: LessNode') self.code.append(f'# {node.dest} <- {node.left} < {node.right}') self._code_to_comp(node, 'slt', lambda x, y: x < y) @visitor.when(LessEqNode) - def visit(self, node: MinusNode): + def visit(self, node: LessEqNode): + self.code.append('#debug: LessEqNode') self.code.append(f'# {node.dest} <- {node.left} <= {node.right}') self._code_to_comp(node, 'sle', lambda x, y: x <= y) @visitor.when(EqualNode) - def visit(self, node: MinusNode): + def visit(self, node: EqualNode): + self.code.append('#debug: EqualNode') self.code.append(f'# {node.dest} <- {node.left} = {node.right}') if self.is_variable(node.left) and self.is_variable(node.right) and self.var_address[ node.left] == AddrType.STR and self.var_address[node.right] == AddrType.STR: @@ -265,6 +252,7 @@ def _code_to_comp(self, node, op, func_op): @visitor.when(GetAttribNode) def visit(self, node: GetAttribNode): + self.code.append('#debug: GetAttribNode') self.code.append(f'# {node.dest} <- GET {node.obj} . {node.attr}') rdest = self.addr_desc.get_var_reg(node.dest) self.var_address[node.dest] = self.get_type(node.attr_type) @@ -274,6 +262,7 @@ def visit(self, node: GetAttribNode): @visitor.when(SetAttribNode) def visit(self, node: SetAttribNode): + self.code.append('#debug: SetAttribNode') self.code.append(f'# {node.obj} . {node.attr} <- SET {node.value}') rdest = self.addr_desc.get_var_reg(node.obj) attr_offset = 4 * self.get_attr_offset(node.attr, node.type_name) @@ -289,28 +278,25 @@ def visit(self, node: SetAttribNode): @visitor.when(AllocateNode) def visit(self, node: AllocateNode): + self.code.append('#debug: AllocateNode') rdest = self.addr_desc.get_var_reg(node.dest) - size = 4 * self.obj_table.size_of_entry(node.type) # size of the table entry of the new type + size = 4 * self.obj_table.size_of_entry(node.type) self.var_address[node.dest] = AddrType.REF - # syscall to allocate memory of the object entry in heap self.code.append('# Syscall to allocate memory of the object entry in heap') - self.code.append('li $v0, 9') # code to request memory - self.code.append(f'li $a0, {size}') # argument (size) + self.code.append('li $v0, 9') + self.code.append(f'li $a0, {size}') self.code.append('syscall') - # in v0 is the address of the new memory addrs_stack = self.addr_desc.get_var_addr(node.dest) - # self.code.append('# Save the address in the stack') - # self.code.append(f'sw $v0, -{addrs_stack}($fp)') # save the address in the stack (where is the local variable) self.code.append('# Loads the name of the variable and saves the name like the first field') - self.code.append(f'la $t9, type_{node.type}') # loads the name of the variable - self.code.append(f'sw $t9, 0($v0)') # saves the name like the first field + self.code.append(f'la $t9, type_{node.type}') + self.code.append(f'sw $t9, 0($v0)') self.code.append(f'# Saves the size of the node') - self.code.append(f'li $t9, {size}') # saves the size of the node - self.code.append(f'sw $t9, 4($v0)') # this is the second file of the table offset - self.code.append(f'move ${rdest}, $v0') # guarda la nueva dirección de la variable en el registro destino + self.code.append(f'li $t9, {size}') + self.code.append(f'sw $t9, 4($v0)') + self.code.append(f'move ${rdest}, $v0') idx = self.types.index(node.type) self.code.append('# Adding Type Info addr') @@ -320,12 +306,13 @@ def visit(self, node: AllocateNode): @visitor.when(TypeOfNode) def visit(self, node: TypeOfNode): + self.code.append('#debug: TypeOfNode') rdest = self.addr_desc.get_var_reg(node.dest) self.code.append(f'# {node.dest} <- Type of {node.obj}') if self.is_variable(node.obj): rsrc = self.addr_desc.get_var_reg(node.obj) if self.var_address[node.obj] == AddrType.REF: - self.code.append(f'lw ${rdest}, 0(${rsrc})') # como en el offset 0 está el nombre del tipo this is ok + self.code.append(f'lw ${rdest}, 0(${rsrc})') elif self.var_address[node.obj] == AddrType.STR: self.code.append(f'la ${rdest}, type_String') elif self.var_address[node.obj] == AddrType.INT: @@ -338,15 +325,18 @@ def visit(self, node: TypeOfNode): @visitor.when(LabelNode) def visit(self, node: LabelNode): + self.code.append('#debug: LabelNode') self.code.append(f'{node.label}:') @visitor.when(GotoNode) def visit(self, node: GotoNode): + self.code.append('#debug: GotoNode') self.empty_registers() self.code.append(f'j {node.label}') @visitor.when(GotoIfNode) def visit(self, node: GotoIfNode): + self.code.append('#debug: GotoIfNode') reg = self.save_to_register(node.cond) self.code.append(f'# If {node.cond} goto {node.label}') self.empty_registers() @@ -354,6 +344,7 @@ def visit(self, node: GotoIfNode): @visitor.when(GotoIfFalseNode) def visit(self, node: GotoIfNode): + self.code.append('#debug: GotoIfFalseNode') reg = self.save_to_register(node.cond) self.code.append(f'# If not {node.cond} goto {node.label}') self.empty_registers() @@ -361,6 +352,7 @@ def visit(self, node: GotoIfNode): @visitor.when(StaticCallNode) def visit(self, node: StaticCallNode): + self.code.append('#debug: StaticCallNode') function = self.dispatch_table.find_full_name(node.type, node.function) self.code.append(f'# Static Dispatch of the method {node.function}') self._code_to_function_call(node.args, function, node.dest) @@ -369,46 +361,43 @@ def visit(self, node: StaticCallNode): @visitor.when(DynamicCallNode) def visit(self, node: DynamicCallNode): - # Find the actual name of the method in the dispatch table + self.code.append('#debug: DynamicCallNode') self.code.append('# Find the actual name in the dispatch table') - reg = self.addr_desc.get_var_reg(node.obj) # obtiene la instancia actual - + reg = self.addr_desc.get_var_reg(node.obj) self.code.append('# Gets in a0 the actual direction of the dispatch table') - self.code.append(f'lw $t9, 8(${reg})') # obtiene en t9 la dirección del dispatch table + self.code.append(f'lw $t9, 8(${reg})') self.code.append('lw $a0, 8($t9)') function = self.dispatch_table.find_full_name(node.type, node.method) - index = 4 * self.dispatch_table.get_offset(node.type, function) + 4 # guarda el offset del me + index = 4 * self.dispatch_table.get_offset(node.type, function) + 4 self.code.append(f'# Saves in t8 the direction of {function}') - self.code.append(f'lw $t8, {index}($a0)') # guarda en $t8 la dirección de la función a llamar - # Call function + self.code.append(f'lw $t8, {index}($a0)') self._code_to_function_call(node.args, '$t8', node.dest, function) self.var_address[node.dest] = self.get_type(node.return_type) def _code_to_function_call(self, args, function, dest, function_name=None): - self.push_register('fp') # pushes fp register to the stack - self.push_register('ra') # pushes ra register to the stack + self.push_register('fp') + self.push_register('ra') self.code.append('# Push the arguments to the stack') - for arg in reversed(args): # push the arguments to the stack + for arg in reversed(args): self.visit(arg) - self.code.append('# Empty all used registers and saves them to memory') self.empty_registers() self.code.append('# This function will consume the arguments') - - self.code.append(f'jal {function}') # this function will consume the arguments + self.code.append(f'jal {function}') self.code.append('# Pop ra register of return function of the stack') - self.pop_register('ra') # pop register ra from the stack + self.pop_register('ra') self.code.append('# Pop fp register from the stack') - self.pop_register('fp') # pop fp register from the stack + self.pop_register('fp') if dest is not None: self.get_reg_var(dest) rdest = self.addr_desc.get_var_reg(dest) self.code.append('# saves the return value') - self.code.append(f'move ${rdest}, $v0') # v0 es usado para guardar el valor de retorno + self.code.append(f'move ${rdest}, $v0') @visitor.when(ArgNode) def visit(self, node: ArgNode): + self.code.append('#debug: ArgNode') self.code.append('# The rest of the arguments are push into the stack') if self.is_variable(node.dest): self.get_reg_var(node.dest) @@ -421,23 +410,22 @@ def visit(self, node: ArgNode): @visitor.when(ReturnNode) def visit(self, node: ReturnNode): - # save the return value + self.code.append('#debug: ReturnNode') if self.is_variable(node.value): rdest = self.addr_desc.get_var_reg(node.value) self.code.append(f'move $v0, ${rdest}') elif self.is_int(node.value): self.code.append(f'li $v0, {node.value}') self.code.append('# Empty all used registers and saves them to memory') - self.empty_registers() # empty all used registers and saves them to memory + self.empty_registers() self.code.append('# Removing all locals from stack') self.code.append(f'addiu $sp, $sp, {self.locals * 4}') - # return to the caller self.code.append(f'jr $ra') - self.code.append('') @visitor.when(LoadNode) def visit(self, node: LoadNode): + self.code.append('#debug: LoadNode') rdest = self.addr_desc.get_var_reg(node.dest) self.code.append(f'# Saves in {node.dest} {node.msg}') self.var_address[node.dest] = AddrType.STR @@ -445,36 +433,34 @@ def visit(self, node: LoadNode): @visitor.when(LengthNode) def visit(self, node: LengthNode): + self.code.append('#debug: LengthNode') rdest = self.addr_desc.get_var_reg(node.dest) reg = self.addr_desc.get_var_reg(node.arg) loop = f'loop_{self.loop_idx}' end = f'end_{self.loop_idx}' - # saving the value of reg to iterate self.code.append(f'move $t8, ${reg}') - self.code.append('# Determining the length of a string') + self.code.append('# Get length of a string') self.code.append(f'{loop}:') self.code.append(f'lb $t9, 0($t8)') self.code.append(f'beq $t9, $zero, {end}') self.code.append(f'addi $t8, $t8, 1') self.code.append(f'j {loop}') self.code.append(f'{end}:') - self.code.append(f'sub ${rdest}, $t8, ${reg}') self.loop_idx += 1 @visitor.when(ConcatNode) def visit(self, node: ConcatNode): + self.code.append('#debug: ConcatFNode') rdest = self.addr_desc.get_var_reg(node.dest) self.code.append('# Allocating memory for the buffer') self.code.append('li $a0, 356') self.code.append('li $v0, 9') self.code.append('syscall') self.code.append(f'move ${rdest}, $v0') - rsrc1 = self.addr_desc.get_var_reg(node.arg1) if node.arg2 is not None: rsrc2 = self.addr_desc.get_var_reg(node.arg2) - self.code.append('# Copy the first string to dest') var = self.save_reg_if_occupied('a1') self.code.append(f'move $a0, ${rsrc1}') @@ -513,6 +499,7 @@ def visit(self, node: ConcatNode): @visitor.when(SubstringNode) def visit(self, node: SubstringNode): + self.code.append('#debug: SubstringNode') rdest = self.addr_desc.get_var_reg(node.dest) self.code.append('# Allocating memory for the buffer') self.code.append('li $a0, 356') @@ -537,15 +524,11 @@ def visit(self, node: SubstringNode): rself = self.addr_desc.get_var_reg(node.word) self.code.append("# Getting the substring of a node") - # Moves to the first position of the string - # self.code.append(f'sll $t9, ${rstart}, 2') # multiplicar por 4 start = f'start_{self.loop_idx}' error = f'error_{self.loop_idx}' end_lp = f'end_len_{self.loop_idx}' - self.code.append('# Move to the first position in the string') self.code.append('li $v0, 0') - self.code.append(f'move $t8, ${rself}') self.code.append(f'{start}:') self.code.append('lb $t9, 0($t8)') @@ -555,38 +538,32 @@ def visit(self, node: SubstringNode): self.code.append(f'addi $t8, 1') self.code.append(f'j {start}') self.code.append(f'{end_lp}:') - self.code.append('# Saving dest to iterate over him') self.code.append(f'move $v0, ${rdest}') loop = f'loop_{self.loop_idx}' end = f'end_{self.loop_idx}' - # Loops moving the bytes until reaching to end + self.code.append(f'{loop}:') self.code.append(f'sub $t9, $v0, ${rdest}') - self.code.append(f'beq $t9, ${rend}, {end}') self.code.append(f'lb $t9, 0($t8)') - self.code.append(f'beqz $t9, {error}') # if $t9 is zero error cause havent finished + self.code.append(f'beqz $t9, {error}') self.code.append(f'sb $t9, 0($v0)') self.code.append('addi $t8, $t8, 1') self.code.append(f'addi $v0, $v0, 1') self.code.append(f'j {loop}') self.code.append(f'{error}:') self.code.append('la $a0, index_error') - self.code.append('li $v0, 4') self.code.append(f'move $a0, ${rself}') self.code.append('syscall') - self.code.append('li $v0, 1') self.code.append(f'move $a0, ${rstart}') self.code.append('syscall') - self.code.append('li $v0, 1') self.code.append(f'move $a0, ${rend}') self.code.append('syscall') - self.code.append('j .raise') self.code.append(f'{end}:') self.code.append('sb $0, 0($v0)') @@ -595,6 +572,7 @@ def visit(self, node: SubstringNode): @visitor.when(OutStringNode) def visit(self, node: OutStringNode): + self.code.append('#debug: OutStringNode') reg = self.addr_desc.get_var_reg(node.value) self.code.append('# Printing a string') self.code.append('li $v0, 4') @@ -603,6 +581,7 @@ def visit(self, node: OutStringNode): @visitor.when(OutIntNode) def visit(self, node: OutIntNode): + self.code.append('#debug: OutIntNode') if self.is_variable(node.value): reg = self.addr_desc.get_var_reg(node.value) elif self.is_int(node.value): @@ -616,15 +595,13 @@ def visit(self, node: OutIntNode): @visitor.when(ReadStringNode) def visit(self, node: ReadStringNode): - # self.data_code.append(f'{node.dest}: .space 20') + self.code.append('#debug: ReadStringNode') rdest = self.addr_desc.get_var_reg(node.dest) self.code.append('# Allocating memory for the buffer') self.code.append('li $a0, 356') self.code.append('li $v0, 9') self.code.append('syscall') self.code.append(f'move ${rdest}, $v0') - # self.code.append(f'sb $0, 0(${rdest})') - self.code.append('# Reading a string') var = self.save_reg_if_occupied('a1') self.code.append('# Putting buffer in a0') @@ -633,25 +610,24 @@ def visit(self, node: ReadStringNode): self.code.append(f'li $a1, 356') self.code.append('li $v0, 8') self.code.append('syscall') - self.code.append('# Walks to eliminate the newline') - start = f'start_{self.loop_idx}' end = f'end_{self.loop_idx}' self.code.append(f'move $t9, ${rdest}') - self.code.append(f'{start}:') # moves to the newline + self.code.append(f'{start}:') self.code.append('lb $t8, 0($t9)') self.code.append(f"beqz $t8, {end}") self.code.append('add $t9, $t9, 1') self.code.append(f'j {start}') self.code.append(f'{end}:') self.code.append('addiu $t9, $t9, -1') - self.code.append('sb $0, ($t9)') # overwrites the newline with zero + self.code.append('sb $0, ($t9)') self.loop_idx += 1 self.load_var_if_occupied(var) @visitor.when(ReadIntNode) def visit(self, node: ReadIntNode): + self.code.append('#debug: ReadIntNode') rdest = self.addr_desc.get_var_reg(node.dest) self.code.append('# Reading a int') self.code.append('li $v0, 5') @@ -660,6 +636,7 @@ def visit(self, node: ReadIntNode): @visitor.when(ExitNode) def visit(self, node: ExitNode): + self.code.append('#debug: ExitNode') self.code.append('# Exiting the program') if self.is_variable(node.value): reg = self.addr_desc.get_var_reg(node.value) @@ -668,14 +645,11 @@ def visit(self, node: ExitNode): self.code.append(f'li $t8, {node.value}') rself = self.addr_desc.get_var_reg(node.classx) - - 'Abort called from class String' if self.var_address[node.classx] == AddrType.REF: self.code.append('# Printing abort message') self.code.append('li $v0, 4') self.code.append(f'la $a0, abort_msg') self.code.append('syscall') - self.code.append('li $v0, 4') self.code.append(f'lw $a0, 0(${rself})') self.code.append('syscall') @@ -689,19 +663,18 @@ def visit(self, node: ExitNode): @visitor.when(CopyNode) def visit(self, node: CopyNode): + self.code.append('#debug: CopyNode') + rdest = self.addr_desc.get_var_reg(node.dest) rsrc = self.addr_desc.get_var_reg(node.source) - self.code.append(f'lw $t9, 4(${rsrc})') # getting the size of the object + self.code.append(f'lw $t9, 4(${rsrc})') self.code.append('# Syscall to allocate memory of the object entry in heap') - self.code.append('li $v0, 9') # code to request memory - self.code.append(f'move $a0, $t9') # argument (size) + self.code.append('li $v0, 9') + self.code.append(f'move $a0, $t9') self.code.append('syscall') - self.code.append(f'move ${rdest}, $v0') - self.code.append('# Loop to copy every field of the previous object') - # loop to copy every field of the previous object self.code.append('# t8 the register to loop') self.code.append('li $t8, 0') self.code.append(f'loop_{self.loop_idx}:') @@ -709,9 +682,7 @@ def visit(self, node: CopyNode): self.code.append(f'bge $t8, $t9, exit_{self.loop_idx}') self.code.append(f'lw $a0, (${rsrc})') self.code.append('sw $a0, ($v0)') - # offset in the copied element self.code.append('addi $v0, $v0, 4') - # offset in the original element self.code.append(f'addi ${rsrc}, ${rsrc}, 4') self.code.append('# Increase loop counter') self.code.append('addi $t8, $t8, 4') @@ -721,6 +692,7 @@ def visit(self, node: CopyNode): @visitor.when(ConformsNode) def visit(self, node: ConformsNode): + self.code.append('#debug: ConformsNode') rdest = self.addr_desc.get_var_reg(node.dest) if self.is_variable(node.expr): rsrc = self.addr_desc.get_var_reg(node.expr) @@ -737,37 +709,37 @@ def visit(self, node: ConformsNode): @visitor.when(ErrorNode) def visit(self, node: ErrorNode): + self.code.append('#debug: ErrorNode') self.code.append(f'la $a0, {node.type}') self.code.append('j .raise') @visitor.when(VoidConstantNode) def visit(self, node: VoidConstantNode): + self.code.append('#debug: VoidConstantNode') rdest = self.addr_desc.get_var_reg(node.out) self.code.append('# Initialize void node') - self.code.append(f'li $a0, 4') # argument (size) - self.code.append('li $v0, 9') # code to request memory + self.code.append(f'li $a0, 4') + self.code.append('li $v0, 9') self.code.append('syscall') self.code.append('# Loads the name of the variable and saves the name like the first field') - self.code.append(f'la $t9, type_{VOID_NAME}') # loads the name of the variable - self.code.append('sw $t9, 0($v0)') # saves the name like the first field + self.code.append(f'la $t9, type_{VOID_NAME}') + self.code.append('sw $t9, 0($v0)') self.code.append(f'move ${rdest}, $v0') self.var_address[node.obj] = AddrType.REF @visitor.when(BoxingNode) def visit(self, node: BoxingNode): - "Node to convert a value type into object" + self.code.append('#debug: BoxingNode') rdest = self.addr_desc.get_var_reg(node.dest) self.code.append('# Initialize new node') self.code.append('li $a0, 12') self.code.append('li $v0, 9') self.code.append('syscall') - self.code.append(f'la $t9, type_{node.type}') - self.code.append('sw $t9, 0($v0)') # saves the name like the first field + self.code.append('sw $t9, 0($v0)') self.code.append('li $t9, 12') - self.code.append('sw $t9, 4($v0)') # saves the size like the second field + self.code.append('sw $t9, 4($v0)') self.code.append(f'move ${rdest}, $v0') - self.code.append('# Saving the methods of object') idx = self.types.index('Object') self.code.append('# Adding Type Info addr') diff --git a/src/cool/codegen/mipsgen.py b/src/cool/codegen/mipsgen.py index 45d9a67a6..57d97e9b4 100644 --- a/src/cool/codegen/mipsgen.py +++ b/src/cool/codegen/mipsgen.py @@ -8,47 +8,34 @@ class BaseMips: def __init__(self, inherit_graph): self.code: list = ['.text', '.globl main', 'main:'] - self.initialize_data_code() + self.data_code = ['.data'] self.symbol_table = SymbolTable() self.reg_desc = RegisterDescriptor() - self.addr_desc = AddressDescriptor() - + self.addr_desc = AddrDescriptor() self.dispatch_table: DispatchTable = DispatchTable() self.obj_table: ObjTable = ObjTable(self.dispatch_table) self.initialize_methods() - self.load_abort_messages() - # Will hold the type of any of the vars + self.get_abort_messages() self.var_address = {'self': AddrType.REF} - - self.loop_idx = 0 # to count the generic loops in the app - self.first_defined = { - 'strcopier': True} # bool to keep in account when the first defined string function was defined + self.loop_idx = 0 + self.first_defined = {'strcopier': True} self.inherit_graph = inherit_graph self.space_idx = 0 def initialize_methods(self): self.methods = [] - # Built in methods added for entry in self.obj_table: entry: ObjTabEntry self.methods.extend(entry.dispatch_table_entry) - def initialize_data_code(self): - self.data_code = ['.data'] - def initialize_runtime_errors(self): self.code.append('# Raise exception method') self.code.append('.raise:') - # Waits in $a0 error msg self.code.append('li $v0, 4') - # Prints error message self.code.append('syscall') - self.code.append('li $v0, 17') self.code.append('li $a0, 1') - # Exists self.code.append('syscall\n') - self.data_code.append('zero_error: .asciiz \"Division by zero error\n\"') self.data_code.append('case_void_error: .asciiz \"Case on void error\n\"') self.data_code.append('dispatch_error: .asciiz \"Dispatch on void error\n\"') @@ -56,10 +43,9 @@ def initialize_runtime_errors(self): self.data_code.append('index_error: .asciiz \"Substring out of range error\n\"') self.data_code.append('heap_error: .asciiz \"Heap overflow error\n\"') # no idea how to check for this - def load_abort_messages(self): - self.data_code.append( - "abort_msg: .asciiz \"Abort called from class \"") # guarda el nombre de Void Type - self.data_code.append(f"new_line: .asciiz \"\n\"") # guarda el nombre de Void Type + def get_abort_messages(self): + self.data_code.append("abort_msg: .asciiz \"Abort called from class \"") + self.data_code.append(f"new_line: .asciiz \"\n\"") self.data_code.append('string_abort: .asciiz \"Abort called from class String\n\"') self.data_code.append('int_abort: .asciiz \"Abort called from class Int\n\"') self.data_code.append('bool_abort: .asciiz \"Abort called from class Bool\n\"') @@ -70,7 +56,6 @@ def get_basic_blocks(self, instructions: List[InstructionNode]): return blocks def find_leaders(self, instructions: List[InstructionNode]): - "Returns the positions in the block that are leaders" leaders = {0, len(instructions)} for i, inst in enumerate(instructions): if isinstance(inst, GotoNode) or isinstance(inst, GotoIfNode) or isinstance(inst, ReturnNode) \ @@ -90,13 +75,11 @@ def is_void(self, expr): return isinstance(expr, VoidConstantNode) def add_entry_symb_tab(self, name): - "Method to add a entry in the symbol table. (Local)" self.symbol_table.insert(name) def construct_next_use(self, basic_blocks: List[List[InstructionNode]]): next_use = {} for basic_block in basic_blocks: - # Flush Symbol table's nextuse islive information for x in self.symbol_table: self.symbol_table[x].is_live = False self.symbol_table[x].next_use = None @@ -106,12 +89,8 @@ def construct_next_use(self, basic_blocks: List[List[InstructionNode]]): in2 = inst.in2 if self.is_variable(inst.in2) else None out = inst.out if self.is_variable(inst.out) else None - in1nextuse = None - in2nextuse = None - outnextuse = None - in1islive = False - in2islive = False - outislive = False + in1nextuse, in2nextuse, outnextuse = None, None, None + in1islive, in2islive, outislive = False, False, False entry_in1 = self.symbol_table.lookup(in1) entry_in2 = self.symbol_table.lookup(in2) @@ -121,7 +100,6 @@ def construct_next_use(self, basic_blocks: List[List[InstructionNode]]): outnextuse = entry_out.next_use outislive = entry_out.is_live else: - # Esto no debería pasar entry_out = SymbolTabEntry(out) entry_out.next_use = None entry_out.is_live = False @@ -131,7 +109,6 @@ def construct_next_use(self, basic_blocks: List[List[InstructionNode]]): in1nextuse = entry_in1.next_use in1islive = entry_in1.is_live else: - # Esto no debería pasar entry_in1 = SymbolTabEntry(out) entry_in1.next_use = inst.index entry_in1.is_live = True @@ -141,10 +118,10 @@ def construct_next_use(self, basic_blocks: List[List[InstructionNode]]): in2nextuse = entry_in2.next_use in2islive = entry_in2.is_live else: - # Esto no debería pasar entry_in2 = SymbolTabEntry(in2) entry_in2.next_use = inst.index entry_in2.is_live = True + self.symbol_table.insert(entry_in2) n_entry = NextUseEntry(in1, in2, out, in1nextuse, in2nextuse, outnextuse, in1islive, in2islive, @@ -158,7 +135,6 @@ def get_reg(self, inst: InstructionNode): if self.is_variable(inst.in2): in2_reg = self.get_reg_var(inst.in2) - # Comprobar si se puede usar uno de estos registros tambien para el destino nu_entry = self.next_use[inst.index] if nu_entry.in1islive and nu_entry.in1nextuse < inst.index: self.update_register(inst.out, in1_reg) @@ -166,17 +142,15 @@ def get_reg(self, inst: InstructionNode): if nu_entry.in2islive and nu_entry.in2nextuse < inst.index: self.update_register(inst.out, in2_reg) return - # Si no buscar un registro para z por el otro procedimiento if self.is_variable(inst.out): self.get_reg_var(inst.out) def get_reg_var(self, var): curr_inst = self.inst register = self.addr_desc.get_var_reg(var) - if register is not None: # ya la variable está en un registro + if register is not None: return register - var_st = self.symbol_table.lookup(var) register = self.reg_desc.find_empty_reg() if register is not None: self.update_register(var, register) @@ -184,8 +158,7 @@ def get_reg_var(self, var): return register next_use = self.next_use[curr_inst.index] - # Choose a register that requires the minimal number of load and store instructions - score = self.initialize_score() # keeps the score of each variable (the amount of times a variable in a register is used) + score = self.initialize_score() for inst in self.block[1:]: inst: InstructionNode if self.is_variable(inst.in1) and inst.in1 not in [curr_inst.in1, curr_inst.in2, @@ -198,11 +171,8 @@ def get_reg_var(self, var): curr_inst.out] and next_use.outislive: self._update_score(score, inst.out) - # Chooses the one that is used less register = min(score, key=lambda x: score[x]) - # register, memory, _ = self.addr_desc.get_var_storage(n_var) - self.update_register(var, register) self.load_var_code(var) return register @@ -249,23 +219,19 @@ def update_register(self, var, register): self.addr_desc.set_var_reg(var, register) def save_var_code(self, var): - "Code to save a variable to memory" memory, register, _ = self.addr_desc.get_var_storage(var) self.code.append(f"sw ${register}, -{memory}($fp)") def load_var_code(self, var): - "Code to load a variable from memory" memory, register, _ = self.addr_desc.get_var_storage(var) self.code.append(f'lw ${register}, -{memory}($fp)') def load_used_reg(self, registers): - "Loads the used variables in there registers" for reg in registers: self.code.append('addiu $sp, $sp, 4') self.code.append(f'lw ${reg}, ($sp)') def empty_registers(self, save=True): - "Empty all used registers and saves there values to memory" registers = self.reg_desc.used_registers() for reg, var in registers: if save: @@ -274,17 +240,14 @@ def empty_registers(self, save=True): self.reg_desc.insert_register(reg, None) def push_register(self, register): - "Pushes the register to the stack" self.code.append(f'sw ${register}, ($sp)') self.code.append('addiu $sp, $sp, -4') def pop_register(self, register): - "Popes the register from the stack" self.code.append('addiu $sp, $sp, 4') self.code.append(f'lw ${register}, ($sp)') def save_to_register(self, expr): - "Aditional code to save an expression into a register. Returns the register" if self.is_int(expr): self.code.append(f'li $t9, {expr}') return 't9' @@ -301,7 +264,6 @@ def save_meth_addr(self, func_nodes: List[FunctionNode]): self.methods += [funct.name for funct in func_nodes] words = 'methods: .word ' + ', '.join(map(lambda x: '0', self.methods)) self.data_code.append(words) - # guardo la dirección del método en el array de métodos self.code.append('# Save method directions in the methods array') self.code.append('la $v0, methods') for i, meth in enumerate(self.methods): @@ -309,7 +271,6 @@ def save_meth_addr(self, func_nodes: List[FunctionNode]): self.code.append(f'sw $t9, {4 * i}($v0)') def save_types_addr(self, type_nodes: List[FunctionNode]): - "Saves the structure where the type information is stored" words = 'types: .word ' + ', '.join(map(lambda x: '0', self.inherit_graph)) self.data_code.append(words) self.code.append('# Save types directions in the types array') @@ -322,25 +283,20 @@ def save_types_addr(self, type_nodes: List[FunctionNode]): self.code.append(f'li $a0, 12') self.code.append('syscall') self.types.append(ntype) - self.code.append('# Filling table methods') self.code.append(f'la $t8, type_{ntype}') self.code.append(f'sw $t8, 0($v0)') - self.code.append('# Copying direction to array') self.code.append(f'sw $v0, {4 * i}($t9)') - self.code.append('# Table addr is now stored in t8') self.code.append('move $t8, $v0') self.code.append('# Creating the dispatch table') self.create_dispatch_table(ntype) # table addr is stored in $v0 self.code.append('sw $v0, 8($t8)') - # self.code.append('la $t9, types') self.code.append('# Copying parents') for i, ntype in enumerate(self.types): self.code.append(f'lw $v0, {4 * i}($t9)') - # self.code.append('lw $v0, 0($t8)') nparent = self.inherit_graph[ntype] if nparent is not None: parent_idx = self.types.index(nparent) @@ -351,33 +307,28 @@ def save_types_addr(self, type_nodes: List[FunctionNode]): self.code.append('sw $t8, 4($v0)') def create_dispatch_table(self, type_name): - # Get methods of the dispatch table methods = self.dispatch_table.get_methods(type_name) - # Allocate the dispatch table in the heap self.code.append('# Allocate dispatch table in the heap') self.code.append('li $v0, 9') # code to request memory dispatch_table_size = 4 * len(methods) self.code.append(f'li $a0, {dispatch_table_size + 4}') - self.code.append('syscall') # Memory of the dispatch table in v0 + self.code.append('syscall') var = self.save_reg_if_occupied('v1') self.code.append(f'# I save the offset of every one of the methods of this type') self.code.append('# Save the direction of methods') - self.code.append('la $v1, methods') # cargo la dirección de methods + self.code.append('la $v1, methods') for i, meth in enumerate(methods, 1): - # guardo el offset de cada uno de los métodos de este tipo - offset = 4 * self.methods.index(meth) self.code.append(f'# Save the direction of the method {meth} in a0') - self.code.append(f'lw $a0, {offset}($v1)') # cargo la dirección del método en t9 + self.code.append(f'lw $a0, {offset}($v1)') self.code.append('# Save the direction of the method in his position in the dispatch table') self.code.append( - f'sw $a0, {4 * i}($v0)') # guardo la direccion del metodo en su posicion en el dispatch table + f'sw $a0, {4 * i}($v0)') self.load_var_if_occupied(var) def get_type(self, xtype): - 'Return the var address type according to its static type' if xtype == 'Int': return AddrType.INT elif xtype == 'Bool': @@ -409,16 +360,15 @@ def compare_strings(self, node: EqualNode): self.code.append(f'move $t8, ${rleft}') # counter self.code.append(f'move $t9, ${rright}') self.code.append(f'loop_{loop_idx}:') - self.code.append(f'lb $a0, ($t8)') # load byte from each string + self.code.append(f'lb $a0, ($t8)') self.code.append(f'lb $a1, ($t9)') - self.code.append(f'beqz $a0, check_{loop_idx}') # str1 ended - self.code.append(f'beqz $a1, mismatch_{loop_idx}') # str2 ended when str1 hasnt ended - self.code.append('seq $v0, $a0, $a1') # compare two bytes - self.code.append(f'beqz $v0, mismatch_{loop_idx}') # bytes are different - self.code.append('addi $t8, $t8, 1') # Point to the next byte of str + self.code.append(f'beqz $a0, check_{loop_idx}') + self.code.append(f'beqz $a1, mismatch_{loop_idx}') + self.code.append('seq $v0, $a0, $a1') + self.code.append(f'beqz $v0, mismatch_{loop_idx}') + self.code.append('addi $t8, $t8, 1') self.code.append('addi $t9, $t9, 1') self.code.append(f'j loop_{loop_idx}') - self.code.append(f'mismatch_{loop_idx}:') self.code.append('li $v0, 0') self.code.append(f'j end_{loop_idx}') @@ -431,13 +381,12 @@ def compare_strings(self, node: EqualNode): self.loop_idx += 1 def conforms_to(self, rsrc, rdest, type_name): - "Returns if the object in rsrc conforms to type_name" self.code.append(f'la $t9, type_{type_name}') loop_idx = self.loop_idx - self.code.append(f'lw $v0, 8(${rsrc})') # saves the direction to the type info table + self.code.append(f'lw $v0, 8(${rsrc})') self.code.append(f'loop_{loop_idx}:') - self.code.append(f'move $t8, $v0') # Saves parent addr + self.code.append(f'move $t8, $v0') self.code.append(f'beqz $t8, false_{loop_idx}') self.code.append('lw $v1, 0($t8)') self.code.append(f'beq $t9, $v1, true_{loop_idx}') @@ -456,10 +405,10 @@ def value_conforms_to_obj(self, rdest, typex, branch_type): self.code.append('# Comparing value types in case node') true_label = f'true_{self.loop_idx}' end_label = f'end_{self.loop_idx}' - self.code.append('la $t9, type_Object') # si es de tipo object entonces se conforma + self.code.append('la $t9, type_Object') self.code.append(f'la $t8, type_{branch_type}') self.code.append(f'beq $t9, $t8, {true_label}') - self.code.append(f'la $t9, type_{typex}') # si es del mismo tipo que él entonces se conforma + self.code.append(f'la $t9, type_{typex}') self.code.append(f'beq $t9, $t8, {true_label}') self.code.append(f'li ${rdest}, 0') self.code.append(f'j {end_label}') diff --git a/src/cool/codegen/utils/ast_cil.py b/src/cool/codegen/utils/ast_cil.py index 52474d9d6..7bafd86fa 100644 --- a/src/cool/codegen/utils/ast_cil.py +++ b/src/cool/codegen/utils/ast_cil.py @@ -354,7 +354,7 @@ def __init__(self, dest, idx=None): class ExitNode(InstructionNode): def __init__(self, classx, value=0, idx=None): super().__init__(idx) - self.classx = classx # instance of the method that called the class + self.classx = classx self.value = value self.in1 = value @@ -379,7 +379,7 @@ def __init__(self, dest, expr, type2, idx=None): self.type = type2 self.out = dest - self.in1 = expr # is a string, so is always a variable + self.in1 = expr class VoidConstantNode(InstructionNode): @@ -401,5 +401,4 @@ def __init__(self, dest, type_name, idx=None): super().__init__(idx) self.dest = dest self.type = type_name - self.out = dest diff --git a/src/cool/codegen/utils/tools.py b/src/cool/codegen/utils/tools.py index 559edbd97..2c4a3fea2 100644 --- a/src/cool/codegen/utils/tools.py +++ b/src/cool/codegen/utils/tools.py @@ -35,8 +35,6 @@ def __iter__(self): class NextUseEntry: - """For each line : for all three variables involved their next use and is live information""" - def __init__(self, in1, in2, out, in1nextuse, in2nextuse, outnextuse, in1islive, in2islive, outislive): self.in1 = in1 self.in2 = in2 @@ -57,9 +55,7 @@ class AddrType(Enum): VOID = 5 -class AddressDescriptor: - 'Stores the location of each variable' - +class AddrDescriptor: def __init__(self): self.vars = {} @@ -99,8 +95,6 @@ class RegisterType(Enum): class RegisterDescriptor: - 'Stores the contents of each register' - def __init__(self): registers = ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7', 'a1', 'a2', 'a3', \ 's0', 's1', 's2', 's3', 's4', 's5', 's6', 's7', 'v1'] @@ -145,8 +139,6 @@ def find_full_name(self, type_name, mth_name): return None def get_methods(self, type_name): - "Returns all the methods of a specific type" - return self.classes[type_name] def __len__(self): @@ -177,7 +169,6 @@ def attr_offset(self, attr): return self.attrs.index(attr) + 3 def method_offset(self, meth): - "Method offset in dispatch table" return self.dispatch_table_entry.index(meth) diff --git a/src/cool/parser/output/parselog.txt b/src/cool/parser/output/parselog.txt index fed32c634..98366c046 100644 --- a/src/cool/parser/output/parselog.txt +++ b/src/cool/parser/output/parselog.txt @@ -6125,6098 +6125,219 @@ yacc.py: 362:PLY: PARSE DEBUG START yacc.py: 410: yacc.py: 411:State : 0 - yacc.py: 434:Stack : . LexToken(class,'Class',3,64) + yacc.py: 434:Stack : . LexToken(class,'class',1,0) yacc.py: 445:Action : Shift and goto state 5 yacc.py: 410: yacc.py: 411:State : 5 - yacc.py: 434:Stack : class . LexToken(type,'Book',3,70) + yacc.py: 434:Stack : class . LexToken(type,'Main',1,6) yacc.py: 445:Action : Shift and goto state 8 yacc.py: 410: yacc.py: 411:State : 8 - yacc.py: 434:Stack : class type . LexToken(inherits,'inherits',3,75) + yacc.py: 434:Stack : class type . LexToken(inherits,'inherits',1,11) yacc.py: 445:Action : Shift and goto state 11 yacc.py: 410: yacc.py: 411:State : 11 - yacc.py: 434:Stack : class type inherits . LexToken(type,'IO',3,84) + yacc.py: 434:Stack : class type inherits . LexToken(type,'IO',1,20) yacc.py: 445:Action : Shift and goto state 20 yacc.py: 410: yacc.py: 411:State : 20 - yacc.py: 434:Stack : class type inherits type . LexToken(ocur,'{',3,87) + yacc.py: 434:Stack : class type inherits type . LexToken(ocur,'{',1,23) yacc.py: 445:Action : Shift and goto state 33 yacc.py: 410: yacc.py: 411:State : 33 - yacc.py: 434:Stack : class type inherits type ocur . LexToken(id,'title',4,93) + yacc.py: 434:Stack : class type inherits type ocur . LexToken(id,'main',2,28) yacc.py: 445:Action : Shift and goto state 19 yacc.py: 410: yacc.py: 411:State : 19 - yacc.py: 434:Stack : class type inherits type ocur id . LexToken(colon,':',4,99) - yacc.py: 445:Action : Shift and goto state 31 - yacc.py: 410: - yacc.py: 411:State : 31 - yacc.py: 434:Stack : class type inherits type ocur id colon . LexToken(type,'String',4,101) - yacc.py: 445:Action : Shift and goto state 49 - yacc.py: 410: - yacc.py: 411:State : 49 - yacc.py: 434:Stack : class type inherits type ocur id colon type . LexToken(semi,';',4,107) - yacc.py: 469:Action : Reduce rule [def_attr -> id colon type] with ['title',':','String'] and goto state 17 - yacc.py: 506:Result : ( id colon type] with ['author',':','String'] and goto state 17 - yacc.py: 506:Result : ( id colon type] with ['title_p',':','String'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'title_p',7,144), LexToken( ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar param . LexToken(comma,',',7,160) - yacc.py: 445:Action : Shift and goto state 60 - yacc.py: 410: - yacc.py: 411:State : 60 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar param comma . LexToken(id,'author_p',7,162) - yacc.py: 445:Action : Shift and goto state 46 - yacc.py: 410: - yacc.py: 411:State : 46 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar param comma id . LexToken(colon,':',7,171) - yacc.py: 445:Action : Shift and goto state 61 - yacc.py: 410: - yacc.py: 411:State : 61 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar param comma id colon . LexToken(type,'String',7,173) - yacc.py: 445:Action : Shift and goto state 96 - yacc.py: 410: - yacc.py: 411:State : 96 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar param comma id colon type . LexToken(cpar,')',7,179) - yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['author_p',':','String'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'author_p',7,162), LexToken ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar param comma param . LexToken(cpar,')',7,179) - yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 - yacc.py: 506:Result : ([(LexToken(id,'author_p',7,162), LexToke ...) - yacc.py: 410: - yacc.py: 411:State : 95 - yacc.py: 430:Defaulted state 95: Reduce using 33 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar param comma param_list . LexToken(cpar,')',7,179) - yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 - yacc.py: 506:Result : ([(LexToken(id,'title_p',7,144), LexToken ...) - yacc.py: 410: - yacc.py: 411:State : 42 - yacc.py: 430:Defaulted state 42: Reduce using 30 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar param_list . LexToken(cpar,')',7,179) - yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 - yacc.py: 506:Result : ([(LexToken(id,'title_p',7,144), LexToken ...) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals . LexToken(cpar,')',7,179) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals cpar . LexToken(colon,':',7,181) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon . LexToken(type,'Book',7,183) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',7,188) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type ocur . LexToken(ocur,'{',8,198) - yacc.py: 445:Action : Shift and goto state 90 - yacc.py: 410: - yacc.py: 411:State : 90 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type ocur ocur . LexToken(id,'title',9,212) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type ocur ocur id . LexToken(larrow,'<-',9,218) - yacc.py: 445:Action : Shift and goto state 112 - yacc.py: 410: - yacc.py: 411:State : 112 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type ocur ocur id larrow . LexToken(id,'title_p',9,221) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type ocur ocur id larrow id . LexToken(semi,';',9,228) - yacc.py: 469:Action : Reduce rule [atom -> id] with ['title_p'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 152 - yacc.py: 506:Result : ( id larrow expr] with ['title','<-',] and goto state 111 - yacc.py: 506:Result : ( id] with ['author_p'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 152 - yacc.py: 506:Result : ( id larrow expr] with ['author','<-',] and goto state 111 - yacc.py: 506:Result : ( id] with ['self'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 - yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 190 - yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 - yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['initBook','(',,')',':','Book','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 45 yacc.py: 548:Result : (None) yacc.py: 410: yacc.py: 411:State : 45 yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar epsilon . LexToken(cpar,')',15,308) + yacc.py: 434:Stack : class type inherits type ocur id opar epsilon . LexToken(cpar,')',2,33) yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param_list_empty . LexToken(cpar,')',15,308) + yacc.py: 434:Stack : class type inherits type ocur id opar param_list_empty . LexToken(cpar,')',2,33) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals . LexToken(cpar,')',15,308) + yacc.py: 434:Stack : class type inherits type ocur id opar formals . LexToken(cpar,')',2,33) yacc.py: 445:Action : Shift and goto state 64 yacc.py: 410: yacc.py: 411:State : 64 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar . LexToken(colon,':',15,310) + yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar . LexToken(colon,':',2,34) yacc.py: 445:Action : Shift and goto state 100 yacc.py: 410: yacc.py: 411:State : 100 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon . LexToken(type,'Book',15,312) + yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon . LexToken(type,'IO',2,36) yacc.py: 445:Action : Shift and goto state 138 yacc.py: 410: yacc.py: 411:State : 138 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',15,317) + yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon type . LexToken(ocur,'{',2,39) yacc.py: 445:Action : Shift and goto state 181 yacc.py: 410: yacc.py: 411:State : 181 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur . LexToken(ocur,'{',16,327) - yacc.py: 445:Action : Shift and goto state 90 - yacc.py: 410: - yacc.py: 411:State : 90 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur . LexToken(id,'out_string',17,341) + yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon type ocur . LexToken(id,'out_string',3,42) yacc.py: 445:Action : Shift and goto state 72 yacc.py: 410: yacc.py: 411:State : 72 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur id . LexToken(opar,'(',17,351) + yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon type ocur id . LexToken(opar,'(',3,52) yacc.py: 445:Action : Shift and goto state 113 yacc.py: 410: yacc.py: 411:State : 113 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur id opar . LexToken(string,'title: ',17,365) + yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon type ocur id opar . LexToken(string,'Hello, World.\n',3,69) yacc.py: 445:Action : Shift and goto state 93 yacc.py: 410: yacc.py: 411:State : 93 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur id opar string . LexToken(cpar,')',17,366) - yacc.py: 469:Action : Reduce rule [atom -> string] with ['title: '] and goto state 79 - yacc.py: 506:Result : ( string] with [] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'out_string',17,341), [ id opar args cpar] with ['out_string','(',,')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'out_string',3,42), [ func_call] with [] and goto state 77 - yacc.py: 506:Result : ( id] with ['title'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'out_string',17,368), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( string] with ['\n'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'out_string',17,386), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( string] with ['author: '] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( func_call] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','IO','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( id opar args cpar] with ['out_string','(',,')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'out_string',18,416), [ func_call] with [] and goto state 77 - yacc.py: 506:Result : ( ] with [] and goto state 16 + yacc.py: 548:Result : (None) yacc.py: 410: - yacc.py: 411:State : 77 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur expr semi factor . LexToken(dot,'.',18,442) - yacc.py: 445:Action : Shift and goto state 122 + yacc.py: 411:State : 16 + yacc.py: 430:Defaulted state 16: Reduce using 14 + yacc.py: 434:Stack : class type inherits type ocur def_func semi epsilon . LexToken(ccur,'}',5,78) + yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 + yacc.py: 506:Result : ([]) yacc.py: 410: - yacc.py: 411:State : 122 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur expr semi factor dot . LexToken(id,'out_string',18,443) - yacc.py: 445:Action : Shift and goto state 168 + yacc.py: 411:State : 48 + yacc.py: 430:Defaulted state 48: Reduce using 16 + yacc.py: 434:Stack : class type inherits type ocur def_func semi feature_list . LexToken(ccur,'}',5,78) + yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 53 + yacc.py: 506:Result : ([ id] with ['author'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'out_string',18,443), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( string] with ['\n'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'out_string',18,462), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( id] with ['self'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 - yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 190 - yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 - yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['print','(',[],')',':','Book','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 16 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 16 - yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi epsilon . LexToken(ccur,'}',22,515) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 48 - yacc.py: 430:Defaulted state 48: Reduce using 16 - yacc.py: 434:Stack : class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi feature_list . LexToken(ccur,'}',22,515) - yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 48 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 47 - yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 47 - yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 53 - yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['Class','Book','inherits','IO','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( id colon type] with ['per_title',':','String'] and goto state 17 - yacc.py: 506:Result : ( id colon type] with ['title_p',':','String'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'title_p',27,590), LexToken ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param . LexToken(comma,',',27,606) - yacc.py: 445:Action : Shift and goto state 60 - yacc.py: 410: - yacc.py: 411:State : 60 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma . LexToken(id,'author_p',27,608) - yacc.py: 445:Action : Shift and goto state 46 - yacc.py: 410: - yacc.py: 411:State : 46 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma id . LexToken(colon,':',27,617) - yacc.py: 445:Action : Shift and goto state 61 - yacc.py: 410: - yacc.py: 411:State : 61 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma id colon . LexToken(type,'String',27,619) - yacc.py: 445:Action : Shift and goto state 96 - yacc.py: 410: - yacc.py: 411:State : 96 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma id colon type . LexToken(comma,',',27,625) - yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['author_p',':','String'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'author_p',27,608), LexToke ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma param . LexToken(comma,',',27,625) - yacc.py: 445:Action : Shift and goto state 60 - yacc.py: 410: - yacc.py: 411:State : 60 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma param comma . LexToken(id,'per_title_p',28,629) - yacc.py: 445:Action : Shift and goto state 46 - yacc.py: 410: - yacc.py: 411:State : 46 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma param comma id . LexToken(colon,':',28,641) - yacc.py: 445:Action : Shift and goto state 61 - yacc.py: 410: - yacc.py: 411:State : 61 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma param comma id colon . LexToken(type,'String',28,643) - yacc.py: 445:Action : Shift and goto state 96 - yacc.py: 410: - yacc.py: 411:State : 96 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma param comma id colon type . LexToken(cpar,')',28,649) - yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['per_title_p',':','String'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'per_title_p',28,629), LexT ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma param comma param . LexToken(cpar,')',28,649) - yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 - yacc.py: 506:Result : ([(LexToken(id,'per_title_p',28,629), Lex ...) - yacc.py: 410: - yacc.py: 411:State : 95 - yacc.py: 430:Defaulted state 95: Reduce using 33 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma param comma param_list . LexToken(cpar,')',28,649) - yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 95 - yacc.py: 506:Result : ([(LexToken(id,'author_p',27,608), LexTok ...) - yacc.py: 410: - yacc.py: 411:State : 95 - yacc.py: 430:Defaulted state 95: Reduce using 33 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param comma param_list . LexToken(cpar,')',28,649) - yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 - yacc.py: 506:Result : ([(LexToken(id,'title_p',27,590), LexToke ...) - yacc.py: 410: - yacc.py: 411:State : 42 - yacc.py: 430:Defaulted state 42: Reduce using 30 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar param_list . LexToken(cpar,')',28,649) - yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 - yacc.py: 506:Result : ([(LexToken(id,'title_p',27,590), LexToke ...) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals . LexToken(cpar,')',28,649) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals cpar . LexToken(colon,':',28,651) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals cpar colon . LexToken(type,'Article',28,653) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',28,661) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals cpar colon type ocur . LexToken(ocur,'{',29,671) - yacc.py: 445:Action : Shift and goto state 90 - yacc.py: 410: - yacc.py: 411:State : 90 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals cpar colon type ocur ocur . LexToken(id,'initBook',30,685) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals cpar colon type ocur ocur id . LexToken(opar,'(',30,693) - yacc.py: 445:Action : Shift and goto state 113 - yacc.py: 410: - yacc.py: 411:State : 113 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals cpar colon type ocur ocur id opar . LexToken(id,'title_p',30,694) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi id opar formals cpar colon type ocur ocur id opar id . LexToken(comma,',',30,701) - yacc.py: 469:Action : Reduce rule [atom -> id] with ['title_p'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( id] with ['author_p'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 211 - yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['initBook','(',,')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'initBook',30,685), [ func_call] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( id] with ['per_title_p'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 152 - yacc.py: 506:Result : ( id larrow expr] with ['per_title','<-',] and goto state 111 - yacc.py: 506:Result : ( id] with ['self'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 - yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 190 - yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 - yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['initArticle','(',,')',':','Article','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar epsilon . LexToken(cpar,')',36,798) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar param_list_empty . LexToken(cpar,')',36,798) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals . LexToken(cpar,')',36,798) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar . LexToken(colon,':',36,800) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon . LexToken(type,'Book',36,802) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',36,807) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type ocur . LexToken(ocur,'{',37,817) - yacc.py: 445:Action : Shift and goto state 90 - yacc.py: 410: - yacc.py: 411:State : 90 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type ocur ocur . LexToken(id,'self',38,824) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type ocur ocur id . LexToken(arroba,'@',38,828) - yacc.py: 469:Action : Reduce rule [atom -> id] with ['self'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type ocur ocur factor arroba type dot id opar epsilon . LexToken(cpar,')',38,840) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type ocur ocur factor arroba type dot id opar arg_list_empty . LexToken(cpar,')',38,840) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type ocur ocur factor arroba type dot id opar args . LexToken(cpar,')',38,840) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type ocur ocur factor arroba type dot id opar args cpar . LexToken(semi,';',38,841) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['print','(',[],')'] and goto state 212 - yacc.py: 506:Result : ((LexToken(id,'print',38,834), [])) - yacc.py: 410: - yacc.py: 411:State : 212 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi id opar formals cpar colon type ocur ocur factor arroba type dot func_call . LexToken(semi,';',38,841) - yacc.py: 469:Action : Reduce rule [base_call -> factor arroba type dot func_call] with [,'@','Book','.',] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( string] with ['periodical: '] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'out_string',39,855), [ func_call] with [] and goto state 77 - yacc.py: 506:Result : ( id] with ['per_title'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'out_string',39,883), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( string] with ['\n'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'out_string',39,905), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( id] with ['self'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 - yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 190 - yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 - yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['print','(',[],')',':','Book','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 16 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 16 - yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi def_func semi epsilon . LexToken(ccur,'}',43,958) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 48 - yacc.py: 430:Defaulted state 48: Reduce using 16 - yacc.py: 434:Stack : def_class class type inherits type ocur def_attr semi def_func semi def_func semi feature_list . LexToken(ccur,'}',43,958) - yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 48 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 47 - yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 53 - yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['Class','Article','inherits','Book','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar epsilon . LexToken(cpar,')',50,1199) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar param_list_empty . LexToken(cpar,')',50,1199) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals . LexToken(cpar,')',50,1199) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar . LexToken(colon,':',50,1201) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon . LexToken(type,'Bool',50,1203) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type . LexToken(ocur,'{',50,1208) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur . LexToken(ocur,'{',50,1210) - yacc.py: 445:Action : Shift and goto state 90 - yacc.py: 410: - yacc.py: 411:State : 90 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur ocur . LexToken(id,'abort',50,1212) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur ocur id . LexToken(opar,'(',50,1217) - yacc.py: 445:Action : Shift and goto state 113 - yacc.py: 410: - yacc.py: 411:State : 113 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur ocur id opar . LexToken(cpar,')',50,1218) - yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur ocur id opar epsilon . LexToken(cpar,')',50,1218) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur ocur id opar arg_list_empty . LexToken(cpar,')',50,1218) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur ocur id opar args . LexToken(cpar,')',50,1218) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur ocur id opar args cpar . LexToken(semi,';',50,1219) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['abort','(',[],')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'abort',50,1212), [])) - yacc.py: 410: - yacc.py: 411:State : 78 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur id opar formals cpar colon type ocur ocur func_call . LexToken(semi,';',50,1219) - yacc.py: 469:Action : Reduce rule [factor -> func_call] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( true] with ['true'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 - yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 - yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['isNil','(',[],')',':','Bool','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id colon type] with ['hd',':','Book'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'hd',52,1246), LexToken(typ ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar param . LexToken(cpar,')',52,1255) - yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 42 - yacc.py: 506:Result : ([(LexToken(id,'hd',52,1246), LexToken(ty ...) - yacc.py: 410: - yacc.py: 411:State : 42 - yacc.py: 430:Defaulted state 42: Reduce using 30 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar param_list . LexToken(cpar,')',52,1255) - yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 - yacc.py: 506:Result : ([(LexToken(id,'hd',52,1246), LexToken(ty ...) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals . LexToken(cpar,')',52,1255) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar . LexToken(colon,':',52,1257) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon . LexToken(type,'Cons',52,1259) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type . LexToken(ocur,'{',52,1264) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur . LexToken(opar,'(',53,1274) - yacc.py: 445:Action : Shift and goto state 80 - yacc.py: 410: - yacc.py: 411:State : 80 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar . LexToken(let,'let',53,1275) - yacc.py: 445:Action : Shift and goto state 84 - yacc.py: 410: - yacc.py: 411:State : 84 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar let . LexToken(id,'new_cell',53,1279) - yacc.py: 445:Action : Shift and goto state 46 - yacc.py: 410: - yacc.py: 411:State : 46 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar let id . LexToken(colon,':',53,1288) - yacc.py: 445:Action : Shift and goto state 61 - yacc.py: 410: - yacc.py: 411:State : 61 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar let id colon . LexToken(type,'Cons',53,1290) - yacc.py: 445:Action : Shift and goto state 96 - yacc.py: 410: - yacc.py: 411:State : 96 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar let id colon type . LexToken(larrow,'<-',53,1295) - yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['new_cell',':','Cons'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'new_cell',53,1279), LexTok ...) - yacc.py: 410: - yacc.py: 411:State : 130 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar let param . LexToken(larrow,'<-',53,1295) - yacc.py: 445:Action : Shift and goto state 173 - yacc.py: 410: - yacc.py: 411:State : 173 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar let param larrow . LexToken(new,'new',53,1298) - yacc.py: 445:Action : Shift and goto state 89 - yacc.py: 410: - yacc.py: 411:State : 89 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar let param larrow new . LexToken(type,'Cons',53,1302) - yacc.py: 445:Action : Shift and goto state 134 - yacc.py: 410: - yacc.py: 411:State : 134 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur opar let param larrow new type . LexToken(in,'in',53,1307) - yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','Cons'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 198 - yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 - yacc.py: 506:Result : ( let_assign] with [] and goto state 128 - yacc.py: 506:Result : ([ id] with ['new_cell'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( id] with ['hd'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( id] with ['self'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 211 - yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['init','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'init',54,1331), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 196 - yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 123 - yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['cons','(',,')',':','Cons','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar epsilon . LexToken(cpar,')',62,1568) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',62,1568) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals . LexToken(cpar,')',62,1568) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar . LexToken(colon,':',62,1570) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon . LexToken(type,'Book',62,1572) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',62,1577) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(ocur,'{',62,1579) - yacc.py: 445:Action : Shift and goto state 90 - yacc.py: 410: - yacc.py: 411:State : 90 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur ocur . LexToken(id,'abort',62,1581) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur ocur id . LexToken(opar,'(',62,1586) - yacc.py: 445:Action : Shift and goto state 113 - yacc.py: 410: - yacc.py: 411:State : 113 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar . LexToken(cpar,')',62,1587) - yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar epsilon . LexToken(cpar,')',62,1587) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar arg_list_empty . LexToken(cpar,')',62,1587) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar args . LexToken(cpar,')',62,1587) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar args cpar . LexToken(semi,';',62,1588) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['abort','(',[],')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'abort',62,1581), [])) - yacc.py: 410: - yacc.py: 411:State : 78 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi id opar formals cpar colon type ocur ocur func_call . LexToken(semi,';',62,1588) - yacc.py: 469:Action : Reduce rule [factor -> func_call] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( new type] with ['new','Book'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 - yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 - yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['car','(',[],')',':','Book','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',68,1819) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',68,1819) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals . LexToken(cpar,')',68,1819) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',68,1821) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'BookList',68,1823) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',68,1832) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(ocur,'{',68,1834) - yacc.py: 445:Action : Shift and goto state 90 - yacc.py: 410: - yacc.py: 411:State : 90 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur . LexToken(id,'abort',68,1836) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur id . LexToken(opar,'(',68,1841) - yacc.py: 445:Action : Shift and goto state 113 - yacc.py: 410: - yacc.py: 411:State : 113 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar . LexToken(cpar,')',68,1842) - yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar epsilon . LexToken(cpar,')',68,1842) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar arg_list_empty . LexToken(cpar,')',68,1842) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar args . LexToken(cpar,')',68,1842) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur id opar args cpar . LexToken(semi,';',68,1843) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['abort','(',[],')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'abort',68,1836), [])) - yacc.py: 410: - yacc.py: 411:State : 78 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur func_call . LexToken(semi,';',68,1843) - yacc.py: 469:Action : Reduce rule [factor -> func_call] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( new type] with ['new','BookList'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 - yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 - yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['cdr','(',[],')',':','BookList','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',70,1884) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',70,1884) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals . LexToken(cpar,')',70,1884) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',70,1886) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'Object',70,1888) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',70,1895) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(id,'abort',70,1897) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur id . LexToken(opar,'(',70,1902) - yacc.py: 445:Action : Shift and goto state 113 - yacc.py: 410: - yacc.py: 411:State : 113 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur id opar . LexToken(cpar,')',70,1903) - yacc.py: 473:Action : Reduce rule [epsilon -> ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur id opar epsilon . LexToken(cpar,')',70,1903) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur id opar arg_list_empty . LexToken(cpar,')',70,1903) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur id opar args . LexToken(cpar,')',70,1903) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur id opar args cpar . LexToken(ccur,'}',70,1905) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['abort','(',[],')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'abort',70,1897), [])) - yacc.py: 410: - yacc.py: 411:State : 78 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur func_call . LexToken(ccur,'}',70,1905) - yacc.py: 469:Action : Reduce rule [factor -> func_call] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['print_list','(',[],')',':','Object','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 16 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 16 - yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi def_func semi epsilon . LexToken(ccur,'}',71,1908) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 48 - yacc.py: 430:Defaulted state 48: Reduce using 16 - yacc.py: 434:Stack : def_class def_class class type inherits type ocur def_func semi def_func semi def_func semi def_func semi def_func semi feature_list . LexToken(ccur,'}',71,1908) - yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 48 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 48 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 48 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 48 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 53 - yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['Class','BookList','inherits','IO','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( id colon type] with ['xcar',':','Book'] and goto state 17 - yacc.py: 506:Result : ( id colon type] with ['xcdr',':','BookList'] and goto state 17 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi id opar epsilon . LexToken(cpar,')',79,2194) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi id opar param_list_empty . LexToken(cpar,')',79,2194) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi id opar formals . LexToken(cpar,')',79,2194) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi id opar formals cpar . LexToken(colon,':',79,2196) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon . LexToken(type,'Bool',79,2198) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',79,2203) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type ocur . LexToken(false,'false',79,2205) - yacc.py: 445:Action : Shift and goto state 92 - yacc.py: 410: - yacc.py: 411:State : 92 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi id opar formals cpar colon type ocur false . LexToken(ccur,'}',79,2211) - yacc.py: 469:Action : Reduce rule [atom -> false] with ['false'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['isNil','(',[],')',':','Bool','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id colon type] with ['hd',':','Book'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'hd',81,2228), LexToken(typ ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param . LexToken(comma,',',81,2237) - yacc.py: 445:Action : Shift and goto state 60 - yacc.py: 410: - yacc.py: 411:State : 60 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param comma . LexToken(id,'tl',81,2239) - yacc.py: 445:Action : Shift and goto state 46 - yacc.py: 410: - yacc.py: 411:State : 46 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param comma id . LexToken(colon,':',81,2242) - yacc.py: 445:Action : Shift and goto state 61 - yacc.py: 410: - yacc.py: 411:State : 61 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param comma id colon . LexToken(type,'BookList',81,2244) - yacc.py: 445:Action : Shift and goto state 96 - yacc.py: 410: - yacc.py: 411:State : 96 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param comma id colon type . LexToken(cpar,')',81,2252) - yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['tl',':','BookList'] and goto state 44 - yacc.py: 506:Result : ((LexToken(id,'tl',81,2239), LexToken(typ ...) - yacc.py: 410: - yacc.py: 411:State : 44 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param comma param . LexToken(cpar,')',81,2252) - yacc.py: 469:Action : Reduce rule [param_list -> param] with [] and goto state 95 - yacc.py: 506:Result : ([(LexToken(id,'tl',81,2239), LexToken(ty ...) - yacc.py: 410: - yacc.py: 411:State : 95 - yacc.py: 430:Defaulted state 95: Reduce using 33 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param comma param_list . LexToken(cpar,')',81,2252) - yacc.py: 469:Action : Reduce rule [param_list -> param comma param_list] with [,',',] and goto state 42 - yacc.py: 506:Result : ([(LexToken(id,'hd',81,2228), LexToken(ty ...) - yacc.py: 410: - yacc.py: 411:State : 42 - yacc.py: 430:Defaulted state 42: Reduce using 30 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar param_list . LexToken(cpar,')',81,2252) - yacc.py: 469:Action : Reduce rule [formals -> param_list] with [] and goto state 51 - yacc.py: 506:Result : ([(LexToken(id,'hd',81,2228), LexToken(ty ...) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals . LexToken(cpar,')',81,2252) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar . LexToken(colon,':',81,2254) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon . LexToken(type,'Cons',81,2256) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',81,2261) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur . LexToken(ocur,'{',82,2271) - yacc.py: 445:Action : Shift and goto state 90 - yacc.py: 410: - yacc.py: 411:State : 90 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur . LexToken(id,'xcar',83,2285) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur id . LexToken(larrow,'<-',83,2290) - yacc.py: 445:Action : Shift and goto state 112 - yacc.py: 410: - yacc.py: 411:State : 112 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur id larrow . LexToken(id,'hd',83,2293) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi id opar formals cpar colon type ocur ocur id larrow id . LexToken(semi,';',83,2295) - yacc.py: 469:Action : Reduce rule [atom -> id] with ['hd'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 152 - yacc.py: 506:Result : ( id larrow expr] with ['xcar','<-',] and goto state 111 - yacc.py: 506:Result : ( id] with ['tl'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 152 - yacc.py: 506:Result : ( id larrow expr] with ['xcdr','<-',] and goto state 111 - yacc.py: 506:Result : ( id] with ['self'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 - yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 190 - yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 - yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['init','(',,')',':','Cons','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',89,2365) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',89,2365) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi id opar formals . LexToken(cpar,')',89,2365) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',89,2367) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'Book',89,2369) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',89,2374) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(id,'xcar',89,2376) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi id opar formals cpar colon type ocur id . LexToken(ccur,'}',89,2381) - yacc.py: 469:Action : Reduce rule [atom -> id] with ['xcar'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['car','(',[],')',':','Book','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',91,2393) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',91,2393) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi id opar formals . LexToken(cpar,')',91,2393) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',91,2395) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'BookList',91,2397) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',91,2406) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(id,'xcdr',91,2408) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur id . LexToken(ccur,'}',91,2413) - yacc.py: 469:Action : Reduce rule [atom -> id] with ['xcdr'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['cdr','(',[],')',':','BookList','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar epsilon . LexToken(cpar,')',93,2436) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar param_list_empty . LexToken(cpar,')',93,2436) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals . LexToken(cpar,')',93,2436) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar . LexToken(colon,':',93,2438) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon . LexToken(type,'Object',93,2440) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type . LexToken(ocur,'{',93,2447) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur . LexToken(ocur,'{',94,2457) - yacc.py: 445:Action : Shift and goto state 90 - yacc.py: 410: - yacc.py: 411:State : 90 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur . LexToken(case,'case',95,2471) - yacc.py: 445:Action : Shift and goto state 85 - yacc.py: 410: - yacc.py: 411:State : 85 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case . LexToken(id,'xcar',95,2476) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case id . LexToken(dot,'.',95,2480) - yacc.py: 469:Action : Reduce rule [atom -> id] with ['xcar'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case factor dot id opar epsilon . LexToken(cpar,')',95,2487) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case factor dot id opar arg_list_empty . LexToken(cpar,')',95,2487) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case factor dot id opar args . LexToken(cpar,')',95,2487) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case factor dot id opar args cpar . LexToken(of,'of',95,2489) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['print','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'print',95,2481), [])) - yacc.py: 410: - yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case factor dot func_call . LexToken(of,'of',95,2489) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 131 - yacc.py: 506:Result : (',96,2521) - yacc.py: 445:Action : Shift and goto state 229 - yacc.py: 410: - yacc.py: 411:State : 229 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case expr of id colon type rarrow . LexToken(id,'out_string',96,2524) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case expr of id colon type rarrow id . LexToken(opar,'(',96,2534) - yacc.py: 445:Action : Shift and goto state 113 - yacc.py: 410: - yacc.py: 411:State : 113 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case expr of id colon type rarrow id opar . LexToken(string,'- dynamic type was Book -\n',96,2563) - yacc.py: 445:Action : Shift and goto state 93 - yacc.py: 410: - yacc.py: 411:State : 93 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case expr of id colon type rarrow id opar string . LexToken(cpar,')',96,2564) - yacc.py: 469:Action : Reduce rule [atom -> string] with [] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'out_string',96,2524), [ func_call] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 231 - yacc.py: 506:Result : ( id colon type rarrow expr] with ['dummy',':','Book','=>',] and goto state 200 - yacc.py: 506:Result : (',97,2599) - yacc.py: 445:Action : Shift and goto state 229 - yacc.py: 410: - yacc.py: 411:State : 229 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case expr of casep semi id colon type rarrow . LexToken(id,'out_string',97,2602) - yacc.py: 445:Action : Shift and goto state 72 - yacc.py: 410: - yacc.py: 411:State : 72 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case expr of casep semi id colon type rarrow id . LexToken(opar,'(',97,2612) - yacc.py: 445:Action : Shift and goto state 113 - yacc.py: 410: - yacc.py: 411:State : 113 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case expr of casep semi id colon type rarrow id opar . LexToken(string,'- dynamic type was Article -\n',97,2644) - yacc.py: 445:Action : Shift and goto state 93 - yacc.py: 410: - yacc.py: 411:State : 93 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur case expr of casep semi id colon type rarrow id opar string . LexToken(cpar,')',97,2645) - yacc.py: 469:Action : Reduce rule [atom -> string] with [] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'out_string',97,2602), [ func_call] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 231 - yacc.py: 506:Result : ( id colon type rarrow expr] with ['dummy',':','Article','=>',] and goto state 200 - yacc.py: 506:Result : ( casep semi] with [,';'] and goto state 226 - yacc.py: 506:Result : ([ casep semi cases_list] with [,';',] and goto state 199 - yacc.py: 506:Result : ([ case expr of cases_list esac] with ['case',,'of',,'esac'] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( id] with ['xcdr'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur expr semi factor dot id opar epsilon . LexToken(cpar,')',99,2694) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur expr semi factor dot id opar arg_list_empty . LexToken(cpar,')',99,2694) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur expr semi factor dot id opar args . LexToken(cpar,')',99,2694) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur expr semi factor dot id opar args cpar . LexToken(semi,';',99,2695) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['print_list','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'print_list',99,2683), [])) - yacc.py: 410: - yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi id opar formals cpar colon type ocur ocur expr semi factor dot func_call . LexToken(semi,';',99,2695) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 - yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 - yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['print_list','(',[],')',':','Object','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 16 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 16 - yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi def_func semi epsilon . LexToken(ccur,'}',102,2714) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 48 - yacc.py: 430:Defaulted state 48: Reduce using 16 - yacc.py: 434:Stack : def_class def_class def_class class type inherits type ocur def_attr semi def_attr semi def_func semi def_func semi def_func semi def_func semi def_func semi feature_list . LexToken(ccur,'}',102,2714) - yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 48 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 48 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 48 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 48 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 47 - yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 47 - yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 53 - yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['Class','Cons','inherits','BookList','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur id opar epsilon . LexToken(cpar,')',105,2758) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur id opar param_list_empty . LexToken(cpar,')',105,2758) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur id opar formals . LexToken(cpar,')',105,2758) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur id opar formals cpar . LexToken(colon,':',105,2760) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur id opar formals cpar colon . LexToken(type,'Bool',105,2762) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur id opar formals cpar colon type . LexToken(ocur,'{',105,2767) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur id opar formals cpar colon type ocur . LexToken(true,'true',105,2769) - yacc.py: 445:Action : Shift and goto state 91 - yacc.py: 410: - yacc.py: 411:State : 91 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur id opar formals cpar colon type ocur true . LexToken(ccur,'}',105,2774) - yacc.py: 469:Action : Reduce rule [atom -> true] with ['true'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['isNil','(',[],')',':','Bool','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur def_func semi id opar epsilon . LexToken(cpar,')',107,2793) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur def_func semi id opar param_list_empty . LexToken(cpar,')',107,2793) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur def_func semi id opar formals . LexToken(cpar,')',107,2793) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur def_func semi id opar formals cpar . LexToken(colon,':',107,2795) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon . LexToken(type,'Object',107,2797) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type . LexToken(ocur,'{',107,2804) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur . LexToken(true,'true',107,2806) - yacc.py: 445:Action : Shift and goto state 91 - yacc.py: 410: - yacc.py: 411:State : 91 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur def_func semi id opar formals cpar colon type ocur true . LexToken(ccur,'}',107,2811) - yacc.py: 469:Action : Reduce rule [atom -> true] with ['true'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['print_list','(',[],')',':','Object','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 16 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 16 - yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur def_func semi def_func semi epsilon . LexToken(ccur,'}',108,2814) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 48 - yacc.py: 430:Defaulted state 48: Reduce using 16 - yacc.py: 434:Stack : def_class def_class def_class def_class class type inherits type ocur def_func semi def_func semi feature_list . LexToken(ccur,'}',108,2814) - yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 48 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',] and goto state 53 - yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['Class','Nil','inherits','BookList','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( id colon type] with ['books',':','BookList'] and goto state 17 - yacc.py: 506:Result : ( ] with [] and goto state 45 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 45 - yacc.py: 430:Defaulted state 45: Reduce using 34 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar epsilon . LexToken(cpar,')',115,2865) - yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 43 - yacc.py: 430:Defaulted state 43: Reduce using 31 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar param_list_empty . LexToken(cpar,')',115,2865) - yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 51 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals . LexToken(cpar,')',115,2865) - yacc.py: 445:Action : Shift and goto state 64 - yacc.py: 410: - yacc.py: 411:State : 64 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar . LexToken(colon,':',115,2867) - yacc.py: 445:Action : Shift and goto state 100 - yacc.py: 410: - yacc.py: 411:State : 100 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon . LexToken(type,'Object',115,2869) - yacc.py: 445:Action : Shift and goto state 138 - yacc.py: 410: - yacc.py: 411:State : 138 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type . LexToken(ocur,'{',115,2876) - yacc.py: 445:Action : Shift and goto state 181 - yacc.py: 410: - yacc.py: 411:State : 181 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur . LexToken(opar,'(',116,2886) - yacc.py: 445:Action : Shift and goto state 80 - yacc.py: 410: - yacc.py: 411:State : 80 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar . LexToken(let,'let',116,2887) - yacc.py: 445:Action : Shift and goto state 84 - yacc.py: 410: - yacc.py: 411:State : 84 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let . LexToken(id,'a_book',116,2891) - yacc.py: 445:Action : Shift and goto state 46 - yacc.py: 410: - yacc.py: 411:State : 46 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let id . LexToken(colon,':',116,2898) - yacc.py: 445:Action : Shift and goto state 61 - yacc.py: 410: - yacc.py: 411:State : 61 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let id colon . LexToken(type,'Book',116,2900) - yacc.py: 445:Action : Shift and goto state 96 - yacc.py: 410: - yacc.py: 411:State : 96 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let id colon type . LexToken(larrow,'<-',116,2905) - yacc.py: 469:Action : Reduce rule [param -> id colon type] with ['a_book',':','Book'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'a_book',116,2891), LexToke ...) - yacc.py: 410: - yacc.py: 411:State : 130 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let param . LexToken(larrow,'<-',116,2905) - yacc.py: 445:Action : Shift and goto state 173 - yacc.py: 410: - yacc.py: 411:State : 173 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let param larrow . LexToken(opar,'(',117,2920) - yacc.py: 445:Action : Shift and goto state 80 - yacc.py: 410: - yacc.py: 411:State : 80 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let param larrow opar . LexToken(new,'new',117,2921) - yacc.py: 445:Action : Shift and goto state 89 - yacc.py: 410: - yacc.py: 411:State : 89 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let param larrow opar new . LexToken(type,'Book',117,2925) - yacc.py: 445:Action : Shift and goto state 134 - yacc.py: 410: - yacc.py: 411:State : 134 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let param larrow opar new type . LexToken(cpar,')',117,2929) - yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','Book'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 123 - yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 - yacc.py: 506:Result : ( string] with [] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( string] with [] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 211 - yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['initBook','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'initBook',117,2931), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 198 - yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 - yacc.py: 506:Result : ( let_assign] with [] and goto state 128 - yacc.py: 506:Result : ([ id colon type] with ['an_article',':','Article'] and goto state 130 - yacc.py: 506:Result : ((LexToken(id,'an_article',120,3074), Lex ...) - yacc.py: 410: - yacc.py: 411:State : 130 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let param . LexToken(larrow,'<-',120,3095) - yacc.py: 445:Action : Shift and goto state 173 - yacc.py: 410: - yacc.py: 411:State : 173 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let param larrow . LexToken(opar,'(',121,3114) - yacc.py: 445:Action : Shift and goto state 80 - yacc.py: 410: - yacc.py: 411:State : 80 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let param larrow opar . LexToken(new,'new',121,3115) - yacc.py: 445:Action : Shift and goto state 89 - yacc.py: 410: - yacc.py: 411:State : 89 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let param larrow opar new . LexToken(type,'Article',121,3119) - yacc.py: 445:Action : Shift and goto state 134 - yacc.py: 410: - yacc.py: 411:State : 134 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let param larrow opar new type . LexToken(cpar,')',121,3126) - yacc.py: 469:Action : Reduce rule [atom -> new type] with ['new','Article'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 123 - yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 - yacc.py: 506:Result : ( string] with [] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( string] with ['Ulanoff'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( string] with ['PC Magazine'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 211 - yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 211 - yacc.py: 506:Result : ([ expr comma arg_list] with [,',',] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['initArticle','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'initArticle',121,3128), [< ...) - yacc.py: 410: - yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let param larrow factor dot func_call . LexToken(in,'in',124,3285) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 198 - yacc.py: 506:Result : ( param larrow expr] with [,'<-',] and goto state 129 - yacc.py: 506:Result : ( let_assign] with [] and goto state 128 - yacc.py: 506:Result : ([ new type] with ['new','Nil'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 123 - yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 - yacc.py: 506:Result : ( id] with ['a_book'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['cons','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'cons',126,3345), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( id] with ['an_article'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ id opar args cpar] with ['cons','(',,')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'cons',126,3358), [ factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 152 - yacc.py: 506:Result : ( id larrow expr] with ['books','<-',] and goto state 111 - yacc.py: 506:Result : ( id] with ['books'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( ] with [] and goto state 150 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 150 - yacc.py: 430:Defaulted state 150: Reduce using 96 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let let_list in ocur expr semi factor dot id opar epsilon . LexToken(cpar,')',127,3413) - yacc.py: 469:Action : Reduce rule [arg_list_empty -> epsilon] with [None] and goto state 149 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 149 - yacc.py: 430:Defaulted state 149: Reduce using 92 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let let_list in ocur expr semi factor dot id opar arg_list_empty . LexToken(cpar,')',127,3413) - yacc.py: 469:Action : Reduce rule [args -> arg_list_empty] with [[]] and goto state 153 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 153 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let let_list in ocur expr semi factor dot id opar args . LexToken(cpar,')',127,3413) - yacc.py: 445:Action : Shift and goto state 191 - yacc.py: 410: - yacc.py: 411:State : 191 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let let_list in ocur expr semi factor dot id opar args cpar . LexToken(semi,';',127,3414) - yacc.py: 469:Action : Reduce rule [func_call -> id opar args cpar] with ['print_list','(',[],')'] and goto state 167 - yacc.py: 506:Result : ((LexToken(id,'print_list',127,3402), [])) - yacc.py: 410: - yacc.py: 411:State : 167 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi id opar formals cpar colon type ocur opar let let_list in opar let let_list in ocur expr semi factor dot func_call . LexToken(semi,';',127,3414) - yacc.py: 469:Action : Reduce rule [factor -> factor dot func_call] with [,'.',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 111 - yacc.py: 506:Result : ( expr semi] with [,';'] and goto state 190 - yacc.py: 506:Result : ([ expr semi block] with [,';',] and goto state 135 - yacc.py: 506:Result : ([ ocur block ccur] with ['{',,'}'] and goto state 79 - yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 196 - yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 123 - yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 196 - yacc.py: 506:Result : ( let let_list in expr] with ['let',,'in',] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 123 - yacc.py: 506:Result : ( opar expr cpar] with ['(',,')'] and goto state 77 - yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','Object','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( ] with [] and goto state 16 - yacc.py: 548:Result : (None) - yacc.py: 410: - yacc.py: 411:State : 16 - yacc.py: 430:Defaulted state 16: Reduce using 14 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi def_func semi epsilon . LexToken(ccur,'}',132,3507) - yacc.py: 469:Action : Reduce rule [feature_list -> epsilon] with [None] and goto state 48 - yacc.py: 506:Result : ([]) - yacc.py: 410: - yacc.py: 411:State : 48 - yacc.py: 430:Defaulted state 48: Reduce using 16 - yacc.py: 434:Stack : def_class def_class def_class def_class def_class class type ocur def_attr semi def_func semi feature_list . LexToken(ccur,'}',132,3507) - yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 47 - yacc.py: 506:Result : ([ def_attr semi feature_list] with [,';',] and goto state 14 - yacc.py: 506:Result : ([ class type ocur feature_list ccur semi] with ['Class','Main','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( class type inherits type ocur feature_list ccur semi] with ['class','Main','inherits','IO','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( def_class] with [] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 6 - yacc.py: 506:Result : ([ def_class class_list] with [,] and goto state 2 - yacc.py: 506:Result : ([ def_class] with [] and goto state 2 + yacc.py: 506:Result : ([ class_list] with [] and goto state 1 - yacc.py: 506:Result : ( class_list] with [] and goto state 1 + yacc.py: 506:Result : ( ( ( 1 else path _out = sys.argv[2] if len(sys.argv) > 2 else out From d3f2b9bbf5c02282e0efe00ee7d016f5fa20b772 Mon Sep 17 00:00:00 2001 From: JCH97 Date: Thu, 24 Feb 2022 23:13:22 -0500 Subject: [PATCH 40/44] fix(codegen): fix details --- src/cool/parser/output/parselog.txt | 92 ++++++++++++++--------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/src/cool/parser/output/parselog.txt b/src/cool/parser/output/parselog.txt index 98366c046..415c83661 100644 --- a/src/cool/parser/output/parselog.txt +++ b/src/cool/parser/output/parselog.txt @@ -6161,13 +6161,13 @@ yacc.py: 430:Defaulted state 45: Reduce using 34 yacc.py: 434:Stack : class type inherits type ocur id opar epsilon . LexToken(cpar,')',2,33) yacc.py: 469:Action : Reduce rule [param_list_empty -> epsilon] with [None] and goto state 43 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 43 yacc.py: 430:Defaulted state 43: Reduce using 31 yacc.py: 434:Stack : class type inherits type ocur id opar param_list_empty . LexToken(cpar,')',2,33) yacc.py: 469:Action : Reduce rule [formals -> param_list_empty] with [[]] and goto state 51 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 51 yacc.py: 434:Stack : class type inherits type ocur id opar formals . LexToken(cpar,')',2,33) @@ -6199,49 +6199,49 @@ yacc.py: 410: yacc.py: 411:State : 93 yacc.py: 434:Stack : class type inherits type ocur id opar formals cpar colon type ocur id opar string . LexToken(cpar,')',3,70) - yacc.py: 469:Action : Reduce rule [atom -> string] with [] and goto state 79 - yacc.py: 506:Result : ( string] with [] and goto state 79 + yacc.py: 506:Result : ( atom] with [] and goto state 77 - yacc.py: 506:Result : ( atom] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 155 - yacc.py: 506:Result : ( comp] with [] and goto state 155 + yacc.py: 506:Result : ( expr] with [] and goto state 148 - yacc.py: 506:Result : ([ expr] with [] and goto state 148 + yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 - yacc.py: 506:Result : ([ arg_list] with [] and goto state 153 + yacc.py: 506:Result : ([ id opar args cpar] with ['out_string','(',,')'] and goto state 78 - yacc.py: 506:Result : ((LexToken(id,'out_string',3,42), [ id opar args cpar] with ['out_string','(',,')'] and goto state 78 + yacc.py: 506:Result : ((LexToken(id,'out_string',3,42), [ func_call] with [] and goto state 77 - yacc.py: 506:Result : ( func_call] with [] and goto state 77 + yacc.py: 506:Result : ( factor] with [] and goto state 76 - yacc.py: 506:Result : ( factor] with [] and goto state 76 + yacc.py: 506:Result : ( base_call] with [] and goto state 75 - yacc.py: 506:Result : ( base_call] with [] and goto state 75 + yacc.py: 506:Result : ( term] with [] and goto state 74 - yacc.py: 506:Result : ( term] with [] and goto state 74 + yacc.py: 506:Result : ( op] with [] and goto state 73 - yacc.py: 506:Result : ( op] with [] and goto state 73 + yacc.py: 506:Result : ( comp] with [] and goto state 206 - yacc.py: 506:Result : ( comp] with [] and goto state 206 + yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','IO','{',,'}'] and goto state 18 - yacc.py: 506:Result : ( id opar formals cpar colon type ocur expr ccur] with ['main','(',[],')',':','IO','{',,'}'] and goto state 18 + yacc.py: 506:Result : ( epsilon] with [None] and goto state 48 - yacc.py: 506:Result : ([]) + yacc.py: 506:Result : ([]) yacc.py: 410: yacc.py: 411:State : 48 yacc.py: 430:Defaulted state 48: Reduce using 16 yacc.py: 434:Stack : class type inherits type ocur def_func semi feature_list . LexToken(ccur,'}',5,78) - yacc.py: 469:Action : Reduce rule [feature_list -> def_func semi feature_list] with [,';',[]] and goto state 53 - yacc.py: 506:Result : ([ def_func semi feature_list] with [,';',[]] and goto state 53 + yacc.py: 506:Result : ([ class type inherits type ocur feature_list ccur semi] with ['class','Main','inherits','IO','{',,'}',';'] and goto state 3 - yacc.py: 506:Result : ( class type inherits type ocur feature_list ccur semi] with ['class','Main','inherits','IO','{',,'}',';'] and goto state 3 + yacc.py: 506:Result : ( def_class] with [] and goto state 2 - yacc.py: 506:Result : ([ def_class] with [] and goto state 2 + yacc.py: 506:Result : ([ class_list] with [] and goto state 1 - yacc.py: 506:Result : ( class_list] with [] and goto state 1 + yacc.py: 506:Result : ( ( ( Date: Fri, 25 Feb 2022 18:30:26 -0500 Subject: [PATCH 41/44] docs(): fix details. add report. --- doc/report.md | 269 +++++++ doc/report.pdf | Bin 0 -> 183918 bytes doc/team.yml | 18 +- img/memory.jpg | Bin 0 -> 13887 bytes src/cool/codegen/mips_visitor.py | 4 +- src/cool/codegen/mipsgen.py | 6 +- src/coolc.sh | 7 +- src/mips-code.asm | 1157 ++++++++++++++++++++++++++++++ 8 files changed, 1442 insertions(+), 19 deletions(-) create mode 100644 doc/report.md create mode 100644 doc/report.pdf create mode 100644 img/memory.jpg create mode 100644 src/mips-code.asm diff --git a/doc/report.md b/doc/report.md new file mode 100644 index 000000000..da0d511b4 --- /dev/null +++ b/doc/report.md @@ -0,0 +1,269 @@ +# Compilador de Cool + +- José Carlos Hernández Piñera C411 +- Yan Carlos González Blanco C411 +- Henry Estévez Gómez C411 + + + +## Temario + +1. Detalles técnicos + - Dependencias del proycto. + - Estructura y organización del proyecto. + - Cómo ejecutarlo. +2. Documentación acerca del desarrollo y funcionamiento del proyecto + - Análisis sintáctico + - Lexer + - Parser + - Análisis semántico + - Generación de código + - Código intermedio (CIL) + - Código MIPS +3. Principales problemas técnicos. + + + +### 1. Detalles técnicos + +​ Para el uso del compilador se hace necesarion tener instalado Python 3.7 o superior. De manera general se emplean pocos paquetes de terceros, de cualquier forma se muestran a continuación los detalles relacionados con estos y para que se usan dentro del compilador. + +- ply: es una implementación enteramente en Pyhton de las herramientas de análisis _lex_ y _yacc_, que facilitan el desarrollo del lexer y el parser, brindando un cómodo y aceptado manejo de los mismos. +- pytest y pytest-ordering: se usan para llevar a cabo los tests automáticos de cada una de las fases por la que transita el compilador. + + + +​ De igual manera dentro del archivo _requirements.txt_ se encuentran recogidas todas las dependencias del proyecto, además de que se ofrece la posibilidad de utilizar un entorno virutal por medio de _pipenv_ para garantizar que el ambiente en que se pruebe posteriormente el compilador sea exactamente el mismo en el que se desarrolló y por tanto evitar problemas de incongruencia de paquetes y módulos. + +Si se quisiera instalar directamente los paquetes sin hacer uso de pipenv el comando sería: + +```bash +pip3 install -r requirements.txt +``` + +Ahora usando pipenv tenemos: + +```bash +~$ pipevn shell +~$ pipenv install --ignore-pipefile +``` + +Notemos que ambos comandos se ejecutan en una terminal ubicada en la raiz del proyecto. + +​ El archivo principal del proyecto es _main.py_, se encuentra ubicado en la carpeta _src_, este recibe como argumento dos ficheros: uno de entrada que debe tener la extensión .cl (que cuenta con el código de COOL) y otro de salida donde se devuelve el código generado en MIPS. + +​ El compilador también se puede ejecutar haciendo uso del fichero _coolc.sh_, ubicado también dentro del directorio _src_. + +​ Una vez que se ejecute el compilador el fichero generado con el código de MIPS, se ubicará en la misma carpeta, con el nombre _mips_code.asm_, esto se realizará siempre que no se pase fichero de salida a la hora de llamar al _main_, puesto que este segundo parámentro no es obligatorio para nosotros. + +​ Estructura y organización de los directorios del proyecto a partir de la carpeta _src_: + +```bash +. +├── cool +│   ├── code.cl +│   ├── codegen +│   │   ├── cilgen.py +│   │   ├── cil_visitor.py +│   │   ├── codegen.py +│   │   ├── __init__.py +│   │   ├── __main__.py +│   │   ├── mipsgen.py +│   │   ├── mips_visitor.py +│   │   └── utils +│   │   ├── ast_cil.py +│   │   ├── __init__.py +│   │   ├── __main__.py +│   │   ├── print_ast.py +│   │   └── tools.py +│   ├── __init__.py +│   ├── lexer +│   │   ├── __init__.py +│   │   ├── lexer.py +│   │   └── __main__.py +│   ├── __main__.py +│   ├── parser +│   │   ├── __init__.py +│   │   ├── __main__.py +│   │   ├── output +│   │   │   ├── debug.txt +│   │   │   ├── parselog.txt +│   │   │   └── parsetab.py +│   │   └── parser.py +│   ├── semantic +│   │   ├── collectVariables.py +│   │   ├── helpers.py +│   │   ├── __init__.py +│   │   ├── __main__.py +│   │   ├── semantic.py +│   │   ├── typeBuilder.py +│   │   ├── typeChecker.py +│   │   ├── typeCollector.py +│   │   └── types.py +│   └── utils +│   ├── ast.py +│   ├── errors.py +│   ├── helpers.py +│   ├── __init__.py +│   ├── logger.py +│   ├── __main__.py +│   ├── tokens.py +│   └── visitor.py +├── coolc.sh +├── main.py +├── makefile +├── mips-code.asm +├── Readme.md +``` + + + +### 2. Documentación acerca del desarrollo y funcionamiento del proyecto + +Esta sección se encuentra dividida en 3 grupos o fases: + +- Análisis sintáctico: comprende desde la comprobación del código fuente escrito en _COOL_ hasta su representación en el árbol de derivación, incluye todos los aspectos relacionados con la definición de la gramática, así como la construcción del lexer y el parser. +- Análisis semántico: se basa en la revisión de los aspectos aceptados en la fase anterior, mediante la validación de que todos los predicados semánticos definidos previamente se cumplan. +- Generación de código: luego de cada uno de los chequeos aplicados en las fases anteriores, se construye un código intermedio para la posterior transformación a código _MIPS_. + +Se intentará detallar lo mejor posible cada una de estas fases a lo largo del informe. + +#### Análisis sintáctico: + +​ Como se mencionó en la sección anterior para el desarrollo del compilador se uso _ply_, paquete que incluye soporte al parser _LALR(1)_, así como las herramientas para el análisis léxico de validación de entrada y el reporte de errores. + +​ El análisis sintáctico se encuentra separado en dos fases: en una se realiza el análisis léxico y en la otra el proceso de parsing. + +**Análisis léxico:** + +​ Esta fase en encarga del procesamiento del código fuente escrito en _Cool_, mediante la creación de _tokens_, que no son más que secuencias de caracteres que tienen un significado para el programa. Todos los espacios en blanco, campos de línea (\n), tabuladores (\t) y demás caracteres sin importancia son removidos también durante esta fase. + +​ Dicho de otra forma, el lexer no es otra cosa que el proceso de transformación de de una secuencia de caracteres (strings) en una secuencia de tokens. + +​ Un token está representado por la siguiente clase: + +```python +class Token: + def __init__(self, lex: str, type_: str, lineno: int, pos: int): + self.lex = lex + self.type = type_ + self.lineno = lineno + self.pos = pos + + def __str__(self): + return f'{self.type}: {self.lex} ({self.lineno}, {self.pos})' + + def __repr__(self): + return str(self) +``` + +​ Como se puede comprbar un token está compuesto por un lexema, que no es más que una especie de nombre que se le hace corresponder al token; además también cuenta con un tipo, que se emplea para agrupar a los que tienen características similares, notar que para las palabras reservadas del lenguaje el lexema y el tipo son el mismo, no ocurriendo lo mismo para los strings y números. También se lleva para cada token el número de línea en el que aparece y la posición dentro de esa línea (número de la columna). + +​ La definición de todas las palabras reservadas del lenguaje se encuentra recogida dentro de _tokens.py_ ubicado en el directorio _src/cool/utils_. + +​ El proceso de selección de los tokens dentro de código fuente se realiza por medio de una serie de expresiones regulares, definidas para cada una de las palabras reservadas del lenguaje, así como para todos los símbolos presentes en Cool. + +​ Para ello se emplea _ply_, quien propone una especie de convención de la forma t_tipo y la definición de la expresión regular dentro del docstring del método. + +​ En resumen sería algo como lo que se presenta a continuación: + +```python +def t_equal(self, t): + r'=' + self.update_column(t) + return t +``` + +**Proceso de Parsing** + +​ El parser, que no es más que el análisis de la secuencia de tokens que se obtienen en la sección anterior y la producción del árbol de derivación, también se implementó mediante _ply_. + +​ _Ply_ brinda igualmente una conveción para la correcta definición de las funciones relacionadas con el proceso; para cada regla gramatical hay una función cuyo nombre empieza con p_ y en el docstring contiene la forma de la producción. + +​ Sería algo como lo que se presenta a continuación. + +```python +def p_atom_new(self, p): + 'atom : new type' + p[0] = InstantiateNode(p.slice[2]) +``` + +​ _Ply_ usa los (:) para separar la parte izquierda de la parte derecha de la producción, y en cuerpo de la función contiene el código que realiza la acción de esa producción. En cada producción se construye un nodo del Árbol de Sintaxis Abstracta (AST). + +​ El parámetro _p_ que se muestra dentro del cuerpo contiene los resultados que se obtuvieron luego de parsear el lado derecho de la producción. Es posible indexar en p para acceder a los datos, en el índice 0 se deja siempre el resultado de la acción que se realizó, mientras que a partir de 1 nos comenzamos a referirnos al primer símbolo de la parte derecha de la producción. + +​ _Ply_ genera un parser que usa el algoritmo de shift-reduce LALR(1), uno de los más usados en la actualidad, notemos que la gramática de Cool fue refactorizada para ser procesada por LALR(1) sin errores (para ello se eliminó todo tipo de ambigüedad y se tuvo en cuenta la precedencia de todos los operadores presentes), puesto que LALR(1) no puede manejar todas las gramáticas libres del contexto. + +​ _Ply_ también se emplea para la recuperación y el manejo de los errores. + + + +#### Análisis semántico + +​ El objetivo del análisis semántico es validar el correcto cumplimiento de los predicados semánticos y validar, además, la información de los tipos para la posterior fase de transformación del código de Cool a Mips. + +​ Para el desarrollo de esta fase nos apoyamos en el árbol de derivación, estructura que se presenta de forma conveniente para ser explorada, luego el procedimiento para validar cada uno de los predicados pasa por realizar un recorrido por cada uno de los nodos de dicho árbol. + +​ Dado el hecho de que la mayoría de las reglas semánticas incluyen al uso de variables y funciones, así como las definiciones de estas; se hace necesario, por lo tanto, acceder a un scope, donde están definidas todas las variables y funciones que se emplean en el nodo. + +​ También se emplea un Contexto, que contiene todas las definiciones de los tipos que se construyen a lo largo del programa. + +​ Para realizar estos recorridos de los que se hablan se emplea el patrón _visitor_, el cual será de relevante importancia a partir de este momento y se usará como pieza fundamental en todas las acciones que se realicen para el funcionamiento del compilador, este patrón nos permite realizar una abstracción en el concepto de procesamiento de un nodo. + +​ Apoyándonos en _visitor_, en esta fase realizamos varios recorridos sobre el AST, que permiten en este orden, realizar los siguientes procedimientos: + +- Recolectar los tipos definidos, la implementación está dentro de _TypeCollector_, en este recorrido solo nos interesan los nodos _ProgramNode_ y _ClassDeclarationNode_. + +- Construcción del contexto de métodos y atributos, la implementaión está dentro de _TypeBuilder_, en este recorridos solo nos interesan los nodos _FuncDeclarationNode_ y _AttrDeclarationNode_ + +- Construcción de scopes recolectando las variables definidas en el programa; teniendo en cuenta, como es natural, la visibilidad de cada una de estas, la implementación está dentro de _CollectVariables_. + + ​ En este punto se requiere un poco de atención sobre el orden en que se definen los atributos, puesto que la inicialización de estos no puede depender de uno que esté declarado posteriormente en el código. + +- Chequear los tipos, en esta pasada se verifica la consistencia de todos los tipos presentes en todos los nodos del AST para detectar con ello la mayor cantidad de errores y por consiguiente la creación de instancias de ErrorType para mostrar que cierto tipo presentó algún error semántico. La implentación está dentro de _TypeCheker_. + +​ Toda la implementación referente al procesamiento de esta etapa del compilador está en el directorio _src/cool/semantic_. Se pueden referir a la misma para analizar cualquier duda que surja. + + + +#### Generación de código. + +​ Para la etapa de generación de código, debido a que el salto de Cool a Mips, es demasiado complejo, se genera primeramente un código intermedio, CIL, para facilitar todo el proceso. + +**Código intermedio (Cool -> Cil)** + +​ Para la generación de Cil, también se emplea el patrón visitor, la idea principal es generar para cada nodo del AST de Cool, su correspondiente conjunto de instrucciones el Cil; en todo momento se asegura que las variables y funciones dentro del programa tengan nombre únicos para asegurar que no ocurran futuras incongruencias o inconsistencias durante la generación y posterior ejecución. + +​ En el leguanje intermendio se menejan 3 secciones fundamentales .TYPES, .DATA y .CODE, que recojen todos los tipos declarados en el programa con sus correspondientes funciones y atributos, las cadenas de texto constantes que serán usadas durante la ejecución y el cuerpo de la funciones en sí, respectivamente. + +​ Los tipos built-in que existen en Cool (Object, IO, Int, String, Bool) son definidos directamente dentro de CIL, para garantizar un fácil manejo de todas las funciones presentes en estos métodos, se concretó la idea de crear nuevo nodos en Cil: _ExitNode_ y _CopyNode_ para _abort_ y _copy_ de Object; además por el hecho de que en Mips se realiza un trato diferente asociados a los tipos _int_ y _string_ cuando se hacen llamados al sistema se decidió eliminar las funciones Read y Print, para en su lugar agregar: ReadInt, ReadString, PrintInt, PrintString, esto persigue que se realice de forma más natural y simple los llamados a: in_int, in_string, out_int y out_string presentes en IO. + +​ Por otro lado para los métodos de String: lenght, concat y substr se crearon los nodos: LenghtNode, ConcatNode y SubstringNode, para garantizar lo mismo que se persigue en la explicación del párrafo anterior. + +​ Con esto dichas funciones se crear directamente en la generación a Mips; lo que permite, como es fácil notar, ganar en eficiencia y manejar de forma más adecuada las particularidades de cada una de ellas. + +​ Algo que presentó una notable relevancia en la generación de Cil fue el hecho de la inicialización de los atributos, nos referimos tanto a los heredados como los de la propia clase; cuando se crea una instancia de una clase se deben inicializar todos los atributos a su expresión inicial, en caso de que tengan alguna, en otro caso se usa su expresión por defecto; esto se aseguró creando para cada tipo un constructor que se encarga de darle un valor a cada uno de sus atributos, este es llamada cada vez que se crea la instancia de algún tipo. + +**Generación de MIPS (Cil -> Mips)** + +​ Naturalmente para generar el código en Mips también se emplea el patrón visitor, pero en esta ocasión recorriendo todos los nodos de Cil que fueron creados en el paso anterior, para cada uno de estos nodos de Cil, se genera el conjunto de instrucciones necesarias para Mips. + +​ Una de las principales dificultades que se presentaron en esta sección fue la representación de los objetos en memoria, para ello se necesita guardar la información referente al tipo del objeto, los métodos y sus atributos, además de información extra y de otros aspectos útiles referentes al tipo (por ejemplo una referencia al tipo del padre). + +![](../img/memory.jpg) + +​ La imagen anterior muestra la forma en la que se representan los objetos en memoria. El TypeInfo almacena una referencia al nombre del tipo, la información del tipo del padre y además una tabla donde están ubicados los métodos del objeto como tal, y en la misma forma en la que se guardan en Cil. + +​ A la hora de crear un objeto, se calcula el tamaño que ocupará, que no es otra cosa que el total de atributos más los 3 campos adicionales usados para guardar la otra información. + +​ El orden en el que se ubican los atributos, es primero los del padre y luego los propios del objeto, entonces a la hora de acceder a ellos se calcula el offset de este atributo en su tipo estático y a este se le suma 3 porque ahí es donde empiezan a presentar los mismo. + +​ De forma similar se hace para acceder a los métodos, primero se busca en la posición 3 de la tabla del objeto, donde encontramos el TypeInfo y desde allí se accede a la nueva tabla a partir de la cuál se busca el índice de la función llamada según la información que se tiene del tipo estático del objeto, resaltar que ahí se encuentra la dirección real del método. + + + +#### Problemas técnicos + +​ Un especial tratamiento hubo que dedicarle al menejo de los comentarios y strings en el lexer, puesto que las expresiones regulares que se definieron para el manejo de estos no cubrían todos los casos posibles. Para ello _ply_ ofrecía una solución que consitía en crear una especie de estados, donde una vez que se accede a esos estados, se le puede dar un tratamiento diferenciado a ciertos tokens, tratamiento que no poseen en el estado _Initial_, que es el que se usa por defecto en _ply_. En este punto lo más difícil de anlizar fueron los comentarios que se realizaban con ((\*...\*)), pero para ello al encontrarse el primer (* se entró a un nuevo estado y por tanto todas las demás reglas eran ignoradas, en ese estado nos mantuvimos hasta llegar a *). + +​ Los otros problemas más relevantes que tuvimos radicaron en la generación de código, por ejemplo a la hora de determinar como utilizar los registros para almacenar los valores y con que fin se iba a utilizar cada uno; también surgieron otros errores, pero afortunadamente se le puedo dar con la solución aceptada para cada uno de ellos. \ No newline at end of file diff --git a/doc/report.pdf b/doc/report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a5dc817a1af1bcb4b0cbcdb5027fc82e337bb907 GIT binary patch literal 183918 zcmb??18{E7vtVr7wv#WmZQHhudvjyk&b_hiDcGc%`8 zcTZPOpHp9B$Q4D!>6sZ=VaVssPIh3JiI|8SjICjKc^O5V&5T?foQbI99K5Y;ZH*Y& z7?_B3sWh3Hd5C1K?A<(xJUQ77*jaU{iG&;-ZOt^yjAg7`8QB0F3;_0TL>Wm{IaxX) zTPqtgA_+4S8;5U1RWC;eXCp=?1}+9JP9hOYX9qhoMos_&69X$V6M%u4g@s7W*387! z*}Z^|3sA)A!34Il$HKhukjCDPL_xjhEYX`$ko}+?ElV->)&~O zYs!p>QOMrj!S$QS&Dix{_uqQAfngN?hmo*@v+1`QbeO(rnDk&6mA}nBwI5>znIKOwAi46ew#up;`-s68;#l-bnao@`jF{&v` z!Ti$^Q5l(YGcwvUQS*QQ{+B|S|5@zc%;W!AKz3FD1Avv8nd@6XRt6RT6B8>DJ3BiA zI}A^;}~0}C@3C)rmXv*7bW28O3eCjaJmm#KH92Fl5c_EnF>$Sh-j^`1y%kT)$sKI~dQbi!7~J zvLUCTts|BBdSH&bN$DOYrq1=9`rqL1z*Jg+f;e&SAHWv-$Tw4kZ9bB{jJph>I;d*N z5_sKFyloDHMYl(aFIU}L+e>pNIEXodpnV zeSSVZ=-5YioV0k^?Kws6z%|O%UmNXpBra0Zl3($7Su5{O5DIi>pQ?{LMC>=L+9<23 z>t44iR=&&m95j&blqz%jA#)Q7!wki$3UW@AiXaaeD)XLbRY%3B3bs(o1V~y6M+spX zwbOx5gFehWs>}ZQt*mi;U}03nMxzr{NiWc4#@skPZ>-b4r}b)FR^iSxR?;DPmBoQC z?}5;~ci}oRRGZ~_H<4k4pA-=GJ+jH#l! zJ?Nk5Y^Bq!B@v=ORuwkN`sY0kVgT1VveMcDHGTF}mufk|&bBPN9X1U#TXYjFG=aP4 zp@nU`uyf&fVp{0lR~=#ysvLd~S~aS6=n$*00XwGfd8oPDtN@*JzxP})av3`%S|uXH@lCxksDM8$ zSkzpCq@FZ>C2{y%($t-dg^kJuT#`g(k3*C!zBIl{-W5-!6lw1p0=)|oH!MrWLK;3E zBdQn!)~{F$hS;D`0Ow7D9G)F=%*KO~jvqdr^AAHn+%O#(%R;`3@K18Jr6;43#t!OU$DL*hjERCp_^+rYudlqt83zB{~HQo*vuF=7~{St4V{SQt2ubN0&U3IzL;B z5_C%TBSacU2OT4mTdeuR!M0SnA>gXDGefeDxT!D7r?5T`@6 z@BR|Eb|7M}K&&Bh;wnkpTo|{eGQ2QOvWA%4`mebi)joIdx+F1&;_w9(>pTcT^G+Nq zezxZnar0gr6=I>~_hc+$Jr2E9gL9vg_EamzI(@RUcBkU~Cf{7SLyA;vFUULc>V1^q_9hK;S6dts%qE9Zd29Ky!N9yPxgBf$wNn} zd@y3^wM-kWJgF5dNN~g#(<~fB>glK}h0+O%j{}n4r*w)GN6}bJs4-eIole@Xfs%zqa_8F2ggj>>4O z3=7&7?tOw^eDs;C>?-w)%O=;DUVINxh7~aDahc$sqZblOAzj8;HTq13n!m7g)znV5ZZH`-<+HhI8~obR*_21n2uMk zCAw`o_Y|~W65ZdWcs_sg1t>>jb6isS7Nq-s!w1a92v|)K&LDv`AEOAyJ^qW&PXVg~h1HvX$iD$>-s?TN4SNc! zca+J`e30+I@%?8B1gt`H`=6x%{Z5SxHMZb%5A~PH`V|udRUu;pNu$RE`iM;Q{avsuA_x;J2-Z}02ovjt zua)dDmHiJ>GTpduXq{vS5iRV>G-}-`{dEd_-C$V{tcI!3+f04)I7p{qgDp#u&>B_{ zuK7=Rt{eli6s4NzHOgzh{F>`MSVu5(+ZHBj-PSBk?IqgT&y#)>0)IPWYDUFf4fiA+ z7cV~HzosssvkX_BkAcV7^;weMN@7Fyxx?=0?j7y*rHBbrT_HNBpO(?H|!r~C^19^FgfJ(($S$m4qY$%79Fa|jV30_HB`s_h*#KeG^O6Sc_uAx64JGE*|Vm4@sH{~4}3AI{@1iaVPlbBE{n0b-)P%y z=Up-RIiFPqPkj}!E7~uZ6RFd%zl4ngzaculggpxr*IBW9^aYO}KCZ@3&(O_*sJ(Ag z=d1H)3GW&ZX}KdlD|dSVU*8U*0j4ZtM!d)Zg+9=Eq~BF`t0vxsMu%e7TxUz&$)?iz z5eabcWEKEMs=>5<@;BQW`A)_~f-A9+{kXI+O4SR4RH|=kP&Ob+7zHMAxn8OxuLkOy z;1oId8E6O#W8j8UeXKT8Zl7vsk_kD)AC^y0q8EF*h^ds?Uz`|AN)qx=HGjoNkT@Iz zjT==1Ey3}ZFbX4;D@6qr*$zZ7Sq|k1nU18SuyrJ%l;m!3kk+!CU9V)Xx6C`Zz6DB* zS~#I}eZNub%l7KB3KZxJ41}z%5a%(@9#a(&7_75oH^-LU_r1)`8>ln1PF z#~RV#8@zGH7V$rW?=sO~DE|K({<$L=4E-LkkoWe2usj8`Fe6YT2+NZ5eo#o?3tEuP z)@&gq7m$V-%uw`utGx$eF{2=fj!T8z*b7B@;P!jA3q>{Sd=Hal*$!(1CPQb7b(u(e z6A@Sr>|r7tjrqk`5EbZfSnZRgka{L~ ztMJDCfq1jkB!hS6ukEtO*Hqhujl2t&TW>J~omJ2=FDa2Hf51-Q?(Y4m>eL`h2{`H} zGT-ie-H-K0XOEuPLRAbx%>Sfj94ydIun;!lj9#24iv2pL-n|eD-a|?HGtYyA!Nv zR(k?QTr7ZGlilNtX&u)%hMIRblTfIpvv}AeRvFi)2XW5A6|3#cSVvJIG~!#x$6ju- z)R$U93g4tA7d=Pi>?MM?$Jx+hqvIpU2Gpjin(E7RU`t}2*aphw9rQwQc5Mxk-zx`g z9?l&0@}VYPPLIf4Szy#DJaoe$rMi|n9&qYtIG_AnK$j0c0pk$IMA&EuLgPN+-6*Uq zQCV7V7vCF10OuCDmhD)@(a`A#3yA`1n>n^J(8F`?Jk0#tA5C&n1Y)`IC^0er;%bjF zN0<*%Q2>0Qh$^1|`+Bb!PMA;c2O$g81zKSF5Wfi5pPnJ19R@<&U|~)ng0ekb9GpQe z4%Z)ZF6X6L!RXn;`C2pCS=D0nV@kTUp;;^F?E}-}5fa{@4mKvtevHtx6>IX|oKv`- z8u;zg&2=^PW=rMg6$RR-5a~RMerBZ6{5il8O&uUVDNfd047t|mt#61N;(v);M{aW~ zf^%v)z&#r~0Jtmf5jNV-fcx^!U_r%MBl8#Rm_iI2(It)(_uAtX2=0v{sD5`7N)03_ zF`;d8^sSZam_NfI6yCi#`4Y@UCTP2IUziJjkiup6UMVjrZu!~W*{5B&cIw|_hm>>D zt`)n&(yXAmP8N>6)$cH8&MM23UM(W;tsqI!qBht>U-8*fa)CQsyz*e(jEG9lVS`~# z9_Rna@g3j8B*!?$ub9ajbUMeh&tWiGud`x`X}zO3X(I&+SAELkkN(AOLUR7s#!G+m zaX9qoa@Q!U2Rkg!$mMZVWS;(1>S^kzDBh#{sA9=aE4fuJgP#bEf8Kmjics#srA{z` zODoJ@4ntDBZ#j-OjtTU+KbBnFAoc>hhhaqa!aSQWZ8FM2@_r* zBhCO6xZhj6fAdO=1*`tK^BRe_a1Q+QhYgbj_!%Sje6ZjKMjF*V3 zo@6uECMwSCeqL2l`SA30O^UrvpTWYBe!NE!d)hl!p{^!H0;Seq0#Uw_tW!5 z5JGy?6P$~Z?R0jL{ijEsFh!;y*v!|rTkN8H1922YD`sxtNbhPgPMCqrzFlPHm&IIK znpwfqThlXN>`2pf7pz010L)D7*_WYsDMBzpnWO03s=&LE`_p?46&7FWBWEJnLR(Gr z>{pBQD14-Un=Ntlo!kSK!W!w$s;HpCaz1et>z(CbPsPKaN^9OK4iWMW4c> z`@O%D8`mG!X*eCbr7oNA5yl-2#YxN;>Ij8FTR$IRa%1ntFF@euUp80syHgQAhqCat zzs4ZHER0^Z174cw%wlrS+(zr0a*t;hUeqHVF)X{pJkI9RMA;R_=te-~qE+Hc+1Vy% z6N?5{=1B4Np&Q2SZo#U21;9ph^Ez3$Y2;P*G);@-2pQlMTTF4iXd%6nUvQ$m_2@q5GI?bJ7yYOkpvn<`f0D@B`G{v^4Cukn z7L(kYjfMIcnAX}Mgy#$|om3X_&dHaR>hqU(4cqECppc?F*)?g_K}Ax(k$28k2Y8!I z9V6B~IXWF%>bjNrulm+C-}3f*)bgAknk;dVD9Ye*mrUW9jf7pEy>$gx<)(%2VZe_v z>!(WFOT8o^=eh9Mhg(y*rUf5Fa*n-BZV}(`kokx9ccYMf-iMI*@nln)pV__{H#9K|4m*Y<1ExhF1v z{mn>JP>ovvSYke|m@~NfGt?dI{q=?8V_Cbq8-aSys&yIlzrWwImRZ~C)0ll&FQY$leNP8T~(JH z0qK;#fkS~T*FW-8ViOTEWo{6qLDyt{K?;|-=C@^5B@Ef~9N@%W(40!&#ubRRTKqA2 z<$!*EHKM5gJIpnT)pviecJh>{YK)+5gHCZnp<;n$9#C_9=o5dFo3yprTjrTxS@ZDAGalvVuuMUUSfBVcMd_Q$dKPKcdyL3*w+? z*s`U6rX_c=j#)l?7c3OY)hVK0V1*GOD&l5?Aqf#I?r)9;6^i@}`tz$72T6%Y6-rQA zArdaKr681@Wi=cIBW$`|MHN!;SNQTDKNZY4qgnF;ZZVu?#xg>%H(2E*2pKus+K>L)Nb0>yKv45XtJXkGu%|HAAk+y zzoa)smZ2Dgy&(mh!uI(l!$*L*Tm?f>xw3|LL=h-wvxc`Ih2!uBIJ39}=OOs4Qunaf z=)Y?1yh13Rauo#lrMC?fasz^Us0J)h4w|COEyB zx$>dXl}0}>El3Lpq<cVK={L!o~4J7t8b4G5!=VqU*64~Um7znz~XD(|}er1e~Meo-Gb zeJndxn{`-8a;og4$9Rbw${%kZd>6|EfKyZ-XQuW&*^7Bwf|$KTq(%gc>Xb+jgZ@zd zd!B{n~@yBlYm6k&2EWiwq#Ij^gh(jziu_S5I5Q8;wXWj5&<`;74Ix!9}4 z;qV~HK*i-P=YWUT%mCKH{snm;je$Z-jGBR+Z&t9vW|LGUPR=+=ofo_eX~l`wit!Io zr`YJ!;zd&ZOB>Fa8tdhfJ|ta~Hd(XGSHPfcd){uBfiE4f63tox5cYsAX1yg~r9+bj z7#H+Rb;)}HEg7vIHL_+rt>(RidJ*E4cYZ>?EU4g!wy&rr!^v4^!nYmU&NWU$qXK?1 zm4U`0=0W?}V%q6uQ2R?ZV&B3F8<5WgO+AVTNAi{rR z0o=d_3xvW?mWPGq%s!y`(AFqeZ49CIK`}a`9|2R43o*I+!mo~G%zcl8X2#1#U)W+)rQc@|Agl2Cv7P;ZHrZXj@f^*DkqaLDUL;zSZeuWNmUKTMtn^ z&6Me%WRE&!U0ZlKz&ef|Ju&f{0@oa2=LQHPH1ss0sqAZRC4r zvgzMlAA*0=xkPu`7H^AZt(gqUq7>N{@(V9j@VRMt?-nwOxZ_IT`#o6~ev0n%Kb9ik zljpobh^gR9c1XGr-AI>-i12#Fp9=1Zm4Sw9DC0}=E4YzqOS{o2a4pn!xR%B!*XLv> zUY;`ha5(eCQ`XyBJO$-?k8ag&-U5rt(z^(Pt=7S1U+ahmQk5Mrgh{8KL(p{o=0?G> zECYq6f|X;z4~N)|GldDqU}n$vLdc`A@=Q3CWX%kjdZ&cpZDkk(o}Ule=R|?NgOGa+ z2UD5W3n5jS)B9C48XU5O$AVZy#(4{na*S(3m;5~y(Q1DWqrfr|u{S6u<~!uh7DJI^ zEh-wpRzEY+oq+lB1c=`=Mi?x@)*3BbU$XtO&%{`m z1i98}Xptit967~a5oP!GZY53BaA!BSsD1Z0^gb7B-d?(}?Y{nb^M?G?&Twv9Ux)jC zduqnmAGKwG<5ACu+0nsLvp4C^+zk9k?=HQEyOX>|2Wsi7H@yR?cX{qUhzxE&)4sV; znUyRPuCdSNE3vu?484{;uoC*vMR@kW6Z!M$kk}p}tfqeXhQev1c4srNk|+l0M&wlQ zf?jn0i#>#obbFmESI#ed8QF6!lP4h6`~%r!Xgg;4Mw3M!TF2kR=$Jl*97DK|gVmG1 z%C%9h)5(H^)g3h7VtvelG;=5Oy+gssX!N37VjAmUlEL^KBH97R;tm_bz1G*EXR$r< z)5F>Dz6p2uM&Z~qvv1haqq%RHuW1vC`m*RPSclGUuYhoql7G(`&L`A;+ut4Tn_}x| zYZ)P+3WX3B-oR=0d@C8whnT>%?`#3U;^E+&4IyyzQWNil>(z=_?lUOS3SV7N4M*JA ze*C4EGv(h?A3#2SNpj~AUWw@WSbYs>N3`{e`skggJ&3IwlF`=*XhlR++p`L~iS5CW zx9=Erg76nT{sIzf|4gv6u`n}maI$g${zHPDjg^IgiItU!a+?3~POoZk|%d{N%~-d4nWnY&M>TDYFeiOq7!Y4wIwKmz&!??V_Ae)U2hFgUwrN67BPWPY;3X_blnf-+}ccoYJo>36G74Ma;ymT@yn zGFmO-E7^a3f9d-J2G!aOhLT?2uUqd8tx#YdzSowCax>8+^>Qd?bCrhm`61a(&S#L6h~Ng2YqR6~ z{i7gTH;z{}yr zd;Da_SHfASsx9^Go=1uOln(Pcxbe+s4tXT=KY8p6=5ZvIJOT7Y_Qs#2sfH&6%~#w67RTeRP!I%jT; zP+?>#s$y`EEHP+BY|N5cG^GRB>JHiFa_%%yR@E;3mfW$AEe;D6P%O(Hx-}&b!pluM z#|RCuYxa*YEbn*{n1w&k#M6Uu5KR+sx6-gp*S!cQbn!rx6*cMl9ojrq+mC0?9Xo`D z3!=#Xil`GCr92S-O!TR5SMRB^veA0~@fEH)4|Ss>n+J&o2^g9E4z zQV72~)%awsUp#vVVbLtBSzd@5)KKm>yF@soBasDs}nMgG8`_XaI_QI zad#g}xvP8KByF0(^*Mn4X_$&a9zACu{?8DedOxsd=9xHz^+S7t75Jp&T!FV$RrofL zyf-ks^3^pYP#Kc#tjwo?83RVwEvR=P7uHMRrc zT5)17uYfU!EIy!FYz4V6n{d?vz*-Jg^Q3&hJjXiQfhvgTmB|G>1RD?1=9vOnq zyPNI=xkGOR>HHl*!T;Slh$CaZ%m=gwia;yZrl*|x$S|CnSnBt6O${h3w*Iu$eg!IP zxv2#RIH@pY8~=fon1pn;DWqK)Dk)0R7c)2ZYgw*@eea#1X;PS|IB=M) z{0J(x*5N}&DJ#gm*PN)mm}?!m5JY3eCt`u7yeKZhK~7kEx~Yl^8akFu8F{XdYxH_dbKmC5|KkLr#H)hl-+pdnAwxb!OfE zR!1drUHuhSEWRZNL!0^DqA64H{KY8+YluJop-5Zsn^7%#K4U<>kh@W&u^{%b!ID8~Kj)$71er&+l{-#BLZYdWrefE7rBYIhc zuJ`aoV?I6hZ7fZ1C3qutSS>qKcyP5~uOvGOG3(&>m5<<3fsES3#d%a~w8%>`l>Rb33*;8_^VQ zw9+&~<={1)9>~uw42fC8wJ~p=Lr~S&q_z#dwm5OQEKE#1o}dWgL#m+YAi<5f=wA&L z?zib3m$~$aeYo-P$5bQmGayN|of&*@@Jo(8O)zAqmGWbQU;hGC(muAlC4}m??5zjgMc9cQ`o?m6w zar}|uD_RlS#$WelbB9vO?6)q?_iR6@$W?#G@_>fuYnCVW?1-1+qgJGm701!8CB~C4{ZzV^=>=O zJ!Lou4HWl)wJ#FUpOYicI8N;~oleMuTDano-p>SGADRj$0ViCV`!>yX0+oT+|Mr0@`{({A5yH)=&|DEp0W z_50^^i?s@BzZT`TcfW4W~T#=T2q7n~b-#4Haa+Bw%g%A}cu%pe`=4k)9kE=X(K+ zW$Bp3=pJE51r!lhEYvGkvwdrk7 zJNLoW6+9&4JcXSS=+al9SwutCB{~K==+0NJuP*FVMVEYA5!tUFV~)flU0mFLv6sVS zI1WiMRvcff2QRB_`O0YAeuzMv8*Tn#3U9s)m%LA0=8`9umcu^VySR`!>;}!9@`Zi2 zgw>W+MQkzHvt`x2amBfy<3cWNgD;c@bA?Cak#i*hVmv9?*9Dj!_XSx$CwN_5#6t^RNb3zFrC@6-D%OS@2l171CqnSW^@|tR%mL#$)4yHTq85R4YgJc-!kb&=L=mtN? zU*r=Lw!8V`XMlm=(wY>?LFlf3%v}Iuc*Z>`gh6nDqMi#vfoK|n5aSW;jF454BY>ZT zP_H8dB?7_9(Dph5f#Xr&MA!o1)ZmA`lR(k2&TJ<(+}$lv&conEj;f@H(ii#^@{=T# zG)ux+bCToQ<<~&UL9}vWr(&{o&%i0MSXNQ}HC`3q`{3aQFY>GLB~ZlTyXN2y#=!cB z0Peos!R7bu3w3w~eGciqg2GZBHxiUe#&1acwM`L>Z=Cjtn0V)s=JIlT{~?n`!2Wsb z5@uq|2_6Qo%*^il@^CU0#r%@GGZv7;A8-QSjN>>6-OE(OWpZlvnmKaajF4;RjjwS@eXlRXx0h}@J{E@2TH3orlKiO*MSeN*KSI`6=JM?>yw)*&zD zx&g)dvJ4Kb)5df9PMcTt^E=B>(ixyUT9Fz=(de|=ke(3&1 zliMe)ns{hFIrb7+rLZP*h7ApJnQ>u%fAO;@oBf-NX%DI1cCxlx@0Ha$Gm3!;5W2;U z-S+;-sfjL-WX8`*$BsoC64;^ND7@MgtCW^1U~*97)CsiwA!RQeU3a4=Hs^{-~Z&?ucpMI?X`Q^Sd+*?vj@nBV*jhx=S!;V> zgA%kBjS{C-YntWOHC@>i8XeNlxFOa}G@1k;eNr{{sfKP`Ib&RditQNb ziS)Yq78vd4CZ0b2VwF=vpfXzlAP1|$DeKr|yI?|2Bl@GrGMUg8!~`Rw%if)O3_Q`T z^%{1udz|jXU3n0a$=tIis0NmJb!7_WwUAS_5(Zi3O0R96<>1wEe5wsCV=yRLnNGq& zq%h%JD+{O&s$vT=L(=>qRG@PmyOS>vEWymg<-gEkl*{L61oH)NOkH-VyQ$*Gj^IN> zl8C#rjlI^b7NC9s%DkEeEb+Ij8q5M6`*C4ao6g56eq5j$}oG9NVz8;mu&E9bNzz8)wBg_2)W3}P$ zJU<%tlAV*r%5`~QPp%+&W&7Cnji7d?lA5Pp^X~6-vJyK)SCBq3xXaUt<;3|+ifT<9 zV3_og3OCt6?XJJ4wwjz z=d(C8jGG#G{(4A>^Y8Pec}O$4F&#pfzYeDBI}S%aDX@ zEs2T$+=)>SB4FP_@K_CtoVOyIo46qS36$ea+MGWCy-7(S9PYG!0q^-{%7ofgyasB! zdFw*QUe0Rw0xT=Xb1Kt^B%|HC8!~QMbb=p`dVxSFC z5Bk{=k??Y-kI(n)a%WHnSpC+MwkLu<73BNa&5`t!^kvECv}`#VvN2X0afPe9ML0HP z!$KKMD4KB2MtgPdNkhyOUn*?A!PJZD1GV!&1vPSNg>C+_Q>Cyw+k7xrgx=NS>=8oF zn>Y2}o@9uFP14;GMh5JsqWk4rn?_sYthr-yRrMmMhvPe1eiKl#%Q^+6o z0N`)(BFlW{>|cSUq2`YVR5uYzO1F=kwLgSBm{g+{h?fU)3nhiJ4+ZN5M%gM71U=%H zOaw{gfVvN5^9{`;A4b-u97csg*}rEcA3gzIPwWa%q3Sr z#qdJ5BR9eWjVKeM?bN~M3${|0PI7R zUye%*pHFre6Enc5K#Yz6!O-H4-U4MD3?Z-X524Z>4c(}W#?ApoVn;L!_{`)AEKEHL z;=$z#TGMd~c7tq<;nMl~&0#QQ+;wj%~4JIFt0g#OH-UHD3os~|E@lpkJDfJF&y#Lv)ehPPoWana@anbYah6w zY+DHI)JDVBUYB$x) zzw1`X4$zYMSY*N19+>~&ajAzhJh0adEXgdjIOK&DkXQ%!Pdz=%*HRBdN0UGN#7p?ryqgI5QyxvSxRRo zM>1iyK$;lIdCD2hP24hdX%6)+WOs)I`1>TFAP{rH_i3J$~qS8 zfT_L?Bl2Y3-F|;C;Ex#KLJC#Ib!mZiv9Yfppw@R0Em{uWp;dznx!%%;J$XWqMoW;` zYj?&3AfI>tJO!Wn=KIL}VI(T-cCT}1Mrh)%(@YiXP%<)9eD{kvG3v8+Z^~%kn-`0P z&Gj*8*;IZf!W3Q}vT3*}nt_N9Eom^`z!RAxb+?0R{ug(_ymP}^&qQl!ImA!cGC|*vv~2ND*;xq# ze=~xq>e=1tB zqpf*o_Wo4-!JnXGIL)u6U444BpZO#;&q78Q-p^KTcie*)3nq@n_2SQh3Do3Yu^C-Y z3w|IV{G2fi(1Qi%5r7NPX|?5sFo;LY^8~RrAT&=KM{2zhpFl$99fE`YTO4}SjCy{D zJ`TU?g?P8mZPE9%KlO4V)89h>@>L7p=D1gh<0^Db_G|ES-ABHB7dldm4ad-=Q|8h{QVrAo`0ql_S;PDFl0k>(os_Sg_mrM&3o)+={fYWal!W z>0UD-cD%ZA*w)JaHf@hVdl*u|Q=KVRvC{ds4Lo`){v8mZp3wPb`%)9oLyFcqqj6*Z zd#*9%GHR0`w3=QseZh;uK$8_`VEB5g<`u4Gh{`GR_bF_G@1@dO`=V19FvIewboNWt zO6^H7xJ~f$Q*VDJ?GGN$1vBU~`iD)=hZb8~#5D~ZldIqhj?i%*&xJ%HS^;%WpL_a) zkA&^SLI=?Yx56vzF$D3gpsJ6Vr%%Dc^4e;ol+>2=>wALKamSZtw3Iz^fbb`^QES)M z#Eb`43Z}g;z{rbsOGJa#lBmkyhJj$Ol}zlIXX4v7mLO;h{^ItiO|QBO9H3h`(0P`N z5ApdK2|@8W7bOKe!(v=qY4Rbg-RW1?NOx)5?o139;ktwk{2T@$DROVcWr*|m(0MXT zU+S=8*iI@&GAoh|^-jOYC=TLVT(4dT zFyD#XXAS#4^Kh)*^=g-odMj*mm4QjnBtI(h2Jy=WC4j^q5+`+bBK2%2Z$sPo3GdkZ z;bX|?N%ABlX#<<@GaLoci$|rDody%ZKfaF&C)s6hw)&BeGc@fZZ)mTEk3LjUHezXt z7z)E;AIY@!Gk?}?s~s`ff1%@O=`DHY<0AT(kqX_ktiY3SkmD{rD7(QYycn;hVgCLW zF*&u_T&pty&*qxgl%zD8&6kPe+tfU&3*s&%Qnh~I4bBE+xO$c*WRyxXFMZ{h}v!7ykHIu^ z^}iW)`7R>(k5QKi-L>zi%RkBUX&0a|GBIToB(OAng*UFhATL0q?nphryYB)>3C8io z(n-Sv4so8H%a68JILeRouHM)`?$6e`Hyf1hn&=`|D4s24 zEe|?9=8Vz{x zGEdH`9RgIP=>sylKKCy6&eZM}CJ=bi!M*;&-dGXOv{G2tI;7e83(vzXyrQtofP(qtyI;-D} z_a0zTHQSnSBa#s$XBs8v3=*V8a?V*mL?j7F1__Ns$pR82=Nwd$lA0(eNpezhklamd z=%)F%-??Yz%>BN9=G;4XX8wPkyXpNjPj&a+wW?OFdh1=Q*6vC#g076Eps-HvoA|^N zS`f1zkI&^Iv)`pp6%h9;9%KxtJu*8SAMc_{s^YD+X0m8rcm1$`cee4>mE6(UIx_aj zO5}Xn#d9hZ!)8U!1q|&mPF&+dsuH)Pg4N>=J4MQc)OBsW6a0zBo+n2baE`x^sB?PY z{gKk-i7y!uBVP$PIdc5SVjA8(&x(ltwH%!!WlC8BH%ijR3J*WJ_m;aUemLg4F6eV2 zfhTPMy0zC^?xP2^qDdXqs?S`SKZ=c_WQe@~?b9&&seWcI`K*gE=L)gINMQ_FN)owX zr-~Uo-tO>e$a-u9SzaLJK^t~HgEskR;&)yS1#`)~>2}~qHpgFY zcWsHKJZTwmY{ZmIMcTFF3OGgSgb-!d(6dX2`dY^$*TY5NWtzJqU81ab*gDz@^qNG! zAoR<{1^Eig%U^^^?{o?|KFgvR9xe`|L{&uj8diLL@$$Ny(Clv1TAaZ2LvOXZ>`sQ)j%moG1gd54cCpQ*IXG^bth@2lGS1!Lq z(Gk%<48mW;_nWSc`c$c>IVe0_qWgLpyCA!y5PN>;Vd;x1@kgf(<`t~`LGmGbi`s6l zgQctaHG+xXpPBWUE5?^&Dzp6qN;f*v-;F8pmO5T+v8+;)4mNqEtZgSR2-yqv+E(Hesa#Qvrbt0Fns=lhS11yWL? zg6aZ+XpR^({Z-r*~Bpb`(#L z%SXJ@%1wAlG_e}AD~_(lFXS1%gfb4tlhE9$GWelq`{MSQ^|Y28`&Q46)bjI2^^qoZ zH_cgI>4k1M5l70MAA~xFuav74)?!HY+RC!i-``}^EAo2-?Ex~J4}PH( zmMrqV7)?z?oO4-26qBZp_@>iBZMb8+@hhK|)_%CHl3iCXd-T{zkGNn1)?XxoLQ*7Q-OIc;f%SyD~C_Agh{y24pC_Lg-J^qh|2v5S08{>)8lXS$_#N7)&VzC;0RLkUb zk*vk>O#lJ{6Rpm3s1hc@AvBCmzUgU zXIXQ})3`f3@zMM_A}_Vto24Glh>yovo79n-BliFwj#=6dA+OBo`w1Vw_0Qd(gB@*} zKrJNZrb^jTx{U_Y>tsDI%e-R;eK`!yek$qHJ0;$4GD8i!BJY6|T3e~`%>i z{KY)6qmK%`FZ|CJ1$p_FMt7gYeR!Vr%IVzuCzBA{_q1h+*L~6MuS$LGZpLC8UG!z* zgp;)`s5w+|7DURS{b$d5Bi(HlvbHF2qa5R9II1-~-IoS?n;!Rc{QM&6++**OxR}Z- zaW+n|mV2uxVDRF(JyWSP@)6FHwHQvyEdCpfQ4eC<_IoMs`YH`qc;+W;OyzTIDv74@ zFW7#|q3eoc5siDNVZ$$4&3Dr#M9+9i4*C*>S{R*~(I{OO6f1e%t&?s@NaSa7uywZ% zRwbY6L$lRW_7>PyP#RpbR9#0!Pk zQOzl0=tbH4$x|g}Qz!$LshCN5aPN>KrXD|m-84F$`L58)91GiptqLzw1rCic7;oEK zbWltD*(_#5s(ORT2Q#(iY{RolFk4N(|PPfxmR;}xeH|t|4GOch61Z$T1h{pTv z+FL>iONzjAHA(Jr$xpMF_Q@4umHMe1r=>>M0*i6$K0V1^s)@H5&Yy^DfSc9d14nB+ zM!k|7?_Q?=>0O+I9aMbuAdgG@`{DG52iD-3Px`nOSoro;1(mf`kqs>vdi3L>+Z;q1 zEZNl4^2<0J3adlo_CD4D~L_YG^l6`M#BOUpAp*pESq*(dKw@>t0Nqyom zCN`4}))7GS@)W*OT=j>txQHC;G*Hm08e-wza7p!t7Upz5D2!=?j43YWIh3_Q^vo8) z+-%?B1n)Z$Hz`9~LN_}Z^KBdGzbl%HRX+d8%p)m$BR+&Sa#Pi@L>3R>OZM(gcGKx~Un9%-w(hrteyC=pQ^A{_U2@3|5NAX2{ zbbgF)ejzPw^!Tcj&b;lbaPYXI;H8O-*sS}@Jd>UgvNAnTC{rf+ zkhulvmioCE?`T^qwfpe?>@p12N&%$WKJuP4#x zFPnpOr6MRVy9RfwpwAG~!Pdjg6p3{DSI4%YJn2|5(_$han>l{(?_D@ee(kBXzm?V( zI=!G$J^$;ZVm?Dvr1iUsf2hKkSY>NpG$rW2s&k!Uu(6|3-}P)KYbJ!Z3E?~rv|$DXKNc; z+e+jop@MnbB#ZV*f|SAo(eMZ8aPkO)GiP4f2(D2*svDx51aIZ6-YQ9Q8mX0Q zbx%fDMxmfv+kDr5!CL%>CQcL;6A%^^{bN(Y-&qSuaUlT-F=3H^p0yAbmiTXI3$cGl zo%r7i77-N|68=ZpqVLf{%(^o9AA5^&2L01-e)+yrada$j3j?Z`pnd-S{Mx3(P{ZduXS zHxb@JW{DTkYi8{2A3|YQ=){FQXRwR|MYg0ZV|!Z|R>wq_skq;Mk3?dJ3*`E8y9tIw zH8&qZKQ=F6j+<@??I0vFzdjd5UrJ;wV0>M2tm~N4Mw<`855w34N6T|e5~ zF=rS33#97YsI~p$^JdhR+3^@Dv&?M%+ZpxGr_J>Xpxr~6Hmhl9Vq?5oULp#$-)xUpp1PmySgNLtY~^#>>5t>e@tl|?KZJA!k!ho! z-;qbys7O^yxC(h@C@1#x-){*rb%}{9%sxQbFNV3AcKW5{x$S+Sg_)PfiVW26gjb*9 z%#}0QW^%u9G--6fYH*s*5#y=F=*e;3ing5{hi1h#h@YXj_CKD*mBcr1U+GUPnr}Ih zik0yP#2!wVy5DkSt_e7K!a;^R7FhC0h!*a8$ajJ;V zFK1@BIrX+l4Z|0qh@7SMsCU0Aoli+#uE4#!Ir)U?P8s^Z^ zEqS}AslBAOY+**3=695Xg`T3$)G2|A^#G7gG|zow&CcmNKE;IEz5XdYR$eOwDos#216($)C}XMjqKXk)v`?E)A*MN~SvL>oZB;7HO&Jm&$_&TM~a z>~p;En^Vrp4J_VUzVVjqLO5OaeR3g@uJ_^1(AMK~!yEGK&z|meNxdofDon~=5`06Y zyR-aG;uTerf{|G+mr)8Inh_WFgFh z<66HAHd^U2eX6c09=WF%7Wak2(k>r6T#(oM3bDmXzv&7zb2g+dQhYkrpniYW3@6sX z`xS#1E{)^_19`zzt>EI)EB){Glb(j9UhUqRBgT~`v(=5 zpkE|(GHQ|g-c-uMYqH+=^&Q)9l)AMrNDfVqJpP2cyne?qt|Zl5R=0}f3Hh>3O2wXc z{+@b;Vp>?e1nVclUoUy``$nDJW8VW*BvdM9{e{zdL(#Zek|uFPv~9OGgPD?f(?%%x zQRp+C?{A!)YV5Olb_QfZ=3jGYNY$2jI|$p>Mu|PXh$kTP85&1`3Q!}hW;x5)j-Cu0`8m;R}MPFzel7Y{5k!JXe|K$v`+)e$vhQl38Mip=JRa$67ICadi z6LQ+4-^3ZM0r~7$zN+ypD}E`=zIbcl&WWh>ZE^r%-7yf}RY4rCSf#K&JL-M?fV6&n zpo*R(dKNM>ct|j7hR+tEJJ-E}`bohoVV&q45n}G{s^oC$&fD!0&)-wH*T|K`ic>f~ zNuba~`<>}+Jx-ovPq}Y>D>WpMJvcXp;jta*wt(ufQd2g++X^+8POsDCyz|fEdvuKa zHEYPAoB@{NNgfk%lC_m!#nuUT>)6kp$up_MiC2!-xy0!t#-C6~^G%J_v}wl#Hupg4 z?%4M$L$e}Z&hO@_G9TWsCBvj>t24z#Zr!t*GJF`0;p0v#2$4R}fjVxguDyA*)>t@P z{NasW3IS;+m6cWbw_o3x+ee~@ZWq;GbVwv}NTmp@1bwWI8Xaf|izC%jqPXEweoybs zFYJ+L9wkQ{WGnh0e;oPH+CzY zXJT>GTiaEdIovp0hxogGKB;V{Nm4o^T@OB!suRa#QCZW{wAxMeddA~-=aN1O5qIjM z)OEzlH#dsScw_1LlFRi%-91FHBw9V*|9Jtv)Uz`4mnF$Qx*;E`TRAIj2t?L-8e4y4 z+_QJX0y17Y5c%TG`K$J^9`OneuaA?~&tv5ZV6~kU-h=WjGg2#Lg=qPH7bEg>KY8I%=T%Z%7`_zF?I)Esr!6u`a%JYEVbJKat6oH);KhquNZO@2x=G2Q>!hPIakek+FE=nG=$=_#c^O zGRk9|wmI2ct7Klm=G|%TW4G4|%utT_t(KR#1DCg%v8lxZoFux*W;AuJJY_@$xeI#k zQK>ObE69>WJb0v_VLMv8lWVE@Yuxm^fU(@G&NpM`O&JNTY1{cQmKnU0AGY7B&k8^{ z=T%jdkaJVb#2`yf*7v-}Up_c(JK5dWlu|7h!~$(b8+pibMsRsL_Z&Qq;qtRK5#4~l z)*;Q7-zMgK4tCq-2Z4#QOI&6?-lNU}RqNhX2~d(yZ0+Bz*>m;Oa`|2=%u(Dp{9f*< z(QBo5Sy7D}yZF8xk!7e7-L-McTMUuH&k{p)!TEEdU{`v}7fIz|ni&tCHI6SB$iE4= z`UR?8Wn8a#o@o0Rgl*4}2BbgyB>`1Rp+~~({@NTHfjqu#2 z&ioe!pU}k-viiGz^LNYr+bG{E;8i_XdEw^kjS(6#V=BK}wDX||dbCamvbt~8YY3qm zxJE_aGET4D3!`&PVQAAnE$4mjYMw7HK5CzDJk_4_ss7!rc1CW|;4k9T*K&DOktIjq zk@PzX(v(g(3y(fu`@eQ@Xy+7fEK?dSJ18P}&s074Q2IeN>0^!I(cBdbkC1@e7fya@ zniEV^V&C_Gi?#q`D+qnZ^SKZ(OfkM#Eg44$9f0+fT(?yNlaF8{rw#HW!&@g@VcMO{8@sG+iHtMW`Q> zj_!DK5x`C-yegc&7cJhn3N;50aP(_Z@f*T(aXx}^XbA=EV)!bmo8}a#y{32u#KT1n ze2!Z`H9~74*EnCl%j5oe9RwtM|5sa|O?93)0g2)NA%(n}i;X>yW!%K^DUf7bSW=Ww zP}R=S-ocASL_!?MqVM+H&BNe@jV+LTUeV6S(bi61ifSXGZz-UckdsvnP1OdFN1EYE2}Ak zu&}T|kAXkX^#Vu%bOQ_P_v>E{Y#i+02kyI;xBH#;+w}I+oW8VNOi*xfP@a-VrbI?sP9P&HD^0*Xw zHh6d4DMel-72vZz{Ln?EKL%$Lec};HKuAqPOGnSn!O6wVBPK2(c~44OK~YIrMO97R zz|hFp#MI2(_Nm=7dk04+PcLsDUqAnsVc`*xQLm$8l2hKMrln`R%PcG^E-5W5uc-W3 z-_Y39{ONN`cTaEMm;QmT-^M219S=jK;d*VZ>Sw|;H!AdZetPS4Jf7ni@~!UAFc zO|1VS*}syD43O&v&<8j1e#?b*!xuQQ$!_A@5ymB#*Tb`Mr?@Nf3ZL>}Qo)BV0#;Fd zIMox6F+yrKu@!d2Z_)mc?4J`X^xq}fe-Z4z$~6xn#>N6V51R}G0j)uoo0s4ghYK`k z&ex#OKC}W-5N^H7T;Nz}Zu!fHnF+oh6)sj|yyF}@%+u}0At*6o5nY_Nx^h;#$u>Zx zEW|qmS=q>gn+aah$U&|_E748YpbafBTz~Z9QA$tV84$$?-Ij>3p4bOLg{Y;GC z27Sx?t9wB;F*1mQD0pkvW#a2Vtr|x;rte~}={K)I22+Bp4fP+RgHMtN@8HMCq_LR9 z0GFDD+2vhIxrKm{FHRCMswLh5I61Y!SpW3>v|F@moa?rYXQm}3&YMg=u$`UXR%MIv zo5eLzrXw!CEsuAT{)6F!_7H`ZC3uJiEnANvV!sAG-0Hsup@k)u&=o}(X0vM$PVzOV zz;o>ygrUuH!x+w-pp;l38G?Uq5S72UMBO%c4ZP0}-#YV=RzKzd(c`f$pfhye$@(?8L8a#!6uu}9Ka6ZMSj)rnbMCbg%vks(ZCq7j zVYayIfosI=Oq@_Blyp|+O^Ttlb35G$t>aIb}b$y9QuEaf})kAvp6NELIgPCI-!(!!-)|@w& z_7a+E&zw^_l;rR8L5Z$6okC)@q$7|b1oR8C{Oj;SUZo#`3W4s(mzs_{l-Erd4$HKJ}5P8#N#d_~EiW<#`z(X^6A{JJru0h>y zk?AnfhD4m2si;T+SwUNlcst3thP30m4GwW!7s(2rbr}bi7R6ChR)Q;}NY1)$QY_3Y z<}T38C4MSI1~>?7~>^#X?{sg5p#;>XDi z!CU8EJZ_oc75oda*4!MJlj`7S*Pt#%=yLTnh~^r!oC0Z-+^1LulObzok&+h3=b7i7 zNmmhNUCa?d9WwHEv|vgn#Ons=O^yavsCGK9an6Xo^3m`s6Dew@Q^vPJF@r0s9FPh6shE|-Jh zx_OZ=w|e7smQxe=Q1BwlARWzEwPu){;8cyJOL6kZ@vw3;&#}eckUk6kMog=XazC0< z6oVh&2@GIdK<%5*g2={Il-mu!eqy7gmRl2vkm)@w@f$zPOO9K1ESP^jiG8vc@QLXu zMgLtfyL948^_~i8ulCxS=78p4Bl_&NQIla#v8+XS?BY=6kBaHDm*$ej)~+X0g$>4! z64U}EvWptW;H3rEAUp=lSl%tjaw%l2S&|~w8u-VIWeWD+h1HXH#4GBwmqaDHo5XFsVLEr*<0fy84tkdBoOb>-V~l8B|Q zUihu)tRU*{={lw=HK*?_>GPWLtU`}m=*&@&9vEB|I@jEt_u=%sQ$sL(kx3^)I%g<- z##}71c`)%>UN6uk;=9gC7NrwdB!)`p;yt)g9* zI9{c1+zMJ2OJy?2GrkA&5-%NsUjQ<#06tI{Tl+K!$=)TnA#^rnS?9}wOa$@+N(}wbn$XESt5r1xIbU`*6UC01Z2O2A zY5mFIpV6Et%qgtwGe8$?m7Tp22vjfB4t?vY=o;h*!$m(uq=(dqTSw=D9KZ@Q2D)tx znUh_@nM~Wn6^tuvd=K6+-s<&YGqjuOd2+|tyu>7@jx9OXdeQ2#X*%uFw9WSreq7w_ zbwP3Lk>Yz4ynE=kzl4~<5Jmt>m~vGv2S#fkw^wx{@|gFbD^y6ky3$u}D}Z^t1`&aK z&2^&Ae$dkH&M#KjP)el8f%Kft9gYs-@Fxivre(c>OQ>I!!5m==Rc9JVH~8VIRRlb9 z;w%y=h!^9nAIRxgyWnV^opu>_WGT;xdiLzb)J^vWjOp@6*l_Csm;vYq805oJZ(@v` z5F+<89P(f?P-(5lV}7_dGcBJrO(T+2?0dJsP2&k_I`Yn>fs%}>Tf=z|;PzhH+>)G#!NH@Rp6B{{|1fwsFX~bdO}%io3N(dX z4@&VXqOLogdJ!90C`$w_Qd`!N)md%uBR?E&%`xOt4XNfy`|xn%sgI*ZW#&04lB*6) z9eY-S@I_OG^@H)`h_n#A-7npG>PRiDm4J3yQOZj^we;9o9UpgR-?1EkJ!>$|doqmA z?jgw*k?yw52Z1YC&p9of*-Xma;_OBTN=yZ+%368@D$%W0g*i7QoCd8S7yf=VC+Gas)6JG{9svFz zS2=r&tU?(F_sCHrbiRyYIa`x-aPXzm2RD{FnTvmUb52Sep});vhBaoFXzR7m8oZQ# zqa&?W^bC5HD@%&v4dfbcy9M9vzJ!FKISczY<{ev}-{49|jr1R?u`*k!@E!Eli;`>k zcsKfg@n+1g?l`oRcK*IuK=6=I1X@?x?zM9o^e~32T1zM7e>^juo&b{;(=~{T3%PX- zdO>=nD)#LH08GRc*Pyp%ekjbhTA(#cQf!8hHa0 zfTO-&{Q;uzGF7fYyg)r(^FRT(3hsaabLFur0IuyoL0H!yGG$D6-pM1_(GUXf8pHyC zuzyuD1Kgkh<;N&^yP|ACmohFJl`^cD+fWhDj_A#@DT zkU`O2Fgi@-Ul&*d_wS{Gd>p+ZT>=9L#=jVP^f3_`T6P8?*#guW&?%&1i5O#Dyzk&Y zwdbEp0)GRx+lH7y$O+^(zVF&h0`UDe$bYuppWEusCI1Io?*$lcRfiNb*~>#Y0Nuvf z!5b)sbVOKS$gLUtQc$cYNiATFVQ*TG(n+c|{V|AIh*e#+eBZ+wI3n7N%@z^>3=5Gm zjGo=vA&RFZ5tAwQ@*)gFBzz6Rg`sZ%lco=FRf%9$^b@#AY=_`ZE(aWXWdRVu81_PE?e=ZFn4=-K@ zw4Hn4Gw7s|o|JW)w+=@|Z49I^rSAc&Fr4|Tx3K5epy<(MU_w~GHtY-L?R1Hi&n;J*89 zbh=U@N3nun=$z3c^kl4P<~tbf<%`ZQTFblYgq*TW@NWHCqd-VJ3?X2bc$57+G2iNX z60bPES6v3xZ4&)easG`Mu6z=MwX)x7&ifY6>XPCN^N39Ec%8Y# z?UC;T)yX_^<3?{ou~uPuka#FuffPW8ofER)6*scr!6hOLGumKWR*Ca$v_Fv)S*JcO zw*Rc_Sxc&25UCbfqIjn1>?0y*gJdeLcjD&46~mYTZHbZ5%lV}+SY^k^u%*Mdw^^mz zHG62K2qyem!RhA-}BDa*l!lf+UB~ zdA?h|uv>HNtH;OM2^UXZ|3YynTe*9?+OZpw6NaV;ID6NDbV1B?LFu6Otu;ie_WMlv zyFS4@$lYqR%2=b>a$0~tPEE17OJ>9Sd77itWGPzvO;j|c9%gY&t7_uRbIRjhU{;Dx zWA#E>)7U(B=^M}1zJ6^pWsPaFIHSXWZRVEJ1uYqiih`>85iR^$lxZIJwQ`{!0?Cxn(B#`dwi zlxrdI)DU>#ZnDBm5h1XaApQGbwE%gl&ngtE_GJ5UMR@ltYqG(*|1W$*mj-0RLx%*= zV5IvssCb?Vs?+dq;kR@ebn%XX>iiYU0@&cc;6TK$y%NW%S(t1=T-NLcPTN zfWY;a;=mt$W6(0F2ftu6`*LJX5L?V*x&=}PH|lYgAWQPXP@APR1w6N{=6E#=^^UDijFPX~QkDx+d?ttO$uzfoC1ctzR%_3`X zpP~;+Eh~d~VjcOy?{Z1$RYC60{R08&Bi?&c{J9&lH6KEAEqE0z84vhRt9qWji@fodwD#2&z($o7EjimsCP{P@GGGlvEw??xMh995##cDvo z$m6bDTrH2ay-a7nD2t{E+yY5(OZdp{CWLk4QLYNryvZ63nwjnzbhm7;5l{nMovRy! zkmrdDyJs~BFq$gmtPCj%hplO+!;iaRgmUzx%#Iq~%fk?pG`z<569??g(d!R7f2h6K z8Q0o+J(cy;pD2#i%;TFrN&t!^=I$N#5dDjh?Pc7j7Xtx1EwL5K>cI3{Z_;B605x>20?*w(9L-N)~neu`32ce3%!atoL| ztG`;PpwH^oU%0Trk{(P2YE+I^sm% zUN}1g7;4HC48b6P{Gu@u<1S(_il2`xx6?=M8I+tW?l*i9Y*dVrQCQp5RVAs##RXj+ zG}fpamVFi6xvcByXdn7DWprl*R@&gajzQ?IF7JE#XH|7j zr$yL&P4~krxuFRL?+cd|I@MPf(np^Al)4S+(o05A&X$YQ1BU+8eT;eC=e&1dxE>hE zdj2I3$%BWc?UF$p3bg^C*=~NL^&RQ=Vn7}%8bQlmDJ|NUG%rN>py;C?v-D%T_jsJ zVw&Ut!U;_dK68PW?F9wF$p=>?qYPHG%RJdnr{meuDb(&y@9{8<^HOZg4OP{1U?pwDWPl+kgX@@G70L!7thTy>?GrIvejYjmetCwN z85nr}rEMQEzuS5=I-{PcjWtj;@yOmsjq|5N^@Z)Tn)btMkQ+N)5JF9Eo9%>OUG12& zHZN?`+N;qrw>3|o2jG>huQFXQWPuX!yMYq@5puV8J^T{8jUn(iPA~*FEZOb;=CRzw zrp7xtmwM5%$DdY9uj*mT@z8n*nv$Wv$%-4<46jm0K%)5`OH@^Km0N9_81x;jJWC#N zFn>|-Ku4^pQ`NE{Avn9R(&~6Kt@iw4e&+O}`c-NZhulHZghpUpz)Q>Kox{%~fviZS zmBf&|TV8H>exeU2WJOn?q!vV4GMW?1w-@G>MP5|OBx{iSKYOCamSV|7Y4Em$V}sMD zkG8yowu+5XPw7qs;MD@fIA!4SdhA>EO!U9-FzLsTO zX_pH)_iBt>JyscaS@k!g`k~CM#AiesLPD9#JNcW2na=`9EWk%93;2sJ%vAo$6ZIQm z0;H7z^!pVY8?d99u>V3?Ik^Fp6$rX~Z1S720s!ydAS}T6OfCV84H*FHcyD4chaqM4n5 z=J*@WRRIHdF2KZu4O;^=SL)wE@&DCT{tZ=u#s%6I3|-EF0caH?46va~_~JUmNXQ=a zdE=P4rEsWL^DpU1xaEEr^@ED7rhFtj%8A^t&>u^Syos{3BzTpY zh^xod9JIO|Sr>S@@#Vdb1Q(!Z_pfR@B%EOHqxy-g!_?MDW573xlF*(jbh5T3j>lU5 z4Cbpge#c@soDw4!aRXmB%XxrD>D_iEc zh;NqfMqug|x6)*34XVY(d*+>Im7BNE{L63B^1Pmc75lK|21vcqVLxwT@N4%uQmn%qYRZ*U)7y6wlJZ2eTu?jV&r_z_-mtdquP zm-ks!#{(h7I+Z&uXGJ2Pn?E#$va^@IEihU%5{)1EJRE2Xbo6fr+{-}Ct2D@RF{CN4 zH}5s`tyqOIfbeME?;x2XDYEyvOpUd6q8NCn!21>duEsN7o&s6-)O%NK)t@a2v=+yc zV}ni9KGliWq9jsuQa^i*jP*{1P7AxJj0VV@TDY|5WWrkEI_TRb7{a=>B_z*Q_cbV{ zgAK715eQk{Zev=b6T2^|Ig$SE-{(704UIDg|iV{vw!gPD?`ed`VH>cj+71MI2Q+Lt`C+Qxl4NWz8R8 z*S`pJu76=-)!dFAs5i*m=U$k2x3J-CF#wQjxW9+j-_Jn60^+GazY)qwU4woAc3S_I zNCz+!!g!z?)K+r8fmiu8XuC+IF8_bUn)7$K!hi4l&q?q1{Q94h-v7)z{r{s$PZyyQ z<28znbk?12tWoY)9XrW#6m+XQbR}P$|As%=mORM%raUIUUi3ETW{Q=!8_GM7taYr7 zySxvPxbi3ynsBiG9zHeh_p!5Ql{aJEv^a7Y{j-^zFX6TR-CoghRyM+Y3|FAon4BnD z3_%)(*08%OSy`fTY^GPPaNJTOov(4d>rj#y_`J3?Y1Y-4SoDqjW{2l{z*ur(hBB?g zf~ow1Nh1Tq5<{gMzkFV z`+{oIHFa)cYR%IAzPexb;Bvoy`V3HR(0b#x@*qa%4$p2N)lfX>r^t8&cBd5urW@hg zmvy)=NVRkga#u#+5G)}a0y>kH8**z;MOoLhwGvu0ehy~X zUR(^eQKHnv`im2<^Pli0Tw-HL5&(ZQWuWIZ=o22MnBMLW2OO>;0ATsrf&hxcMDH3j zp`7>t{2SQ*neJ^wzk_yl$_3<(I$7JO)WVpI1-CX z3SyR9@Sjp-oDEn$WRw6B43$nPLdVkj8E zRVWMS(R>J`Y@YXzcsxfyejp&v_7C@R)cgW~kS70AfWP;^De9lqBz|@Ze1Q?`#l?8x+oykf+CdI+%N^a)2Z{e>#`2M#M^Y4S{N|4}&7rU!zOD`=h zKC`vW>ij6-8MQm#TU-Rv=CX~>Rq`GeVF)V#XhMMG#SoOB?9ie}rE;^`pUjy#DZcr^EmJnmszJ;xg zQ}%mVXPIW4M`=r&D1OV-(eWMLjX^ggKk43B0OH%)N-=~y&6>#^*(Zz5k&ua74h*g5 ztplMyRh#Aq=s9mmrw|6V7GtH$nxJX=F@#EMiAeUmJz>(`rKow62=VxrI^<@*HkW!O zW@xB$HOEGV79MBPED}41!5DLI+3Q!^Xc<9?967fHETG$Z!SQmX@5{Iiz0!MATwYpT zgDy3!DvI`FcoFq$OK8UZI)D?u*@6^Dz*ekcm(|dAt9f)i%XJJ6<{Rz9L()vMjcI0q zsWGdZgd60l@87D&n7A3xU8 zf<~0>G}Nnz7SWJcAAF(Nbr4&=GO$XlwBKApll5Q-wh^Ld01*`W1~U&O4`%U`;3ri= zR;?~IA!Q7u<8vl0O$|dw(%-?l2FhA<8 z15APr&ZMUtc}|6yo~a zEI;!H+p<3U8Z$*(%(%6j!&=IaS{d=}G;%ud=5fN(5|N^?xnfP1At*7>@U4kqm0Dj< znOMp8unSG{M>Q{V7iW)3H8q{en8cbEnB>&y(u=|vUREI82-hF%G4PJP{7-RczvHa_ zsg)Bzi$j;&pdVHC#ewM-4$QiJhv5*sV8PwI*_U;Zjj&tD6h*lBL7mOnAU~@nH=is2 zdZ?SgDmh`!V2gw?-c4Z6{wwe9|Mz0(0m$(eTNlRuv-%Z4bP=$FK^Nu(nP&wE0h9xp zU`CEUPy-1C)SqCCvn*1u@~~Z)-9yJP7bkTQRpN zuX52rC_s(6B+xDefl6>loGez&PqaD=7N&#Xi1#e9)N-A-dK)X!C(W8M*nc+?`{tJ( zDFf?@6J5OPxxd)>Ch@N~zRA0~y8Yv}H%&)ZXJF47ix{EcLpP77b{;GizcX?O0cl9} zfemsj7UIHE!1F!t35l|Ziry2DkdhJ?`G>TnqT=ELB0`cvqW^T-QejcC|26@LwKezF+`}^iO&A)Ax6A_UVk&|Qb^zyK?aUt}}E-?q579&O(R9813O3r+!%@%Gr zW!WcM&hDo&q^cT1i?Qx@58Suyk7mlqHJ(}BxXkr5iBf9}hf%}%2sR5*xq$(&V#+foOn`Fj61Pfn%;+nHFi+N zu4I2Ut66yMcy+NI<0x<#FP3 zaPV?ESLeuKJ_YqlnJnpmVN1DSm7W|MT+RW`E%O?RtEH&xAeY0_RVdSzRmZ+eV>^(x zy0#gi{JgG*7Bce***^Cr(!D|MKz!?SgFTY*JRG6C(byA!UFV(6xzhO68RwnRXV=+< z-V02l)mD3-R1>=6&30ousXdh$>F(vj=eFx@2V+>>ggvq~=rWUKB8O42M>U~xO<@5A zz32`C^>6IUp?3*Pbv5-}ujF{#EjeFl*=ouO)s9B9+&w5cZW9t9=ZtSmdLZ)c(&^2* zUM}9(haR%`LM9f9#Ff9CKIcBHobi&&TsyZiKFVMQo`M+^Ci;5%_NTN7I1^V=->Zsp zwkN!!p&Zl7yu=TWiJLg4>F>#kbbNesy6l_9Z!6hhyz@#4fzOx}E~jB1@a!%dh(z`w zOE;^z^vgHbduA>9Jf-1c_~W#tA~u9p&ZqBftVKS}YrJX`A@@(Ucs-KVE%2P+#~?%E zSH~ZXLdl$}KS94p9+W3@MdPnK8j`T$k_4-=-Hqm+(O4W&+>q0_L7DqXb^UrV@4*-8 z$=7Yn{;@{WIA6_2S04D8L}pr=ip^ytbX)Sv)YRuRYy60i5|;5KSnb4D=^ugo$l((&zIPLx$t$O%JWwx!Ci)29#Wp`nQLwBeW*go{@!>(j)rH6M*gk=Ye3m4;rshxH zO4wAf%9GOePMIz_8+0oQJeEi=f1s2JgvU?3 zEm?6zk9Von8d0yy4xm_{?R&%D9jz$Qh=7gJ8HJCR{K1o+#zYs`Gd*+HaERoef4?{}tq-?H^3MgSwpk}X2~>ziPlQYOnZ|E4T*&`Rwdz5Z7uxG$cf zm$JLU88vEj*+n9;l8V)gQn-~TEdp$V=rYy;fM2D6?I z@_Qe zjEQ;P=)H8E&b$ty4+@-^%tW~b>IujPencG30z0~43t1)2^6m)vBn(bv$gj$LC{!5w zj}H;w8BOB(C%O0N9-KNds)Dx@ zPE2}2-Cd^5@%lrV-M42Wa4ik)i^+Pl@>I82+U}R&JyZ}Lmo@Tr64#pE#(%jXah#Ea zmEXwvIa^3V!q2Ncf#Db~Kwy0}hTV~bIKl&IVMMg$fPoliI;J$gVDuV@OX(t;!uQ* zGeeb99cCh}I!t&Bx+pIao(#>#_+^XAjTmL7!d zr>%c3<^B=EK>k;}0!0&h8%H}M6MG_VZU%Wf8zUtXV9~}PFDy#LplssoK*aDXuz}$3 zv(WFe1h8Hcadr?>asXCZPp^sr>pNf}rijQO1}1u1H7fG*0_#E>Af^FuSCp0LDZD&z zR}@49`hCSl^t5z)N@FK_+VT&0avHWV@|M`mlDILEy==it6WJ6?-GB*Y$xL?vt^lM%MCb(aP5d9i|6p4QI zJVl~kVy8&-3v)#sKsbKSWvu_`m_h~)29`EvPv2w)%=iCw@&i5fsNbLTht7nF2+YO; z)ZxEVs{p}U+5fIqndErqfMF7USt8c*J*{k4jgvL2M9IZl0$zebA3`E2mkR+QlET3s z4~!y#j7WxtCZO~2QBsfkmd3j$}4 z$|pqS3(v{4pNa3MC#(4`O3I3l8ZR3^9WC819yzh0LG=2)(9bf{a5KNwYpFHD6&zk$ ztTy#Mhq1>1>u_kWHQt zn__!#)16)!_hPXo_dId+yq-O1O2aUaRS_%h=0ffs8IQFqBer))o#h0$cuU-sST~SW zR9@z9m41xAo06(sVGmei@ZLxpL~4cpDR*L!3!lHVkF!mYK#Lq>z*NcI!-%In-EVDO z4r>mTLRILt>^VUBGRFIkuIqit)tWM{CR$1#v_|hEJ8$jJo@=G)lND9sJ6Uf8iytNF z4S~E-{cbyB!Kmkf-Pw;`P4b7mcCoXj z+`bI*Wf_k$sMZ`LPdCDW>WUV1CBaQ$2p+4$i&{f@)1}zSC$FZ67nQ@4jFG_V{vOs& z=p$tGTJi*`IqX%49_-;5M(V8BqVyY(Qc|)6j5#rFE{U-OmkNc{T5bs_;C_r#Bd!KX z)GK&w3o*5Ey(5MuLzR%^J6nxqr?=s|7a zu;(l+%zS;`T>@RJlBCDFpYuRiMM!>v7836PpOa}E%0iI3MZV^cWku|i;-o=BEUhO~ zrJJ_*B#+32Zav!){`d_0ck&r=lH*KrEc5DhPOGVlA6M@;JTxn{UyX%OPUnB6;*e1j zMh_o(WlVL9vuwAHv{mlkIgY0E?I+G?S@(oRE*(}j9h!(11-gPp2)Qfz@o{j}WEEL& zaPDF{c1UJ@)|&v@Zi@6Dn4{T^Dl*$RM5mKy-*c>Fk{caOq>WB;zVqV|Ulqj*vB3$h zPNc?{3qdEthJVC*?q7)G6b?|=pUsKCqXot5J1)ah=7|({pUDq~#$ek}bcIP9=J&c8 zpIIrn(Pq8B4sW)Dq5DQt7GB!D-4Mqqid8c>0!_@Zf}U5bIGIS3r5fJ+?oBuYKPmC# zBn&oNEEzHO$H5V$awJF$d7_3~YMfbl-WMF-V;&ZGm&M@FaT~HIG2!u(B<4{ zqf?baFpdcvX686Mk~E9Bb6wVxsg4xCki45Wf|E#=KAo^g3?En4H1C{IQzR20JxFP= zgVCuss^w%P?CSko`4TOiJ*6}fN~}X3(gNRPzoaXOHi*oy`ChYvVl>pPMlS?bFgcq9 zNhRXEh*fwjxq28bj9)RlZZ`<@WkBY$PUY)y$pW-k`~<@Kh;Tfl+!_4}i+J}?3?r!0 zke9G9;tKn{Af)4>q*FR)q-{KC$&XE@Ss0{{iK*chZ>w{~^>kbb@bx-k3$oPa8T*EW z1A7a;5~C>!6{#u?5@|{zi6SC7@^_FSD&dmQVh?;l0bE`eSbXXZPRx*NMP&%Hxk;Pbc>ty%jZus#;#R{jx8kwe~`g;Baj0t@K z4wS`GAtcI&4N)fjbrf7C=1p^n)Wmr&`RTwI1?*zFS+6NP=;on5lx&aK$;0fJPK&&fD5 zQ|D~;nKqxvQbLfz#j`+kI}fo#LYpS}y-;Tv&ea!`l=mSPhlFF&M$C~O-b6E%XcI+F z9E;|c$)9oV%2vnZTGNM;5EKwYJK>%ZRD}{d=oEmG$hBZ;T{9*#SAi-$krDs{~|`G zy3Yfo8K5n+GKry^=9@yf5JoKN4$~(#dP#?y^`e3qtDTNY#*HTujb2`^DA60ey&k;= zJ6&BrB@u$+bNNFLjiGkRw>C#)-n%1u63+w2*SfcTYSL0S4Fh!-jD*!}6??M@KW}2+ zZGL-9D_eiOc0_->C|&jA$b$RqN{{1}r)g!rMcMSbs*CTJTq1m4TiN$OJmo?Yj4jQv zmqp#J5~a{q>U)*?0XQLPMlJy+w5kyx=-Bv#0FhTk#poS|b(RraWC5Ei9?@1!XA2P3 z2PYrzj?1x7ZCgZUD@<1LTvC(;;I1%I5caHS=Cd>x<#ou=Kf3C6E!ftN>@oG#!)i6e z1C$Nxy=~7zBbQRES;;uNnSd`xiW8l1Y?RhCs?At}%==i?Nw%qz!gumI;dAmj@^6^% zoK#fehLS`&Ee!3V1<_3tc5SNeqH&%PkRI*sf7g+t1-5qJo()N@l}+6m{%PZj+KX@LN?8fKYH{I%)bA(V*p+RaurUd7W98SeaLjwGTZAv#iP1CEf*WaEjU@ z4wvEnIMcF2aV}(Jyp;4|>A>psn(lPVo&1Pqww?vaWt5hekSh0wfxPzXw_EQ^3oGGz z@R$9PLV6I1IN4>F4~D2m>>^C#?6csO<>qPVv>~+h;X~bs$wCc+e`H_oeAp@JOUcdH zpYkfc+;{VC>b(H%<-bRT>3!NOaqwP09kd&lj zF%hQ@4#|3Duj?g5xT*P*R}@=EY$ze;9LrX#6}7%XoyvBW&WW6D`eUm zXR1U~y6yFXW1`S9+Xh&0gDF*DK|Zxf%8MK5m4~=jjxyGHW9QF5MQ? zZePzofAjJ@u){K1ty7d1#)?TbkGbt4sw_-NIZ zZaq6X{885@)E^vECvmmYs220UFv8b##P@+0lk*~{iB6Bq^=1U=08|E4!pnU<6^UJI#qmK4|)0?jIfvC zezx8GX@T+fZcwmzk3brQFjIt1Kag8wy;QYg77s@@C4q^pII#zLNHJc@q$tF;KFS0> z;55Cm^5TN2N}Nxo|H_TPt<-b2i}r3V^o6fWRI0!?+PVyAL3TKJlsSj0?0KKmEM@jL zpn2_&STP2{ip%dCUx-?c7d(TyeqJ(ZI$+O*m)#la-kkgf5odU(GhndYU{KxR6}Chu zc4fx%ugcSrF(>3VY^j*K!iBXv<6^{A7?*4}J5!ii){}CN2Jz}A`vIXAnd?6TGQO3z zOg0$4jl@~}daz8Bz_+5xQ)ApUE|t)7ceo*lIPXUJne79_`Nim9V4&ZK{Pf(LBT*gMjX?!Z zrYl(&2OZ}A?3GAT?fu@!aGA%B+UsYD^Wco#Q|_Ai0tQApPiJW_smF1J`%suhvuWLh zPr2cTVjWWZsuRlI?jpw80iT3%SD&Yg={we|$3+Y(Peh*3Uf_;Yv}bE*T*rOl&dYev z39csTL(w|-s^xiD-cYMoVJO87a1iAVVm`^zL`bgUaq@1@>`{Vnk{czc*)ZM^o}~5p zBBFAUTxwkUAbFUtwaDI%M6>fyR+=b-XvPwEW+}HJQzJTs9KdsREH;k{cKkNZsoGTb zuIH;u%Wc=|$BD&b@zakq7Ynr>yym>lv}8KT9JLhXxyAa{ms6OZcrb5GmiD_fkX|V} z{SY{(6Yq;%EnpO>Y zE_Ii`@Y-}0*|l0s_kPVsQ-V0}oq*9AC5+FJPFIHziL0^hSlQlyhWI)b>g17PHBq=( zW_??)R3j^uV3}@nNrN{Ip+$bX&`~pYa~M7n@cGU~bKbqN``%BL`cW$RL+cfO^nj1` z;LF8@(@_sl`mFd!SkZ&->1{>ITa2;%D9G)c+g0kt~B>On*I7NGwe%+ifWgeagGjx_C&N9R>5m@ZMeCw+ZSv5 z5<%Yb28F2JD6ks~KaXRn&t+EevMt_J&vrI?Y5Du+lD>fdXcFP@-k_5l%+P}HsNdC_Ar{}} zppuLY`dnhOif7r4i!ay7J6EsP7|f5>J?zDqEjD-tl9 z?pKeFJSssAix8BNjZs}97|+G~BC*#M5gBtP5YEZ1?MFBlpoU_TZ?ncUc~|m)MAp^q z{ZF$5=pVYGC!2w=iM^4XxvhhZ9iV*xe#;tI0fCd{Y)!0{fFQ_pf;N`Mzzs_SGeC_2 zSOe^ho?<66F@o9Y*;(1ZfXd=2gQqk)W)5b04lp|#psiAJFtJi4VrQY}U}t4{N)R%z z{T-v3jfsVx9n8kWfyf{MC`rtX1gy<0O`ZZRKb0={%Njuk2AC{Ntc+lmzvT+3W|)2# z`nU1{&Ct_(fZoIeAiMn5SO2M)0r)R}=~@2J6Fxor#~c5uH_EYtlMWFZh=>i)b}|BmvVnjrHV(ip#17bsSXe+DL|_n59uR^Xc=xa7`zsel zKm!P5{ZuLuD+e3>6A_6C&=vwkKV=S72dJUezsdsIRaos84!@ObpuZW6{yQxh3nKvD zzqm&_QA5@r8IgOATo4Hxgi_ryl8)R22P{Yq5-x@ZElL`~_{JcN{@8yb+Y@6NM za5>qPW>~y~B0KVwM}gZ8n|yi?%uij6$m+y2F14pSPe4pO+b}g|(_Ryi z+!8d>M=ZV?)~N8Yd+ZCM$GdXMe%5rv{w-%}AJxaxBX!4}3AH^c*Oxit%K4Mh8r=?t z{lQ?IF;gk!bzzRZuloapNf*M;BDfEVKIW-DXk9NAt~1u>=t+wwA(DfwU#$g8Nr4Ia z)NMb&n$7m*VHafR@!D+jsyd$X%EnHK=cER{rCnk>fMYA!JbIR+pCtaz0plOWmp^*X zU%la}8vy?hswpN;>wPx(_}%EZjb42($soh-01g8oeyHe8XMF*fRdUJhBA9aUeVNJY;gr$D@h z?;|H$iGOp6#z;);K;irrh=Cpg^RhxvVUz?dvV<=%R8vF_@r9#rkatj~Dh!MyX0gir zc(J->ZsEBiam=Y_bt7@smo2`L@h!fs$H$|ALHFrPkCsc`7!hn@V}Sv*aNJ@Gma6!} zrb~=4?SK-4&8BXwTukm4)`Np0R@sixmsHzoLS9?@@$;LD^L0Pq?pug*=Rar}y+g7i zMj*bYPkd$FxRyTa1-RKX!zaP|HI=iCSXeUSB_lA(9JSx|nqo7yA5!TgU}esxV;n-5EalHSh4F z>Mk(1eEDqlJUM){qPEw4K&M(WM0Ww|?D@x2eV**3duM3F7lyUf#MlxMygT-9!4Ihg zl%zdlv_cBV4MoNg<#d881eDrUyTW`cgxMq{?R;%uB7&UwDx&{s@Z#J zCU+Uw5lc!j7bK6mVw2IhOZH)Aqwc|W#B4Vtov*mjptFSFTT=96bGsPfyHUF{;<=Ei z9LKk>HT~m_Xe`7iwZWftBPL{uJ|}7GI1c0n$GxQPACQy^2}SG)MCuO5XK_{b)IID? z9ejb)5txT6D}{m_t$5d`TOd=RIVk!uefmAE5D>~M6w#VeVcYvHja95JD!B?Z!*oEdsE8$6oU$|P1&+0RdxhPF3{A&a+{#j%I$BRA6O2C@ zbwTKxV~Da0Jf91pu4r274D$mC%@m1APSfqH`wF3)5P6z-%Dm9zc`00P(FGG$3<;5H zkc3Qlttdvri;J)0Zw?MP=-$b5`>)|40>1G^O}~4!M$>6hg&o6)}iTpLC&j?vgv28ZU5@k108v z&b}v0b}_kV3THv(8QPPEwd(n-kDOjxHNPuvvB8DZ^5$qYXvwHB81i9EhQv3ST^Fxm z$j15BOqu#37PHuA5HEbBZnt-^>Pq_P0uI4gOXIbA_| z3{3O3Ojy?jU*lALRfQ?0PTmYcOhJ_P)$w5SUW%kU@SUo3$MM4&A5Hv)Qnsi=yqW?2P{=`fqmhU`tvX|{&UG;Qbzn)1TH7$}HeL)p z6k|%E&S;IUO2^zEsFYF@MTOkY!%20#m6Q)p2Oi$y#LKqTU<)C0Ik!)oTw&BvB`yo_ zh4z0TZkJ+EaAhJHiZ(9NP;Q@mVFzv}2p?cFearo+&qA_Am(Ub4C6X|I4ZmGFk9B)* zKs!%*@6u_&Cb=v~F7%*DSz}(-TZ+jWp0ZpXO<~10eW>6X%5W6@N>>3QW(v8XnFf!% zdx1LyB8obBE^n?E+X{3QllQF)CIMe%wV%qr<9pi|OeYEF$@MZuT@@`t4tO6;ZP1&l zgmz^Gp{xZE{3gjW5qR7=N)gdMqMe{zA)-nC!0D;m=K(J?^M{z{yr(i;AV{skK7BG^ zJ%zx;f0-Sm2og3BZbN>VhR~zN!q_d=6K`&$xg+RjVgUVmv*V^Bm|5u?y>!4udoOYC zyEAMan|9OvJzpKr+)v1+QYpd<5jEP6m@Ab2CA-#{WhI}uZ3HW18lkfV75R0VhKMZT zY2FyVREQ-U7&<^CMUi2zB9DEy*~PjYGqY#H z4Q`nuJ-+w`!%2r;wUKo}Qn(+qn+Yp2v&T8D#2BYi)nObgaOvOa}h-ip^Rh~C6Azc zo`l{nwhZ=*4dD&d4c4Bl6S&`E9@Pm)8KyFr^o2efRIj`WutENTJsyVA{pE4v=8UiT zn}ZS$W(i^Uu9EkNrj+cCzfUZVw+)vMYLfjayxA>=+<)1b?DeRc1Be$-X zwYJKwj(E#|^uhlW=!hkBN*QadkO)LZHl$TG!j;MKg-XHS+L{*xLkU)F z1+e#T)VSp;7n}Cvr@aRAHfC68vXw79ZSGjWxLbX|_i1Ai=ERL9S#Lj5AdF8%2V{bvuPbc5f zbvlaqljiFy^<1{r6oqbc6z$C*@4#{Wjn$ngNEW;Jo9>iy=i~{SLyK;W+V&-?E1qI+ zO$hC(W`5#$pR6!>%W~45qh#MlzaR4rm;tpH?tW@H43RHfIz*rAJ`B1xNKQ2>2t<}r zIBc1ILN=+_k(HH{SmXqIO%KP9RNe}jqXorLzbAz+q58ngk&Qjd5Bpcop*qPU?Yw#X z(d8NUj}6nHIcO7cmR};rRb_T81v5k93G0SS%7wKF**+%_+b}MWq)MfylVr{7pyzv8 zr|X?SL+7%0n08^Tw7wq4;^n^X>l)k8K)_e=VJ~3LzobW*Zsz=A3A8(@SJ>lXm%qc4 zfI}!B84%L`(Y-fooOmwHa1#zSi^uv?qvC}#vJbyv9^NR9Wn2|;Rsvq^(a z?3QFZJ;j=wgv@|MJMkF#RbHz6R4;q|8sn&xo{PiB??n%y_r(V@HG~hvkPHe1HZx~u zDJe%*+o^1M4|10oErZf}jcmamj^-T>KPcW9;Uqc3gG(Q$pV{c8>dYyEuR(^S0?SL< z7x29u5#4?<`=ta+>5i<~8gnb1rDbn$kSGG92+!XH z!VXpiWjk`q$i$jIf06pW-iK44?=4w(@C4wCFjmmWHQQ-L^NkB>Yt$je9BR=atIeRG z^*y=Y0zqhwU7VQI7jIZ(3EmwSK*;$%wZV|Fko~`ur<+|7fYj z234glom$?^@#f8CB+pf9avQ-zSz>ai7q6qaPzfh)MJj|fKBToqDKiYm1q%DJxW_xHxo^=D5Kh-gkZIN|?DHA^7I?!IxOieT!mq|PCFCyIxirtrmLuSl%O16rPryu7qSKKUIycg3U(F-qrczreRPoJ z?1exU?I-#;g8O<`gp|jIgY(ZVDtf9JGvP=}&2{vGGawtaf^23};cQaA%RL2y_3z zOC`{9=NtA0Jr`Ep9%*8#JCulqJ2wmCi)(6Q_NG4Ll1Lfky`o5so=d}a&lK3p4Ul=q zO0^y2sqmf4{AACB$8N)`_v_<)>9p=^BIh*c`1?IepI=XYjGap(6z_UxJKl5kj6r&l zS;Rx7x$s*_deqMn1=)%|TnfPz7@qDRGiv{Hr)JU zROTGktCEnZF)T8K8esEHt2D96Tld##e3}qre0J;Fdb5?wF|@3SctEtk5QtGv=uEgM zw4D!W+hkDJhieC8%?nT`C}<}B&D;ZaqM==bNon+!6=QhLYDlZS27Tr{*KCAXQr55D z=dr_li}m9}7@sU|)gtJE&)7JgwvAs;xx+i7leS6NSP9A9?nZ0N|D#RxA zacSJ+yxeQXh)e2CH5w;WcU2b`4Q`fL!3s>ajlV} zEzf(yVI;Zoh2&bp^DeWWAx1}7JaNh2nj8&{WSqKEYGo`_Q#I__lch*Z zgEx^nE8+~ORK@mCg1R`9w+R(mbWwAkAwZB4onnU)a%Z|;79s=|UKU-JGaT^>n2gf+ z%%ffJj7#&Z6MU4{V2^Bn9TSa?zR!*Fl^-Xj-?$$hvd@GrP6vuBQ`vM8EgkU&SKl*3 z9#_em6=9I^4M+@r-2##i>qzG-|5R_Kx|z>JtIYJ(buz^(K9@*4yyO<=bC#^W9$Y;y zjW7G#yUuI%E}s@uE8jg!r?l-FNRX~);MtqaSseCHn>XEcIMv)MfL=uGwIJStL6H&d zS^+j>F#3{=ZvK+)W~g_)Y91N<{5?P8mguk|4#K@3*2zVmiqZFhs(Bd1LfIIHPQ|o_ zQE}84DO|J>qCcC2(ZC3S-E5Gby?+tboUQuo9@e~`X+Wh zd``=91~VDGE|Fb^YnItR4t?32!enZ60S9!XnjGc)#UCRC;ardiCy4#zGXiNsIN059 zWa4KPCY{FT&p&6}?T)B1++A2#N9?E<@lMrSiEZWM&$B%u7Z}n^oTaJ6{ETYR{dT*I zv-AD<)9}NIV3;J=&u$;M%&`^Y@;0Mf^AsO~?Ne+i;vHeUtqE+Cou0yPo_rGtCKtl{ z6c-75Rr;@N9iD1rPRbM5hWD{z+Ke7P9B9>8-7;4hk1@7KYeZpug(QbFYBQaR8!+t;2{ujLNhysX z3phxKE|x|4im*iZy~8?i?Cs{YAEb4b zwo~A_D$HDbhZ|?wZ3v10!^ADpMII%%ZZK#uVB(?=a2#@ zIdho8Ru%q8fjRS4DtHcfVuGo+CG|>~Md;KhQuHZ9&q*TBoPr53u(zG+_YuN4Ae(gT ze3vT(r9YUP3kmGQB4aRNG*E>fk;cCMevCF7lwRjo$3KvbkNTlz;l8&!B951LZKobv z?Kmm$kk=uS^SBk-4b_QHFr6Xoh_^e|rl^dM^~+A29(qw1E8MnY_F%;;j^KXwbL#{N z2KY=yU;PTtjP|qXS8{q*v#0FDqz?LRuWit+I2;5zxHP6BMei4oTP1Q4t{b6~9L3p) z+Lqz;NJa(uo-MF>J*!mU=&a1rX9JV@J1 zcW&2E8D~_%A26{gDpzGF)QfJF@N(EzULIe2C714*@e`49Xwn%od|xm-g@BPrKpgEJ z+MVE?pzU_AFEuyJ1b;_f{c1U+wY1A02-xaf*4aPwDMn0aSRFCRK)MAR0rPj@G zT*)iX51*E9`2)umTrZbup$IQo`xCiTE*7oEj88%+}dDHdNK9})v)fdU5~{xJ||TB67$CMMT&+? zri}t?o6yZ%2O51GKhc0^qV|eYV<|E5{nkD?=gl`U$Cp)#tKDlF<`#3dyEZY34d-ht zExOw0?XkDh!(N8-C%$@wJ99iYKM1tXatvhlbhW}i&T~qBMJ3SHdX)~QZ#j(UfA%4^ zoHm`2*F#%Zb`~y^seX(3ODG-eXP+hwTh4RQ<}}kLf{#MBv3>Cs`jbAH4om_l?28Nr zVf{TKOY`Uzu}a=T^e6e-4oVkixaBs(^5>IcgmhM|YZGb(46J*HEc3RQU%oc1f7(4c ze8aMZ9_oo$N~3qnBjm&m$>l&E(`H~>FJoHW%Jn%}r7`@tG;X~o>){9qY_?z^c|157 zK;f(KSYz}>jnFmgU}#O+bO|Tpb>7(L}q<+V179C3ilUPf2KR-8HKtt%9y?_5aT{yhX2_iEOl2!L(Jo?ui z_2*T{CqC$>qOYL!bB^K_W-aQQFDTjwc{6!`GB@>xFchIKhX+oM@Ah>llW!>4bjdmD z?ed1AmUKa6Kn<)yd_zJ(oF@(#wMI1(H5C^e;w3Ot7f@{rcZVPe7QJFe_IsKC)*uf; z$*o+K!`c3zt9du_dxEM=YNXbkLzg;x{|yo!vWL+9RkE{fpq2m5HmM&UNT2i+A}8H_ zcAW`D_fuO~TQ9Q-^SdthB7j34McV zl3hN1wfFSin<;vB=I-7kPG|Y^kX&aC zoX(Vf=7*nps}OLHHWm2;`hDGC_Gj_kP@@1iBRh;9WfU<<3_)5r=&e)Z2;twt_ErUQl&p`F8-A!>BsMor^SdWwuN&!miETzJ!AJAd@GhX}p z&Ek|66^r*FYM3T!6`*9eO4TQFv~!L(dAsm2(lVOv^OUSGxi0XO80o#TExE`*nD^|g zNF>+8WL?ev@lw_y`cddDxSemJ87aDgXZmZ2)EQTfs(sF~fKR<={N2%Gx`9pu}Qton(0N}SDfL&HZoLuN?0 zPn0+Cl>;ePHyJ{=bbMsM%6|8_ z$a?pvp4gH2c$B~5Wtb)UvAm1SHPfk=tAGS+2@fXL$J(C>=>}^RJ(z`4Sxz&IVD3Yf znUNK8A4Hoes z#9($eJHBBZEETpMA(@p+g>U&_Bs2z4ZpEtaA$*o%&-02LAK)RVa? znpm84_RHIum=ke;v&5}~(s`JvgDowXi3^4=cK%qiw-Ud{j zz=tqw$Q2Xo!BuEyq3PH;{fZOsvVwfYF*P}*pVV*Ur4Cp6&Jk-R1su=ENp!HwW7N3M z(5R(>%q&Pl5-HWFWk%7^8y5=Yt*ubt3TnU7AxD45va~|Fpwpa|f*SRLFkGH>`=_Z9 z^be1oC*$D1Z1jKF?Eecl0kEq(S{gj@7XG*B39KM`_9uP_As8Ss{B;Xp82s%v;D80t8h#TKzyQb`tQ>%sA(#cAD1bNs(gPba$8RnJ z2n1vb0$2|K#z0UMdPe4_qSydV1RDo42jI2`21p1`?f;AQ0KCQel*+*fWX=K*5`a`j zA~5g^Fd+j>ho@g4R)BuO%+3Um6#%w_76=RwGeAJGf3PV2RUVj$`F9xrK?Wc?us(g^ zUuhsP6Fnmf2w+$|1!?)kgaLB?EiS-wEC9cQ0|b=u2ibxd1dwW&IRH`nMYaGc`Umym zuLpsT{FA=%uR{KH#mdMIkU&@fwKX zCxQov5x8P};+L=ja6L5^s}2zWlh)sPC?J4q@>lKuBy#*!%O~WXcq@Naar7u}R&^zOI8TeWo3MC}Q8TPHnh1XV`)DGGIj`84*pB8%Joqoa$` z603sKqFjo>#Z*21S6W|1j_Sbd839pq($i@#dj#t;E}XE3$W+ZIb+)_S|Bw;MA5*Km z;a!hE)%x+MDCLTg9z&L$J!k4lcT=1FX2ouXvt-|cMfTn6Q)PD<9)vF1F_~Ev)-w@_ z{82SK!;v!KPP0bzK!@`qT{!s0i48de^+T=tEh>g2iG1k?EC-l8>D^WgZ}%Kme{xgr{ zukr1FmP+y@zW;?v^2?L&Z-egN+yVcjk^rLq#6L5)bO3@XJ(t-j5fy@X)>!;=rt9BrBXiK_5zqIlo69p*`rxAc!=G8-FQ^#z@ zx%xS%rN&8rF~3}leuMPk9mG(VW0V!NJ~Sl%CE|(99{5oA)|z4mt`|q-0qIzsESaln z3)ES(G{=rE?Y@KnQSEn?dX?X%lTKLO^WszXuur(w4XFsju(sa~J;`IZOq34vI)Mv9 z>j~uQ-DYq8OxTBa!^96b!(OiX17F+DsMV45LzNy{$18n??-}rf+_A4Y_3KgA;R_*@ z8H$B-*_mxFc+>|nA!15YtEnRl*qtqvdB?_J$ijsV#5GprY6269P}eaw-g{2Iu|OdW z60-6)ufU@k*Kgd7-o43jW#?00Nr5oO{XsPn8^>ET@o{bElhQM#5~ZA-Pgz9gn``NJ zM*-kdT%Y@&NLOIIfUOl6NdNm;)KwSn6}DHWw~DGU0OKhXH(= zRn7|c?G1Cu{UIl?CV9Y45*Q;dOu6v=r`%)4A`?<_#w{kOBTV39PnZ$hOui{FwmtQMlXtLy@GaS@XM#6SZ0>IzNF4h z2A?+*eys!3JWzb14fDS6geUOCx(~uW8Or))!U88~?>Q9&k3(Ds+)RE%IJdtRC6r)h zE0A~_vJo36$V~C7P1|qXrJX-|@Es9i>)TY+bAW0^r@G9jH64oSNg8V>$ z0^ff*QLLN{y=;#v7yiChownFdFRKoIpU{?-&+Y+pz!lMWkoXrEM zD^+=)DJWUGczFo~5FZwN?Xwn>_&5sA2WGqt+LrbG(qwT1qL>hF(4qq8d~s3(d2d}J z`*nzu5R``F5F$Q@+69oa$E+Ga+P~h0CpRvudqeHav`YHIr4Y4buY{G!R|4#A{Q(id zo>xzgKymYATSdx&hoMB0QJfN_0}^p}=Eb$@ zU+CS#f2)%uxQ*N&{S1;SdMJ@iLm>h^ijmy1Sxh2dn;yAWHS0Zd;{@H&O++S1G-k|a z8Ro-Q4XXNuk~7RB89yGJSB3Ohbj~=PX9vb0n-(HLkRP{$oxn>~jbOGHVP$dn25uO) z)^vn5Tqab0IL{H<)Pv&jMc+PHH7eo}=c#gj^m$G^I)$&D=t$O)xm#y=WMtu&$&&+z zBtM1q?wZKROo)BV4`wOQd$bNFqbgrLv=#xnOx}D2OuzE6^ZCo_F%%cxqi~n1Q_6=R zMNGN^@<%@~NJK#{=Eos22TM+AtN=Iz6o#&etNaLqR7++2wvspH4l%g9DiVu_5W`SV zJm|D)0ypG@@E6+#$nQc>KEREz_?aWJ1w`9NzG@nT7DtTB zQkKkxmwQoMg#Y3*^AAs)mQ^9d1SNRHB|cI9EOUytFgHDk$V0JA%Gub_-U81PR>WUc zbL5({)DZjUhmnm&N^nq1(Cm=$#PrO>_(czsZlG|FZ^LVk#&8?TWh*xd5|9c>q#2J4 zVz=Wcc6Y3l1?D$4e0+80ZP@=31@zr#LlL{jc+IS9K+HVLoeo3JPpD=#6GG`DAIZxs z$Z;~(Oj3*HRMJk|4ehL`?~AdA!=sb2Wo_thU}3rf881IGXJL-MbTE`UVOjc0A)PTQ z?Qg3jk;qHk5mb34G2+8LnmexF$uJ6ZABrx^6 zMo1a?TJicPXZJUuPtj-Tp7yuRgu|Lf+IDg!1F0%YhnIR;N3Y91*l;g*+w6MgA9Uny zd-oBTV>=^_$ZqiDbrt>UV*lAUWnWFzWJ=5g4!%>k6~9ZKR#tlF zvD2uXxChIUzP~9sg(r(joihc;;!e!CL-#E*o!VD$!)YsJZ;ysXT&0b*Qr6g?(`WZ{ z5qP>v<;!OBF1o?jsM2}{%%?%5>Rcz46BMd4eC*Ye5D$N7696utkCxN{7SZBf_toHMrV zWX85LW81dv%-FVV+qP}nww>Ipz4zK@?Q{0M=bT@+s(*BKb#=PO_(oUysrP-p+K;=H zUr`U8NHD>~vY8zWcW)f8I!=cBX9E2b<|NT&^iUmBW64?5;z|@Lh00^heC|5WdE4Ur ztc6*_D~zzC=JmilVc(kBA7ZWCJ>L34i$jZ@($;V;op8>y-1A)4Pmx|=JXdw!pVh2l zrs93ssWq+M2dY_-gv5Xz60JV=C(0SQ?u==P`m$U6lbOA?9ohqE;W3)lH!DlZV1Yu1 zX4DO3osI64a$5;$m*m+hQ*L8>{KwZFM#)U>PGp48GA2}pn!CL4rSgNHMrCTu5x*A2 zoEK$w$0zCzPyz|I6HbCkwp&!J^E8p=GFu_J6 zd*9TkkX~;C8lE*Z<4rl6HqtY_lt%lc#e2@TI!IMK6qmlg3W7(pxvZUNtT@^h>H*l< z+`DbwXf%FsD2zRCE~EXTX>xkJ`aXGZO=Cy<5g*XC6`o7#zMy5v^}>#2C=w9X>Vk0} z-y%w%*Ys?lDf^g|iPgwN4U@i{=|Jj+*LJy7*K2H);ksPm$yNNjikPX!Nx+-~Qv5}5 zWMtlM{Yh!Vd9R+`%GycEhD(Kup%4NG>ZFxusMH2q0k3xhD&y{rnbh)h$N#tu5~NT zI`;t&Ux&kp0m*_^gXch)hw#pt8uM-Vx(=krv-u}xN4)U*=`=axvD)M>Y*(hySk#wd zic*R$oG!3jLR=neMx7K1q{T_Y?((uJ2!7{&xCn_w$ujahsK%=h=(NryV(CHqFtO1Q z{SK9ytQ3cZ_Bt8%U~8i^1D6XvI;pWgKpis_f?O-Xum~5uw!%(^RPv~RaQS@wlk8QJ z42d{_X7;ro^+Z^U7t2&2P-3Rod)j(H9r!+IPUTKf2+(ImI$8ktvQScsfce)~MqqfR zwD<)ichAj~RjyZAR_12?I&xrB$UU?gVN4VfJYPMY79>oNJfV}b6>sXBGQZe&m%#7b z<@Wb>X2v)zBAZ7un4zjcQiUBaN*d@lu4@?&=MJM&=V}{sR;x-Mp`pQRQt9t7_#ECmQP+4>8JmdPlH5Ou zZZlBB5-w0G-tHT~myCVF%RGKqy?vBOhFG$fx=% zC>sc7!ZP{VO@jyW0x4|v&{W=NCuD1ZS;-P|xuljZwB0}mR8{x@s zsk@=;#^r670{e1FDdF#_)CzKZdWGHR3UiY)6p9}?az#=NMCh1XXs?J_%#qgJ3eK6O z8E23!%0YZJ6;|80)fQe9C^XrSwdQpbM)GnjiZZqLE$>&aE9Lv=-X-+0-^B4@>u=e) z{i|Ay2z*@%Ta3;_nG zV$jw8V3Kiof>XoEYV%sFmR&uZhNhz=(v?f)PL2+0`q$l8Dx^qa4aP>Ch5F*^lH*PZQ>Q>FgaI z0b~6*aM*qy!7@yM4=G^rBxfRl56J+E*Tw)%p{_KH@2j?3Sht2o@GLg)EY4+T`Ipin ze*%50pojW5Kf3>ml;&Tt;=d)Te{W>{2~?TB$msv7@I_1a#moLE_IydK{#&F1!5W#qOnnTre-jZgFn%GyFJSmb zdy9dU{;R$9)tmbddiW>5`-2{`F#qH9XyCHYe6{nwI4kp4&5q^E)AWTw)#$%K?cY&0 z!xt~5`>Jw%F-kfHDmvP)PTyai%kahaSpR6}{qYySSl!>r>OUX-uhfp|FU7)2TI8445}#=?>Sz*>r`9T8vAmdeda^6E zA?EzJTyCEK(Rx^$07Scd&lbZ(0D<~75t5iJY|LtWPby5hVKjZ?sJ@M{{I8lCz#uMl zry4`=b&)WoHofUoIODvQ?u%MWtj5}fO_r=0*xHgG-tA&8$9HDTxcuD>R(_{qt!L?n zQZ_0Kyyz_1vsW@(dF&Ada?JV$XNo}kwQ5Lwgdg{Iwi>P<^JtZl@P!e(ck0e;`ra1^ zIcX#WWI?t$LOFp~U;Bk$B{re$SU^;;V_Tp%IP!OB%>~5!5s*k5St^?2_B{Jw+*08) z!)*Y-8{vs|jqs5yQ3{35H9nrd!w~*EL+i{Whf~1H(g8p^@ND#|&*URg) zC@OWccs0E$>|^7x{c-WNqe66Db+TCQFpaJ7#L>y?n-^S)m+uR=_S;au*2W8cgL;1) zgNwT3#ZL5U;dfZ#h0=n_@(K{bD4?gU!p+&EWWtH`p!@!Bcm2utwFgwiAL(eVHQ(d| z4HcN@d=VJFwb-$2Fq}^K)0@@hdhpJjf2)u(Gm>AlR@%JuzK>tZ)Cz?&QghVd z%y+ch{qer(;vRg@{Jjm$X+feg!4Q!n;)#l&h0?ARW$sjKA5IDMbgQ}4!YUa}U99E!j+(Ch^-`S|ER1f_pMub%|NTk}FCq5IiBJ=~d zkd`3WwwR&79W-*0cXi_K{H zmkg+tL{1)jm0sSBzKR|=`N&Y}KuK&aIZTvCZ4^qwyVhaRjS!QdAbyM5c=92mPpUzO zn~DqzcHr@|sK@YfH4<)475Xs2+n=GphiE{d}PT!v4Ni81|=K zK5D>whxeny7puhN1e}zN{fo1wjsvL@f_!O`r81@b-iIXK6jDj@@qW$nk*w0^CU-`_ISIRriztB z3C@(vLf=EBXP?Icm8)VQJ1B!2J)NkD3~1*d8Ve40DT1G{Fi}?2<+TuDV#;aCp53_c zxz_~vLv`rpLj;hK^zKYmiSisLj|&IRXDpOG957lCB`L-iS62S!7;J#BIe>jv!fK(^5SL z2U+mzDJW5;qe0Yg(LTGXau64APAUNAsGnc*@$~1qq@=2Bb``%`Z27+IGsXk$+8zc~ zy81IIAl`a5=|*@RU{)Q3dt?IA-vsH@;rpVecxTcbWa9p7u4jz?iGwCLG>yl$} zWpkJ9NQe)c%+U9oPiAyRG-cGxFkoGw0)5Sio^zkdN*O%ckFVnf4X?m)C|mPTJ;c@z zQ3Fkj%Pr07DM@6%ksmDBp2ptIbXdaJZNCB(UB0V|P2rrhkc!F=Kw@bNOuJi&0W?!b zp#(h^46UM$uAdTpkCd3|2t8ci&(&Gf5K(Bb`UOfDs6diWthFk*EaZ1ULQ5N-)z7=( zoTc+%$uL;cfw`FqDh9cwY{7R-)e;6;O}6A2*Ae$G7^PKCOaU~yyn^bANF|h|Mn{?9`9HPwaV6%`@HC-O}+cYVM0(zcF$$!ZZfIS5GQ#k1fI5)}7HyTz3 zXW_*V(chs1e?fC-1%lul-%Kex1fHGeiYU&VMmz~vKF-xf%mrSmIYmN?R>Xg*h#~c3 zIp-E-39%-OGD8at*3Bx715PArd9Vw8jSg0DK?yj!w-R9{prUQuJ z-SVc1CO6k<+V4l^nixF}p{U1};LI@vq_jVvqhDQ4&$M%NyA#SAmu=&q!TdPj%R3i=*zCp4-iY*n7BwEp?8nNA8Cgu+hYL!NWuEQ*iJ){EEshB*Ppyet z)$T*QO7<<^MFJ*xK6LjHHrx%|yTN`;XANCoV>e;S#ZM~gu8Vdlk$2e-b|?e>yI>bb zWq4Q)>t1_0JKC6m{!!pa8nnphcig~b{iyWiejVxwVX92xk&% zVTmt9L`Rg!GBEf*?`hbAr;iE5~I3I7zP5O1pAlKdDVX)8v4}2+VFYP zx7wb>_0h`}j-6_vlo)vTFl$K>AzD@VpOU@WQ5F})za3?Eyg#&tPCd^m2`zBlp9O@o zJDJCfPR-B?XY^1%j!^yG*>~8h`)8$RN@Zb@D317B zvm?d@K7fp~1?Bq&XO*6W-R!#A?#d2z#@p78RbxkOuh?ehug6^nu}FzBHS14~+l|e} zK#Y%S?ZpP2NL&Spq3La51*;|@^q35vv9Xirv@&=sQqr)}WR+v&+Ws|II@KWGT4ffi zNNi1N*<%Hplz^x_QyH0urm`J*vH|UW_%6m32-HlZh)*B5Dnt_Gu0?u6cdzx-)XYFv zj@Z3tJ5L>VWB8|SrC;xM#4MVkcmwgPWDQD_X-qorOM%!;PPre}Z=F&f$8QLw4cK^2 zo%Sz#w6~LD$k3UL+O9n3=XMtw@9MX`kl8Cb04-SDZS-9$fz$4K5s#-W* zy*lGX?-GW##}Qxgk^};ZAQcn4!Qx2#6yG55p{Bt@|ueIPfvM_c}@D$FQ;QEM4&OWi=Tqc$ifTwFj|L)cKz6=+0rp z5K5yZ=c`i;;{o>*+4O~H00q}wfiymjMjd&#t(V(FDtNP~rsLy}=0o1OHs>Pe$E<^8 zod9`breyy35ipnbUNGQTZ*)dWsBi?x>v+7{WoUJTPm?R0!NF*%C3ro7I=c_OcAaFk1}}AlVpU&=nnQ z26T7KO2uMwJ~D_x01X4seY2{{Qvhmcw$;PJdH>dhj^K$x8Z!OX_?<0+? zjkh*u^4)u@YSC8JaRt0a&}`|NQy5__jD8gO`b;O`L!4PexAXc1DMdV0G?^R*BXPVB zS6bBa1p|GS^si$cF$sf+Els;Zvl~)H!!?nawN_{I61>Cl4wR$KC7D`=84=^}#`2A1 z`5Zx^v#{+M^u`pJgJ!=2HKZu(=onUb!xDJK()a!LV+5vh*#D@U^r>w@WsCv?IRnXh!2S|Mqcv*>|G;C8_EWw;4-~aQGr*qBB^^J6syb zlqq@kJA>U$@nXI2HzR%vihLB2iaZHY$SbTn_@ptO@JP7s*9s1~osOK((Z0!NI2Kc1N*S`gG%Bap%V{*)zn^1AC5n2g6 zzg^GDSq+uQ@!K96=tp-K`o)xn61BBBvp&+ebPi5scKUp%1EI-sC=_4)&R&51c!k9# z^1tLe+6K2`;_JhlM!!M5AI1<)=a6CayqA)y5HttwTd0J}`S`R^fv{Fx+{Vi4gpsZDMH7?iA{-IcJa(3;C zoalEVe_ybC4{><5%3A>XRu01uM$H@>m#DVi(M`LvH#iXRJB8l;Yze*Lz_;lDf3Fd$ z%{p|BK!gT$=j_b-2@{2+($Nw-rvO#&hCcA1m2O z3r9bISsBGqbrUd7Ve z9h{V6!@$Ap+SnbUxc#_Uib!FUKG}wK_3G9}4DUcJ9sg!3MUy9&+SG@uxKl>2}JZ(tLI75r+-`c&$6QdFlQX%}CBv zseH9_Cdv`SZt~%0qBcCMROWgU9-h26A+_Q08QR(Q0X_2!Ys==979pe=nNXAVy9Gf3 zOtF+K!j6#jJKD)yig<(ekp7Hq_ms+YjBx6dUyy36t$vDaE_K9-%U#uazrc(;GUFtx{0jY429TW zxp_Hup1j|ld%NAqY*WKlt{?I=a#*hMQr~E!(0M|&JsnoD0}Vvq#&21kA3nW*cCGBV zUjEhOr1j;ST`qt1jTb_VjKn8Sz8K((*xM?eN3WdkKQ({&T`pk&8SpzEtn$-;T4Bu? zsZ1jP_j|jppLFfzkq#8|tCs%B_A*qc6DGXmXsD$H7s0QoXo<)&x2vm$i2ATnmP5!i zIbTQPsJ(^bd%t11u3aBTbzu-w{k#=WjzIVW^Yy@3j5S{UL4Ft_=MDR|$0_RJoznK< z+MCk7Rpw3gMoX;3wu{K~bMttV9QuZ!0xw5EPxUrZUpV{6$Pe7Nmd z4)q@>WoW$7B2llu75h*!QgTvi*cdqmu18-8Pwoc906MR?eK<;TiE-gds&!M$o?`er zxVhmz>v&AHkZ*7~mKNNUI)s}O&cc~NU2NNvM7yla&R&adITB;cn@ZFW{d!?ifZtlwm1w zO^ec>j9er)w{Aw|MBnufUYKppU;kvjh~E&iGn6bYNv1d1#F5@x>TqQa!93;~x`RA+ z=8!E7zWE^HwJM-VW_x=EH&GAI(cRJHWgQv+c=2!7AR9P> ztpOLzbbi(sVmiUNrRlY{bi^5y6WSxX5TDBOFcZgIVK+=@oi9B-?{;WB!Qfc0BG-Dq z-NgEQyVxNw#a>^SnW@pkk{BR(Qi<__?(wd9OML6s`nX$s{CwKZO#X}~z7cSPHF}`^ zOdU&@=qS&OF}2J7tlu7)r#k6R7yKmtJQa8}yENqC7iEr7_(}bgExrX4`U;jZux9bt zX>*e=0Aud{v^@?(nZwDxVJi0vFE@5Gb@H{4-AD<)Khyo?BrwzMYCvtw7cV~e4J!m> zG*+F{99pt+aoN5D5yFMqx4**f`wKO+LNkq0_B9(k!CA|M*MwM8Oi-=jLsYOci zzlCGY#}tXuu#6FZj-%dmKBV5jT6k@Q@2x|-i98j2JC=Wn43;`ZUVD9S8h+$z_n;Vd zHUF%czW~e4OcW%BY|gb@8!*CAMb~l}T;R!fbQ&Oe@PLhQ(me2hA0XJgAxzAgo_hM7 zyRNg4`>;H}6e;wp$EL5SjrNUD$aMTRx7di-g=kW35v{UQV@%GR!;+3trfIAYPaf=+XYZkgqYh%pLZWGdhGpx`)iWC=M)V=AwZ}e8 z)+c@#-nvs*3nIHhN|lCvYx`Xo50`CkqbF}Hy+&%t%RDG0t)R2_7t->=V%rW1o^};) zMC0tvIMjB08+oyNHYi3%tr&A=jhLLpyd%nC32?BDn2ir^?04kp)YsP;kvGyb`4O{J zPZ-YN+9m4*CWG|YybeGLK>%WKwl*C*G9w?=_$*sOTVP+w_^2)U(lF$8w{byIV=fQ6F+hI%Roip}WVg*Uzta#yj`8*dY*>XJ(RID6D zf!`Sb=_H_WyHm_1bsXFCKGC7dMxDC>DEh)0ef(xYQoU~YcA>3%2sh-!!_dv!k3U22 zxCoh}H1?9z#cPXrDsU(5-4?Hfh!XMZSWDwJHxY%YLI=2^RAW^N=Tj^keFX`U>I7kZ z)=_vr!_7&9Km+f@C-p>o@_dz4+JW9l7{63xS6u9FZp*#qc6KC8C%f(Oy2cJsi?r3gVeFYfnT^-}qYZUg4V_3$ldB z9$m3kdwV0&I~K?!DX!x2m=#bH1J#=l4`YETJDC4?KPa`a#!g9IEme7TznfiKd)mlO zB=h`1b^PXSc;lHpSarZ54%CBSOkj=6Ur_^KvUmR@@vz?HxpQ_53Io=M$caPrG1L{d zhswnI^Xfg56n1Eko5tF-4K0{iH~#wQ<@QdsPnd z|6kmmIw9VYCvcwV8J<-+Wfg6EIw*NucuD2GKoP~Gpklu_<))#r?7Je7CH0B60gt|F zi`9waq9OB-B0|y-s~%+i+7lXmbI=16_RBL?>4WbAO@f-$23~`jpDKDATyNFRyD9Sp z6LsaQn+Ir~LV3{{@y1(X!*ad!K{p5kdC`6$RL`(9*Q+){9t&ize!TeXUD7pA_7A?N z=#gPuQpyc08J!Y;)2ejye&@uS3y4 z0F}?&{?Z%mpIIV7$_KYcP6)tzv+wH?*dyJ9*!^z#0S(y|#XtuQiUww&Z_bd(J;2A& zB!YHeIVR+r8P@XvmsI<)y2V5XddtJ&fqT%Xo4)Uy_vuZ<40$Z};tPhLAggtD%||-y zPiNdi+>K~*9%#+FWZL(~-SGj%v2NcyWNf5YP}B>W~G9YA)pz1z@bbSM7k;RPKP+Q*NureeMj`_kJvtN3FdRs`5^L zDRq2yYPiSz5iy5EmL^<{td(1D$wyE3jDwGz+tsztuU!@vZ)tZ=XR}_bPo&XYP)qBc zzfi0*SspK%YY$nD(|-N3rrNT{A-JYVQnuDC&Fc&&XLns4G{{_gkU@j2hGm!Si-AgP z#K{CqH1NeG0zV7H@k`3LQ7?SeyOBvg%-s@_!14dJ6OI%8Xzt;(Z{|=*=^oB*6Vrw+ zZnua-oUzL~xEg79KbRUJw@dp-o8n$}rMzDKJ~)Am5YZ8J@KCp32ef*!nz91;z@D4O zWLD{Q40??ThHb(I&(*_>1&vcM;Oh@UjkUKToEF#IIJb^y2{vop#QCO~G`gYHlzHKX z_x8iWbGseI_@Sf6-G1;k&;8QX^*D+}*H2wn`;!POlSmv}9J8Y5=d!T1>-@vZ`C6{p z%vvW@Ub9_;s2b^vwRI>bX_xV|Ic*YvlqLG!1}i_Gs5b1$()lz8w`g7%`lF#z;cAn~ zX8}Sgi-}yM$9I$1b$^(4TJ5!@_G;_hneap=@PWi2?2{nPn<=4%f@bEhQ~OK{JXXrS z^_X?uQ`Lk9X=N+bOO;8|Uv;XN;^4m*_RDf}7ZoeY)kgQr@CFz!7?;ghOu~oJY0`1o z)cv7tX>8KZ`JKA9!7vSgNR2~a$}}?$G#v(UA4iZHo0T|NhTgBR(l4-J;AVX@KIo7SzR(xtr*?68R*Qa2%m*F<5Qme!?Dlb2QEcBoh!!3D(Jy;bUUh zH&cfnWAf$GIyVC5(H5h5JNfRNfzshm^>T7ZpFlUjB{GDsdEcN0_{HnCV9kDfW5sAf z%#!%NgWEvoT2VeG9%fLWu7~#Z&#|>9VYBI)rCxUROw-&DM)>l;^Z?tg%dU!Ep^QS1 zMPisbR#r4F`#C?ZMP9zcThrLswnfQAb#HHqwm?!DWMPD!l*w3LRTCYgK`hyb8kh=- zi}ATC$q6k-8hZtY`aA&xhq^CNFj7jD_Q|wqV2(7O9^dZUm@w|NE`Yuv6O(R*d>poT z)G`uiY1CN2z(9a81g~~EtzE~>n7Q%M4}HDrZ!AzbR>pw9b4knG=w1e({X_!BGoawg z09-8v{Ni#LbULQKvgskXLD_h`V$2qD82E8a_Txo>#9f{MFYeQ^|24_?WkLTpiMD^= zjTSf2HL%sOH?gvmu(GuJGsyQPVE;#s@2lHN#rQ{D>`xE#m$&`Pm`(NNZfE`4g!gxE z`&T{mkMtMgm)!k7QhZE|EL2Qiv9GUMH7z%Z9qz&fLDA5H^1$FH4X60fov60X43HDYhb5uX zc-U*Bs|*lNq*{kroFmeZO?SSIdScpFst4~!ltYhV0(MZe{bu7MR7;ogHMRNZAXbYG zGoMbZirc8$pr;l#_!O1w)E29wvyv1y11ZFEeU@fri{4>^n(<$qs`%&DWu9b{+ajQe zvZHCF0BA%&T0b($c+7|>c?gTN>BI{7y_vG&Nau0og=O$me2}xCj{JwSctgMieH+9{ z@#*=gw$$u0Ck@Y33vKZMX0pOW(5B$!uZjwi^&7!BiCPX$2^mfxV^`=%g`r-Y`J+mZ zlb{gIP#MF31ue`%<_T$kK^Xu(5 zjTc*K&D=h|6}b=e{nrcfFAdVa&gVbJ?T-il#f$!*2lIa#w)>ke;A?pPLyZ2n!TIa8 z@)w1`pJBVNhGHL%hSm$i6Ziw^qhZAEH6CFmIU=YLR0YABa;4S<8Y@>@h zBf=wr1zm?qAcCdI0!{I{_x1_lz5-I^!p`ww0t#W_>GulCQRL_6k|$ABvrs6bK3<; zv6t;j#I?w$mG4V&&i9?_U50dqUSUqw?e+riZ7SY{0qxLHBF=4&-ERd46Rb2C+FkdE z9a|+T5TcpNp>NPlDBDEZ&FgzqG~ZB}P`{MG=$$o#+DxnjG-3XSDgb|Mkesp|6sH2p zN5IG|ao$4Sb|fPE-kjOf1m0^Y3Pl(c{^*56HGuYug5it_^Ef=P^czeW@KN5)xy=H{ zU0Cbd;l=Tru-d{ivjxV)Pm@=wy}dz3JP#EhvF*qz=nFq~ZO$^U{J!s$-$bA5R+Q@u zNA^xc5Qx>?rk_e|;*s{FtyPYfXhnyQWC(;Hsj0{?6{FZ0jE1((z9*v{zwg&+o5l>1 zvYj!7F8@Sz1{kCRtRak_^H*TfuoXPnuTs~dWl;ksW=w#ZfF6xzQz%K4Z?i_T74YXG zTr8DM&okW0?-;aCFWDMdMk$luA&;YNmcNynw z(g5`IuA;)4$5C*ZG+$zcQ416Xi&}aNSEZwKg-S+<;ERIFX+V2CA^D| zTAbsL6^+&~4ME)}@+&l8KQ>ftCnW5b(2HS_Bo+fyx>JK?x+SDgCi>4)gw&U`q)N^^ z$M7@eh1Sg75N_=b;iO-1%4H^P&-PP$Zipu9g%7c(4+ zA!)2rDW`scU1zK8?vBPC^P%ns~0R3DX&y~Au^jo7KkE#1?Ni_}}<2xPd$twBeMjw41xPz4c}R+cm}Co@E^0c!>2PjT#H zZ&ev9)2I-eOG%cfxr`eqvr~F9Pe?!2avPwRXP&D8e=-d zjkjHqfiY!ylz=RQv(y=)#RZP*4Ou8gmH-FUkC4#o@U;ML;3q$Bb{2WfP5=#I37Ns~ z+&N+fWJ`<`U-pwzX&t)}dxH|zn;-K8k>?9k2IL$@w(^@XO9d{X3Sm9L8m5xUkL09l zvP#HC-a9eG0*~B9x9JUTq*unEH+YJID6gW^BXm8K(*et-rW#q_-z^&up#T*K1JEOe zr&VZ89Z9miF9Gd$gN_^M2vr$XDpKSzC`D=DL8R@~U7mh0*fPKh`2rV#ANwF0{4j?^ z31Pt#xDv!>ho3B=)#&2m_dczivmT6y%lY|Dqcj@IAqz1>AwgMaussUBh&5i(UT60h z_Bu`x(5G6v4Qj#=mVyv;7up-VJ_o{22mJew6(bXWE&+pN{&3BZk=nhaHIm|yJ`#5( zGHi_zFr6bhsUuU-N*NfP>?GWvt%~nR1?a=zcZe0L6_KrhNGM+9tzELAxJnY1*+ct) zyxbGy3Ry&Dh^zoE6j{)edS~(c_9pAuYAcBTY<9cWA^a8Q#?iz=LMNrP85Gd!VkXU5 zA@UMv>?|03t4mDDWl3`dQAn|7xvn%aV&nz9;Fb_)TRed2HWtWvEc!s`dQlq&D5v#vf^2%dnTQxRW8@VtNnr8<+_=h?xr-8K{F#KrhNx$1yW64wW$iz$pRt*9XA+C5j^*?CTx&yGu=CnhtofVLMKr z$HOc8E4?Gg>v!ffwFxW+ar!c5%sr^3*PHP-$qxj*WSjKsswt_b<|-Z*ulF#MD3g=U zHI$Fl*BXeI%8tU%m%@+Fy371ZfIH!j-c{m2%nyIPy+j{UO#~dWAq|1b!CFl&4@bU1 zn^|NXU}%Y>x9fqf?`5;&%AvK|fR_lEX4)(Zpi!}j2>7hoY0?+cPE%+UeY@Y(oG*d} z4^krb1J*xL7l+b$OXgR&h=N)zrj)ADyT`s8IVsbrAd8BoQOT;GL9&v9Pb;AApj8g; zC(ni#A9x#}Qog;K(2YOI#1k##&nQ!Z%di?Wb&;gyh@wRopSU z+t=|EhPuRk;#?%dIjAJe{?EO<&Rms&iL-PI;bhochUPX!_Le3r>TE=^yoBYuTj;QX zD8MAx(TC;VxH{K4@eEN~r+H*iMyC9g)1R~3Ag-ueDu|IDhWAHFX@7*WOW6rQ1$Kj= zg#^~SiaRc3?)i))h1Ooh(}uos5Oz**iU1UXX1DQDQ;ThlIo-qTKZm281<|hr_C1`x z94@w(bLLxY2#QK(tjJ88f|^K~;h1_ZKqG&YB$eUXeef34NvYV;&Trtk4ZZ=_8+mVw zl36h!Km+!uShN+>4cz+aK*rMs5FU)6+BnpH?-ya!Sd;buhBx|3W8j=IA4XKOVlC3n zvNzC-LbiU2VKg=D%EO2P3oD#G@s3;z_WV#o^99`TtKNeaNDDfha%_3WxwHtn+^@{L z%!(@f2?h*cRlRD_Hoi+}NIa?*R)+Pv4<0<;Pkl%}alXG90)F|>VPpaqEE-nx7Q&!M za*n^dBlsIDS=3_Pxg$?4dLL9}W~$|qyCY^GRqw@G%_mM~zX^tDR0AjYQQ3RTcAm(65|dT$fCCe2lUQ8OOU(en*1x^- z607#-E~bznU$58Ke5{U*ov5mAx`>IB+u~^v2HD8;%wfz}F4bV;ibS@OgDRvmMoH;x z(e;)pEoL$b3%E~&(a?Ad(=1L{Zl9UI)RfL3w?Y=RjzB5`=))8>vT9kJS?`+cyf;I* zF(S701Va#9tcyWXmb_5=FzSz?^ z$H1~{M=m0k0Erno5<2c3+y-NV)diY4-!xt{9)j!*NNaHkB^^MAF?qp@%yJ@!OxhM> zdEZF=^y)f2O43`)AMOXv*#*~|5B7!X^sKmKuAZzCE6G(GZsvORm%U^2VGQ)CEzq^J z(zTv<4lJl8+l<_9^LI~)_Z2U5)h`4z2y@-iqAFMfbeZ6DSN9Q>Clt|k;oJOON`{ZK z(aE}^2ZdDZ&|~VA>aD6e+u!?*9@~tU+%I-KjXm*ZSRD_WhY%(|E7C25IK?kH#<90e z@zC~VD)I`!65`_a^b@-Zj9>?1WU=)qPz%~3gvZFyU-)%_ae&KXGA2~h_Wh(Az3g|# z;?4nm<-C(LgF>Qb!;*8spfo4$+H`V*rX}03an!I7OK{pAx;evKFW=0RxG+=fvp${+ zzf#E!3nO-zmW^&o$ zBJ{8C(1G3Gat+z`hefvJ=QLjmU=#Ows&O zD5AF19Gi&EOk=fCSrsmIb121S=xlR84>&(vtk^fLXRe#9!pW3&XTO}bY`0n9E6sS_ z^7XaCVZSDu*GCZjjpQW4@q=A?!Av*ytqqD5q1!+0nJTO+fFJPTIh-$u;`pV{cx>!L znO#g=OR~wzy6CEa!(!1FrmXE097cp#affKxIfSYyDvm!5rcW{9V3PZbE&pbyea7H^WkpZRWte*$J51^ zDeq^KeYW}96o?>6v4~-(zd^cTgH@MRaNnE9mUAQ(i7PeF{TN(!2EN@r0nbUYzb3oR z>~B5Td&k|w6_CEG1@cVCB}mtX22RX%`%B8yv$3L84*hSmy7Mx5>Cdxi0Mrq!!~{bf zoqFp9o6_a?yRe$Xa?!VF>CWj^Sf-cH88WKxcmkf&;jy`6R2^`CW@MCT51-qg(XQ=*ot z49#(2tH)VNU>OWKAT)ZT#Vs&1axQZ;)K%to$-oAK5sc^^Fz7__ zS%Y@)_$J*f;SPGm+$?>YX3pa{fcVM3SiX~&hDmG~PvJh->x|H`#aIB_-Zhjrg2iLJ z-3>IIdmD&!a$QkHeiBXfIfQT0mI@7ibIsGd*6Uuo=|aS8cG0wA?z&pdr&PxNdmpNvnbGrOz6YZzgjM7wem^x6F2oersJz|oaTcb` zM0s|QvszpK9M}1DKa%s16{1=USqm9LYa+s2)&AuaLt2XLAeyeu4#zJ}zf}QNe2f11 zO~f&Fv|m7%YC24zBGGUVdb;bga(q?OmgERNg z^SL@N5ooh(x2E8Sfv#9B}@ocM-J{~(0Z-sp3phfhm5IX$&h3IT^mc_nY@+0kx?in z0@T-^sqUy^{EBBtUapFoMN9==z)VLE^e5`{b(35jukEM7_q%d^HW$U^FkDR*tCcwB z1~c{4b&IN?w=@NQ6z53iXQfu}+x2=@Q^KXX94bY>9AHHeNtb)j!g))?tn-J{fH0x0 zejdO|K;wOLpA1}yx!sp)oIRRGj?JqKgf%|M+ino5$qSxYX<4HtS*`qin@f*lr7>#0 zq@GZiFl$0xV)uQi+d<7T2_PurvX;Q(OR<6$*%_&Q+7YR9q95I++i zQkH`$cG%po%F=16>ukQAUdE;=#I?QHaXwh1M-RIM^MZO*>p}ihw2{UX#3|UpcX#g~ zVz4QsH<59$RG|T^_%2XKbn|z;skM_*X>^j*o{C)K`<|OtyJ+ukrS_C)R=;P<<`Jg$ z$C1=U$=_}x5{=`VZ5}4WsjsUI;ZOJFp&qPF+YyI~F=hAV+fV=j;uSIl;ZzmPZ6^!i zNTZ_z;ltP(^3onCH%TkbDa)ooS@YTglr9`Zp~L;QA|ADB_KAaMAxAVhIbmP|_pCFe z+F_?4xAhc+2+di3erEA%kv`MtiE+d%oZVY(bFrnvnVTJ%qwa7KkQcft~TrP zu@=YE#5iB@?kaTOt-_u~>1;5{6>C?|?o}+9WUg53D<4!^N)*S&CZsQ!gDXPNpmIuW z9b&GJ<{ld>#OeI8tvs%Am8NCFM7CIR(=0k&XXf4qlL)S@D7*d-ckdWpS+lQu$F^5`nWNJ{>unY;5YCETB%;QA zPsue~L)0QOM0T>a2%j_GsvXVAMi14$atOVDP0zu;LeFr_aI`w2q%9D*N zStC2w*CW{SHr8EY21FxVkAOyuH_G1hyFYa_CXNV2^i2C~{cB{`HF}J`;IwqWX}jYE zvl4d{6TZ`_p^pzKxAW1gqbDPA<=&>gju*mJt7|#}esezvr*~`TcFarxLm-+-!pLau zO<{7KE7i@9DY0^+cBA_PSC_$`?vDiVfQ7>(@X+-Df#RuzlQ6?n0xi0U$CuX}uZFmr zUF2TDaM>s!atqrQTs-fpa%s2p7Lyy@m=MxkLWc?j?{C}FF3%e>&G_5*QI+aBryOm9 zZIcb8wh9N>KfZAbb&Zko&A7im>2;+Z$wv;AoNwp}hVkJCI)9An&G?Rcd_zS$S^O!I zecu*27AQPu$k7k&7U4IrUVC%W0+v#~>jr!OPVGfld9)6mQzxDaS^Z_*(A>~PnBNx6 z*a1Ia^s**sn_KNo+01$*6dZev*P;;i*bmE#z0ee^PV(oDvX*kG(vE? z9!_qrZ|-6Hn8fq5+>?P1YCV(vygk~^b~{;s-0QI|W`tdyyx2Ul?V zKs0_D_MkGs9z5(l`Vl4dTZ-xs$-Cn!!&5Y$ui&Ia+e11SK;Q|tJxFeF7ec$ZRO0v_ zFt(JTT)eYec8LEhR0#Ic4i{&}TOz6eG=PP$8Wavl9o_|M0dt*IiR7T}VdJ@ufgT;% z>erz&-nHhe%8EXr6X!v4V8?%;ou0bm@_B9-2H5#v1fS+if1lcPO|RQTsfe*8iBpW% z>{%=*LJ*gd93`ea6;;73-7Oa?Rf)ZwkMOD`7FTcLiOYC?fQS{gVD%RE$I=_t+9ip?V%#hF%0b4FqCBJkzH9Hq zg^@)lFDxX_jBgt#zJIJYL?+^8Mm*(*$EtRK06X=A&b#Ma9v2 zUO)B2fNUnfYKOi#4&}X~9QtQn_D`J9KPbcO ze=G(6K_U9PF3ZaH2T{W2zJvHU z>RPp=8e$-?pd%RKb)>{V{j%1bv;%=PU-u9wzOIp;2{mmPX9g!AlFb)b!;x4tS&Xfi zPQ^K<*|JMoxJdS z1Q>p_+QVkETVuX$#4Y9ro|Yl*BEfeM2>=V1*%wBZa)zt68wu3pc}W4UUsAheE&gLezF0Tj9>53G7f^glk^>Ie-tRE865A8_ zJ?s1r(6F=Bh1Rat#=gy6iw^C?16MlMhxNj!Czk5`(t@grDh)k7H6v&Vl9RMGVfGm$q%GkdE&c9>yMmf~s@5e4DPOnYNs#_Za*_+yPU#O16wlUFv3 zqbO5cQ0PV!Qk~ko)+VjHi`G*t_OV(S>T z<`4PdD|=({sv|cd0!$$JdszY=M_IDj#;41N$tgnc_^^baA88;jQ02UyKC&;q17I-F zVBo~o&2tPglUxP>h!*XA*}d)dKtqQSLU%>4;J$bb28zh6XgF$YgYFuLB|#5|mj+ zOU{rf6~c&>5xVhmDb+fs)$!3Fp(RVzBw6>LQ&bGnI;Y;mg>F@(lh+Xn`QQm1dDvlX zcNPo8f@nE3mWEcbW|)W7^tGeD#-c>d!RJD_`>6^wX;i zv;DvfW}xla7x2Qoem!spD3&pyNJOISRSL8`77?MHYR+;6iWt+DB^!R+q5(`T%F0K? z$S_f45gwI~wH}6qacDsq;$%-3PU8~APPVuX1%^#k%C|4e#FV9tA5h=@1Pv4XGU1ss zMo5{7qcM!kS1y*xBHg`$DQ0Cg!ZG7e!jrvSXWN)N$({iUACY63mjO?b)J?H238)r!-*En+o&3^k?lOP3nI6yy|(7?5iPs}o3+3Bc<*UHrHz`{3_fz2pjB z!X`<-9bNi*E&S9vj>7ad{&gRCA9!*6p0=gvP$6#fsq1w~DR$)LuDq(8SApNR9-=cP*nx%Y~|jgoxawF z-50^+e%(Xn>-pd@#RL6(8nJsK#HHsj$eA?eX{$gmXc~@6;vK8AVdH?cB9!!Z9NfyN zRhOmf)`bU~ic*`7F0fy5RsEp*_OsH&(P6-rAvvg~kNb&0i?J=2ARa6+?Sr5{_=bDt z^lIk{wi|M$%O`4vkpaFf9zvRzG7iUI6rE-SgDET8jG&%~s+ORaoUNv1a5c5k6*m=0 zsFxX!lR?*aU6@Onj=lSGH%Rc_4DN-I+a(0ko#U-wWMUp4JcF@kK1Z)K^SSNLPf0$K zvsWHS9xbt7@Fuz)w88U>sC~z){V5!MO|Vp|V!;cT2sjO&a+6=CNVuj=rg~7ePZPf2 zd}m7f{IiO!Ij&N>r@24h9U24g6@-* z+ajxfW>v<-ygw4tcuh)`w%I+1lU~EMc5T%r1(J4al-JB^>RYw#v@yNzi}ucXfhcb5 zGkKTyt%t%#w5#T~8~$+q;XdFTK^9+SkHFUXE_3EB%RP)kW=w zQ={d2P@=MPhMD9wZj2?$PYyT^X#IrT;8@pG`+c!xpp$eZvoq6(yNZQSg13>{>2D#` zzFf|)NBt}Pa%bzw@GQ7kr~I1rPlZxvcJI@s9tX3aNG)#WODkh%;Mtn0?iDinKf5m3 z+wjWn^!Zc`Cz1>^lDd(K>B#5uK!;hhP_q06Vy;CBdP>V0uxH|Gl*N@R1VnJlk+8!~ z82nsV-juJ&n^UvL!wd^cZ;s-B;y+&l zi{slw=t?bH4COcv7P+BYse`vBH&BVmjZe?tdN`{TQecQC-3yd~R>^+2ctk7RHYX&` z+v~05Ka_{w22 zmbZ~w6lnuPGU_dRwkheaszn)ZRv$rCz5`Ncct=A^opdQEXG#v_^$+E9#0I6=2Ga-r z>=@olX`J8v(pqSy_P!ujGwNWQP--^8P0X=Jpn zrF#2W?K>X%pA=UMTX>IHpJB>3cOVa8Ym5c?*UuHLLk$HBi5uWl49gfX3a^@|8(AZG zohn57YM(2oV(%r_3+Z@$i0&crU)yl|w7~R2(|S8ZpE@8_HEtFcmI{1jG9D2k3Y*We|jVIH&NZYB=it+#Hs6Djk+P z-qL^YZLrt5=(&^R_JscYsUmw*KIq*Y^qdTM!D0@rUcYh-nF4DaOx{hm4p@Sy`99DH zO0sY=FeXWR7Ot(r2+L2$+3aVq`L>WgCFj<;`+nSFb{cEL?|vT??@Ue9#>P9%)$Tm! zp!jh%caE&5iKn|(v$$|C!f^k3JamJLy-vNFu3CxTPd_3xE(G^}kPYrWDHEg%?9l;< ztp6n$OQ%eMMblwiUH49e#L14Ps<76U2zaiXRjd$Ug8ZDhxjlU{(o^S4)gea^690F&&vu+PQcUFA#C6g7nI3yC>q#%-Q=0}Z4N9S zWGK6A_rtMfKoZ^CF+^WrFgqCV90aDOOKzL#0;IxtzClw7cpK~&th(gUIv*FmyJ(Vg zx0K7vdNiHu3TM1FWw!e>LGVTsAW921Mh?(d0xph-7ph-nImtrWV7>5tjut8UAu@#q zU=0kh!5SsOcNQsq_2N2Ms``B>}(O)F!2`ZX8~59UN~|cW!hu<^raD?JNji-OuO>>;^qyE;@#xiRmMFsQU8z z8Kh1H<&G*S6y4qME-Y{TJQT8m%PwE~gsCU-2Hn@>;iI!)^VdUPVMab#z{zv{03`f9 zo}ur$k5Ah?Sq2Z+ygZbLweBl;T7Wa?ET|cD`WH8-D~pdJ=~GJP)MbpfDB)us*O8Lx z;nJ%K*0W8mUm6+-rzrMsDInJR{$K&~uJvb`uBgg&o(aRVwU}$sXnNA*{UA?2^n}Ul z6tC7RHnV>2T4MI_R-B^11mYD5%raPpFWz?T#`KHO3Jn;K%fC9O3+ZDomvVV7h`5hL zN{xYPJDgjYp{67!IXv1pj7GjT-kRR-n{MwXS8;tJ^^xo*4?<+13De5qWZ*iszm1MM zv!7<%$G~-@!C^{UimrW>TPVQB{MW59`)~Z!e;io;uMGr$ZHoU62K`%Y@qYyh_|HxE zZ}mm?-$u+N|CK1<&pb6|&d>0yKcmY&3x@wC7Wf~K-@ov{pS6k4 ztN()kGW}IW{96I@?={80c)`D2`;YjtfBZeeXKvTOpo2ei!Wap({tXqF{Wn|7zblF` zas0CfB6hM~C{W#)gexVC4oV{j=}}pC4I1>^z2H`{h}>F&Z>1g%`8q z)jNiU{9xkh&Nf-u#H3@`nCS zKiHDd`zz4Ti$!tU#n)q2_gA*wlSZuizs~&6#J#`DP`}TB|3Ojg@ALnESQGnmuKhC@ z_|Gr+_v!dsh3@Y)F-8W4{}ULPjfsWh_oCQ_rn?)8N>f*JQ`KhqLttd$Q_`Z@rrTgevJ?sy3Y z$8gRrSIj7Pb1OGV1eaZ>UFXA4xwOj9y9~#vr%XpV6#)!FV?k-eNK0xmQ&ajCpS6=| zN4)b@%$sAZSeNaqOMO!sYqZKGl2gBX5Ocfi1-G~Mwd4DhoHtgX){dnmR#qbPIE2}Y zz^~iSKbprqK2CF75t#5qhgW78>Z>;G?ZKv5s)DWzV5bdyzHx`fw4kiMVehkk9NQOC z1KDf|euDCR#Wv{K#Z3V^;I_V+>TXnHm2y)8%aC4&vM)}gA9=ehuT5t`?|#QVU}trm z5UWSH{s@X--{h&UHUALHNgVBK!J8T9Ye%bvsMT5qxFr$yJyJ49dygxoARd~b5mta{ zJs!p4u7v)V| zhHyrFyLT&-y$)1~8hdc|&ZWC}*4_Z+g*?tJCw=;<<8^Dssu}DP&6evq!)wm08J1)~ zZ7E2h&QvHCr7V}GuELqSvuZV%98FD43mFpr9cl;+dN2Zy)j{O_vfbc^hA?vo%p^uk z((wg-;bR>$|$wVpXM!Hg2L@QBJRG(uHrzI-E6wZ^f)Skm}{RbJE(EMqNULmB!-GR7ee=90t z`K~tgIMH9wl|GTGW{Qo$m{@%H71ISov*CoK?KQci%Fs+ZF8R3gDplLd2_-{ppZe%N8Y7x~cM*kf@&CeD3yQsfMxPjfBbtvC1t(qQ$W& zX2>%$mbJXQK}oE*Kxw+^wq?o3Cq-f?t#FG?)454WsNu9am=vhg!05hl0NmN7#u5XB zq?z)x)yMlvK0&0a>Rkk3v_A=!qizSDHhG~? z1alqw`+~;VwJe#PWHE0S2P2k%CIDmIKZRncx`NC&nNvtp6VEh-7I{A8=$p1y$Tu4A z1wDqAr$x|2Mmy10Cw4deLMEn#+NCc~7RtF=a2}mK@~h(PXNb#D@4S01Kx_LlK9$h; zgGfR}m0wGFSy>*b;`j%Ey>L@5WXnP`GOqjG>V2Bs6Qo+9dUCM_(pr=7dI^6D z9IZm*V3sZiEeY00X)#cw}9 z10HmrhfDk(d30!QN-e{e>56m?#zb6sW2z!eF8yk#Gt2FnkZGm=yc5Nr3^B z-T3LnDClYXL;$(^8I%ip6)u&XeDG`mQL65cw$P%Gh?l?b)C1wRt^;45CioikG$5m#atOy&Fl{CrQUcej00u$k2 zY0`^&NRnHG76?+P2!31I_k;&Q)GUi+(hOP5n(>ca92$CINShH9eF>zWATEbVbA)EM(%a6jvNWBxqnqRO71W<{H&t9^2 ziqY=-C1`B|%%@-B(TTx4BG_odZ(L$&A*jN>mHfjTGX%}t1UR917nIv0u};^7G(oMW z&Rt&h)!aQ>@#s{yu)U2(O3(B<1#KU9v5#*sYnMlxwb|clPN7wym9&-pNm+LvfA^yd zKd0Kyp{-N+W28$9=GM2Jql!wgV(*?J_v3~sv0!yi_SJ9W^C9D;BENI{ZbtiD-FDIP z+LP-oaxS^aDQnU0pjcQ5J||Kag$w4X5YRya>nO&GU$`Dc_yl2ed=h4BT)>pTs-(~C z=2wq*3SC=!mw#)aBWT+N{w`KZeRrc2ugH^rBjz1!n$vJM!Jr{)(F_X}Ma{}rpH5nR zViFKfUB7&7**0;h!m_5SpPeon-sSkKH9@1j9$q_PeU|r2=nDo@P1|ZCx?;d8N*Po} z0IkD@tkW`@c4g{0PO}W2ws47P_G^@Li+Avqopu|mXMq*Z-?$792w$HEs;|QOcIEE)z~RO9z_E<`%1bPY;9FEZ6qGls%o`7EdwHEuKp5Y6@bAg~C2; z`YyqKckGQMO{7OmFn=*SHu#`pAvi?gm<)_rGy1ALjFzi~s$dbu1*B%xpM*TzDa8(L zcUDUHoQg^vn#W>X2jmHHX)gHGLo#Z($0&U%$;<_&OIE_PGOS4hBTYOQ1qB3p|0?6@ zgMSG=Kyq;TDkPQ&D?nXOnix3^zPPNoNy^9_?{^A0XQ-;TQ@ zGtKf>O~k*sbOgr7%N0<3Pd0nL7v5yTWV2&h88t@k^B6T=yo%4LnKJF+b^dZ(^K{Cy z#e?U&;&mnHTztFc;4*tEi_u zRd!KEPV!1L%nn{5=kN8VAUmDD2M|Nfp+1;xDV4Wj8#6O8orBz3Y~7I=7b`M>8HNtm zVvwl;VyaePPVXa?{p)jrV!;&W@)v%fr|Ad@j0jnZ@g=tUh}8 zSIAG=)!4M!3JWhC71@=U5Letx`=5{dCqqjrrYg8Z_jSVKRe+vH@*g?42556E)!-3x zCQQP}$o|F@(~ks1qX|F30ejBi9IqIK#C?7Gp9a zgr6}^BU`eO1Lgb@8apD>YN!o6PCtH-=dF~81ljTwmX}^i#NJ$-;Km4Az7K}OL749L?aZdE{ShuDNm%HM{+2)9Vsap z7Uq%#wx%#xfRxH4MB$*(S0}Ci5@@mr>tC8fu7B-WLO|6){{?8dpkN>BorhLrkf>m6 ze+rKc>x2eDX2U5ly4u6|iWrfLpf5bA=5a*)D073FjHm8i%pRxG^mCli5iriK~!`vWH{K)su^4Qtv@^;@3zE>c# zP@tY-@0w})D!sNJiJgjd$9qRjQA}NSzMpZd(>%3a`&>B1$9+9h%4~KE@01|*<(Ok=a3^Ce9~)@1m=M4akM$(L1M;M+)XmVEwFYf&vZ2ItrEuV-7e3tVeMD888cTwm+;!K z#S=kZ4}X_HlhwDm&!>>xi}GBnwYR$y;0X;?q z7U}-yCwCZq_AdEEZT3^@b&QcxUPC-(eF+VMc{a(swd#FtG%Se@Tk@&_gGLljAxiDCr1R2pd}<> z*w#+Qd4o)Lc)Vfd=4Q^5oO`2lYc@6zTqa8_f*UD*FQ9-Q!RV$zA{{-tnd2P)h$F}` zM$8t@I$^}4!)`Ey-neiIQ|)Fa>tF$Xp{w1|*5W4TRlnpp*i|nRN6`j*DTB*pw}_a1 zL)B6I=4Y3VJ+=}Tw_t1O-ZuK<_QJP0_RY47r;x>^>Wkf!816FDmtgu&ls>Kc(Rv=XcI=yb2h^PyeUi<_&QQJ6lWds#l^bG zZugRWHiqSA8cozV$|n0!Cy(_QlIbCj2{-6>$Md<)z`0PTYjV_TFkr-prx%z)LyTL~11d2ZUX&EPi`my5McR0M9s15gnPh{TO@C9=*H#~D8Hu*eGhW5v6 zItU|ULqNN10;-IFERb69<{8rwC}1}g1lWn3e+#aD7Hx_LPE@|rU7*L&1U$dn$-F1YC^f)$-^%2g63Jj_g{qo*6O;$_g{XIR;8Os#q+WBMWh@??xhp(rj8b~wGafiAXTg_B zY96nev%!b1$Lrq7$oZruPduMx4Fwf$4cv)e))lEaSqdMra5m4o->P5uxgG8sckvN) z{0rREs`4~~rl-C<9K})KJU$x!mqv{Z| zb~1iVHB~uW=DRX0ebK78;9LKZOzHg=yl);Q%MO_QjsX5F=IFFIlbIi4(%e1sZ2M~b zuAU?t72}qamBtqMd_a%V{X>3Eoau_43{EtWE6wyeg;*OWSu!y4?PG ze{nhqP?$^=yf|W{I!nuEX>k^HV0X|o0y9gi4$WBRoJ;P^xX%yEEgB(1wnM?LI29zi zhmb?cSX#d3xLdw8CHEQUBC$g3Y?tVQBTRjiwi^)Lz1*Rd(o;+&!1bQsZU7t)Vrhr* z`1>4MigRToHJ5{+cBcwf{)fGC z;f`0V^V8CM6NIoOS6Gb+IbVhxVzy)C=u_BRF$kauAp@gV*{n*kL|l=!BqJ{5FTBun zpZm?`xvyG8oG$LJ=g7GrvQxDG%#npR5;K+Xo6yCZ zoC-J%p#A}oVVJh{xqFaJ$iuY&O<8rU?d?e?&)Ud`gW<1tcx`Fl85$MqQ$6Q()Y;-b zUP|r<*0LGHe$ zH2*;7Jt1w~J?^=}5&mv0{cvO~Nrw-De3ojTcXjf~ugWMJ?~qaYj-p=f^#u*@+YOK( zMP{HHY$knY(v^rk-^~JsNrly^Bd3ne%meMDcwrt9LYy%4EaFafUhuM_f(KoM6=p4) zE)s5+D)t3F{!h>m!6r5zxIt%g!DNZ|oL3Y!tIub_nNKu-X~b+w#f(JQWN2n>PU<7( z7*nnFuVZGkeSpcwHf~oTq{f$7v^&+edx~oh?QG_uk>-hIGueZwk6-C&!DU-`xOTgC z3jT{1!s%66W7Yz5K5>)Lw(2GsT0lxQWb6AzJH^j&)7Hba^tu@2GregnvAJKYTVD z5`5rY%em0u=elsZaR0!k4`7{ekh z6{(Qz{ATlgfznv;q5qg=^eAg82Ze=4)r@cs#mE^h_EFg%YevS2I4$&eYb6j2IKV9L zWCn-@-NP2l-L$tJazgCJKwCt^9AaI#Z7FPndZ1i&&@3wOKs`kTq|tYv()A?U9pxL& zQr`y5gCRzFNUaBkRj`%_v%sL36LbYhJywnyh;|qSb^$>gOw>Z1JlJhg_vsUZ9o;md zVCz#&m4fG@#qEes2m#95Pf3K1&oi0$cT;Ni^_yx`s^2+Exqc*6$;$RF76cTK#~)ga zD#Z^agU5~az3SZ1tN-Z+#jNoh}@>J2pXoDF=`E{fXII$x8EwD7rg5Jin z=pf0;yjx*N`zIWC0@^ilZZpe2Gn5SiD)ZuRL}iKi z3P<=|Dzck?1=n5UvoQ4Va1W^}FVmipOUc_x4EH5+2cxz^u`LWJvnmo_jv}3UV>cB(L>46V@leJ3?bwLzt}n;?q9W( z&kW4}LQDBSsHlG#6#kc3G}!+{PW^U{`8U4Q?*h_)mQeo~oBvuu{c8mN(wzR+STsKS z^qGN5$H>Uc#GymL#PsRGU}vObXJ=<-`TX@WQ1!QWng4JQe8TlO7@7VU3%1YLS`JoD zW{ywO#iwn9f%#Jm{maks`TlQK3|8jPc3C*+IG8vXKO{m_(CT5o3UgP}i7vrBSKQ=~YI(D{ClHjM|OJ*$Bp~}=L^2z35q@iRfF9)HiD}M;2jJ(v)TIZ9dh)4&-Y| z9fEvbbrOy-i3rNxYBfLKRM3BGgEp zN3(!<)Ez4ewAOkgcfP^X#-D>tFZmR8Ti`0BG4Cf);!j(epN-ub8OWm)mx%HJmNez! zswBXg%&qIP%_!jRJUIo24i?fBA&u>Jnt*$X)X3wTgjVJIugfpve`6N=YgzeYdHN^n z-d{&q{#t_mr&{(O_uzlhvj6m;{kAUt_G$jEWwWy~eiAeP-5v9J8seXBnF&s4du5fR zgHE{*?v3iXYysqJE_!@JB%xVIMuZV!NmnE!0=+}@I%}*rj2Jlr5l|;ss$Ldj98uh{ zI+rWpys={|ea4pgi0mtNxH>qi9|@XFZGGdDP+TV!XvBLaQ{EepfQ^fFO-1*cJ{KFF zlf2oUlRpkN(*XeeP%yyIT9cbl6JIA*aOV&m0JF~*PV#|s&}RebZSN|z`saI(;0?Mk zU#9M0*W2H-!Lsps-%$Z}f28Ms1J(!P_j@AlU$fP1ZmhoMbA|J}(>-l^co6ffSb=@e z&%RDyi}p+4F=F?-(5uZ}=<*pmTZ5{UI1%<4r(d+u#;yE8c?);_0-rEb&*$+1pfq9( zAmfWU^c_3z#B4e5cZ8T6$;fsN=8PE4jv(p(zV;#GTnBo$8SX z>Z1Mw9xqY9y*^A1Aq?wXVDxQdjsQnH@R$=-C#u+}`=-UD{X%Ipc2+vel4|G>ORF;U zQ59(0vJC#}ox$rLCIgP)rs!znqZ1>OaZJFN7PdV{617^irtve~jx@qK0?LxE5+?Pc zggA*piVdAL0x*SlOK50;1@_HUVxp-0+EL1S)!zzAs9e5V!ujMWb#IhK5WiGmQ<95~ z#uJArRRl^=2_Y>gHO6sBacL1PCTDG7dpI@&G%UY&jMp>0x)`!Qad+A_(QG%@Me6Z$GkY%nWVv;X`Z6sW~Os6ue zc2l6qYPV)LXTRTJ>935fctg1~xG2dPsV0h)IOQT`cq-j}B!Nz^4IM^C7;JrzERas6 zlpnV!;fLmnVT1cUh?EiMBuZ3#C`3&%PbqxBrfFFKVghyo(U_6zeHO0^YqPv$^4y0> zPEwY4eYK>hsUoyQ#zp-!nh3;KMR7~aS0Dvv?p4QJpg!m8bgw@EYhRWErmBHBu5B2} zGf~AgKHv`uJ%v=;aCdj0-J_h8ZOCyF_vXM(8|&}=%5-hH;!wE*4IwyiMxyg&xn_|i*PP}g1!+=#Uxg(NWjo@pRdyU_qJbPhlGOT@t_9|PzXgEuyLD;R9%ZSNnlHCOFd@Wlq;vx znnGpcNR&2MsZ4iC5;aj~ml83;XCyw;s&T~B&X>z?r-T_5rT0KUhNcFjML%W;5&{&Z zF+Hsqh#ZA#CFHWxX3j2pSXar#UIA59V}gi8Jy5ao%qQ9%eRyL~c&k>4BW)Coq|NpQ z3uYlfOomKCs*H$5Um@8rD#|F=NW?Js%eMr`f%+NP3XY|`$_K5H`DC4<;0gtGbtuI` z@yW#Uu`IJNjw`=J<-b{_T(jI-9+S6Vnxj9>&%Xdm5hy@GV~Bj0?2$0YgDc4vFpv@s zgf#k5qzkUlR;*ASj##RuSm2|Om`?0uJI~W99yd7s7JqB?!rDPOD8wuXFoTS1DZ`p^ zk!`8nD0?C2a#AhKE|W8mB57&;U147_jxc8*mTKBQ*$(B^V>1Vl*dPln6NA~KzkjDr zCO-%)1S1~H!%$JHKoLLk$ARnz8`T(SWI=65YYo7hzOyz_o7N7~%Elrl=XU>wovY^_ zgm6mQxg}{QV0)k$A+vuz zn<4o-hhpRLmI4zF``CMbr~wWkIm`OSR~095v%M177#ZLE97|0G?b+v! z7`=s38oDsq9pA|{)S)#+dk4JHs`=lcowH^gpda7yy}#kh)4%DdeLHGRyQjSa%Q3TH zI_u+x)=hg@iW;T=vfs~ndS?04=h>V8L+wJZDH69XB1O!;0<$BY0;WB{Oc*-rL!F^l zW@WIJr;mw@c?b(ITq-;u;JdOigdm|h4>>CV$mo@OkWI_AA%DHIHM;NXiRjzk{hq>w}e#Y`5zTFqH0#2OK)dmM3vHN z6bXGu^98BC;IrFg?)woah9LA;ljE0Ikr4wX8hI@dFsXv3Gzt<}zm5aK8~VjlzwtlcCAEgg zWf`Bp`oZwk8}+>o*OA`Yxv>7a!&#ff_C2!a3DT6z#$^w!zY&beIA+4I2C#sWYumAx zl|`A2i+>yR3bIS*etTCLQ^BtBG|v|eBWdru*pthXJC!E}$KbXi(%-677#&w}E4{V3rl7!13?UD`%!ac<4t`*-~pV1+? zt*u0!6^gtQ$U_8jnYIHXAtb*S(x7_=XM^eH-vA zIoBS7%!tq?98w#V)EqR!t13Zg`r4$>v0Or#@H6~GwrJ3vD7n* z}U{5 z?`@=a5TdQmUG3yEH=5VI#$N28D8Dl^d#sbVO9riEP^HayECn#`l5MrAJM=$ zi$`zx*RrhnWG8pIlC&D!9u?e_FY1WX!97S4CFn$zFV)-g8pi9%8*96wP=zGQQB zIwVE4MDOIEY$B}%uMBVNm!dCg)eUjjp#nv*Irjr*@EdPiu=VugqlHi8@E5zn!7#VR zg*5nw)?C}_DwW?1Io6oIm-hOC0(RqJ0!8mJ#M|}e6umr+39sx3A z`!-H!4fL7c2goHn6EWML?kyTpmPgIh&ZaV10_!2EB~x) zGY!6GdFH!tmi*&-@K|`)We_aC=NHdrlc#PmQ{$7xzUpZ2p2~LLtLx%q8qc$Dwc1c? zA6|-f=LpAV!G@f$%_7xRRYQ}|%4%hnLUUzh<^I2J62nuya4#p8vgH z1aWxWVANddvURxgZmoHv&i19rnWj2(ZZP}tSeGfj=FuP=p6}t585|zZP3%ScWdVY* zv|n`pbfL3I^K@x_opGKB^+qrdyQGmmK^q9Wk^a{s_mUlRs>RD^zq!)P&V+1-vFe{3&HD?{?03w~)|?9` zoxas->2~V3-GXO2XVKz~(u^)Yv))pWC8#GLTa%a9t$6yl(D$C|#_+tPxZhrc#4R$gS*$)x-Hn%))7MAislf?T6XEkCtV`mU zVdmCbv<^&LHaPVi&6b&Hjyi8^b{y-HYI=3!G4EFNHu%k3XV}lynbM3#rOe{jS7aPa z=GG$@FDHzb`?7tT&g_kbUTDFg7oE?SHQ!%+pMFiXt>Rm+HhTT!UE7Z>>Kg*uNz`y` ztB0a?*mv1zdfhH2!Z(?)9WKw%TXg1LXok3>JxFJG*jgDfb>L7`q9qe!fYi+%_+=l2 z+BUJhl^b>L7B+tqp5;l_&Q@D%oSfiU(rJ?7UnVh)djO%v&jnM%*T@Dvd@Yh$8B53x6VT%ZYmJQwVk-e{}xG>qh#q&BF zHh1|;%G_U8j6kVkg4x)XXL!u6YI~M`5)C+^#_qf%J7u_kzNL(4`dhs8c?aOw#ctiKp~q1 zEwM8t(cw5|pYJ_XS!B+d=e-{uh89Xsy-Ag+bhf{ivlji+)fj}6mGsVvQcjh=6nSP%lYZkweU^vCv-!0qW-43|}6O$w7wTI%1M zJ$MU?r2sCBo-xM|^c`}*QnB>SdHs$k;_3GUd@y(JaJ7b(NH4!}@mW#5E8zYNa3hB4 zp_>*rJ|;fo1!*HT3IU)YPPSQ99Sim0PSxC5r}Vgx&=p+gKc%0L;T_FVYym%n-Fb=5 z)_lxVT17uBeV|usc@X^2;!cLsX+d`SN-v1c9hoJD6tp5D2O59&HVALPuLt|`<708? zrHqx+dX=gX!yI2h1V`R6t})9(P8-rdnE=l_^ID_>h-+uXJsA^LZ0atOC;By!*Sp)X zcW3mFhkXc9mAF_pmIIPbTscicDOC=3GX2r{>7l9eCL&IBB?jt;E&);46LbV#b~B@) z=_J#r^(MIxTDV-%_8*8%f_=;Mb#&DP48EtG2kI%q7(0zZJ#e;ukO}0&!5z=c*#;jl zgJc}|Ao_-brCaM9!~-D}Ww0{g+%Wcucx^2{W1Y<$$Hq!=Y>ZN|T4T&Q$EGPyf%#ZD zE9avSvGia>TpAIPY}#63e65foy_T7xd*!BNgnO1c7S8AZKD93;WW!{|OEQ%i)}y!0H1aQ$JQ3_?YbBs( zr2k{11b=NGfLVVO4FGt|h=Bk=b^(O#FPz5q1JVAWOZjV$|C!YK&9d^ZCaB+c|4$hB z|En6q4_wX0OheDi@>^}-$G$SN0_p>F02cm7A>rrSS_Hop64=;j*qH#cb^uEPY6VPy z`86sVnkQ=!Bdg+yvg|^)*>_HkL=RBSZ8v6U zhdRmx2Obo$Ph78eA(lSvrLhcmv8|?odHJWXP>D57Pt*G8EH%UnWi=)VBYIjj`=EjE zO}Wd8oRPE_&)WKvqPKB?OQ&G#c;cmWj(uIW+3#|}tEt|BX`Vc2s-v|+M;HM{ctzZ{tO=NMt5RHBvzr176ELehzS@GcLp|_7O*CSgiN-`6 zIh#=~JT^~|G#iE-P4pe%GBPyr2X5BfV9+T%GjCyz7-g#RNJ80lT^G*#o!Y6yADI$-Ffvubv!ai36Sfdpc@LXO< zoQqB7YrJ8Jxq1J5B+>utBMI>QaMX7IaCZXQ|2=*G{m%SvqW9k(1b;{Gzn%YIpB2BP zI{!rPfT-esK<{*Hf1h}x<_<`a#q%~4KO{*z=iw7(5f({DAy|@vnew}sEfarrAcbiI=eXmtzQc6iSAmM>O^+V&yE zLz8&%-Rhw<9NW>u$*IQ`;$4368TVfL!1LFSr)}VTK%H=3JNXUmtTsc-+gBta8T@2& zU6pDASL9+3I(QyTPc-;@f zkEDBT@74hokpMlv)X$qrh)?wQ0OjitdMjfiyL3Ih{p1^-FTrp(pge@wlR%hyrSfFKSR zN-101Bz;JeR0X;u`)2oH45%&uN`Gou4~L3>m`$|+YcjP>6A=T9a~1MU!S`@iN~ec> z`Gng(UgdfUR`Rxs2tqA(yF60f@_iIu?nK>_0M@>@{R4~_4&=_ z7uiP`%F2G9VL@IltEZ1V-Y;k~datdr*Myj$No6Rr)e(5xr*k?-CvFdqR~B5L1G-74 zG8fF40dl253`69L5zF#O^q?om>G=X<^eTB+Os>VsK z{=heW=sC*6vW*1LhK9Z;r0b~bJj{{aYGs2DJl9wXl}VqeU8@(TL`ZZbW+51tcpD;s zJt>$&7;i*0c8U)xJ5~?u#lY_gm#E@PsK^wQhL;)C3W`ycWf!tU_D6WpT1+AX^MeLv z-_;A+K#f?U8X1)GqOXt?xbBeaH*pzl`@^NWmZZ|gKN=yD@j+4tW}7$TKaxD?U^NX-;9JaWh>xx&z@?PbPm}A?PsX)I2Rbp!n=;$*1}T zM{x05Hr+McLnbt*y|W|R6h`KdE1ZWvo|y5w*pKFZ+l2+Gr%2<4E`q&vWu@=~hBU0R z?;emY(hFC=`b{~)YGFntjOnmz>5nFpjFQLBR)M&onX3^FzGeOFCvN~wXI&^7s=~Qj zfy|r1HuZ^fjA9f?4t{PM<2h<){lp5ZkdH6ZH(iim*562noyB8n=ga+LK3cXQ(`VTF zY)vi6CfVc26a9nzL-~d$O7os#QF+PwgrP=I(!3r1j%1b3yy)aIjeL&5bDMje*xnU3 z`5VV~-I9^R2OHN6p$rYY=+hOQ`vIs*6hnqSot?R}M0q^FV|2P;g(7kgwlw5uKUIjwnYQ1osv z8p8+&vPApNZ5-J0R=$%6CtsCH0U}Gnd<;qp1I4C9MW}sOQHZzQ?Mr6Tj-j93yI?#^T6*L>*8*M4c#3xA}lMc z;CKhN$?Mx_JVFU2)p8XNQ~X-bKf2UDC{hR%#fox*oXAQsFHV(gr%l`gH7n5+AkTVT z5dg>K<7Xk6;u#_{@#qbfy}bnX#i8lC2n*ef%$J#LR!UZX_{6`<6-;dPp7r1iN!Kk&4dCCg>rO1X!Q5-fv zLKvHd1&`7z%O7G`N8G9^NH7L|+Rp4eVoRy5= zpXIaGnTW5_4mvdMrpDs$bq?W!AJ3C^H^?6z^Y?C8Y3+K>FuihYx_eoHVp>@kZQq{l z3%3T=WP&R24jcl(n4r29$ka4VYxaFlH5N!nw=!UXvzdYOP?+j}PFF9HlcvMZQiQ>L zRGUwPeE*)TOCxweblN3laMnZkn)mr|g<0bkIenIaM_+*l|5Qm^Fc{r`ab6X0sb3NS+?@8j#2pvMpwFB|PTu>U9 zP)s1&a_CP+!zt>eF`7IuC79NrTTl~6xFq?@ba2^h!5yfgv3v5m<4-Z6jcK(7Z!Dmq zoOLB#6@CcR@kR06MID#qk6s#m2T_V9-db2X83O?YZddj0V!0P}Yn%}!o?7-ht@pSw zJ{FfExv{Bz!V?jD0jj)1qEhdSH=Bpx0e>i75TaRV@&W;9|GlIWl$aBZ5=OMVmF$*J zC^F*V*d}Hm_gBuGMLiOI1nE_dAx?wT@i9F1Y>&(D5`pgNRxXA&d&85oVk3_gT>BAb zt+W)JYo41=sgE_JZxHo@0#fmcmk&fN;Dba!$Av-7CXmq=Bf;kVvJPfidnGiRA>wmEAsbVgBv;=Syk<;ro@ zZ`|oooUR0keqkrhvrQ!;wljFMi6spHm3-FWEIt!d7E_W9#v!F}FB}NNkOhNVtTfS~ zn-N|QH{l8HcdrB7q>FgpV2uFNyHOaYVzvc_k0PG7VXV0iR*29Pmklc^SAi858=Q|{-9m0QNB%>gFRVZ3ic^PBLJ ze(Ytc6`a@m0ZI~a5IHd;sqV~3>z+>UMl2Y<1PST@xduVy2rQf99 z3o#-ASW|NmX0Uo7cSz`n{^Db7#8v}W`v#zcJyo;nsLN6C^=P+;H6fnopySbm9gXsq zhW1@s$5T&ls(>Tni{aG6;e$XLt;cct!za!TljqW-kqYPrOFqHmErDaZQ;1Pt9Kl|m zE}TdbNuV?uMuG#EN(f?6{A~>gEfA^j7Snu3^oQ-rk2G=x{XkO48sRL#h*)nuwqGi4 zxvwkjHC@O0zBV-(T3kuBn9#honB~Lj_#NA1@O;Qs&{)9d)u=N%%QbVq6uNyz@ossk z&j#9Jf?OEPt20aDLYiKkd{b0B8W0-vBVya&-#6imN|@I_=R2G5$# z#~?)zkrg z*7iCdV;y=e!g7M!5W>F3(qy=a`|8Fw^zCznmF3BS`YH#GoXRGn^}7YSXwS%i#;ayH zP2cOY>WE_FT73{te)tFyf|_qTHqPER3k7RySIkS(jz`5N)@!xxCq>vz0e3p=Svc6= zH@?Lf+I85kENeZ+zIu3!lyeiuomSaUIB{jYrN^)*m@wIs)TLL4la_Gft3Ic*8(rRx z@x#O5m6=U4Q{M1H`Os-HTp_Mb(qhkNEAxuj1_IFpryJ-`XHmD%?N2xbX@;-C)Li3wk9^CeNpu-?W7whMaf{ zf}G-Ilutn5Dx_v8nLnD{;*hQ(73(mHvisCxf?$ovwb@a^IeD)_>3zW(h@ZyX;`kia zKxNu-(_fVPJu2q~)SJG}Xew3cTbBE~Dql2C25yO`niBC{R;C=*unWRnTq*WYkkvNi|7hjomT$CsDWQ{DPLL6AdAz-Pb#uKs zE4P(bc}Y>C>HuYib^W*&t5?lZ`^)V#M?QV+es`W!j|>fYA~(LwmTRN1GELBZ@KRhhaU75u|a0bFX; z=X*-dlTxP1t-$u(PI%wmv-fw$I!$Vok-5t~3Q5A#I=^(hH$5o>$WQ9}p91+Cfz6B; zgH4d1qvtmff~dzooiLv(R!f~1E+<$r>V7^MVu59pwa6ax0ji0%f=@408>&aw01C+h zRo7#lbr{hA#ra={13H<7*=mtAnttIEpFpvM8LYj9aAxJBV9aE+gIbL$)z#UUqi{icKqhjQrn^}pzDdmbf^qE_THD04c|k5inChl=LEff{s-A8s-n*I(U1GJ{6bt007xw0) z5<0xQp!0&SdFJBLJ@WXpq~ykh0@Cp!S$s*hPLX8g+p7A*trF|-@(IH%D-HY|l6^(3 z3^WrAC@b2 zMgWEdd=&5!Kxml&;Pv-5=wHoRfBCZh-Jt~ltqg!xX~1tn76L{<>ovpg-QIt@L$u?znR8=oh*LxZYv5X*e~*Jv?$estQqg8MFI07%n>%& zm-gGx7|}Ygd8~=FCYPX;+er#DwI@B2H6J5i#qLfnEqF+$fDlEwWO~9Tct0DSTaGVj zjT*+V1|Zmqk1D8B0S zcH6F*2^*1)c2svC4r1|v$!4C;7o@Py^@vbB<;q(DH9D;{Db!wb<1URNGqWA3pZzB4 zkc|uvk%nIzCwDH`wZS|D9Ft3)ZhyaI*zsKa^hxPHYHhExqQ4Po zWA)>w*$4 zaY0qU0j8t9VTydS8unvCIDse=Fa9skgCn4@6zV$=z44I~?QN)K}iU*VlWUy$on5B0nlqtZX>}M=Ph(=``n7 zkjM~Q=F!yk#m}_?q+MZ2O@&gm+A+1*yD@t0ADu?RuFg!kOnvWFpbpYotE%e2nXkrd0&i3-rqIlg@N? zW?h*xLUNcahs-&3!?-!Qr#Z@C3J=)1n;;|P#dDBQ(AQxIpy;>Hc@vpS-(l0ULvciE z;DqS+i{lxy>QRTz(bnu}Uq{_;Y7@8iIEl8B4N=wNQ!AHa;NCx}12f}a}n@tt%uLMI9Kzq4ROwF&&%#0;Q{d-oq@6*_z*Qn&C2I5*CeEA~tz2=+ zjJS_o(4kiOc-XDpQ>)>VG1GS`DS3r$cs+k>zqS*H$~Mn9{VPg=JO-ovXvFA^Aro>n zc{SM!lwu`jPmkjA%3hch8d3en1t>g`haG)yQ3JT{JXjqf2E{^o@C855Tvvh2qubj^ z;(%rBW$YIBgt17$59VhKNy{3aGp(7};fR~v5i4#evK*0wOilZ9h^j;o=M>4q$rl3A zD7cAPSV6#E&?MUBv@^*Yjq} z!h>B|;%pZaB^udDuHQmHTWTm_TdO2q50j8Xz13MMq)Gu^V@|*nMn)ZB)y|l;ZU`1y zLb57@l2>9GLqcN#jRk8#X8p7tNqzE}rOE^4`Mwtxj=|EYN)&{_Pg)j+rT2x}Tp9%A z9a(cXzN24}o)C?%&njk(YNdrC%dx2?knb4zOlXmz1oamMih~*&BucgdmQt%=D}~fN z7{kp)n)jTAeQ}tUHe?}R_)NtVx&vi1@9wl*v+sg|h6SP+su#6jwBwO15n0ES<*{3( z-ZAQ!UY9g%;V z9K*&Zn2hldyBUOS2YFM7v97jpyw42p2$6d`3q zS6+f@The)G0P$85NZK?^1?^Ty{iYgfW*?@(Vi!uDa<5!uK2Vphcf7JGLG}po*0sKB z@_V6NW4S2Oz@ZwX8&maga)BAwQDue4G2~cqbABGa0aC#v@xe1G#d7)bF#ugw$)emg ztx8KMHeZ4M-MbYB^NxlpqT01ilMh7w^C~6Gn`w2v2InCL=-u5ZzaYh>S(>?k0rL{V z45}L%!q($L7!@gMtaR|AvRsMok^+Yz7e_14?~y>HONT|9w0*y8WBe1S1|h`Y10 zK9GaF=VL$`@{=w0fvzaK!;3~z&)36(&m1#xGRW=v&IXs0^i>g+L=el!G}KTKI3QSm z=es$Ct_Nzpq_0^SEK=MMgz~OYn`QQBYy&LHq}L~$fM(%{DHIaR{xzCKr5vA@i)xy- zIkw@QjvLvFVS0}YmCuIYD2ROkUyBW_@$<28PaBJ@>V?Bgzaqc5kNC zPYu1s)i2%WUk{fgG~CAzoi7=6iy;fbSYU7iAEtqriNhQQZ&3e`Z;g*3Y#j4B5t!rx zi6<93NxS zbCJH!v>3qn#6`ilQLm71g^j1(V)y*a39WWhak$Sda!#4y?XSc6(wGdY7&2#b;c-pg z>w5weat%?qUn66-V=tWV&K9Ojm~M?rN90}P{P|u%CgveQBgO6%zS8;Q*`o{m12UFe zwB^nlhNK$@N5M1UJ}-VBQH4a6H-nBXsj0E?Rj!&-`_S)&e5RZ7x^xfxWa+1Bg?-IH z-qJ7$I>F$W@DH9;u@w`cXGP$Me~E$9l$wjj7;O9UlD&e`G$~V|E|e&@TvHCF%~hSl zq}FN7ShB#0E1bolk6H_PHjsCAalnJFg1V^=Cn+4!l8t!C*iGV>t=$WAjC76*OA)O= z77{f;b@4uVieC1+LL3s2MHL-Y7$zqL0_sXg^@-3657F{5-eh~k?G!S?K7Cr$P}h8b zFE?bysz}_b2wF)EhiA0=K97g+m~q5YS!i;IPGWs+mJ%+gvf8qH6#H2F=T$NRr)l(p zHGcQ#<3a}g-%VIk023CHv;e?_We=Gm<&rk)_?a+hOhMb>)62=QyCP z`LuiQiH2**=PBHl`SO8V?mNDa3v>F_x{LYUEc^m8J~y<@r}fVfZ>LPz;}|jNd|gHp zM^oDwy6qCP7l)yQ3b#%g=imEMojjP(^rZPxH*gBj=M5S z1XyoUWj1=V6_-FNLf{H|n6fE}$b{MQ$5NvNvv?MUq^qB8@GZd~JGJw%ZV&aW(z!Z2 zt5d=41~-}LP>3Kv3ucx`g&mk6W0AjwUzqvzx9tB^K)lKQ@Tu9jhQjxK*lynOq_jhV( zi$h`+@Xa?B`E30KnF-Y6Jv}4u`(a10aU7p3F|to}xlH5VB)ig4M`aK3c~xjDN?xTt z?zP+9S-ITU-Hfite8c}fS3H)ZT+aSVrtSJPHvJV#ZA62Vd45N!z1HAN0^rm#Z?Ti# zj!jJ_5)|j$FTlIb5%4wQ?54^$(?-ODS~fDpnS+73zDF$VPC%T`o_8u{m-J8W$$xp; z<14tUegJ8!YXIR|cLJ(P>_QzzShT&C(}iujxrBQlyzxiVjX3~}zfh3m7Kiv6J91#w zO8@>n`_lN#0ahYIeyj)?Q7%*hGpZf*@h4e7M}clKX@{(Au&nIEOCxb~IJp$sT#V0A zxlCHSE|SQB)Z7iaIP+?iBM12w9v)-m?^_V$!h2xjOI?}hzPW5)i71WKmxp8EXLLOG z4|A`a6Z=qVcsq6P?tSB8yTn_0_H`s|qLU z<>e-$8IpW$Pl;#bho!@0ceVnzyR;go3eVG=25M4R^2?agmmdk zTjNMcKBvf0Pe*NC1J|yTsj$vyQzB%(@JwUxV(spSiW2;{cx0`VDqlN}Hkt3%k9!Xm z{czbR$38~5M{=BeV;$g<1$zK4mn7UDKzJaJ^7LgxtX8#5mAYQil6BRy%)W7xjnK}- z&4N04(Yq1+SPf>DSPkuD`@qKn(U`l$K>HTR+O4Ghrf1#j_P*&3J;hOSfZ`@=oO*?W z)pF&blZXveBg^EZv>gKf@u;saP&VZXV=3e;U~Q8MZXUW2e20xd^()Q;Uqd#3cduW;}S_ z#%B{m^+LO&R2QiEu3%pA=Pl=t;T=qN1_2Q-w(Gl)_=L*XV6NlcdGAP5iG6?3Q9*%& zf)#|r3*i8CRM~`l`~*&l!a^{MA)=)p%A+q~uK+$OrB5!i0*C(Ldl>^^3)I)Fu~HQS zcn`hb-aQD;E!w%{)G|1lxwBUaCl$vG0gu56_?v<>tKpr=;Kf;s;|}byRr=-ytl0bM#NWuO=gW@nS1FrzHtNDqpFU+q_wh0wfw zL#T`aVXuLES`7oSukP!;a@(12;TA)0`#SFT&Z!FsEk6Y3w(r6uOoV$#vAz&=MIQ-Y zLg89K;?(UL0~fcIaF1_gC}tMc`Sp0PDSeNiIdDF#xcw#R^>~Q%reE4NcInt%mzpx# z@TZbWs8>>r{vvb%85Ub~5tt*(uX~1rBOQm?a&Ui2ARtVi;(Rju>9br846KjSncG~^ z6iXIy?E4m6;hdzs7|2HdFF_jf8b~hqU(_7=cuB%*M?J=f&jtD4vA#wOfJs!8wRX!n zl2q8wYYk|&6Bmj&@P1*8ICOZkugC{p{Wm3*J$`sRv}rwvZkyk3>oy1 z{+B+5XFaZM@H)7TkMdg04tLh+!&s~+w90{ZrFo66hn4^(m7tylKuHAwP*O!en|;wE z&oyJvUP6A4+}HKiiun#kFxZd3`Y$C_*8%8Pngs47dQyRWDJgUu@l?~yn8!i8lDEs6-@de@9c+^3SN|@kuU-vrJ}tjZ5<=9#iGa{R+`1w zCI-MD9j}K@NZ!7DnF)iVZ#nKxC(A8&2`wCj4mXrHVNR0VFauFKo>Fbs4=rb{cDvNk z-_Qn)VCxEQv-H&@Sr|BQGtBo+%#aNPl}jj5tA4XmfmY<+Z&4bl>U5eX{jgGfMjkAZ zlK1TXAcbJ2FhGGw>%8`KORD41Y=Tl(ceRGgnL5V|KQn8mxt9MhbjW@)u``*!&if?( zAVNCc;c1v&mC1=mr z`a><)JJ;D6=g;U6LB43>IF42W#!ioG@GJFH&tnA{8IL_y54mW#!XJ;eo^5h7yzif9 z3f9#_0`-Vkwvp0OULGiTR#4rD4@DeE2FWw^s%J_Uu;F6ItZS2_y7G(yRO<|A5AOor zR;X+b=Qyc^-^P9`<65rj?}}I%Sk+xN_xva_5hK}0$yz5=V%&_@2p7ObN2ktQ6W(6T zj%o*sQ+9ThaeP*iGK7R&k;2FzBD+qVaxjmm?d~pi<5T2Zrcr4ya=FzI;dp|3HPV9d zZ0Iu6Hc{5~LXF#1CLlaJKeP}*Tb!cecvt^L$q0qiFbqFV$BTC`5%802xhJ60BC{If z4=WY%4=dF$5xUwRRw{_pLluCP3bgJsF^K_r2PUNE&dI<*{;?Xf*cyA!tPbyY-9q39 z6>o0OEH&qXrGSzm#~5Gyk`Z_74E6-UYwMu$cPBRbuJ#O0`;sKSJsb8ZqsBhY>UD)q z*xP7~h7y|H>wH-k($^~x;JMq}rhB`qb(F$=MVii5BS5{gyxhdNYRBrQuaBLw zGu{S8-FM1GJXHq{Fd1?~FhUTG#EPg=?v4=cXo^v_<bB!lNZLxV#V@R2KMQAB_kaMJ!OY;K)oM^So3fWBgW=zvt zOiUf~=LE$(CI)S?)ZvXkpCAkzNLML zpbxMQ==Q)}hqByQ^lq5zU+_Z0h8D_Bs_6Zx_SY5@gtlt6-bpKrN1!a*&PPu3-XJG9S<7PTl@=WVOA%F3u^@wQ0e ztumV-Mm~Q9t;@HF{bv<|?H7^FU!}hPP~!YkmhyiWC1GNwVf&FK0Zh96Ka7$vGqD3A z5ln#D%G3;ibOig4A{_xe13)hHd-#B!j)@iER08A>{uU)+`%TvJOSR({Gs|B){m=U5 zZ$g)UjgtI%1pchn{J$)40t!k0heO2~f6-R`9w+&k4f)ke1t@3!od5m5&KLi&MZltT z41egFe!Th@Llq#70vJHV1W;EoFfsfV5cqSAzxtn8Spb<4CV)NbFFVv<1yDvtKvL*O z$Oy23Kh7>-xu0gK|4~*ddcbl2Qvvoz?B&k`@-z0rLQg}-2=D~`c7%VNS3n{6U#(OG z^nePy#-E4cUkbgyBr^W1Iv(TSM@j<X)yubm&D&94 z=O!h?Eqsr@am>gbSUW@uLfy@%SJbHWl2{Bdwy~YImx;o>nPgr zdfYC!*rdQ4rgt~l?5@3$C;6VtP z(WZ`p@7@nb4>m=dq49l8dvzm?_*R@k?^NL-**fVM*OoufCbeBFT(*wSVPE?%@x9+d zUjGti`}1+~zc2p&`RMuYR)2rX(fz&p`&<uje8AkGuDOokY$|{~zKqjLd(J%k-(j z+bS%?@!Yi)=!`^D4fPA_a^LHLQewYyVH?;^g-{PwOLcmSUyo+&;J*RaCuQjf4#AD@ zixSX&C8z8zKvdTA0lWN+`(ThhyL)5KAZ7n&znJm=^_?l;H zdTSo8AAm2d20I$9Y#&c61Zj5(Udcb5cHiz#66|~i(sjYQnLlYku&j}`)JD)v1)Jo- zI*Pb8lEU$TcQto5f&*9Pd1T^~X1`*tBwg#Bq~c8<-sT31$={Uu1Ji+ za9DF1d7B^tmNHQEPPbU9Pu$5N$tBJ!o1Zs6b%2S=dF*k=AUx#eSZ9cP#&SikMyE=8 zg1HW{o`vn)Sv*`@fb?$+oa5jG7Hlwu_Fz_tN@2Hrvn?#C$!W9dd3ao?t7n2t0rAo? z=<$qpK1n!SC@t4eYN^hz&h`*eJE+ck-zVYsu7Pqr%AhW>rY01kO}b=LHGq%2A~Hxv zFXTRzPw^afN>`2iY$D=*Sp1ovAp2ZSy9-0*9hh&iXb^>mpNjZ7S{i9M8S?F_lZ*`c zSB2ywu~HB2Sp^J`3e6knC#C~yL?X{o(!titD)IG-Y0cnaL!xb`Z761nx724UAnpcs z-e3mA!Bhr0lZ!S~l>UD7utQY2u}0mxpQ$t?6hEu&>ZIxNWk`M9l6;=x$t&YNzGMGt z-BenuMi0xQ1Rho_CbUwxuNd=$@RmdJJa~HKg0!G)66GTC!LNNkzp`7{&NB68U|S>( zC!$*OoO}e)D=~ucOhp_#L+3)aqzw0?m-<;F@t6EXit~#JpaLQfk0Wa_CZZ{H4PH=j z3dtOPj&AGaRN!6?JVYoD0=!_60)-rI5F4~D=ooUIeUZj2>QIt=1sh4WxXzer{jlCa zb9TlXK9LfAn{`a(#4RBFkZiEm*3a&7Gii(q1t-o$z`@bkosOe?VjyHg#tk zyPDkQLX>Y3QBH)K(@dY+2`DsnP-bN1dZ%lx!P#TyPicLM@)Y!4P!a2->+pd=DpXf# zG=uXi|7v{CLfnYC4qlG==}H%6GBOyn$Qb@7M}ffJG75tiuIGovU<7e{OOLcq#)Y^Y z8xe*txBZt>KoNY9+z0&oFqF}V(B#QOiM(=h;Y8U;l8Xo#$&z`Rn2I?3J(^BtsxP={ zdXA#TiCdU5fGN?4_8J#2PXClaPy#O*5_VR2Gfk2?zSr2>*3oi;y|&Op~08Vl1O>VWNrsoFfJ+B9$NXYGJw&S)zF7b}C}|bnfLx%X2)( ztJ36%BmenvK--xi9Ek8*DG;@unNqmISJ?f}=(cCy${KU$z;R_nk+nvv=4OK?S1~X+ zdTz{ZR%L`!A&Y3SYoq7O1FGd$m)|0TVA;rs8n)JOdO-8GKDnrT=MqTl7xhh5{oH*1 z9*<8x4=zrg(8y(2Rswf$f9_>m0=cuW_?x27@SQY@tkHuSmd~0Q33W|AZd_qFv94@S z9`m%N4T8}_t)*gI5j8L>!%$(=b@T@Y`lV3D4~6?&;%l9ZVLqL)!G;1TV@Q& zbfV)95pu_bc|Da8+?@{*^+YSM@0un-JTf2vzlb>7f0=8k#7x%}&{aXGeE=2=%R z=BFVXGt9=%d!$6^QL2+ZW?u{(fxany(>L<}nzmiu_XxA%@pweP+c_#X)<>(ZzbaG2 zDsxDJw1E)`p1%Np46zgmsV!q9WOXB6MM1leh4w|9>qH8mQ(ylQM}22gT5h)dB~UKf z4SK?#sF-ydb%cTC+>MeFPLSYu@Z|NoNPTE?CL}KeUT5PZ(e403$a@L&g?A=K2em9| zZ9?-^`|y`-_09GU;y4@Vsy>Y+mqDs^)%nf60*yIC2Rkbw_}miaq9g9S$yNCGFJZwb zI^Wu_k9IH^RhTe3=&znbh6jPhb4eXTxJRr$d#Dm5IplvTt@+GNAfUYrzPx}MH>+xAH!#Y?5#f}Tv(9Y zzAK~QR$G2GmbUb<9@ImR%Hc& zw=H+eu&C4Pe0TlKy^-V-QrU+@t>im;3}duGxQ=#cyG#!5#1WQ#)ay9{Z=DKWem zTm-?J{nJKsnvpvd=7;54Dq=^O2sJzXGfh~Rc~oUfe4%_)Z$X!l+SYJ1v~b7DgP@Ha z6A7n89diBYJ7TUQ^Ior~KH{2)jVx^t8A-A$L{gaG4pUcx~HYh9;4f7$%L~^0#!L!#B*0L1N}H&M&KitDyKEM`JtpA-wmy8iqZJmz!DJ1<@V%D?I};(UyLMj?@PmhmF=x z?^VGh-b0#zgiPt%s$YUs_rZh!W`e9??N@z@hv8t%nmp=tAf#7+Op`S)#&W*iVIUe% zcWUQfCP6xd7g>OiVyb>nQ)UgkmTx~p+K))38_?rAz9 z(aY${7{-e&@MN_STRql@uUc*YL4eSwNtO)naH|QFr^n+EBVkt2#zSvCJB{MFi+ZI= zYS*OtPRE_gOt81XDSqnd(C+K^$rt2}_a#M_C%aLEOfY^_{Wtz+*!TY&vcHDQHq|d zr(R{;*PwYG9nC)`XN30ZSh;3*US)bKr8K7bX zR|5nl>OKPdBofh#HfWcXl9gvuDpUKZw`>>*rU6t!W=w|J$~1?RIPChI*UVRWQR(XX z8i`MaqxEhR-SjmE>uUit`7N%`fenabtxvj3#ctOxwuk5q;NB;@3Z>L62JP=T7XnmQ z7`)oDzcAO)D3`sjYYg&N*Bj?_eZ*Rs*{q4cxM{nr3FcCmxG&2gy^^-?N-}Ob{QiP% zGI;ZvV_*5g3$$qyY^1g_TfGA>Se4x0hk8|HDnU^(=_d?^6 zm&Lg&{;iqd;p;6^#*5VvPpr*=JLZ{h;gNtA{^33*o(SAV5GW@337P;oV#Su0Khh-G zFoWXz*z8(pcSPL|Ez`h(K?vK`%!kn8+XG3J$zGsbFaJB12i~T2>uEDz&cQ$zc}#oo zrO1**#QRaK?-EzSrFIE*GfxUEk}xllG^Ea`55eb9SDG-|>SBVT_zwU@DORVs4W93v>d zAgC;0Hn6=7l#Nn8;j5qk$rzO2a_NWyNA-k5QzbYnY&3>)ROjh}*|jp$0W>H_8#sW^ zK%B?^7?X+0TB(?$2c|>STInIOl16&xgD)4;&V?n`+qLa1t3^hp%PzO--e1Gqras)XMcTSObVvCsZ*ZjzcwaW%kG+M4*`Z> zQU$->4F3(v_485i--KMh-FAO>!u)oYf4wt*2{rwUI50E+r-%b13mxOH7r_`CtOM$T znChWiXmBzd8d^P&T+2RA?mMchJSEbJATZ z;G4Nu2>CcJO4x!s#$xP1K*RzIFIWtBCVX-1f=^&_~{@a zrzbcob$T2U$?NSwSWeI&HR~17mYJV~@WAbA%@cwbVmI%Hq{HwF>fpWtn1;;Ob%N)- zs$OoC9qxX_NEP48T1I*n&GV9T5vUw)!>iu!JLyeUbRZk~m$|`Tdr)jtE57=iM2S=!u?D($1l}$5t~i>pUM5m`sUzL>O7OBg<$qxA zZJfrouHTWdh#%edY~=r>*tuf+g^sNso2IM97G_}$GPBm^cwyE>=jY3l4Mx8xr%;VWzTlw^%ve>E93+HZs2hxe!*}}d5deCvm1fn+ zvqjF{N(nR)EA43F4@~A`Vx5-aYen8P(d;1qzWq)rPsBSt!tbX)fYWG zl_Roh=i@6WKA!#fjl~zNEI{<@Y;g*F)HI7Z2Trtn+`2Rm2T|v47tCWMSL|Z$p(TiG zj3sfBhad*!wSAKm?fTsah~|BzHhF{4H4FuFz1IhsW5zhaJqd6%aWAk&ocrlMZ2DlT zenkooFo#0MG7hy02-7Q}sf8g!#rW)@E<=4|Yx5c^X#4+~}gNZq@?TPJV zVkZ;Zp4hf++qSKVZDV5FI+^P$#1UA@-o>ih1#yQ+V0j)3nadlG zcYq!GeDjd)$6b$J`<(+OjPjsa$qkV05Fx)H%5XG(vSd8lJZ2nhN_5bk3wRI4Kok-* z%9Z%KX@?)=>l8855Lv)*@L+WJ$$7;T5E5Q?E(ZmD@MPhU7$$6-0JCniyd*dqf-hQ? zxw#PSZ4_sA>u!Sofov_oii?6T@kl|dntfTn3N;rJ-CaDA=(NPM96y_XHs?hVa|_Vi zAlH!!_=JYYoOp*)j|`kDCi02Nk1%MVn4`&{Gu#`PEgbAuIJ0`;ZmZ_o7Y$B`Ycn z;i(K$2*E;oQ2aH(#!t~a~10@8S4vqW?356Mmw47kL~H>Dwi8#@=mGOop|31og_ zG43B!E+huD?H^3i7yD-1Fu4;IW3w+Kd#0d-UR!;)y1yc9-;5`u>rSN*uMDatOV73# zD?8Y|?r~e@Rk+d3{ZT)kG~bOvrQpMOTjmEA=50WhKtPW7%}Y!*((6akIY%jg1iJh< zFWN-{IuPhMeI#L(LBPfAblQ|GuSUV5(~lfwWR7iZ zH*&sjh49xD9Z)I|ZMvkeKgIDET!6Xw3uG04Bqr1OGsK1YgKcLPN8FcIE&?uv;UL#f z1{})LhIIE6k`cg62{bEVO2V4j)p~>R`|{)bX9m?!^GKtryc6Fpr8KuqiUn|AYh^uD=# zC0yA#aEv%Dm_a(hP>cG!Mk)OvI>;W5;FL>S6+Ep=@ede8Rc zR`~PzT)ln*r%_U^z`6oiDa8c3E#h2-*)37G8(JKRW8eyUM7a#>J1F>^e@{**BU7*r zow`~qDm?JWrAPW{+gX8O-)%@ zd4syqr=hwjYvZkJ<3)QYXgueUrfpzXFyeUX7tXHglJ+^J#SJ7fB>M=>tcx-mixL<| zySlb2dQIc8GzhlTLymHxOVRNO^};wW{Y%mn9{c%~FQ*sBogXDGhq!CE7r@eHo$rSN zW_x|bsO1IAh+I5qZ)cdbn*Dv&rtjYFy=eZDwx~;5R2FeG4A}1c9f^{{w>uq za-}WrtnmwW?#emV_P{yjQvHhLQBdqo^aa$tISFB=`peVQJF63s)f3J8-oaFERJ{#@ z%Yff|R8Gif3#&ym8A`KR!w-;0>iK#hJ(b#C!0(KK+T)R?d&j4F)qMj##poN+y0L6B zlFAU1fm`fk1m47q#|itnU;~I8R69hqt#q$CPl5VV1BpQf%zd7x-di)NtrJxfCmZ$O z-|KJn(LWCnAV_&SJqCl}Xeqi|o1nkp1IaCqg=d%VPJ%;9kejm!3O23}&jk_4StPI~ zTd9k0)fi}=+o*JuPkJ*==-AArD)ljz`eBY?mC+c@8}IIRYuiddL7tT`rL3@YVo6NG zNAOh?L^THcXkk3$e5tMTU-Qi#3`+@1kF&hnX_d4I(*C4~FsiirO$dRek_3utuR5`b z>$LEPx)KumJurD;#%PA;;ndUJS&OWNq{O2AC3F%{sm1Jk5vuYm z&8@+5!O7B%|Gs*AwM$F>M~BmsWCBgGne*L5=W{G!U?3byGfP0clk>&HnPoe^jZ*Vo z#M?^h_xbAYEEXFbmstG|v?%3{bcj^ife3`L6Cm{Mx%+ zMDlv;edW8s9lyn9b;f#QCrf6vbnZOXN3;;RameEStEOi5z;cE2C(@M)Hp}%%M#byT zyzxz^bP^K4YnwQzY@7|A8`vCo=PTV;hfs&jmg>$yl=zg~Ny~bqnlF3RdcvK_Z+Ne- zCc0C>p|hMRZ;Y)DcNTSgUb2Gv>ixrlN3viOgf-1lX2UMC@uCUrG_JiaDmwPfjdfd> zgooFi6*lvQO`;z`Wix3m`e!bS&3bRqLB)#LqFkgD&%%A> z-H10}*Tnayf&DjYxs7d&NVlyE-)F_Bir7Nn>H7R|Ut$Hx?tV!}&#fWCqY3d6juEAD zvqif|Yi88~qe$Szg39F?SM!;E6KD68u6DtR?vv<)w@i1zhxbV*M6SSh$8cA$uyZo? z&t^Sgt9|W|sn8EPWj_{^H0(Ck^BO@iw%-^SBAM@;og!Y5bdC;TqWbs+KydDZ0PxvE z0fxF;M2ig%3JJ$Uw%0D?9V9O7T*x>IEDi1r2PoxxPnYPxLbItk_AYm5Mk6G7JBP}B zA-!RimGleKaX!fYiTjX2$PW56FO+@m|)qBVw%MNLEO{-if!fw!LfgScJ;7O zj(xSU&a?wJ4|O?hCF=HVJ#Axj>`_ugYo)%AXI8K!2i8+_5qUp49*U4dJk5;ZnSLZi zcgi#TjdFN+>*vGIDw;Eh{Q<$BVNg0oF9!S0q;lItM9`PkO}Lr?a9)UB63*b#hJy>T z?(N9P)#%r&Pe~T1>qW7?E+#am@fjX#b~1rZ??Oz1gG%**g@xJqWCaViB`xxKKW^}` zzy-WpJ!ksor+ZM1FR+%eYpzMwr=%13Y0|La>X+i!Su|KfpsphW&R zruk2{vIgDNfw=7#7PvGCZQkO#Nx${qLPaRMx4f z-;}6>Cf6G_b9iR&0Cnk?dBgGh{Vg|=s!=e4F2+XLf=Q?9osH{k;MkhJ%R8`Xo ze?a=dg5|5k_{jI1B6aBQ1PE%bR@C-ZPrde)K;pUFuPrShOF7ycT?7bLD&{D-c+KqB z->y>kyKM(8e;qx-Ai7&WOio4RCJ^}QV3BwJr7@#@&+?}p6S&Eyp9LXFaP1Zl)dFx0 z#a(H@(NJYdcEbA;NO6m%n>A(u0}u9qiMnN6{s+4w&7~1y%D;%Hg|x*_&Y|;U;k8LZ z)33TM?~u|sG)YRd=t1O1S_l!@%vxev1MU(Kk1RrHJ$Kdx1%5IWV*aHQD?_qm{VDFg zL}b>#E@ArLX7{fp{C_{n_>YD2PhqP+icWv4&HAlY_3vRTI$8#n|3V|k%=nMRS##`A zcJg!e&#N0RMrSXGpfMcH5WiM;#clsxH&o9y9-Imc^(yqNz+slt;+6wMBQ~1#wd>%PhJ8JInmhfX zK$_j1PRB#U%J3>s53rR@*e2|TUKeG4vq@0+ik2LFoYG9TT#Ki=;zTXxdW z6*?2$CbymkYrTQEaB6I13JeuiU8nA-w$(0ewt>v_t(s8g(jWSa2lhY{)zIERqWIyT z{b5AzjAOB)Q%eF-MWVwJhPOaIvn>~iNXGckP%Bkb%(v{22%5&lsk<@d+p|#UV6nZ& zL~r#CTAhm!h;3_Q5#x&wUy7-)^I{YXRCN@~Mu-oSs=m^fkMEkoKrz2~q-9$RHpdf) z*$IlP<$ZQ0N+;3tSErj`Z3AErCn-y*Du9kow2Q$<3{uny5a_p~&uWyZ`G{G`)zX{0 zP|6-&KX3O!nIe^{7kg*%@fU+5he+|0Q)QL)3KiFGHaD!m2GJJMZLCtVuxOymEs~_I z^b0L7&y(M|85F4(Lu)*K1+8$)ki}CHigOF8Z>UI=GRGCoxd8l@u>1!35w(i7eRWNV z;o{?c`7&A3BTtq`y;qn>6H;UGJ#<*MuDrVZkayyUt%hjWJl)WCB?deMv)~8(5AO_q zOn0%Hh9&~$hA6tro#|Zr`ViYEWIBHcf&2uLlWwi%6Wr7571sfYXKLCkWf@j7ozBb< zoo#R0(e8j67Z=K@1nme*9zUq-ZO9oB{E2+LGZ#pebe|h3%eZfi^$fb^kf=o_34~;q z;gZ8gY{nW;#k%_6sy%kEN6cYcy{$Yot&&hTou*su)RGW(N1}8$Yv-jwMH|&qIB3A5?6b%<-7e@IRRv;w5=p!bX zESB9SU_BJ;QZK#~LYee=rhurByaEy=*UBbA7H#T9EToP}kwiJGY3H!o7yjhY-6(j+ zl@gp7zB1333)$G9Il4jl+Ksq%Y9Y*nMJwd-MT|89BVwf5+1k{BEIYgN-lYHYf|-F~ znL~g&M>{?<`;Z6_@07LoAhGdI5{)+~jLa0+jcnLuwKW!*ZXnW+5Ka>;Ze$JK$i^U` z1()J2DGbsdL2$CU(J%%@NXbgcSi&o>QCG8R6eV(tpOytUk>|KQS2LReP-(#vV*IQF zG9c^OL3(KY0l1cp1ncJo4U)fxYlaM6?=-CvkZ+mLwJ=lQNDhnY7}HB1nHqK~rc}vD zYzkYIeDyCDxOPA6Q7EZ%u&jMTu#$wNtUugcMmI-lP7?qhbPfla_3O<&<)%WB2~427 z6C-G;+nY2`-=ekOOQ1svR-aiVnFtD>5z^yS*;NxYVarOG9ZzFy1K?lDlS(ejTt_E4 zHe&39{b~56JQICo0=^)}TDHxWwnrC?c$KkEGvIDoYB|c-SGS}$Koj$v0}WKU{3}~I z|Mv+lUf$!G!YA-it}dddzE9ce;WB7wepV17tV}7r-0nG+_49=q>AZp{%vU<@i}1`0 zDE$kf#tR-NY<|ukm0Nm-y7(PZX$pn*xOk-;FgjYgeWqBSrL3AdIwI}d`A_H=HW^QY z{Ya*u#)xx4;=@I4KVn#{?o3A>DSSmB>YuN3#l?Ulo|gNhiwb_C$uIZ81?KiCug-^S18PXa zEm}EFyv@_2Cw$+fUIeb}`qC%Cw?U>9n^_otKj=EjOVV#9_63g4$VA7sx~_(%2G>(* zD`!>ejFBf!tJ@JG*8i3-@gn~se>^X>v{mUogS$wpkVl^uvjB}54T-Xo#SnvVL&f4D zqGsE(%}!kwmUyJpWOvPD7YpUqvoUFvajw8|&l1(}vp8>e0M0*n0w4M&R(*X>uwQ|*u-@3y9ivbWRr?7QZ6UuH3AAa~ zqpMI?@+cC}vpdHT%J=MmaKZMs*^azop0B&@Q->(Nwz3<31VBz|X@$qqNs4&*=`eNK9He|Nq#g?tm5u9+nZg_iqtSWLD&+16xoJww# zkP~+zP1|L=sDLIhZXfV+mb}9=w6fBmbKj7`6Ag0#l7vTSh5#^%0?ff=alz}%jV=91 zO@)q3dDo=jlNQ@*?zWT^96RiT4E2Q|IwW|?rX==}YrkpB36gfpSzBar7oZk^&oH1{ z1C!-ISPEfhcnJwWd99R?NstcvusGvO~c1i-kxc_Va9uy}Vyo!EwEaI2`OCL};Jx z77S?O43SiLs(|F>Ytcz$D0I5pI@L?U@9$_EN?Xby8D{@EFalbr$LKh85u02w;huO$qFL{g6 zk4}RUpA51Z6G?o-h07h9YEZl!g{C&Fia0AC!6Ia zL$dnTH}-b=Q?#M#8Pw3>p4yOV)z{ z)0!~H!HuU|6(OCHvY7Oq4A%JMb(?mLDwWTVT@oRVFG+S~$e&E%y07q5c{ACJS095< ztXB+LGe3z=N@0tWoG>cPs+|+_N*xSgng%LVrZ`&6i-hx+TNI7+4&NQUhpxvTT4R3^AIPqA*T5=iSKh|meBats=dP6s`~ zF4@VqOLJM@U2?&3y>b*(KYMf>*CQUeUbmt$gsYu3>0O)74)EO|fpQtpiuEP#_I1T> z?KJaNu!Y__xiMM84dlF5jWdRli`SyY1ySz$*C1S>eZ3Njf`^ef;IN6FK95+${$grKWc$L~;VzHe)ahmK0s{06K82e->+dtb|v<6lr{Td^H-v03=^l`p)$V1QL;w)mi%EPa)= z9FnAEk)GFSs&2LG{-#+%E8P>3B)tA~b3LQv7{M^I(0F`1qItU5lB@STU#{-^)bIq7 zASZXs3_*Q6pSpLt{_rA<+kW#lG*c-jS)b#_VxvStPzh7M)Me-d0%b$u1I%`2m^`~`BguCiuL%>;*!XLOGU&0 zdR-g8+e2l>K(wcb>jaknII#2argr9B%W}&4^mz7}z2W?1vBq{lqm!t)FCbrgVRmGY z!IQ`FwR>Twmge=a@3=5lon3}m3JpN7cL`mnGT7i$$RTUudq{t~Cj6&F60+|+U-JhJ zv|9$Te1kGwG>ccn7O}qW3%9S`pxzSpbUrT|t)aYaW{d~w-LGHAx|WYVtf=dQcVqd7 zDe`z)c1I_YZloU@@vJtUu4~Db!}J7MAlG#JyWZj@E}iJ3VUN^WM1I!j4uUP*&b2Na z@0Ya%mqk5T=_s1SYEnYv=_h29$3S=$y%)YqdY-L4rD@|$>1gEathR9gzO13qpw!bU z!Dh)=rK%j$oKy7A!m7k%2_qTE6gm8Jz;Oy>sdq6iwq~pfu8Uz?)$$*3F{Q zhZ5X=s#dVpi||O2w48AbfYB@Y*=xo>T>6t=U?QlbX&@0vqcVg666!Rfrsm~5DAz&* zWy&U%vt+f}uRtLUm#alzz8GafOzvBF-V0&o4!G1Zc>E?`bB-P`)Vg~GndjC{fYzy} zqPx=TwdHt)CUY4jR&nQ3IjWJM{PX;Z6i&OtinzF?S(EdUR)?wwp;G%tmAL9{m+jNk zZSQsC`qb^ot6EAUw3QT8_;)mt^X9$FeGODRkKK~e?db1|*5zNu-Q5X~M7vp)gB{Mi zwOMCO=Z|4F>73fo6@7cV1-D_Rf{f5u*4T#SzDqiDh0EXh0j|X2WJ1fGxPP(qc-TKZ zbTJR3JC<-n}UDW0%PtNkM6kUFr3{ zDHK)Uw(9Je{AY^95M>-Wln5k0$N)oDIf*?*HdOZLHkx^z6*QGXfU&Z}$|_jNbRjm)T=G z9r40OZL@p2wARBUA78;yD6EF(0iNwmg4!MKNk?EuCi|SbU+Fq~`PO9F2Y;zhRa_PN z>ewg83bd(cs0kXUaS1QPm^R0_&ONdFrV-V$rT(Nfv*t5r)ylj zt5|uW^}*;>h?MM;FoTRPvLYS`{z%a1AT69(A64l zE)%|RXKT-)U@OU9Px((mm^wK9RQSKxCl^nxo$lK^D~!_=XwnJaOYiudm4_Lv+0(gK zvK@B@(;&>49T_bUVVK+DK=1sQuR3lD7EJ1lLsRoeCBg0X^R}4HYx6MkKgO+ud)9Q9 zF3ru;Y4oKwcl!jK3ebEee`#=w3%Hc$ zPDy3)c{F4nZt%ER=J-;`O?SPwg2GefF8RnYVRwf89IB@DV&!ywI$??TxUxdX5fGO2 z4Yxy=Pvw=VzVWO~Q;E%4x7%+jyM!Zp;3UI#6o)%R(HFh;zy@6c6l}!6DO_qw1-UUm zFclU#U!20U>(T>4kB_HGYebeLntzw*pumVKG0+-m*5CmJTF%q{ynRZD{_E@9$u7#8 zBnn6J@G3LaRdq|jb3ijxvGBRjImOJ|l?uW*kyQGUnH|O&PVEnZBMs)UQmz8|`4Em; zt`9evo?|{xLE5nTsXiq8?ZgU;KAMj-rRyVcMN2C*i?^J_LyvcB!Gy~mkuB#XF$^mx z`3w!KkS?Q|6L7T&giRIY;}Dp%p;ROb>+lvdf=%ag)B7r8>3ZGE+^Z=efyU)mgCO<( zur@1z>Ro*1_5dnUvxQ3_L-d6`1WvQsXb;y9$<@gA72x1pxH z)9>o{_Rq4fiurL>{E%RxaPN*FLcc{4rcL$PDp;=z-6&YMROS_S1`|34P0m1G)`n7h z42~Xgce~BDXFk5kI?Sgqp~3<3^R>mBZ*5F=xET140VQE?4i5I2jRN?0Z~r*NN&I;I zoMzdOA&XK|O~C|@R>uo*8a(@H~_yCH_bB_wWAA8+bs>hw+;~BOJ2$=MPm08XX2<8^%#Uz*dF?m2q^TH zyv#igwnOK4>Ysm30{3$Bw_hSSzd$wH-bYV%)<--K26!61y#Ek1c$MBFd%j^Fc0F&5 z;F$AN=Rq6hd3}Aq&1oobJ{y<}Xnm&Kq~k%%hOZF7t?SvK#gHk2#V`(M(0*liB2p>b zC^{3JN3ZHR9b$(fZr^4b^qv}Gk8G}vD}&<47eBb zV`sCrqa9D(L5H*G>q4@cuc#wae{^$7G|eX9ecXv{;is<#uV#%-sQ{+92MDE9Hl#VrnW^K68== zCXD`mLeQ=E=H`=xk#s}E@es;l#>o&<_X&m{n{R|mM%Ar4yisjme?o0!jhO-?!!u8= z0PNl@9Q4x>*H_2(^u?neS>@}7sit~0=A>p}WAl1?p8|NfAoyN&n;>xfrM(fo%kJPa zu<#rm#?zuRwOn}@=A5S-A)T6X-#CxWjP58 zM0|hNi!mtneND$nLb5a;o5);iF>~f_PuOjw9+B>>GX%ANcn7LshyHh2-``jZf2EB6 zi>&XTz5M^P#P9!ckP6#BIeF=5enT3UvW29e*uAipdWANAYRw2bs0ZU?px>Iy5v zFR|{g+5erv!u%ms{zEeHAFxTj%-5BKx`l)v(KZ}49&B7b;;89o|8{;&xD zNhkR@&kr5&9|QXf^77XfBkczw=EEAyfXB%4ArNNz&>nv@n=nw*(*K&?zmCF0`+@yo z`Q;)0m}vTsmJ)iVk6$v;{=K<`k@>@`@$r`rb;lnT3???}U%&p4aL_Ta{xDwBF$dy?;sV-O5n0*nPK@x z@A`mfuQW8QL)76<#n=hL9ci{hwaNNnNKknq1jKPG;CX4ro_y@z3_9?a5qAZI^MHlf zg$2}d(u}3$vzC6$&Ft6~0ncChjGoDiPKfxp4FUQ3?0sew5itA_?X$y{<2f?cjvgU# zM-(q&iY+%`Y$D_%pi3KZMjQqU=1U}9v>&hofi27zzp_UE1%~C^xI;V=D$8R0ac$eb zH-F;T0*3P}@AR}RWrJtd&Y4f3rE|Z%@g8O!NQkUiqy(g^u>O&auBI`dR3iKOkBE z*{#ILM#uE~y)>rc>V`De&SPZgaF@I`))7+`HA=s;O9D#o44=KkG-SaH5fBA-;uqNJ zTs=tmwdYv~C?N#%Gh~q<)k6sj!B0P4Xj3Yi|QzAnJCxW`8-9ZwY(BJ{I7!Xoav&Q2O|HH0|$r*c^=G+On|P#P~g z#C~?Z;KcTV?7i4e-c%EO>5EjsUR|Ta*aBp8(6{K(bM2{TKWAIBG(R!BD%v*&rUqcD zYoC8Q&{D@I%m z{-nSMt0yox0-{K0(6|dvy$mKl%Oxr=>$c?c+zQLG4$xpgN2pBLh3lGHLo~}FlLOve zaGRVa30yz-SJ=nhN`l7)YRMNP0CQp7tn+NH0}ng+Q@)kzA+`1<1?UDw7A9)rBrVUC zwwC1--uewC1r_Vk1-ZBKW?KvLR1H;G&hLiZV~@^kODf3>4~G?D@@h3p`V!N}br?*g zy2g;XoKijbnF2;OLvOU_+r8c|oa2cY#lsWVmv2#h{%jB)NtE31G6HVOKl#$)KzO!} z`|yXLs9HOwr!g%L)6Ig%R@E63p}TFTR}?r|Lex+{Ww*74pt2px<-4WI8rH;#A;_y! zA7p0{7_(*WY`_OU@p*lQJG75?Gbp6yfrB}`k(uQe9o}*cu##d^gp`jsPr!#Xi5aY- zmD6hCH&uqeQDD=crsJs;qQ6oIfmEO%A#RYB{X)`={D~c7GvG=}_#Bfdw;^g}vfI%w z@e?sSw0mwH4Mw}Ln1gt;TYOyW?zViAb79Y&aa@W9X< zn!#a!b2Vo{k&8XQ(rWI@q+YXLp)?5wLw+7Rga~iC-2(NFV} zCzD;rt4tqCsoxh}cVOU|FSrvXTAsEGa0<|o6F$W^rV$cy-Ks~gBRd&nk`N0hu)Ih% zjU4%cD<-@$>4w^SS8WPOzJ;hov_TAl-YO?iep7B9c|SCuB@1n^Duntb)YK7{QKH z9$G-kyO$vFtU>4o^q)F(1K`-V4e5hl9aq zqRsYU1c8L#4|KSA4G+oba7hr0d((fC^}HQj+_A zfn?URTCulj4Jj9&4QXu*df-#Y>em($M<7c;gd8CslrL0d9CtS^r|I{EOqB~B=kiP@ z6e7WZ-&^D!7cw$>>0J}&-4+A{gSg;Cs>*;j(`WD+BGDWGpFLVC=gg#8zQ9ZTZ5&@h zVBqT&L7GV&8Vsftf&=W=N+ChckmtZUO`|qJp1O$kSPdd0zK!oDkHSV=H9Y%v4wiw@$GIX-Gk>eZg zn!OeK1Dj&^X~&i(xFe%A5AeNo=Lb1gKFP(aMP$E+OTcqnd9x$lL^s2LThX9MvFA1D z2(By?d8vGuOClm>N7U7_K(WoO)#S_|oY_OsIhV^SV=-tkd`;lOByg(b)EVkx<2~P|~}fW;Nh} zL4c+y>#o!_#%ko7Z}gKKXG&#fuJK`J-IVdfu|!W1BP>iV z*@40mdem3wPC``pky+Cd91mtEi8EkIsO~rGDoZ~^+`y}La*A>NpQeJb%9#uU7RzZ1v&ajO+C&P~&-4mZ&+bw8uw*ZP2nq8_ZGrln$4$;mp$K7E`3A4YmT_;0%ysx1|fYFNHsEraFMCY?jSj% zF}usfe21wE?ISYk0_wcTcYPRxy?!3Ka4f9%9lYu}=q9l41c;?}RnCMK)o74!dA8l{l-}TOmg(}9|onokYt(nn+ z_>^lEeZEc1hPbq+)E9Zf-@>3(!!$e5o>SOuLcBBF59VGqyEfneN||oBd#<)zH==^w zaSyp2i$4xOpwA7$4R~@8+}Z;_q3Wa|irI0rv73G4S6&E$MhD%w443 z*vj!tq!yM(hvO31gVjQNfy4Lqy$GHIr|)=L#Lk**AwQfTE%|y(9_6%>5m)! zdfJC5+|#gdmyr*rRjd#mM&)YnHCj*Q5DY;l9tHA~XXX109cUiC$%%1@mVlw}91R9m zFu2!1Y*|$Z6gD|uG4FLg=ZN$K1$9l_q(3nc(ZeBSu&C)uOgr1tu({_tn;^r>wm1L1 z)(}kQ`fM#L{c3%f%5=xg!Q7PN+rxHlXBW0*1e^5MDp-Og8^!zE5XS<7fGxl`bhqH8 zDLWsL3A|X0YKPcfnv_vvjLj!@g1MVAGffx^L-KkV*b1vfbENO#xu22D;=Z);$nBr^ z*8B1uN}Nu|X0HXFwU7F1YHhUVyereti;1sekd#Okw_-^(3dLN1pQc)E z>z>v5vSD_f@eE<{l3k_7O6GZ|{Qk-|&XwUOJl_3+UpM$-(*C(x2~z5)S3UWt2z^ zqFo%>xVCy5dw0NRU#;28IUkzvw<~WNSS&YXZv4(&-3E*M6Em%bM&rk!eHI=WUwF`8M+byK+6a@c!2npGF5$6 zs`7D!S)b*M*xhoJ+EF(7`Xs%YeT7hmeWp94GJpoWr5M>gDKjDxXea!NT9peeP{pg( zP>K9JdFQpTEg0_pVK;3Akj0>QF*d~mW?e(gIm=Oj>Oo8|Ka1cL8(RPN|ot37F5d7MrZP9r3yMd6|d&o05eb z#6s6~cttE7i(Ybiu`;W9eL!MDka-c~#55VFW1)n`rf1J#mG43)%pC1ud)TX+9@Gmx zmY}d5&qaqieA%lh@4Euv;6|3p$}hKi2U;4|tM6BKqZw+%Rq8K>Wi-6F=7PdVVN8ep zPNO0;snVF_Hp_t|$>fa3o{TSOd{f)`s_1D7gCI6%m*&dzuMMNa6hRrRx}n3!=1Psi zRm=Dn^L!@34uW|XbiYCcOL|xInyQPVZ$z!JKIcn!EI55yz=2pzmPVE_v3Yv{Fj%B; ztYucg=&a+?NgoC~W}JqR6ZtA!rL)!hmD3U)$r^Ua6|dk*dshXU#FuHvPaV{i`MbgE zPoyvKz;$HvM#6wKU&*Wi>mRxtUAe&xMEa!04)(O? z7!er9dBMgIt^!`DLOSG2maI=~Pf^zT-5Gvh#*zSLE9W>S+rQ;G{{G(Ma`15D{25_m ztE4YM(%_$d7C@X>*&5FSo+wlql-J z5~z$4&~PP|?K}d@fcq^ihe_Y&c<0N3o*CfxnJ}kKTGtLyPYqR%Q4f!=sn7+6RDK)= z+lt%?q{tc}KIsgTA0pXr`Lbjz?Rxe&Ds^@`4wSHXUYu;jETv;6u76u=w>cbZx|!N{ z5431$&h04cDB0_fxk+AjommZatHtEBMQs31nO`J6;!;3P;ZqD;`pL8?i4xkbT9>4} zgSsTj3l57fCp%`@`<2L=)t{HF{t8D-CYBKUt1pcm4r8r zzGE(Gb_BSDSZ#oQ9|77v#LqOrhx>Zr49Qi+4{lXavj_skrl)a$c~elc5>j>k@BokI zDv&_9h>??^jtzoY%?96y0>Yrr7%v(qL4xULrVAwtptcnSIuAgbL}*+aDr)CqwW3`< zK719;sLN4hm&YTsTWqSX#SRzHyczpG-*fp_argzv9^Hu4meUx1FseqKpASBp|C!c`~wO(Zwo51)@ z^j-CJ$T-Za5+Tej*DPd9{mo?)jG!YYv+$##rcX{(HVQtnz6=9}7kiIT9p)WDjzX@Y ztZto52O?KGncg4;7=i&L`ecPbvXDRRwNtXUoU3R~nGcz`beswqJ|pgJmQ)=mQ#Nhe zLbjW{uS<3tWI6Atb}pij8rZJIq>V933wlO!Y9&tGV-tHvB1riXD4*}1&6cAVDz>;ixmO3>M z2UgyBm{*rLN9Ag1Ll*{XXuj&s-WkES&coxx`>c87O;y&k^_b6DYV_098RrRSL|Q*LR<8X`KoqSlF>P(#$$QNzOOxOFz!-do7i zl}k~WL5i(1R!bdu`8Y2}0V@O@&o{4)%->cx#+EL$S1h={=F7_^0;0YHBj!%6{%d6L zqr2wcg$DnNRLk?(Ia^zS?Q{yq&D?B)As zwKo&nM}CBnk%{3i#Wx=FN9u<5!x-@EqBDL-v+0;WOx_>3`;Tk^%SWQ+m*M-@to(_( z`q=*UVf;AMhlzmokBraXx%3|xtY0aXKYRZE@_GM-#` zWEShk+0wFnBu##UU;Ty6|LZukA4c#GL-`-Fgn#1?|Lxy@LbLuh#QzwfMMwKvlk0yL zpJt%_2Sc>R2Scm(SE}O`spW)P41pyOnNQoCW$*_q_ zW}enlbc~*>X}wKU+mfi=fws)A4#ZMqaHBS|F?v{8h(_6$&}tUS%bym>*b(J8B#H|F zL#-3z_Ov;fy#5%GDH&ISL?AE^L~HJ|!T7NHfNo z#e-o;azS0mUCw<7*Py@yTg;Wz%Wp%&7s4=MTIDe;!B}D;N-kajhJjOR|MkK22UqQX z295vws{C(fEdJ>5{Re3L-!Az-JS~1}`~7>yf{E?F#>UgK{zJy%0~?RD;QrqE+H^j% zmT@NK!@pXg$SyjMIxX4*RHi20659t66$R_yAF%FC1l1E5);-!1&LhgQp#c@Jq0K?%A>656z&u?^f-~*cN-8Z zGdamc`#w{;(+Xgq5nxmaM?_NE8w3boUJGyIva7-uv3-q+z>5n)o1LC51EW^yjw@i> zbf;00AiJo)4Tm@D3OTm*o@Z6X{0YJfEO0bh!?m$+y62L~*c z%d3gB-nH!}acjcr#eByyb(y1`rxBP0;039UwcgV0$o#mxaubcNtI}&%WAwNS_+sKx zXBK=JuaOd3uQ5qELk|u1j6(7r&fYtzR~OQ-{i4Yr;hP}dgd9#|d?#r}q_R-_2F07G<=QG>}WmqDJzyiWeSG#J)aMTg3u3gg6K?yW4$_G1H8bdPt5ZKqWjss6r)m=Bbqqo(aa zrugO1z%6?-N6CV0>1BAR$4{*$B6h9AgdaCXUXg@atuCa*3Ry`MYngzjM-qur%q0j^ z-e~>o=@CP^l<5+Mdo~O!`cqVe46wp36d_vyfXI@gyP6z0lX}u7EgWp3iYETTk>+8? zKYZ2X(~HA`W6AS2X$ZvcL5Xy}8E!UK1NQoKcY})~!1P|Sfi!IKW}?eq>wRtj8TX!6 zENiqbwEkpT7TAoP)9QgFBpC|VZ(@Vz;f{Ll>Yx>?=55N z*b;5s#LUdh5Hl~c9W&c8Gcz;WF*7qWGc$9{%y!JoG1GH)-|n*;-s!&5mEJwllYf<^ zRZBH%)?BJF$N0w9{geSE76QXmN5i8ahLU3eHm7(gz5euAsPLR9sco;519n^q+Yk9x z<#Ua6O(?2XeNh$#D6`fkiJ|r8>;g972uD)kS>{=<#gg=%60WCs))uJsVZUP`h=WQ4 zwf^o$`ugt+Qn1f$^uz+w^&G4@;Bh_-8hOaMSkVqb0?4W5k><=o45=*2K*B_(!dkFp zSA^_5fZPrBPZ`Ft_8Nx2XqjrUhSPcs=4leppcf<^f}L93fMdz_Bs_8bENXsYuuwYy zxuL5x7ZCROwye#YN1Lokm?{V<;w7=Tew$19oWO$(8^u5zpo4KEpS-xmDcl4K-3NkH ziw?$|>{iZd<8E_{r{4}Z?Fd_M>PDMIW9Nx49NhEe=iBw?c_orzuKC3;#dRYWcp~4NtPR~$w9o$ z#g^&P?>lA>q}LpgrjhsIx+TJE3FSAWNI*K`%Lg_yC5EF8^!S+zM6Ykd?xz#pG>J%W zk_d|Bb7n7@xj(@Pg&B#W6WzDR{==6!h*=_&Revfx_A?gaz#tXcKq&x&9C;W)oFgcH z@ltbG{Aar#K#ago4IB0vCuKw>flo^hj5MCBS3iVKgIsv-29A#Qr7>^#hKVdyC>bBZ&p^a230f0nfl|j8d6(&A?dwrG5=sPDuYX3AP z6bavYqzksCPW38jM(~5IT{@3Wr`TuG-Los1%c?w7atBJJ9RnH=$@cX~x=f?Gu)Ss? z^4Ti(jPeX)pIbf>97y*SY;#Z~wCg1BSAr5;Zz(DgG&&+xNaRw+nzbJpH~1H0+gKz) zn6n;tf(1fPteE4S-Cb|4Y;hzP_$A3Bsg#jYEoEzF=bz%gvX?7<#S0qfiBC#OREk%n zuGJUQum`wQEuzl0TagWe>tkJj;|mfs0QpPQ-0`^|S!Q#cjR!+-DU1jS(!w`1)(eT6 zhiO<!yI57W z8C>;RnA8##AM^B9W|**?RA(PCzMK|;ib3^j)KZ{}?Bz=+CF99fGpVoae$8@X!V_1y zam8S*Q4#WjnRL@K`s`R307|ach~b;7LjIaTA{GP{P%bo^0A@@ga_D%_(p}-5%CM@D zw))-d>1HfxSF14fO~lJ0KJI%@qYw0{eGtCK!16;oOMa>6~e{5bq9rL#omUK+U*Ii%Rl!^ zI>t_W{EXk--sG)L78fkNbYBab-n=?PXQVqdy2mqw*R)K&iQCp)V%vC1Yh|lY&T-9% z?uLooq9ndrckkcZ7S$!OS!OI7e}~N4ykCeask?ZO_^e}dc);uX)yosQV?`HIfl4c` z5AplbZT;HR>|2CCb|xnvJ>juV*g+yW|}LGPo=(E z)(|)w*~BJPRFq++q*e=PvrDTtoV-HXr@+iDrW^sKYNoD!`BT3JRaVH0T!^K<~9nVLYGpyd&d+t8x zMP@4uJ*9g(q->El_5JV-E_L>G?fJA^tarXqvZgNGcPM0jaQtUX^)Dnx691&m+3?S% zA7=KgAFMn2Lc@iLY20hiK21ZOG)bwSCmr?aSj8kETBnL3;Z6sm-ftu;5PVmZ+>BI> z4rG9rjI23o!7b|sDV^M1Gus3wi+bhuUb9|TFAdS&Lf$zy*W7hpHhU9#il;jhtuLrgE+HQI=%3-MtK6^x^&5r*|dp5d7@_Se)^i_XE>#Cc=J$MTR+A2 z`PJJVSh5Fj>O&~1%ME)w1?jGf9!^+l`->Tt)21C<(Bx~HRJER*fW{mmx+9u_lD;SJ zbzAlQDmQg~msJgR2haC=uXcDsYZzDk;nk=nh*ddjC^#aHFDxMnh+4gEnB4Lgw*gwn zbA%1x1^2mYwDrV9xgEu9hI5o30sU66aFDdDs5Ow+&0mXQc57d5Lm^|TLv-lUR3`R) zfnVQ#20H5Z+`j7f$cAysVOEM#Q%-=6YtWi}eQSN&>#6aY!M6ts>&pa*D%HT4SKZbl zKBb~I4;}JCdL|hBv31>FYeTRF|BM7=OS-13yp6hOh+fw#B#MFLzJ=%l%JX>w)?iS^ zg;At46BDnrB4RSd9($+NQ723~@+d)|UI|RZVU__GiCBFOhS0l|n}HKL!_cSfmi(n@6N*T(X+`)|3@<+3p+h6 z;J0D-uLj`1!L11XFaQHS=<7^OEbJfsk8HGzjK2-Le^0skt)P7vegBZJn3+DT!N1S; zzg)V1vkLz+_ln`8@bhoJ&Hqk#V*E$&)#z{VRp4*%RVFRm1~(2uPD9bpTy(SNPpRRo zviiZcTdQo+B{U66gUkVOtQmaNlYuzzAE`L!@~c zQ$eNI%IgMdlwSKofe2ijra5sPm0*WMrz(&_$(zIj#b3e>wB~PL z%2?tvnosG&`|R=nq~gT6%)~#CWzc0(ioj)*b59};(c~sO++J2sFlcT~Rd*XuO_?@H zM~_-b+#%^!w5r)Xm-^84)0uwZ8jKhPD!9BPXZ|W&xr1kFinRad2bt+lCe%OA>A$JD zzyJBKU9o?e%m1;!^hc859|Wd)KXuL2VT0|4-EJh80of3Gl|xw(2MC?;OE zSeJDi&uirnxF(2@@&OT+_#-r;kd#`D2X ze6`p8bv(ZWQ+4!i?dr>&Mt_;n!pjQS6jVwuo7IA47|E(*r${w7=BoQX^BVJemVO2zP0;E8HRr{Md@@fKYLkz zGZuM)TP2SUB!z{>LU$YwVE-fledN+NX~c%Y)q#10s}{8LQAo&Y$9wtdg_XyjTdaoM z9c({(@)kxP3FHq>ySe!OLkTFtc`p%33GG9|n^vJX&@}??j`#y>C@g!hkc|&|hF#7@v;l-sO;o{?f#dwl5>s4vU^7yNee`DJ7C7?^l2s1-I>l_o?BB2JyAG?%_LIH1l1RTsA3N=3h zRuE832vBqQrcDV7TH+m4$Qugr&0C8!{Zm*>_c>ZB?*_jFR17poS;)!Hnhj(Y!X!c` z^hogh+L|z?Iqccqwr9|%9oEa+{3kqSIt{tkc$puIIM3vxq$QL~+ZcNk& zYwmAym4Ko(*#i2WU8v?%N>Pl`HrkWh;tZ%61 z67;j)pL#J(Mh)!t9X+ z2-(R=y<9Z9;R8iSPm`K52qh~O_(NZjYG5a+$emomXvnGi0i~%IL&}dtW1}Q-<%qP# zm*=*~m(`PA8HSee@zddG7Z{+JI+3EX%%cp7W>g&jUM)j1XQ)KXB4Mi3@jV5{^lELtE7DAufAtmZ-&?;?49u!sV zhhMLYfibLBU~Z%5iE4cQv{%A`8t)*0Y=XRn68``^%~uX1Wo)AoN<4___G2#goX|lY zkS+2`O)=d{LFcJ(RPe>M5hvkP}0t)&y;kE-%D*=^4F^#fy|~DpR~jTKZ?j& zOIUCU2Q_#@fnp?1Qg=%f_3M`pWfC8gWHsO@$oFQ+V5CGAS#uQ0%nR!SM^a1X6@%zy zCCm#IadjZ%Wtj+9I1q+P;lwchgunV)+8wBscEO7RrcxPUrxvu3IWPTzzjD4uOrD?U zf9l7`MS+#Wz`)tkBi=e+#<@Gv_Z)5Dsi+4sR9zYly44j}8dJgWrpnO-uRfsPX8{9} zNeu~jP`6bKSXh@%Y{Ke&TMFL;5aZ<8NbM=kCCn?zq<&5^brxjyK~q52=7z%V6OU04 zLETH5ekx3*U}3$?Ho1(V5X1}8iya~)^i^f}QAbWe<_dH+S@il?u-)gGBsrL(OpP{96uS)Vm(`d3P7h8G)&N$(_bASUO0G4^Qax_y?}>E_(P1c!KWpvb5 z+?4A^d6BWgn!MEXcH554MkI&TWdq;O;*2uklmQP9|A2@ImldY4Z)Vbg-`#dhr#W+J z&3qI(FzY;Pt93i)(yNe-qW`R6>GP&r2N#ZGqm)LOU`WWjc~0Q!dKaDHi-6lg=wsW4 zqs1Ojveaoi`HGFF(qul%N*0GPd=iDPT=({r!m+)KcCFr;R0A=;2AjY{q*1*RPMx%Z z{sj>;gR3_tZahDb>jQ-4xl`!~Z_(@x4_f9`7P;c?-~P0$J#sRXCCh|p*7*dR0-rQh zwUo8}0m6!t8>EEQ*uTtHp3>Qi#ccFqvQK;*Qm1u2nXB?vlBu=oZ?9sNeA_5PJ1{+RNQxd-+v?RjZI;`#vZlW6_#dX!urt+_mO- zN5r<12^``!*%M*>Mp1MzHca9dV*6U9yxva2IU~!p2U;q#^47w!)`blgp!q?;`pl(O zX8&#O%Uv~*FpZ(ep<3ipoq+1%<$hy92YWwHog0fGN}iYl>Gq5taBLq@jf#t3&mMC~ zTrQa$vNb+6_g5o#Sq;>tXD2~Mvs1+qrmSzwh{4NHPw&Jggi6EE-Hud=2fW1gv z#L*7p_`rNz4gRf{cHx*&MYU@3bAcSVF;cYlM48&p`Ep+pKTUsGrAqZ^(rRN)u)x~( zRurdS2gjg#k4`6H>O8Vpiq03rkJee6+B0K8a|d(K$N2L}_U|%yssj6OA(G}UDL<@s@MfPf*p^8qROf46`agAnM@)U4W& zjEoVl-6hz5Iy{**0F3C-7N^aldZe|Azru=_?pMJgjWi#a)vt_)a3*l7*>p(PW#UL;Wa7A|r+RGEF7sn^&b$Z+ z3Cgcd5CTPX@CR*VhO+IxiZFyL>V<2TX`I^I^lYYSR8kS`>f}>eDmrlOF=$W&2^*CP zcT%E1QlWxS2orcDoLemuFPB3ns2#FQI{S=7MCf63@WVf&Jk;$34rsSNv%REI<+d~h zz3H`5A8ga9AiPhfho|%4&^bxJ`O%}FrnkC!m4INL6+1OyU02VMm0Q9g_0b>4b+eCZ z2$6UNg=`UT`zGt+Ax~?~HXJwGxO_}tt;`z#6c7m^@+d~1MN{bZonsh(PbP<}T>&0P z2aQkk5_7FU4tQuqJg@u){Pt5qcjbD>A%r3ODG@O_(~F#A&=Zj&|2F}s5fjE6as7h> zZI7GVJvxq*&9b(6^%0J5GDdL?W`3;_o)X+bwZjOp;*9h13>mw}wg+JGvQEueh>wvT zU`3F>hbq&}!o`mrPflij*TW zxqhU)Uz(C%=gfB5-UmK!FMLm20yFwGOuCgFfG}uLeIhBGH_>f_SJmU|(@1SrLr)!+ zuB(ciC$=S`86+Gb40(X&>VVi|oIaK_9m9k@A zsTVnM9(&3=ufdi&WCZ#vw--zRN_RLxce%M7QwtJHoXpd06=ix~aRem95L{2SCW$ca zG&`;n_oym@tVdMNMyQFi9PU_8;;2BA$pP{l+njZ^*OcA%qX7BC2b!Qu{#`I1?(Qmb zc$ThnZlcjVg}_FF<$^rG5@+&~V?hTb^H3!dDQs|FpzL!62B_HAF_qd<&D%3&WVl&m zxuMXBI7zTJEK%j4C#1HDGQm*~1PBp~)W>LyfMz)-^&v^8qNkblV$Y`>dQN9qg zAiohec|Eb} zDibUF>rk7xlUekrr&SqhuBuT#dk*wT;PLbW;OSIq?`o#vcN*w;%G8>gSl{nL9^p3> zTAevlD4+tU5~bUixKFP1Gb#sY)QyiEZm`RY3D%*GxAb}f@E9PW`bLDS7LAzTb;iq4 zs=qIvRb!tW0-|+#fGb5&I+U#gU>@BJ3v8zcGK9rT%i~I39C8q~N@FvV3+SV|UXKnA ztgLYL6RoWmPS86RYF*Vw7sk_C%x-aS85io}zMP|K9G7w$^VXgRMDcn(`Y|1BWOK{~ z<7f@7V}zBm)++;_+(4n_OM-xZ+izhly}l|wzB&#>RGndlB&KFMh;<9V=uEG-H=($% zq`vL$Yg^dxE(-$*Ndbtt)!u7OesX-GvX0t_4|?G**Py)~@_9)?fP+E!z-q35wxQTG zUs*^8r?6l|bA!b=3g?y|3@sy%_8CZaU~t}6Y{-IraLnQioyIJvwTp@oOf&JlAH;Xv}*7!(U5}w;5xY1PIUv`zp3< zO(BW>_Va5z3gZB-Mxu7_`8vL~U-`Y&BWcKy=A&pMvEpt8EZovIm<%A~ad7ppc zN!$WaMY!JpCvJkLqr=tu{nF1dqFW2oec+*72~f_=IUzjUq1jav^IT3=O`BxvcQL}T zpyZaj20OwnW6IA(UEb78mRhQ}H{hA_o67Gy70{#Tup`juiW@I?)TsPuTY;vr zlh$!)S_5!rT~-IGF8J6f580vRCbyQ>Oj&9U*CaPHrP{dci;qBRA27j~I4hU)O%8jL z_zk~M#-R641%|-v79x^3gt_avR3T~@*dMGQw~Ia)DY<2>Au`5}mdBsNgnq&iSj+|_ z%3r|__QEmP8QIWvoh@ZGu`HM#2)IveQzg+lcyh8ts6*U(!LYOM_%%vjp9pNpiuU`z z$_&%q4JO{rP78r9CTR^6w<0OEeev#f)IgjkZuLGAuDptu6v?dpUOc6!!v|!^wqB&$ ziYU%CF>M50m0S1&0dmx;ZQX|`8Wt`E7vuE8whb3Do%C~u<~QHNdR?-;g_*hJk!+|Z z#;-Z%aO@rac8VNYU$943X$T3IY*z2UQ?aeQZ3J%2x_EY`UHv6zjPW{OFA4W|*PZbJ zbB_d`Job$@0OeX&yW6cJ$H@-<0<=Yp{6)|dUHs-`4T z4cu)#)KlERN+obKej<`&x^$6@-68G>qcKq0IBv*_pr6!5(3`TR<=Z?+<&X)pbr}E5 zY#1c7-8bh|DwP>NQ!A~r`5<*G&-=JZy0i5$3-cE1d#lC#(A1-26+(CWTZ7y5Cs5e* z(=7Ndte1zqo2qoTsB0+7@p%{2u+!~N@T*nYzR3ijPmdjqpF=|M!e&bZE~wN9kQ!bp zrclE)Rf+XXA#M#fGARBIvtlUXg!_Iqq^uH&aFOzC)T`|Mwc&C z-aMX98ICR#^tzE;<%Ty+RWWsrF`NCrf~ABwgfNhtRAIpKVtSZj#({*Jj54mm`(hRk zo|T;oSI4>bV`k(wdQTH3S*sk6ht3bIn62wNI@)dsl&_D+!}K0mSA$i+dV_7=RXWEx z-LKC?=ZK-ob40uuy(o4Ht=c(vq{VOtJ$Sc_uz5XR*Gc0tQ=JyMp`ENXW8TlF7d-Rc z9p^21@ztC+q0Pls7WQ*3{Q{*bU^eM#tF9BT6;~yc&=VtM@YxuP9=!4yN=}IClA^K~ zex~p_w7`)0`R#dV<;gpsiB#xL7YgtnZTlWOm&){F#K8}mtBMoYN%KIq9I>zL>Eaxr z^1QDR9^Y^}37QQ9ZXYqjXj(aGoESq|jP0hqOQ|@LCQ?Oco)GIRxz3WHm$yK+=TgRn zi>A*Q)Twhf3}?$%^p7XhOlfhC-NjEP=H&=mnUpzGf`wmYZ`85~f6e70)7g_|xMF}z zFm6$ur4>r@x&^X>UbScNkNq0WiNP30+u*ZM^TqiQ=55w5-!!`e8({+w@IU=#4yTcB zF`tIk<-}LPpWWoCk}OcEAE=#E^j*Qfa50-S=!`?Fo7&GSl*BDAO`uv?X8G4_ypLC6 zFE8f1Xq(%89SL8)@m$+TAn`HfZ33|**^Z($NtA=uA(vESaR5XX|0ohdXIf?`ePA^n zT@bjKJsSu8erJ&{xW@9S-F%V0zpqH`&|&K8UV}pPQo;n31rF+ zs5C5Caj~^{akKQ$xqsk+nNnSO0L5AC*`^J7%ij~zn>PB?uRAukFB#I4T-hUf9+-1f z&iWR&^zaq-s~*f(E--siZieK8ZOnlN28;ufO%u_)JN(b?*fuU}1)K5pB{fxIn@h0yHmdD@vGLzx7X?A(eQC{D_zG%Z%cD+*J8G$MMWN9?MRgRvt@HLhE z)TqIkv@U0~kru#q>s#wu^9R+N9I?l0LWBBgP-KXreNh5i-6* zyOYY1JTwjt{!WH-UT1U!Kig+@empgZtqXR~Kyhkn(r--M1cQ~riqSppuW$}T5&p>? zBgfpY5&SdC`d3*KUT3AWswox=!b)D?n`AaZ$RWI~?f0QAM#Mloj5~^kSo4P~=Z805 znlYHjSG!vF5 zP0loMDm`>M9M}F8kwJIFl5v1FJ?%6g&(G{>5cBfY_|oMi!>huR{%ztr>UmgKUGzFr zmY)FzruV@W4C%loXm*S<5_7jjGiu>inhk7S3b(ms8)WK0_38s-(MgMTwq6aD?>k5a zz4YyY_vLYJO5%&&6Abo54w8&y|uLjGrenJ0ziO!pW zE=9oG{pA&D!we!`GyzGhT=I)9RUA?X4Fm60h~Qo8b$ouvUQYhCC_N>qdO1uWm=YPF zE!IIpIkwx0G$A1{R@`>9j-sX3dszDjvW4ob zUx_l%B7t?41Ut@v(^B7}krtbn9^{J{#257Lj7ty?sB{Q}mY~c0jI~V;OEWb!*S5;C zTnz@vPJTl3_@4@H@G>Pz{wz=mN}ICt;=`WP3HKY&$YAkQs`6zhrhN4pC4K0&d}ZKd zg4o!zGe*p`YU#qGx%GoWrX67mzotL^(k1|@uKDK;J_d$AF^c|chwtC))c=im^FM@B z_LrT*KX2AE{J(5${$sM`kKy^($(Fwj!rwMS|G$j3{E^UL{1e`af#BmB89#y^0QTRB z6$X}%-u4eb90LOz1N*-sm3=VD7(cQqe}$F(8$=oFN5qAlnf>D{>V*}6v=s!;JpQFn@zUm`w^9Ks-FX&c0aiJec8kP?f+Xou#H#LlrmW};4G41~coc%Vh{QmnJr|rXP!S>tY@mDI_$1#BE z> z3?QdK31c8chV>Ft!k4nn8vet9Tg&w9DoIWd(;q4iN6ted>q}o2`!Kb9FV{_NGFqzV zo#osss}|nA!W-#v4Ko(z+$LyYKQH|1{u*CFb#~u&)OeR_Jh(Ux6c!EIBIg%4%?hQV zPm7ShRux`Qpso5z_U>~yU(Yf!iK*HO9%SDKhbOuk?&cs_uC1tJ&8R3bi(mYpyI zHae_myu1NeO$(=~Pl*m?93a*O|SCSoEUT$!1n!c=9_8hUa$@%5y_pX^*hn zU{#e9k10C>eY%tS=P+Cwxwxn0sa?G6>n-R1yzqbcdH!~@{%hU;k1Eanw($L@=8iuW z+kfDl{V`eoZbkl6*6^?94p!!WmmXqfWc)jJUIhTs0a-crwoN_AQZ?4`fp5ubdTA*p zBI?cuI1FVq)=)BBMmCK&mQL{d66F4xEj_(tI1Un7w4Y?)8YVem{`eL{ibWz{;W^4puny0JvK~rm+mu8oj;_Gp(&!_KrVBbOCbN79> z-(p~;`!%{(H)~j@pnniRU-dXz9PZqbf19z{_aJYb!9<_xe`EcLSwtCZ;no)w z6BG!|wox^sA zV4{!VGwv6M$Ck@?-CExjT7v*OE%OHO#h(=5%LMxkgf~y0r^X4uazhAO0iu+RN=8ws!cxrWRDwSMg?_;y`1;DZ zhuJtqp3quLcdh7R>>}g>xJD%j((c@d#b>LZUPQ3)li4C{MnCs?rH5Dz?oq6(m%48F zjX7hbF70yFUH4V9ju_I^RCJ9SWq;4wAMdEqlXg`#mDBAxeQ8fuT~=iZz`Pq%kcgem zmXQpOnl+pI@?q-Oy<)s-Gh_{uxds7gLb%*NxH_NHarDYmzkD#{=^lO9t_7`9=7;>8 za(`pT+6g2-<+U7;zP@PNnwwrJCat%7(8Ja0-#uDX2I>`F&+>$@p-Cg!{?Y)nS>CPD z$SBqyvL1;PsyL^%LF3K}B4EY4A}WluUFKg}`S8Mp5hBA!|Cx|od;<)doXsl}XVk)Paz-W2p`m?r2hc?ek3M_)Uv z9N3s2WCv7s3kcIrThwDC-UwRcLM_*470A=Dlb#I7M*F~lgL|^%t0!xg1ibp+JHRe0qXO-EVot9S=1{lh`ikAsK`5x+>oj5ILW}uqj77-|DS)!jq z-z!R$d@0c(I%ziR5ISxb*aQ}~qb)UGX-AbKe$JL(W7zH{7bi!4H-n9(Knaks6%*`vPh?mF$8E&~l^4H=|Gs)S!rwb7ja%Ndcz6yfp66e*YZsgA&4U zgF%?D$CTU#gkvz7Vgf^xLS1zj6y{qq#Q;msIH5H504xRI!;a>dLZ!7g)4Hv}K^9XJ zfe^|Oo}5%&6hdqxD1sDX2~v=X@(TkKBgB3=7YBHFD^v}z0%dOhjOggI(*eG#=SsJkhz9XJ=t%PUk}aExg~7vCbZv=DaRkd;HZd|oxXh)})#4Ka}c z8A1WJf&>=t2~0st9zVpf0YLDAw8h(s7dmyx+cT=!O0_m2scMwdFw)@p9JoRO24F)f zG$VSpEs8S!n9&Bz<0xVB%*&@a0$Wx1ytgk?Rp`8St4&+b#-axYRlJ9ACH-+*nptoA z8UwE>vmt);f@Xa$yN^Tlk(u3S zB$$h39YPC3Lvz2j@qsi1q6Ulh*V@$$S8$@y%H6Qxc=*QSkzN!tSpj~b-0v4vX+Ns4 zJl(ry;p#&dzpoOb19+QYB$rMm>{Peeaf@Nps3dPhb>>pIV`J%!)T&@FwwbC3n>34V&$n4?flp-=B3k}c9Um5%Ji;hz$hk~^PKEX_^3d(2PVZumU%)_B+) zH{~B`_pfiiT@DO^osZP4pM(qTqMUC6IkkGT^23`2*Y!GJA$H6YAH6pP=Tk6{V<4sW zZ$?4Z-R{OdI>ZlGici%(D7Q5f1ZQsQAIGX~` zzu8UrwTZCRli69+XPm`@-w?`Odg=u>es<&*#q7yp!fYCfFDd^*pRy|F98cNv^VFAY zAC|kP*#tpwbvU5LyX(Ep^BErwAGS;X;LSD7-gqdKo0KXF^|4*=Wnt73leKv}?u1y##z|xUo7wJs53|k5a*BF+m?$sQ#lMhuGEwr)&g`C3i42 z?yNMXHiBI;B3{3Ge_m8+Rq=wdF}DU(tS}xbh#0c^908c$ouSIOguyF?#839*Na@Fq zgdq!GnQ#WVJHIpv0=HbredK|4w_X}a&ba3w`Mo27go)dsOc-yZw~M%}Q`h!R_maA; zZHZgxA#@9T4DJr2=e#s9Q9Jd%Tv%ys`PZj3z{T<0edp$)lE@zPJ*OAQn0JCw&fB zeFCNOuqsq^)KFhlgOceVgSC_J@3t;=62BDp_Tp`{VmXQmD?D@&D-uzQiSg~D78Joy zT)#;5PX>+j>XHz^SLSs>zh(w4n@Y1Dj)j0#pOn|l88wKc8nNmLsNE73@kxPr2vXiToZgSSB+D(7q1VE+!rtLgJO4*+N)3RXdqVx$T=I~NH1KivIaV` zuet}v=EtT{TQZ-d4!kfYw%ac(V5}}qHo2NRo*Hd=?U`NrURpcr?gJbd+*>s2**nSpCauCg3JSM3TiN!sG{}cqY-YW2WT}^CSmwHl z&DW~Z6RevZtQfqOE$fx|khoh?6~@NP8hiyM6i$m{V<|!V`cGZ<;+7JKMgR0?_m9l}5=$;u^l=TnM<&T8y<1U?SZOiwDwNVhYO$69QT@^tVh)IV8c9ac zhdmiAw(%@=#m}~*l$bE~=d(?jxWBlzI_n>@!?Wq99BmeVUEMy)H3R69IaDZO`v z?tQS0oEMbmlovP7;JMp$lvDLX+@<~OH@4yG3u)|p9#s@!XAh6)Q#ClsdJJk8M9KWH zxMJOA2oU1>O-lx6g#uJ-27!@t)~ErPasq9i&0sOVBpEpv{kmYbfwRA4sU!k)avMVuF7rvTy~k91OexyMwUMV@*VNt5n@Vh=-A+ z)(FuA$xfRAU1aXcK?`TJ6@q5}c6iF7-p?=eZ{35`G z0fQ!4qymX*`g1Ioec523?^~qW5sy*A%$RNL-4^JTQ3HY`@p<3Q#$F!qhMBSB?9+8X zy7Nmq=gUDMX_qs-&*+vPZ{3FB@iB(K34X~sH&1xR+dh?s3&&j;U!=y3Ots;f=?c@^ zJGgzSQ_OpF53VnGyff4pkhe=Q+?4b=e*M0*$pKuq#+~lo`h*ws8B}J7MV_^=gp9TW zfksXzj6EgqqRb<)F=eJ>_KVsSBRv1A!un~-FoipSQTgaBi65eD2uW7gk?HH_37*U$qq}nElaPV=fGS z9WAt+_PQC#ss|%K#%LKDjY62zXUAeBVbMnv>SD$~8}y85X2x<$6orIXLEDvM1U{32QUnpyhCvV|odzq0SZljV0V|E#ny zd`PeVLTdRp68m2XE&r4FQ4D`jV*abEp5c#Z*uNmu{FBQ5dxZYA%Kq1J_`gDA|1F9V zs57yAh|M3R6RaPa=vMkadZe*{MTp8!Gq7Hj{ing2z){p->H zDe%)@Bw^+ciT5ws`rq(R|4QurQ^NDV&E2uH{+aHh88iMH_%w9k1%=xtFd{N*5P)#l z3TL+jK6>}5q{1O^fFaU-cy%(d70xKQPi96twqSRPr%~8lbYqQ#^B28I9?rzwm9u$=Ue1_yjsWR2rg9#5&7bFb zXKaxsT=}`Cd|L>N-1m0{_=rfc73!!jD|9E>k6{lg)L*63ZQ1O;0amqgPsTBYG6HA$ zUQwipr;5GbVik+{y>4lRja`GKXSoE2w8a!GlFw5b1=He>L={ehe}o?Sn2NAeEr)HY zH7$JA5|^`e7+fKqPQ<2!H&{cn*!3z+k8o$Tt2usC3!fco8q8P&qokV%z?|7O`PjH# z`DxkYR4a$tg|Dog*!|Co2-Ba2`+rle{p%C-AFH*01Y7?;ipTIrX7$fc_MgJ8e^qPQ z8JIt!fdAcO_=tG^9scV~4blZ=D8XxfNF#Mxa*~o6;-Bb{?7kF%?-K!LpijWLp(W^mw#&(c zLVkK*(Q_f}H2)N`X)n6-ERDLLvez-NiuK@=PiGGc_M7ctO@&Gqhz?gB83!{2*(GqY zxBuA!%SqF1!TZnGgU=R>JWcoa!tSxPiE9yt$c;(2#Dwfa^$-NN7z<3#Y!;7eXWWgt zQL%Y^-#ZDI|@Sy9uCGb zMGe~X6Xs_2nO~YaxHf}!E9Oc3JE)E;r#+0zCoekuUc{p-I(Mw6VN&Eik`x%~Nd_43 z#r$0Cl~VrnUIWp^wM(H{2xLT`7jDa))(2t-)_4LkKWvZTcZklWYmtXI<(sY6XfNz; zl!OaZ>v5?~zz_Q)pOX8Ab$R1@eNkJp(JGeX&oiD>hP&^RRY%+d|OjV^z(a?dA2w)jC>U8*8UJ zN`>)=qB6G7aPGAq0t722EY}bt$hBaCLy#h?1d3VSHb7VbS48P`H`+hAy2!i=v-^KmS(0BH_&A{D%n z7!?G$eBR zXld^OoNvb{c^Q2Q!vF_rX%aIHf6Pl(FzctP#>D{~pw>-XAbX)@tf z7`fINncCIAuCq1@>3vCR$QOai>vtBK-68rdDT|H3yK*`arm^>Ojs|X z&;kZ+$DC7hsiONiGT14vcVXf1hXQmy|2&Q2xJgnkRF!4ep#V~!f^$RY27p1F2IAyd z9A>Dv;I*a{M_6&gwQ7bJzbHnHNQ98t(WqST7cZ_alB^kpzBP-Q0Xu-2# zd7gUx__BtesubVym2=2KXU5of7GcGv&q}#xmdIEd9fT`ozDKgjI%z09V6lGd$2ayH zEKRMI)bqcpgK}~p;4dHWRcJuiEM*w=j{;7}lP`%;ra>X@ho9|03``{sbT>zOHF^C~ z$i>oe{A6kcrY6KQfBW_wDY)o`3oLD*zaP*mh$_pw?oSJgEom}3f6Ec_gF8T6F02q6)FrzudgCk4)o8$0mznH-k3~B?Cq-s?g8CeH;g(;3G^SOeI37LF~D*A{ri%ygCW&YW{*-hsMP^Htri>^~&6y48DkYgg%6&-$$r{2!u` zX`2^@bH0tz<&f3U5Dqd?71S>*!_X?9;6CQ3@7VB5BamZhl$Q3&PpS6+T6(e3Jdp|B z^sjhkGa%3&Q!{*Ir_k8|^zVXxP}j9fcy3G`Y4rV_T2m{noSx7dL+8UU=V3uPb` z)p%JP2&Qhacsm*mLbw}Jj6K6lWzAyQ!7wneLm;Rt%29-c%gd)RQNZ>d2+Y%Tyqfct zINE{*oazhmo^f+}RC$JMMEE&S_I4>ghwgDP3<)sB@k39Ymmm0xsZ7kKJ{X`JA@WAaci$elkRpui0^I=_;p2BGK% z=hmXMWhA2^M>0cGuPnJUl_VXEd}#P3^1WW$I$sC)iNiVj`ru3$qqO2_^r2sueC$y2 zrGUTr?6`g3;~&Ve;>3|F>M-I^poXBCo0b1G&zAUEEwVug?!CePf_~b1 zw@X7S@VbxettHWhzFc;0-CeR=BJRYgc~7Kyd6Fr!biIS~U^5U8C+Fm5B@LHk)5sES z-8^n`Ma`2)AO}~x4eo=Mw!POS2iH$ttVod5SV(fu%4jYo42B8AL_&ccH313=ft8H% zWd&cj6Lh~!_WMYgyXBNcTq5*nrn^Gz(tQp(ao2-RlZ1C3Lr&AgIN5#ttqFTu%e8Rh z-4E{r>eY}VZ-T*hD6K^N{qe>%19{dg4Sw7$FVEoN(R5sq!~{90VDzm}IuUtYcnTE) z^(bU(nr4uMY$DJWP*~D|07d2fL>PL@=LyDBUsmalh$aEiR_AqUjm^Owa^5D#CLsc> zmoSU2^?}?vY_hB9JPsSASZ5$cEP?RSyDF15cY;n0YiG>`XEq!i{f1V`1l5G~`PMo;Hco9THbwx6=v&2gWB zwd!PHRMS|r^VOZj){5Z|BlF&dEGfF=@7=DScd;HCBM@L8b~<}A zjrq*aao-KEqHMRy-?iF^7a_MqrYTf@@__z%jIlZZ%R+6SB-)u?=T9g8Ef8kRQJdK} zDKCC$;H7VU@@WM-Pk`97ynd_7&J0zG{88>;rlE=Y>t&FUZ6OJ|Y3Q|67J{9F@W&CS z-V@h4DXG!XK(GR-VBflN?02aXecN3q>2GqB1oW zy~v~^Gy#C(P6IhElracl=9!4_V7xe3dtj=!Vi5R`7%HduC7n{=;#WY1>lV0C=7-Jm zj;i~MqkZy|^%V}=_ETm0wpf^74kF7E2gI$%Z^!#NSy_lU3<#N7D*+nL`3NRBsn&@z zGgu7UaFBtcEK%8_TwmyJ+mC&^out}H=fljcvc9PqWp9+Hiy>4G8Au_`=I`!81gFGE zPj5}yE3UpB?&Sw!8B~Dq71ai*39Q`Wnh(09XDNyGDI8@@8PAa`fC?dgAYnsr1YL_5 zKS;>nT#F9*INiE9!rY36NgKT4Q0}mubM+GRIu%E}7;9Dge$~@c*OlK~z|pY(5(j_g zVzsow!F#tlRAAq1k7seLvCi9`ckIR0a|sAnsPi$?o9FC#>+<(@Q8=GuyB~{RO+a7m zd0bM5unVfHKJTn=aKPN#*ma!BM+f`X%wveOEP)CBi+LalQh$~C zlZB#6y2!M8UTIOCOlM0y+*j&v%G|%)+Tz7OG@3uZYH~C#8I8Iu*#wQi`{Zn+6G+`H z4Q&6|5#lxB-eD1fp)|sL9q=WYMBjjHWfJb5HWGG+_4THuTpxJNajP^PTyR~kc%MMM zLbl0Pe0dD#;D0Z?^BM=|&B07^egm$jdhOfw_-Q>4{i8P0EB7W~oGrwT9hTL@ z;Cbrd$Mu(BgVF^<2~^vIm?Zwx9JS#qwK-br?46p>=w4pepKE7E-?mH%1!Y$7H}clg z^!qiF46r6r)}X59kr~x17j?=!2;G|H>-CSDZye(50NH3c_;}=>q}S3HrS5E6ZJ)m% z+pl!z?tKL;&$aMBl4Xc!yfBLuLFYc){ra`DvEWzoY7mmHvP}_sZ-q@8<=eW0L=K1j zRAptGRtE9QBMwh7tlayFO1U)$PUV4 zsr$uvgANrH#oo#G%fX_IahGc2g^4Lo^SLjM^A^Bq&%JcK?pv#_ZD8>*R({uhw>7&Q ziqm1f$bVy8obtq?D|1p4F$b#I(97jY2s<}m%NsW^W>i3Cm=QUmd172UgK(^oy)#bN z^{#X}H+6kVX}lV*`HVa+!b8FuQg}qOo?k;3AXB zRHJsutszs>=jBiDq95xyCw2tAaH4#KZNBZMNrP&yh}X@H;C-Qf&_Zl;;?ZczX778D zvohxYR$KcvTY2}KhMvfW?W$Ojw*4`)a)dF+O zG;f-9Wg)s63Q~n$bQI>@)n(pR&zmLtjUIt3vWn^Mo?XJjvVtNB-1i*cgUP%cUhjUR z_WrEamY=91Aih&J+>v`Gog^6ytIT>%$_g`)A&N(lMi`Qonw}s#!Ki7fQmJXObB^|p z`iHm4*&o6xDjw{ZA<{{jNIsFb4I7k4p|6Oc*ec_$x zQ9Ysj{oV){L72%Vgd<|x8|JD24$6S< zCjb6yFeA)>VSzIUMr@=J2F_eO0$@Cl!7}TMwfPKXQ#&+so@e;0o>6wjWNsb}rVx?xaos)0opzj$s3=>&4%Dr? z%7KD9Co;*K03Ar_)35i#hf|7kR_LQaq=Y)c!&{qS0yny@w$ZF^8%u?!7&*SfZ)g${ zYBY_;sn&FBBXTA9b-tFf**CdVGb+|H?xER)9!XjyCne*ZsPBLXyKP!YK4#q}sNcGjuaB%}Go5a7iG89HxN*65$LrN^CV^<~@ z6zIJCV4Gua3iZ2Pl$AbwA{GSI7W(IcBFi7m(f?GN|8G=@e?YzdXI=kXz;ZPg8-SA? zj!DGOLDJOH+`@%~6WCwO#Q|(dhhzFjol?lo+{TpTcO4NJvMVfX??Ix?@E0kLft8yT zSZwFwWG7((0K=`hfSueNBtRD5zdQt1Er0I^tU;Qxk^s?Qzh#BLRV`V6SGfOa%>UTu zuaN_H{Lk~r|1ksqPpA>VvHaEq{z|m|qvam}0M5nl86^R#FWP^LBNz0Qeq~KS6=NH~$%o0gR+z z2APe6iybhiUD(}6|m-|^pnbh85hEI``; z8wdA)AaJn$%^34v)wBTsz`qeV64!orvxlDh0>itRqAqJ|NQAAmFO2*(+=+Xsj5+Iu zP-fvb{C1*k4Z-2`69LY##v1d(TJ*zx$UG5H1jos#SVLQ8kah4nDM*FsQk1L04_Lm| zLDQeJEM2A-+wp@64L-cwlod6iYoG2p1g4Srw4hbbs5d`-!JGR2Jzf8o5YJF>g9#dt zCjXV)-WK_T=u&&?n@-#B>~4JhBv34JiCu97H1S!ux|(ibMTZ_~wd_|q@ae0KHie)D z8EQYR&x`2(IoIiFfI(DcC$eRd64)QP7BVhWAIT_Ll*LsOqa$2sU4M#-a-*tBA&YVY zd)jl9uuo&>NQX&2@0^^yXQWAAL^++*DT}6%MWH8+vUNcB=6>!#_bdU)g5zvV=AeD& z&?8WsdaRn9^^cZat-hV@(}x&lLzcAkco8#WZnW}y1BtP%lKJOF3n;h!hu_~nzmES~ zIKn>`ihtL!{>KgRZ&s7Pd5Hd10|EM}0Ia|T#nQ&b)QN-%xKg^9ikceRo0!5e{o_3( zz@~QYzuz%?AK^VP=G)#g7AL#SH(=pMZNlUN5JODRg*{A1jgwH=QDD{(vCv^~P$=-? zqr{X{NNC`^lmu(YVo;Q*%UKkC@|z=~bea^kZBP4$OT@&gY8XtM-T@u3uzIJb?$2v? ze)j}s2fXj^0`JcVpkN>z8sHz;<|Zb93Deh4iw?VNK;m>7M{|JQh}c8__a3u0n;tGx z?7K2!|AW5N@ie`SpL@M;*dSqLjP^FRpvW{JLu*`2y4}0Wp$rVQwxD&=Ah{OTK|@rt zfsZh=R~(aZ)8T||ooFf`} zoep*zI#BlDAs$M&8OY*8f*&;}>raOa+~W@0+6+qMaW$hA^{R(C1X|Cr?9Gi>d$km;oePkc24i+e?kL>Wr^|(nTGoOR@RcN;>+& z-%P?!$Xts)b;+lilX%#AJMX}t4JB2 z|Hb~@b`MdK{E#h6I%Nj3^vBY)C9CmlG=po%%#4({EU8y8t`dJi66g=}Aa!q3^1RO=urmCt{D^{AXGqM##A#%Md0>D{3r&LiTT zNhd%Jnn@GPqWe^txU3O?<&WXHwt%I&YoRToZR~!Y=^6Eb);0%AMq7rv0l#z@Mb!N~ zFvgGFOIs%eFLN}+i8REZ1ydNiDKWUi-0+4oXQ!DbTY`2Ii; z)Bd3|n2G+_b~Eu0Khg|y{fR}LgdI~X^8rjZ-#w0gO=NawyqzM#jWv6jRm<%Ksme)n zJNXzFwVM%HEgI3`h$-9pUqL5xl!-8oMIKw57FSkUCRAT#j8LqyJAfY{uFX<YQ- z)yBO>kj!o+f5w0i*-ED0Lmc&AWGf>9!Nt|Zm8R*dPRFC|7cXX^t-qSA=WZ>k2Zd}d zm&Gp4ENUvZD=F3ovIwul0LD+LyBzbnm4(>yXUfiFt{sWvD|lmQ6p9*S(LeoQ?%&!0 z`ga1jVLlOQKL*#8=Ncxinl)yH*}J}Ngt)aR#y)~uQN*If($_;eR=SN8B=p=JkD)HQ znyOWMl`8WU@pJG?Ng4$O?F8*%2Phf6LExwesv<-=MPD{L>dnTiYN|9 z2!|aPsW{3|jk0Wqch5_PeN<-DS4`EBcn%J@Qpu5~f6j+(`s^T0{~G8)q9kq(;9{Ug z-9buV{n}s;w}v4fQJzH7{+IX0R7{ zdZB~to!0%*aK0)r^-l!mPAOSnYpIfE}3 zqW|S>3M;3@`Kx(SG6c{08UjwV!piEC*$~xX)sMXDyV}CmY(=?B^OWdG@kO) zm0{(hXGzOpAk>uyh$RJ0VVXvW7v7-p`1N;5LwDsBRFbYtrqmM#|{hj3s(VjzOW z$gn!PCuzFCm&*y{8jn1XnqfftC8xDYjrfep`eO{LztJF`4yu%5Yxf!NQTx-+B&=TB zCnhqw0?2vF65P-j!xA04!ll&!vqV}9+@QO>9HtuYWgfmMw8bKMQ6oKy{+A@`FrsB3h||t zQ)xGp8WIA^y&Hy=U?wgJn1ffFW%38}FY*5rWaY!sAllUnlBstkv*Xyw= zpO-i~clNX4dh)xwz0bv$Q&~oqL{1`s;yqtSar}E5=to$-agz|M!{D(D6vm$?RH@^5 z2q}`$LbwMXM$8-f^r(%O>i53IxZ8I-Q$tq0ie=S3lX#v^VDH9=C|InY(R*MJmK>qk zTU9(ivM>;%M}wpUlMEmFxYOsU7pJYr%6guo!)9nDrPS);XzA&BIA_5!DA01x1|*sV zf1rs$xDOsT09nW~#1xM<@zu*~`FM7n5%jI;$Ya{TNo82B0){}D28>2}^oRaO{6txI zcqj$D%honQaWgd`JlJt0+I)mkftb2{80QfoM&pq~n7J)cge{Yre>UZ%6h{T2kj z%FKCFHcSasQENoD?HmA-ao|LKEhZ9p$M!eDPY^o)~+b#wuGyI?re7g%*gFlMid(yjue~#E#w-GFNiFde1n@e z`v73lfG#jAk9w@%+~srbz1+Ag;w^c(LVQ+ZbI`why-a(`xxCfqPfvC{TDXy@xz^aM zBdp*Dp+F>}Epi%yirNwbFaq0lxm>Vx%-yq@-M;Dc{W+yg6ipEufKUwqI*6Kz8rH1b zA<_}lDR?weS%$I*?awbhl*qfE+^pJ>a6V%V%h=5LZ7&I!% zg#v3{4>wfVN`ex$Rke*EBdhAT-Kj|WoRWaH1xrD6SLHmsl%0E=-p0q1q5bg1yD352 zo1Y*cGW;eYM$DZW2L|3ol^`)733{AR1`_vz;4pvX{psxv!oAgO)q3FTV*)8vF18Ix zz_{&p>7X3dHv~#6&USp4kILxo?>WNXkB`zcqdndtKcAECK!ZS z$jivcxklMACo%6gMR6H(1P>d>4e_A~P~aVOZ5D)cG5stAg_fR18&S4_ux%BD!#bLz zJk;imHCS&Q9WW5#+%>fZH#+UFB3hqnMf#xqb*ug&S|o-^plZp@rTKj~vgBS@@2fX- zn9CpE_AGRsw01!y>d^uGR z;PDhYp!nR-po@{#vtIA&J=|QQ-R5_i=Qf)WiTiSde7*K} zz3FS9zWCo7x5 ziO+nJ&MyU2xa^`a4X@GV={T z2Pxqyj(S)d0~U5ajz;dShnxi*6`Kt>aZCq-TdI~wdS=Vbuy93cHD=9V0e301nQO zP6sywO`4FnsaRp(S$AL%P{bNm3jIlrvP9$*@-E0iCtCxR(=?*!q)_)J7H?2xKw?P( zLw!I(a-9X!u~uNT-4C^Fcb6+$OswFWrEm{}2LhX_V1l{QmOKTUQbDAM&|7OCOYu8) zO5n|sM1%yACaho~o-%YevT-d`P!gnvsm1xx%QHa_pUduFS=JK)4VwE<7 z+5T>NT7T7jf&Vw#EkV&hVrDzZF3Q(nUM}u6ze|^GkH70>1a*J7W!>k(WJ<5VLdXcA>JRk#1xuxTM)>0OYFBQkJiTJ0kYkOdfCFmble1&CCpk{1laxN zB4E+Qqw%Ix6BEQBcZTAaK8XJ8%3^OpS^=YtC%kN*Fsq^|MY@zuakL+>fS%)*ly)5< zq4*MA9V7|@!&4miQ#eiT15;P=5wH07oc2lGd&09-O(`CW2Rq^`2!(J`1xg(3OBs%& zQ5!7CSZwa_Suhf*!V$a)q6K+&VsyFzoovN|LJIBCR^d!}+JShJ4;h$I37!HAVCENC6tZ&Z+D_8p75QMOzhlk|P*M{R6+Z`K zYoG$x5d!H4Z6X*Qm z9#FN*(epQOo4vMIj*+sWpE(X&m4s`pXm5|viyNeoDz8p7Y4A^KKw41U5R_YcCZQx> z^_^GHE6DWPERJ;-*OAD)sJ}*`o~M|=&^2HWFqEtu{p=@eR3bF#Z%`UR*N>rC2KUM# zkLaCy_ekyD_3mr*xGQ2LaDQ?ZPQ2cD5RTje5ITiFt>Nh74cnqA?kdRfy%Mx`*3+oCG2j5M6M`^QRGl%BLhL(UXPsM8jlv>l%R|316YsnqpYLpz>TPco1h}2AI2Z9gEi`A<)X?8|VZL0< zZxHg_UB{SUu%Of9&eq>D)h40K{g6QO8ZaZxL5q%Rtr0I89pK6~>%f#HS_4ot5}N3n1fnI11?%&2COC9|LyaVSI8$1~L4@ZZ6% zvdYbMowXe&T6QzOWXe5W1zd)==v{aHkjv6r78G7t9&d@m0W>nQnoBFKB_3(Jt9+r) z;$Zh4dkBi+Nf^3WpPjJdkJ3tt>mEDh$c&LsmATB&NvtBX`z+}O4mTE$F&AGHoH!ri z!>q2jt5S%8kyIDHF14yRl%bootITr3m8avO3 zn8loc#YVglf8c|t!OQ(0oN!)`Z)BI1|5Ul5 z>Of_R#YvG~)(Qg*7VzY4LL^YYw5^X!XrdtAl4FUS|jjh(ft3Kakfv*;uqcGHkOvw!$C4M>>n&RPzVSppRzaPd zfBrGD)Q$7qdDP~h4=2VN1~oz7{6RkmnbMxqOIew)S9`i&i}&M>9ur-k4qJ8;{8Nkx zf{1_w?OaZbq3r%z!E$D0bZ4Dy?pN2z^rbYFu{Pt=>l$^(a|j7&YPoJV@NO#k zHaC$gd`Qdro|upA0sZt`uSWUkX%A`+#le2Cp#%5omv^~q>11bo9l9NptpG#y1Nfx@ z!jcWGq&(fVjW=w>37zsmbJi9dv*V6;h`}chkh3la26ya>k-XenS4VT#qfAy)8d3*wbs6)1F~e?r@s6J5sa}YhFJ2 z{q47iNbuk4QQj{@ub#9I67IpDN6z_z_Z5_Q2Ja)k9W!b)9{UUL^hg)9-%XWny&G>K zpO4tIn?a68b(E^X3B%d$=4crf9 z=-p7$fEahs3)8^~p8EOb>+~-F7?k5nPrZGvqN5sB(-UgzaDL1+79Tr)sTn&(mu=nG zMwP7{8;5Y6Foe~L=A5}lk8CA6P`XW?%F^{P#YWc)uf7bkj4xqGPbVkCPsx?5>m#1* z)I{1*(AJh~#g}y#@Wm{~x~{|7%DzKYt^+upW9IYnoxavApg5iG8)QmfSaIkdfkv6F z#L0G2dmYB-ieyxq)OYu>qiblgcqMKLx1(!u5(XjgBU)IysRKAKXdW0fsOAnO?;(}D z+his#oT@v%mvxou&J8!6W-XNY%*IHxm#RjsukVHqJ`b@6(*@xYPeQfI22Y_mN59VKiGH$7{@>BJ}j(%LreW-fB8$Y z{fC4rZ)j^u!ld9}YWK;|&Y9s)PSO8NuLi=>exuU>z;vnqOTC(%jT@+~0%b)K23DZV z%Kh6N2Bfh8(OUlyC|Q68F(5Mys8#-3y&6bU`*(Wv-OZFEKlac4ISGGi zWdBc7>V7NJ>@1AGh2Y=%>tDn=;A0LT$PK8j0Tt_iN2&ub1KDz+wHv z>G#)B*qMPhEa&fhKH#uffh`-Xz)L~G&it=lLpBahMovxu8=Ef4A3V6fwI8tmHbegF zgaECQ!0FOv=Kw0~0QNtOpucDKuOa-)O#dri?vGjjmjV0_*mJD&* zV&aNbupmkpP_6HhWePG+3V^Xf@c04#)fZ$Zwn9-|^Sju3_wfr=AY-}Dq(E6t{q>bb zr5)B?I8kPl*$+2qtIV(}JIUgjOHatyR+hcc_Zi~&fG^EHVzEaIt^L5Yj!Dg*Bm$2R0b=$^F zeY$kTm-3ikth9uZn$_Sewss|@cbkwB^7p*MXYpY9-v~O-vL@S&~JKJA*{oR9`ul{)nXZsIV@c(akbF6>(kpHcN z@sAti->CP01K|Cude6bi`rkMh0i4Wie;4oPx!@hp4>C4-kh@Gz$GmXhi&7S`PsX*_40XnT#!7+UBS-}_v3Tl~_sUV%nz80^ds!kBuxSd#rt6$#ve{l+ z(2f>o$WwK}cJU-0Lr79BGPecnJ-?-#;LJ?AX0~N@_y9dwFv%8hE_Vy$y)xZPjD&CdM3i=Av6+euB*hQA) zIX*7Y8haNc6lmvsGJk`!!7lst{0fR*_{Bl*71F-gCg=n81GDr4K;e!7heBNr!I&La zBi9%Q>5H{0rz=MgTg>-Og^o@BSuXUnfER`mN4^(YD@5{$@0(yuM*^X*c5fK|`&xWD z$lLdzva=79hqH{!Maj=c&j#M%65eyA*yH&4fWkK>uN*IdYHu<>Xf`0^-F!yf%& z9>nsS9mb-``!Q=)oz}Vs%dvOtoV9kJYpiT7W5qM^@a>e3)Yn^$9vj+AWUQ=#(*D@E zG&TbQ7WQZ;sDG{u1_8HQ)u0V4-fs~r2%0?@85&L`jWKCb)B5e{D015b z-bAv`YG}T_AEG|UuoyIaYJ4b75bar5M~!291OxqA-K096kmZ8Lc0|W6Qe-x#Dy?09 z?4T%}(w)r9Mk}aqA6cV+reG6gZ3AYSWJ8hRBZw~3H0YGn>~Y?+x0Qu#QR4JTl)gaA z*xLMbpqovKty?3$WY;{PmR!Hnfq^Pv5GN{hDgcSSREgYr2Xxs-DcY44H>Jd)fiojL zo9H-+Qb@kkrg>Kqq95_pQH6#3wNEGyi?7&9_#8#E)J&hRouhQm%_iDf)=>pdngq)K z*2$oPiDdGs>7AR^K!ceJXG<^u*xgYK<_lwCOn8a#K`8GWf(Dbaa_B~ROa_4Aj$IP{ zUD0gN+jPRV8jw5Jy1n4X9fT^7K0WkQ*KSu5nE=Uf(7;4Ool~fyUU1Zj<~6_EBR2Cu z0tH*L4`;BZm{6P#&YcE``^?XVf{~+~6Kz$V8$odR{mqVeOau}Qs=b8b6U^~;=1d4U zWx{t23RTTOv`9VKpQ%)Q8Cs#dg>AcGODD=LWZEBh+9lOwo!PBg@ytt_q9XWfizO4) zmi05oSY-F!M2@Ce*~r}o6hu6pbSky3au7t=%jHz+%TVcAaioTxq1pXwYl#njWeq|&&PBtc7yDZTx13*;9(#PtQiN`*(TGeT=f2x;? z0`RMeiG!jlV?aCg!=11j*TdR_CKVZ5CU92AZx28NR)2*xYeXTinLg6^#3<*c>KTtm zbAUrCDHwld%7w!;B5XygLlu1r%KC+JW|O^VJYpM z-HneJmz!Y2eDh**-F}8=Az#NViz0Z1AQ)UBCgbBAT*ZET@!_WvVVi5%2TD1oYJgPA zxMpZTZi|)RxUMGM(~WDeT6FYr6NSO|Uzkagi@m&AkTtX(0jtpwl$G~*#iw`DL4m08>18Kq)Uq5;!Mwd)PG4->A5l9d9 zgX`*No*l*JHGxJQ^5I$KBaTzr!z9IMD~cYKg*v5uOg>RPGyz90h4L3Azmk?s>O>=C z`N{T~cRF8l4=Sp*?BNMvUGP%;gVHuB4S!gh{US_FK+GkGycF%btG;rpB%ov)EE!`m z&2YeB7;OB8jqBIrk^k26%ZA>&q-XL)A|a{bR2?|CcA& zX=gyjeePW*#D+ul!-UCXcAK941ySjgyR_f!B<9MT(s-*Sf#>)1NLk}eQ(kDTi|XMZ zR4f{f*gf1-mJIF%7)8`dn9uUc>eOL_4yvYhf(ReJJ)1V)9$kw}dAgx@<E;c-sOJ|^5lc# z>xZQ9Oa4M67>&kYDL}Js-=j;d$^^V>`|-owtf{=kFo_nop_FSshx*&E2ayf&riMZ_qcMLRaHQ-qzZ zn(uT>0pNVs6CSCE#4!X+kzf$QddA#C3K-L<xH~P-Tosj{`5W)a}}5TAqi>FZDkw z&)d@Rr9f$|I}{bO{iygfQKj`OX!;)Vb-y5=;$7e~R*qCB?d(Sy1dwing$YJD^btDu5{&g!da&i*3fz>xv z<KVbUhjpg|L4vLrG0@OmQxYfo9)QGkUoF?n)5L9$JLRCsW zJtwx~0IPrZl)4RP7DH;GPKR!?M}oatSD}IH1T~fl7SiHk_#v;uj4+v(l<90b?vYz% zuv5Xe7+1`@FmZIEGaYd^16TxCp;|7h7K)Cvb zv7H)UP_V5U;UYFijwxUkR?g@V8ZKBCk-;S{iMP{sV|}IhY^5V*Z}wnjR-n~~SW{5L zhglVUIG3N5<#I0JX82G)20ckUyZB1+>GMfPqkBF!7zRDr&fJDhaj5Zu=f?vPBVCS- z44wG+w61+$O~XASd&lo03Z+wi8vEt)jz#-7JsL#b21lx24hD0TMkY6REQ)ZBFnbJh z$D!(`&z&H@?O(0Dq=MNCsocUu89W%gMQNYidkxF5^s2 zI_p?>!sFaM45!@@#kqFPvM9BG^?uK#B!1hE$+OYAS6l(dC+c=TXPt3-X$x?1RkF2L z($uYUn}ipDK&yKog% zuI)QqOv|b}uB}~+HwBotRAz{kb2Safz1E=aWqP5xL9ezldZqI$OSsAN`tKGLU8+m! zKFu%O@A)I<@qd4~L)L3`@jH5vqd)Al+*vmrMg-0Nag9koPTN|L$*_uJ7xidfPRf$~ z?gay`{HcQ?peh_yzbd!7wtHrx>)6}2SJ#&c!ei#gBC|*UtT2F%z1MCc{E*@k1yn(C z*x3?HtO6lqU9^6E$-TzVZH|u}PhU=fw~Jec+pFt)?~A@gXJ9UBx8BZr;4RlNk~3tT zRJi^KuQ^_0Ffbl&r+?^vlX)ZH#s4KS?v;mY!Vfg-C!gY_>+7R6{(bHn@&5a9>2R*v zF{6;Y?-6!dOn5!v-jfzN|=EDRN z;fih(JEM#OJRBge3Lc2jy&yK>@{$GuaHi8B{dJg6hJ4%ZWM=SvD?&kZbDEGTjc7B~ z(QNd9{zii5toZeaA_05D{YTXpIg4AYPWP=YY|B^4V~J(PPRf^c9PvoLUxa&j!qpH8 zJA}gHb6%QmDv%`+w&G`oyDL#%6gL()d*V0z1;=If>aht1fX8&A;&*ocue8wL1FjsGRznF^7#WcBfezFUk9AAa3>5@6Rz#2*{HpVt0mCguB;&%e_3pR z^*U~#r{{N(PnQH}kOG$N{<6_J2bJGFS_%rec4**z<3Ln9l>1k{3*S8_il+bugNSKrCS(zgJEKt&m z24hMc{pG!1Z2stZpT#5iBwXT-FXf91h5Z z8xmmAQ`VP7)9`tJG!=~##a38MDq9)MYj~vWIeRu$ZcqTsi0`@-eIlbv?M^RIq1bTl zd`z5uBDdc3miFNog51>~q;51L!#qPSljy2kcm;=8i<|!EuQ@Qt<DgM#{WQkdux`U0(_dlaSY5N)X7B>f7ako4Rd7Gzupr^upnhOBQ|44s&Bz zS$;K`UvRC68el)vC@+n)(k}ZVhOhi%K~=lshrAa2QSsN;AAw!Yc{yywT3-c{I3llo z&UrTOSDmMP@A<$%LEvRUk?RRxZ{;Lr!#~D5BWl}t`1=sBk*w6Ahat;FrGBm&OE?pH zI{b0T_uPXepdWp+0gAwM5~&a^0xJmuIhDWKY`(GeV~O}o1{@;;^xDY|?A1GZtM}pOfXN*{4kV57Wz-I|_z-lg|1)gyeL*LP$Clp}&My#` zjrq|L$AhyMQ=Gl&0Q$LO&zxRIuc5SN1`i*zA~ zE_AhTZoAb%!R^=WGA&Q2!kZ!XU?!S=X}7r4#~Jf6pO)?c)T|u<=cW4sw(HrHgcoyz zi8ZrLt{2qY5Q!}cUdUO8Y>kvJIl)TotkWBdD~-m_Yb$-)9U{8l0yY*s(`M@T;7_wS zzuMZ^E=~Vb^f%YF{oa05`E>>_u46*erco;jP7YE$SdaRGAW$nIQ6u0=)yR>V5wh5$ z{EHewGUco5S5R7c7)&==&)*V^1q3Us*r@SB)SxgQa_5z zx_*u4z$DX(z^O?Xnk_bi|AF#_s*d)1V0{GQX8_^=dQ+J?;)5=cLerP#EG>#2DzLo$ z#3SFi{5FjHhG|1_*+o5Bz6OKfg7n4gc(hAhy1gBXtZnd$xqjd>v?$}({x-s6%5{yZ zMgIssH{KccoH_*S|B<4goi2-_lpicR*5!4%Cfg&osJ6iu0-+>3E|Gt}zZY{rr%YK$ z3Zc}f;z8KWN)pXhna-A@YzREv?w8V!LE*bWTx>*sw323xM4PDnGNKdsPZHUNvvwGSN4_(gK{Mi<*-OvwAnI!d{P&%~$92K4LY9G!} zuq28Yl`>bqUa-A@h+&&Wr>@J-mc_D*O+H8YVCJZy4$S*m^*e>Vcn*J*!e%FC4YCE0 z@>Oi~rUNsPHdmzw!u{;luIci9d>TPX;1lDmVTvlWvXxPCyYUx@vkoOCSI=^^LCjd` zBgy0xLNklk6~-E_LaiEv@-08wRi1LY3Ft(0W_Mv#gHU`a*S%E(P-Wv3B^7RLVlgp% z)&UYSWpkdpIYrX}v;Gik9kte+(?V&Ty7Cyq>02X%fxJcI8wPpT>TI6^F?%oZLSp@q zy+|)7MfLFljS1vvEb-L2=|ULdPc+O%zE8q4qf`!+mR2>qnm!yP z73}f$sDZaAjwgm%f+0s?!=}pO-L$7tr@2|)py6tfp6OwHrY*uaQ(!qzUMDr!UBl3T zrN{rQyWALHYXO_rRfyQq)Lih%Qp_-myDgGCp&gyJLf>|=>C)3_&NU>)G@Kb0*=1pV zyQl`hkZ`!(BwYFoJrB>pJ6H-m=S;BWQ$K0p#V|GpPZm(<$US5#D;^PTkoy$RZ1wa7 z9ZsED7QV(h9hPYpqO_ysg#=AP^Cqj5HZw|BMrLt>yw?9I z?%3mM%GQiW4>TqWgKLgP6Eo@T*V&I0MjpSsN*XR%V~nIwaXreI5F=dSerugN=j^o`=8yaP-ShjM{X6?R-&*T?t+l?j_P4*)Gmc3# zyAyx+Wx`p(fAMOMx%WqB*E%PsS(fZhfP`Kh4rF^Aei*)E+e>%X((-+IOKYb6D`ks$ z>r#8~nxObMZhnh9TywepyvO*pw;7+*+^N0C?Tnm|1zA*{e^Gnnl<%vQAy)gB&%S*9 z?W%Oui@tRQQ>tu^O{mG4dT+s$XBXxQOI@;STK%&ym)AY9&e@*w#CfAxvvrj%%A2@X zc&Y_nbUL$XOt`wHOh{aP*Q#Qscl_J$_qpCaaDH;n86y^196PamLeq!sce+wZ7bn}# zS>oS5Ja`B-*hIRdqe^Ef;1@GW15#din-^}$si{|9lw0Ziejj-kiv5nJ< zv%NyD)mG{9oxjjMzL30O;#lCrmcPB&%q-XKXPp<_E~zx^W{P7!Pk&FVlyUT0@9Nss`*)T7w9wx(x05G*?o7;} z_0=AMF5iw0TReYKSjF!v9mUdH^t5Tt3kC-JZV$6wGsLZAMQXaA=vXxLj}GfUUVcOP z$6hfqI`N)+WfP&~_?y%&`H_8fQDtYR)-h#EebVn-(|(rRYrf+ii@js)zC68VLi5AT ztx88tR-ZhbWxYNv`dWm)?y<^6H+F>8@nn0uIXc1RMe1hDSAFVcnT^e|*qRd6f_YbU z?1g%~!&}$;=Ur?+zAsdp@P9`uU5Jj=SJ z*Y#(W87W>*Bl9A%+hpB-XOW%YG~2w7vugg%H^;Z+3EjFB{hAM$R}xzYw{&3FSc9dR*U2Jr!=j&QYgG)BYi?{mqu6cx zqu;l5`SOzrvl#)MW-YxnsokO#TRrCu&Tcn0Z}pn&AiMI3S-Y}6dwtA3e_=`Gip;L> z_Qv;n`ocfu^wj2Bi)35(v*80XJGp$9*QwW)p*CLgD$_Ip&Fz;Qbt*PLbgp_pHC=RL zVdB80;jOFB9_qXQRS0{$9h=uIsNZS6;BC@7`<`wcrVW@lu*aHD;uo#R{(AADjO|au zZD+@4Uq9a4{#f40uj1nl_V%znuq?SxMr6{;xQDOy&Irr;B$`~pvp~g1}8suPDW&J-xsEAbJ4NHAvZg7!OiHu4EQ9d+>PW}{e8W7Hb zp&@MwMD5UUJ|;xvplr=3gSq}xM+iGYr+GG#2LqCY7#4Z&UDNX#(^cKLRW~M|hWElC zvgXLm@%9_IvS#!8r<4tFNZ1nk`H89?9XfZoGyZP%!+_EOX6^e1zm0}?(u>G z8=5{gpQW=-{jFVi&h@@iW~bMhg%ow`6xw;ExL~CEX3o>k=6qRt`1|e$>W;SAkh|p4 zRh#6+-#IO#tUDIAaNKX#L(}SV|2JK?b>DR_x32r11*2x_I_}x?+WkVw{z=x(TE}3= zkjd?w(}q_L*KTtz%q;ZO7L2RiJuF(Z{b_mVriX>m8QCXOBBG-m#F1em$82}qQB&Kl zxMbIo%8s2E&t0hOikwNLlBqo!jO(wL@C|nOcQbio(2Q{m z;RA=LYFLdbSY?2rGYrs26#YyB6MgHCQ*>}Mve!`Mw0KF0I(r^+nDFYe~f)z+wI5@_aVx25QqGdd2uheh+Bg`M z1Wy=bZO~|1Aou_n^du4wP68(J5F*ho%vwBYLnvpHVvK+saHNgHK|UIk^UPEq029&S z7;+dGn-T^FP2j;B0SqBiWZ?oKdz6O_oL_kx46RX&C5%XsV+75JEDF7q(Z_%x5OxLQ zGp{JiasoLXfS({KWW_=XI8yd3#L$y`uo6%D5zqq_eG42@2DvFRn!&;qG(#ji=`+xr z0Ob3y5U9f^z<#1<;WR zUTjPNMYd_ zzo2>G3lL2obRmfTxu&IBUwH#M%JmkbgC#LOP#vlt9)Rv}xI5grM8&~+S(H@m4{00?c=M8j0+EkXSuWk2eXSte~X^Wg~mdj%$|O%z{6MY z15&?N|6FiH&ir82;@hFfDT7%#k+kwX~MkN_LwP>^wm z5F5m0;1ID5rT>CM9^T*Kp_|h0Qp49n4I8n^3DKmT(cu`;o7G_Yr6*n~YJ zXLyW<=?E*eLE(+@i4Z@)r+)e{;Zs0Kc^O!ozmLx$NS8({#=o$MVna9f0A(jNS~ylR zMs2{t|6z_pQ2kh;4o0@Yu|o>2XZtqydm?)9_<+X@EI++gK#1-! zQ9*HmkXlwY^S`$UZX`4+av-FlRrO>jc*l)_*DzW5GEgJ9LXH1p^ndiu7C2ZmjW+~o z$mFbWIsv9|s72U!AQvtotsyt-pgwq_N;ugfEh(Hy5jJ?p1tP31(d*CXW7uec{S$?w zEV7Nz3`3a7Le1!i!XpgqiE@yvTV5zB^IzZh|9Or%pYi$4nR9;E^}Bx8^}W8=HJs0! zQDEa?GfOjoi;D|51^)q@A>bgej*DyU_1A-&mwWBt%w)UpocX3#}Ir5ES6& z7u+ByC?pIY{Od(THwcTY{l9jTwXd&z3w{X;@C&S6@sAyxcYv4x*Lt9kn`fn5<%6drCq7=bkF$TST86oBP%Dbx=l@8LsL)Rz;O2-ql1S` z&CD$<58K+=J77*YI=P*7Kj-1;<$XCIFz8Bf$km9Ok+-65--(V-c#xQs{P0oA^Nh@_ z?3~=Z{MRL=W#tubDy!-n8k^oXfB4wa-P7CGKk#{wI5tlHIx+d}`_wdTVR7jPeVMVc zx+WJF!2K7o{wCSq$t4EMwGLhb9{x4CxYk{PPi`?D-Yq-%#P=WPKYdAJ>#pkpk_Yam zzp7iWtZPG+I^*9ZD6OJ5rb=5A?RUxkoM1QpRg(Qpu>UC+5fJ9)f)|fl3_t;7aI}I% zb)FxRq5E)v8%?Z(3>_+VTq)h_xs%KHASFdACF-VLp~JLKOuJ^i-!>hC4(B_WN#kSm zqDhqxQf9wtwV}o)(x{F)t1?Iw2N=6k&H*N@5mcMbm6Hh#X>@zsCUD9i65B%oz~8Xc zg-*uyWVTQmf&)++hroqwJR`(|C2a*ocH%hzO@Km^K$ht*%?e-wv}b^g=3r(z`7`$pLKpbd*a=Uf;nj#kXz|h&E2z zjERPC^_k$Fwz|jf8iH|g2@hFh1%~oIEy8jA>E|7-I$G#cJmoOZZ)mVwj(Md*U*2e; z5*_@R4`U`LoVjs7Kacz?yPl(M64ow=HW`*l2_&S-0SB4e2Y_TB`$2XCOH9+vsE0Z~E5!U4wNk3jkp<&Ad>0;uy5pQC^c{305?bUsq?pLY{_Z-!9IJy}PqDcTU}@G#TTU=6CF>Hyh{DIobKEd3SLD(e1G9d;~vL z(l`JI5Vo%10Gd9l;m@!A1LDx50q7Lrm$vki(GYTo>f9?gI6zbqSa+82{Ul@Uxwp0r zaezdObY&pJcHvbHI0>xMSFdL~t*4JKU$ z6FrokX1CoB33_EJ*O)9}FrHN#CUFh;jvDCM5=CH{})mT5D zLT>$}A1qJg07v?^ldDVK-l<*kZ`!Or9eRrgGlre5WJ~qx_6J@9s*NbvNpP{X= znzMqj?y_+LjnI*Ji!s$*<60*cpSFphV+g+ULu&ikRRnj`;3SzG_h<|+!E$F< zR8`yw40o<0+7rEqy&QmeS>fjOEl~k4GsO;W+TXn`xVH*<5>@k;$Ky%z;Ak#_dMxeM z)o+cl=+Q*{ER&ky5{^C+V_88!>hu-5_-4j;EVi3fXf8U>w%KeJn24@EZPv_^)P)2> zFT)#{4>tR9mJXwAoawg?_MhCWJ)_llAx3gTRqVtUr>w=QX=kP3GcjjoL*FQ#m1y3o z=bkK_f4CvfDBx{TVMS;K&R+gWO(&*ZP4DptHD;tO|4Uv!{i>6p1NOpF-}6$3lW~?| z22V1|x~SRd9DrW|>Pp*y8cl@sD{E@IOfWRJ27s90zl!zrYKs%aI#M;7e%wS+#`nF0h zdi#&KOeg2b?1|HuS52`v{^rZ8*HOgk>%=$R3CHs^(9T(1-Yb&W>eBF~Zy7VbcePAg zG!9xjlX8sX2d>N!4X%3PF2XX6!`c`NaK(MB6_Ftf<}{`1Rd+>_6265eQ}|jCy5}Z_ zD{w(`a_@H;4ZJ6QqsY(<8%b0<@N>c_`u&h`B;yrRk97bm=v73yQ}qynCZg9En5YD!aj>vpCn zP6_928dKT6@6o0WjR7il?gI^Hwm3LtVV)MN#K&MqTvyBclU7gET$!gXW>y5ONG$p% zTv@=)%m-6Qv;jyk5;npFb}kaZvSLh)qa)LlDBzeB!@W5By5AV=9yx#zqR|N*MgJlz zJ3}1FJ1uFDfCP?vFMBS`-4*Cvuh4H22;br`JBQ#!7%HG!G5o0W<$*MWd~MQX%HBY&f%R#H*> zdc#b~4gSRT#+0OI%1KtYMD;$^@8EIhk(LvGcmG4y!-5U%Y5S-iEb)X<1RRlK2*P0@ znGCVQ8b|8ohKBlDQG)Lkn+H?!r{aQ}YMbBeY`bJ+0$}N)q+i;rL99%JRaiZm+mL3f80BdYfp<>)nQ2w(Z^v`xHm8leWVrF zCrgiTGoG6Wff<&g)+Xrj(qQrV_Ufm0+byoW&`f%DVB&0$msNhsvM58nm?a%U&!Syn zNk%jy_>n@^G_CrpehtN<&RA1ePh+NO_#ZC*)8pOUmsF=+J`m28I;5Rx7f|&#REbRX zo7#?|9>flMljx^=ksH+NSz!i!VHPGXfv`!`TNXgec4FJNk~^80R8-Kj^Wr>Y>|QwbXo~NWr(b;+lZ2^m6)nk9te1>((|l$OP|hC>m%(?z#Uy8S_1u2UC@1p-Pv_q z`k6moe^1L^8h=c1wzG+k>F!w7Ki%H&sLHz)i&_Z@E?ipHmhP``@$-lAhqyWY0i%HF zfNMZX)6nlbxqPr9wcEBQ%j3$jy`A*m-&+>uQsVbm<^F z)kKu36{g-@vw=EOzlw@rsXcF=AbM4uU#FhT>}a01R912|-#*t^qAPA46j&DWK5)~s z7q#;)Mn0b=)7Kvm+yxeAzYUoF5q=7dGJ3VWU2e6!Zd1 zb6AS#e3sFGN3XUX8o?NN2PyQby$rC*^_|xnmLI{~dFsM*UFA&H{cD@uEyf8}gmJ;N zK@TWuehto=bfZ=r_aXLyjmHTubJ#LEtP+#`9N>fA-w)_7!b`K?mI>piPwd}86n~02 z2hf7&aa$9F;VPmQ1;@%o3m9Cx1L0g8K+FuPPg^=kSZJg1bAZh-2>ZK{0T^e{c+s;Z z9N^$`Gkkj`F9hpF2DCYkodkZz{f?L-+Ld9%^neT2vZ(@75bT02q*b>O!HO{d`vENc z{6;C%>rS>P2>~ORkW6slHJ))JhYlmzbS4>I6j41q`xewcwfD2GejfQR)ZRq|)wP(RgPBcZdcw=5R;v}J$MB*#L*iJ4-~^^J z)6g2uF+5I`Fwys4ocPkp9E!0RcX`>M9M+**!L4#F6y6rQa-iexe=<3dlbRY@L&~Lj&(9M2_mSa#|Mh1=ma>u z`g!!4p!)M`f?5fTA2fR;Z`cM}a%@(QU)e(zB7J1WFK1Br3rWaR$xYaeIbY(ryp@1J zoq?s;tw7IYzbeBDFkbf?z30t~QpoqoW0-U-M31E7#XUOFU!c zUdEkWICuw#Oh^(!FrS;lbtbNyB_;L@xcmA(o8EC4*Y9jR)X_3eWv(L1mN4~IB$iYX z>Ly6F(TR0k2YUrPQfw+ss8%9a)dUlgGw7MR_3?YB11ncUYnJ^56wpbcOF8vU)$LJH z6CV;3lV{;9jF-rMKse6C+JXt;fy^U*f*j}wPS{CEwyvCg(76E@%Ji`!-% zHRpd(e;$4Ccb%{4{jVnyb_fv}gb7~6CJrzMd$>HlM{7=}E)lg5qk{kk?R&wcu8e_C z2x`C;*0T(98v7mU$L1cbZ$DcUz~F}jVZWpmAAA{VDQ>{Cw|y#D4KJP)`ql8Wbw~M9AYbU*~(_w+g~M;A_)1l9qlfjEe{@NPZjEbP0n^pLBlS_dmVDVx>hqc zLcOFCJWE=JexLmesleJD(|p_qC8%w(XY}boTbjsIK_6oM{^#{ax<2~9F6!~UtQGQH zA5_V`^wx6GkD*3jNrciL)iQi(19hMr=uurLH10uBd^Qt=(`3xNV3~K7IgTcUhVT|< zI{BuQz9h;lB*yQN^_XPdkvtBKbXgbl&@cD-?+$yM5LEVJD5<=QsF8i|a&=SlQAabY zezCju^Py8pRoO$<#?C8a?7QIT4Y1U=IJQAqPyb=`+<$}VFPJi~LSIl+8`53G>nqVLW9Gi^1Q`la z%p2tfjU+oW(0oy+9_wt5A8M;{F_Ms3wb{p~;?iaxGF%EJgLU^;JMZSOW1yW=%fzE; zq75@x`G!l+r#;COOiE_b&K(&%F_YrT(E_FA2i%TXx4jAZ%>nh|Uk1njD%$AZ!ju+! z(@57!QPD`z-mtynzA~0H>FWjW`Uh6e<#{L$Kb^H+&PdYWGPnKm+g5@g2XOEFTrv9X zHfnSxEsi8o3`vCPy=8=F25Vn@COU<*YaW7X}0mWIyn%diw+e@$_OQaWpTZvLZs3Gxo%np^-t?#)P3S`!~mHkWb0E z$e!JGZ$HnbjowYTUGU!huVa{uBkb+mExoj5LWvm@;d_!xyq2ot%C8(go~WuW692sTPYGvptOlG?F{zT#o$$v>Gkx~ zVanVN=>@IbecGuLCWWtVq&jOIa@jPe{R7Jq^Pn%Vi*PE?pnPY;d@N3aK^phFm69F3 z8kax@61d*8b$#6rbQI=kgxDbVEed z&5oH#l=8&MRC6gJhAhKUlH&kdb7sq6GvGtB*9oG|{&u_X@!1feyULFKEjG*@AVXNA zJ_8I$O?7F{IBb*m5it?5(vg{$wVbtF@}rfEXvT9x9kpUgn;8*glwh#Tey{#sZ`Un- zl%>{#y6YTJ23PDx4wTF6F-B*3GZdOr5REXcHZ`(^+Fz0t9JQ~1vva`)^pWbgxeofa ziL=osKAImKd~nZaB^ySjx5L61l`y6o7YR5@&f+QSY##xE7Sq^S*7p zg%D!OUsSG>H#Vl49e?c9%kp7eDd~4Anx8dxV9u4Whw|hf*V_!OoaWtQHFwEN+gCMf z<-uiq?bs~c3mmn1eA8_?ySQxpM}<~0#aC)UjkR%zPKOz4$pmP9D~$Z^KnC5udIX8# zlP*)qogNCNK6!gf-|LheiZVV(o;+qDQpCpxtj?7c9=6N*s58A<+)(?r?R%g7mJUL8 zsn1u)Tv`^dHH=BLzAB+sWz5cNmI6EsJbzcEcF4b zZO_(j-}%m%A3hjoFO`y-#p8u7HT_Io$=mDpoGJQz9L5X0!ti93zQ8_bKVh_xAOvX# z*ABf);Q;SAfJpETay_IeU%w1PyK`4nR^naCpmHQkII+YLbYE)DY=QZJ-Xz8YdZxdlr?YR_oq7ii{R>-<~-t>(xZcW14eqZmf9+oK9D2G|#7d(P2 z)rLJ^thk*kd^^tp{8Z(_X_m+-l_l-NmWygdX%UmyfHIfV>a-mVFt3bdr}#o*VFuK# zVFt~S$c;1p!T5Ry6!o4rfu=!-_uD(Ui0qlPdW7^X(akyaW;~l+LKuw&OHeFHh30Zs z4MqjE;4lq!XZtCGg1ow1*C~u`)56%f_zq8}i|PB&dgbpdT+-ukPoC$yE>0#DEw2y< ze!M=+PAuPsoV(v+6;>R2)um#3zOo}snPEDHzm~Qkz>hyz_dt({?ieWQEM#qbq-S*F z5YcSc#eCy>L38Hu8XvA10M%2 z100|?;z)7YPnqq^cTt9sF?8%WtrHqWtlslVT;q=9Y+;h@HEo%l=wi+RtmXFtxD)W2 z*P(dzu|!))#Ev%5P$(FV>~V(k$lE5$V{eh6%K>G##uv@IeaAx_rM{RcnQph2y(S`= zs@1zj!w?_CBonX26Ram*O zZV}+qE_t%beppGeF<@xOxs@=sO&wW9yeqX2C3fE1%ujkT$d9Bv2+_LD^BO}30Su~QVr zCDTMCnr1wL^rZ+E{RVEA=n-7U{inZ%a4)Ov`Jj!>$CgWHk=xbi7)FF){jeNsKMld; zn?r3lq1`K88}y8}Yu}NCDzp5emaipolH@0tG1xy-&toZ$AnY=pxrkuz1bu7DE2@Ya z7}HA;Nrd@>3(`z2OAfGpW3^hFK^kgg;ZFS%u^Nw~7k1;l^n>?n6;DpaSIuWCYZrT{ zj|`<87PJe0;*wOOt7rV!h7J2o!p3ZJ=dZF8rd~($l)mOL<63Ltua4g3b^~-^(tlHSi|9jA|Cb zMp%+XqY>*e?z1kB$(guic`aIpC^(Iu4qnvbRWs;Vx%=VcWUl7LOW#pt*x5+tAy1I% z>KDNQN|&$KZX9AT>n}03i3&4rwTHRnO!)@~Il4|7N1c0Gadb=Ex3+b%Lv0H!6PA2c zzfq4r@ant5p0KDWPYR1;`d6!@bnm+I_{v0B;x`S`-t0nVm2cp{qss+;fkDKpEk^sb zF6-n`2&1K_64Uu+E&Q!}tiz6Bfj(qOs&I;tr+fyQ{d#_@P~g@fpUs|6^rnw!EX>{G zJGtsdiD9}0o71;2%xbl10Z8Ru2m0z>WsB}GR3<8)gBlfzn z9hL22Zty~{72vLh9bqS-Ml(_6X^m;Ol{Um2?1Bl83QDa=pGbyBz-nR))?4DkfrDBf z1-4q9)6z^gxsKqpoPbaXZL-RR%xYu*`Z{KMJz z?b8%OH5JX;h=Bx)$s~s6w|Wi`U8_PPMTVh9r)m_*a(a6WkMuly6Bp{^r*ZbgTwC{^ z(3{$2j~w(>(Q^Y?;S}ss6x9zgt4hPrWvL#`)#zxPG|Zm5lHaF^6_rusP^Gi;xWTjE z)7{%kU-NuK1kx+Ya51(vHaSNfN-jqDlw8EPR=j0>D6vhUXbkl{8k+EN{s5C}d~4h5 zk24JRfc)lQiy(3j2lxW}X`2nZYT>OAp$Se%yCTq}~1ckt_X4dYr5zn;jv)y^8O5Z@km z+h%K{ZmzP5AO%tn)9XU&vh--85iBcrcGeh4%Bw=&EYItkr6{rR!dA~LeAxM->ieHB zI0)srXkAfWLy9b1d>f_Z&#a!As;K4w34VjVSJLNT(h~Gcg9D?C ziTgN8gkjt4DndiuHbI~U11UO|{e{JTdX^PNAyfUIXYx z$Tq*XiA-!^O|>9)QzcGeYGed=+Enrw*Dp@~cYmUqu*waI#KHAu$*{{D;0-^NDewM! z0glfO2C&;}!eNR7bDRV8nBn&!)`0ELbZ;5!5m;A;l!psTsL=_uBFx%~WcF@hL=*%^ z)El_U#@Dk>xNOVYhR@7Oj~=ZOI4kjx{=wzICWDFh=DA=)DVzkrjgUK8u-9&&z>Sct z-T>UuwpPwi%z^XIco-Ao$#4Z0;o}E6!&4FIf!7o6$7_bcKD-2Fa3x4Pmm6-#TdRKs zrLFZ_-a_Hwx=DB;Va3;+WsLs4L-8P@8OF}YeiEzvndlTfdaWOi2(I;Z%0ei(x0Als z+gXO7Qc!D6oWdXi##KybaDjLYl|$6}y&umDmLG1&bNju#97P<05mN6z1^8nHelY*6 zC1D?+DvD?K!i%fTKrz*ViyN_}B4sq({FwApI*RhWj1aTYCrPw+L4Z=zs^5DKW<0Y@ zc+MCQ>zre&qo$XCkr0N#p`RCSFi8Ap0s{ee%vdv&;AziB4y@G{e)YkpzwDTQ9ZWYx z;Yu&gj3<$bQz|( zj-T67H>Zp+-(RJCdK*ZMOIqB#C{2`=9k$$lAiVbE&G%h5x@r$R!N(w|{@4a=6oG0# zFNo_ref|tJ_Upx_7mQlZ;)z6kh1`=wuUAgmFWt|@TOGI{WT`ahXmLO&@8I&s(7hKX zq(*2YS{L@p^XjrbkJ-oc6i2m%B+?{P+a{Yb5q7=iNI8PNrpGFvSjTyCMxsRvGHH;Q3csfnI zZErJD{9Kmg7?v14t|mAkZt-ZaIe9aW%m(~trsI+RuFB~aS@IXmk?$>=2BvmkpJr&A zq{Msu*pu$GYofv)Y-*mj*0VH~bTCW*U;N~Mnt!YVf8jPuf#ar99*@Gy1kY5v%$c*JqqX^GB{#uru*4EuhNE Date: Fri, 25 Feb 2022 18:33:27 -0500 Subject: [PATCH 42/44] Revert "docs(): fix details. add report." This reverts commit 2e10e12170c6546fae5a8253e326f018bdc286c4. --- doc/report.md | 269 ------- doc/report.pdf | Bin 183918 -> 0 bytes doc/team.yml | 18 +- img/memory.jpg | Bin 13887 -> 0 bytes src/cool/codegen/mips_visitor.py | 4 +- src/cool/codegen/mipsgen.py | 6 +- src/coolc.sh | 7 +- src/mips-code.asm | 1157 ------------------------------ 8 files changed, 19 insertions(+), 1442 deletions(-) delete mode 100644 doc/report.md delete mode 100644 doc/report.pdf delete mode 100644 img/memory.jpg delete mode 100644 src/mips-code.asm diff --git a/doc/report.md b/doc/report.md deleted file mode 100644 index da0d511b4..000000000 --- a/doc/report.md +++ /dev/null @@ -1,269 +0,0 @@ -# Compilador de Cool - -- José Carlos Hernández Piñera C411 -- Yan Carlos González Blanco C411 -- Henry Estévez Gómez C411 - - - -## Temario - -1. Detalles técnicos - - Dependencias del proycto. - - Estructura y organización del proyecto. - - Cómo ejecutarlo. -2. Documentación acerca del desarrollo y funcionamiento del proyecto - - Análisis sintáctico - - Lexer - - Parser - - Análisis semántico - - Generación de código - - Código intermedio (CIL) - - Código MIPS -3. Principales problemas técnicos. - - - -### 1. Detalles técnicos - -​ Para el uso del compilador se hace necesarion tener instalado Python 3.7 o superior. De manera general se emplean pocos paquetes de terceros, de cualquier forma se muestran a continuación los detalles relacionados con estos y para que se usan dentro del compilador. - -- ply: es una implementación enteramente en Pyhton de las herramientas de análisis _lex_ y _yacc_, que facilitan el desarrollo del lexer y el parser, brindando un cómodo y aceptado manejo de los mismos. -- pytest y pytest-ordering: se usan para llevar a cabo los tests automáticos de cada una de las fases por la que transita el compilador. - - - -​ De igual manera dentro del archivo _requirements.txt_ se encuentran recogidas todas las dependencias del proyecto, además de que se ofrece la posibilidad de utilizar un entorno virutal por medio de _pipenv_ para garantizar que el ambiente en que se pruebe posteriormente el compilador sea exactamente el mismo en el que se desarrolló y por tanto evitar problemas de incongruencia de paquetes y módulos. - -Si se quisiera instalar directamente los paquetes sin hacer uso de pipenv el comando sería: - -```bash -pip3 install -r requirements.txt -``` - -Ahora usando pipenv tenemos: - -```bash -~$ pipevn shell -~$ pipenv install --ignore-pipefile -``` - -Notemos que ambos comandos se ejecutan en una terminal ubicada en la raiz del proyecto. - -​ El archivo principal del proyecto es _main.py_, se encuentra ubicado en la carpeta _src_, este recibe como argumento dos ficheros: uno de entrada que debe tener la extensión .cl (que cuenta con el código de COOL) y otro de salida donde se devuelve el código generado en MIPS. - -​ El compilador también se puede ejecutar haciendo uso del fichero _coolc.sh_, ubicado también dentro del directorio _src_. - -​ Una vez que se ejecute el compilador el fichero generado con el código de MIPS, se ubicará en la misma carpeta, con el nombre _mips_code.asm_, esto se realizará siempre que no se pase fichero de salida a la hora de llamar al _main_, puesto que este segundo parámentro no es obligatorio para nosotros. - -​ Estructura y organización de los directorios del proyecto a partir de la carpeta _src_: - -```bash -. -├── cool -│   ├── code.cl -│   ├── codegen -│   │   ├── cilgen.py -│   │   ├── cil_visitor.py -│   │   ├── codegen.py -│   │   ├── __init__.py -│   │   ├── __main__.py -│   │   ├── mipsgen.py -│   │   ├── mips_visitor.py -│   │   └── utils -│   │   ├── ast_cil.py -│   │   ├── __init__.py -│   │   ├── __main__.py -│   │   ├── print_ast.py -│   │   └── tools.py -│   ├── __init__.py -│   ├── lexer -│   │   ├── __init__.py -│   │   ├── lexer.py -│   │   └── __main__.py -│   ├── __main__.py -│   ├── parser -│   │   ├── __init__.py -│   │   ├── __main__.py -│   │   ├── output -│   │   │   ├── debug.txt -│   │   │   ├── parselog.txt -│   │   │   └── parsetab.py -│   │   └── parser.py -│   ├── semantic -│   │   ├── collectVariables.py -│   │   ├── helpers.py -│   │   ├── __init__.py -│   │   ├── __main__.py -│   │   ├── semantic.py -│   │   ├── typeBuilder.py -│   │   ├── typeChecker.py -│   │   ├── typeCollector.py -│   │   └── types.py -│   └── utils -│   ├── ast.py -│   ├── errors.py -│   ├── helpers.py -│   ├── __init__.py -│   ├── logger.py -│   ├── __main__.py -│   ├── tokens.py -│   └── visitor.py -├── coolc.sh -├── main.py -├── makefile -├── mips-code.asm -├── Readme.md -``` - - - -### 2. Documentación acerca del desarrollo y funcionamiento del proyecto - -Esta sección se encuentra dividida en 3 grupos o fases: - -- Análisis sintáctico: comprende desde la comprobación del código fuente escrito en _COOL_ hasta su representación en el árbol de derivación, incluye todos los aspectos relacionados con la definición de la gramática, así como la construcción del lexer y el parser. -- Análisis semántico: se basa en la revisión de los aspectos aceptados en la fase anterior, mediante la validación de que todos los predicados semánticos definidos previamente se cumplan. -- Generación de código: luego de cada uno de los chequeos aplicados en las fases anteriores, se construye un código intermedio para la posterior transformación a código _MIPS_. - -Se intentará detallar lo mejor posible cada una de estas fases a lo largo del informe. - -#### Análisis sintáctico: - -​ Como se mencionó en la sección anterior para el desarrollo del compilador se uso _ply_, paquete que incluye soporte al parser _LALR(1)_, así como las herramientas para el análisis léxico de validación de entrada y el reporte de errores. - -​ El análisis sintáctico se encuentra separado en dos fases: en una se realiza el análisis léxico y en la otra el proceso de parsing. - -**Análisis léxico:** - -​ Esta fase en encarga del procesamiento del código fuente escrito en _Cool_, mediante la creación de _tokens_, que no son más que secuencias de caracteres que tienen un significado para el programa. Todos los espacios en blanco, campos de línea (\n), tabuladores (\t) y demás caracteres sin importancia son removidos también durante esta fase. - -​ Dicho de otra forma, el lexer no es otra cosa que el proceso de transformación de de una secuencia de caracteres (strings) en una secuencia de tokens. - -​ Un token está representado por la siguiente clase: - -```python -class Token: - def __init__(self, lex: str, type_: str, lineno: int, pos: int): - self.lex = lex - self.type = type_ - self.lineno = lineno - self.pos = pos - - def __str__(self): - return f'{self.type}: {self.lex} ({self.lineno}, {self.pos})' - - def __repr__(self): - return str(self) -``` - -​ Como se puede comprbar un token está compuesto por un lexema, que no es más que una especie de nombre que se le hace corresponder al token; además también cuenta con un tipo, que se emplea para agrupar a los que tienen características similares, notar que para las palabras reservadas del lenguaje el lexema y el tipo son el mismo, no ocurriendo lo mismo para los strings y números. También se lleva para cada token el número de línea en el que aparece y la posición dentro de esa línea (número de la columna). - -​ La definición de todas las palabras reservadas del lenguaje se encuentra recogida dentro de _tokens.py_ ubicado en el directorio _src/cool/utils_. - -​ El proceso de selección de los tokens dentro de código fuente se realiza por medio de una serie de expresiones regulares, definidas para cada una de las palabras reservadas del lenguaje, así como para todos los símbolos presentes en Cool. - -​ Para ello se emplea _ply_, quien propone una especie de convención de la forma t_tipo y la definición de la expresión regular dentro del docstring del método. - -​ En resumen sería algo como lo que se presenta a continuación: - -```python -def t_equal(self, t): - r'=' - self.update_column(t) - return t -``` - -**Proceso de Parsing** - -​ El parser, que no es más que el análisis de la secuencia de tokens que se obtienen en la sección anterior y la producción del árbol de derivación, también se implementó mediante _ply_. - -​ _Ply_ brinda igualmente una conveción para la correcta definición de las funciones relacionadas con el proceso; para cada regla gramatical hay una función cuyo nombre empieza con p_ y en el docstring contiene la forma de la producción. - -​ Sería algo como lo que se presenta a continuación. - -```python -def p_atom_new(self, p): - 'atom : new type' - p[0] = InstantiateNode(p.slice[2]) -``` - -​ _Ply_ usa los (:) para separar la parte izquierda de la parte derecha de la producción, y en cuerpo de la función contiene el código que realiza la acción de esa producción. En cada producción se construye un nodo del Árbol de Sintaxis Abstracta (AST). - -​ El parámetro _p_ que se muestra dentro del cuerpo contiene los resultados que se obtuvieron luego de parsear el lado derecho de la producción. Es posible indexar en p para acceder a los datos, en el índice 0 se deja siempre el resultado de la acción que se realizó, mientras que a partir de 1 nos comenzamos a referirnos al primer símbolo de la parte derecha de la producción. - -​ _Ply_ genera un parser que usa el algoritmo de shift-reduce LALR(1), uno de los más usados en la actualidad, notemos que la gramática de Cool fue refactorizada para ser procesada por LALR(1) sin errores (para ello se eliminó todo tipo de ambigüedad y se tuvo en cuenta la precedencia de todos los operadores presentes), puesto que LALR(1) no puede manejar todas las gramáticas libres del contexto. - -​ _Ply_ también se emplea para la recuperación y el manejo de los errores. - - - -#### Análisis semántico - -​ El objetivo del análisis semántico es validar el correcto cumplimiento de los predicados semánticos y validar, además, la información de los tipos para la posterior fase de transformación del código de Cool a Mips. - -​ Para el desarrollo de esta fase nos apoyamos en el árbol de derivación, estructura que se presenta de forma conveniente para ser explorada, luego el procedimiento para validar cada uno de los predicados pasa por realizar un recorrido por cada uno de los nodos de dicho árbol. - -​ Dado el hecho de que la mayoría de las reglas semánticas incluyen al uso de variables y funciones, así como las definiciones de estas; se hace necesario, por lo tanto, acceder a un scope, donde están definidas todas las variables y funciones que se emplean en el nodo. - -​ También se emplea un Contexto, que contiene todas las definiciones de los tipos que se construyen a lo largo del programa. - -​ Para realizar estos recorridos de los que se hablan se emplea el patrón _visitor_, el cual será de relevante importancia a partir de este momento y se usará como pieza fundamental en todas las acciones que se realicen para el funcionamiento del compilador, este patrón nos permite realizar una abstracción en el concepto de procesamiento de un nodo. - -​ Apoyándonos en _visitor_, en esta fase realizamos varios recorridos sobre el AST, que permiten en este orden, realizar los siguientes procedimientos: - -- Recolectar los tipos definidos, la implementación está dentro de _TypeCollector_, en este recorrido solo nos interesan los nodos _ProgramNode_ y _ClassDeclarationNode_. - -- Construcción del contexto de métodos y atributos, la implementaión está dentro de _TypeBuilder_, en este recorridos solo nos interesan los nodos _FuncDeclarationNode_ y _AttrDeclarationNode_ - -- Construcción de scopes recolectando las variables definidas en el programa; teniendo en cuenta, como es natural, la visibilidad de cada una de estas, la implementación está dentro de _CollectVariables_. - - ​ En este punto se requiere un poco de atención sobre el orden en que se definen los atributos, puesto que la inicialización de estos no puede depender de uno que esté declarado posteriormente en el código. - -- Chequear los tipos, en esta pasada se verifica la consistencia de todos los tipos presentes en todos los nodos del AST para detectar con ello la mayor cantidad de errores y por consiguiente la creación de instancias de ErrorType para mostrar que cierto tipo presentó algún error semántico. La implentación está dentro de _TypeCheker_. - -​ Toda la implementación referente al procesamiento de esta etapa del compilador está en el directorio _src/cool/semantic_. Se pueden referir a la misma para analizar cualquier duda que surja. - - - -#### Generación de código. - -​ Para la etapa de generación de código, debido a que el salto de Cool a Mips, es demasiado complejo, se genera primeramente un código intermedio, CIL, para facilitar todo el proceso. - -**Código intermedio (Cool -> Cil)** - -​ Para la generación de Cil, también se emplea el patrón visitor, la idea principal es generar para cada nodo del AST de Cool, su correspondiente conjunto de instrucciones el Cil; en todo momento se asegura que las variables y funciones dentro del programa tengan nombre únicos para asegurar que no ocurran futuras incongruencias o inconsistencias durante la generación y posterior ejecución. - -​ En el leguanje intermendio se menejan 3 secciones fundamentales .TYPES, .DATA y .CODE, que recojen todos los tipos declarados en el programa con sus correspondientes funciones y atributos, las cadenas de texto constantes que serán usadas durante la ejecución y el cuerpo de la funciones en sí, respectivamente. - -​ Los tipos built-in que existen en Cool (Object, IO, Int, String, Bool) son definidos directamente dentro de CIL, para garantizar un fácil manejo de todas las funciones presentes en estos métodos, se concretó la idea de crear nuevo nodos en Cil: _ExitNode_ y _CopyNode_ para _abort_ y _copy_ de Object; además por el hecho de que en Mips se realiza un trato diferente asociados a los tipos _int_ y _string_ cuando se hacen llamados al sistema se decidió eliminar las funciones Read y Print, para en su lugar agregar: ReadInt, ReadString, PrintInt, PrintString, esto persigue que se realice de forma más natural y simple los llamados a: in_int, in_string, out_int y out_string presentes en IO. - -​ Por otro lado para los métodos de String: lenght, concat y substr se crearon los nodos: LenghtNode, ConcatNode y SubstringNode, para garantizar lo mismo que se persigue en la explicación del párrafo anterior. - -​ Con esto dichas funciones se crear directamente en la generación a Mips; lo que permite, como es fácil notar, ganar en eficiencia y manejar de forma más adecuada las particularidades de cada una de ellas. - -​ Algo que presentó una notable relevancia en la generación de Cil fue el hecho de la inicialización de los atributos, nos referimos tanto a los heredados como los de la propia clase; cuando se crea una instancia de una clase se deben inicializar todos los atributos a su expresión inicial, en caso de que tengan alguna, en otro caso se usa su expresión por defecto; esto se aseguró creando para cada tipo un constructor que se encarga de darle un valor a cada uno de sus atributos, este es llamada cada vez que se crea la instancia de algún tipo. - -**Generación de MIPS (Cil -> Mips)** - -​ Naturalmente para generar el código en Mips también se emplea el patrón visitor, pero en esta ocasión recorriendo todos los nodos de Cil que fueron creados en el paso anterior, para cada uno de estos nodos de Cil, se genera el conjunto de instrucciones necesarias para Mips. - -​ Una de las principales dificultades que se presentaron en esta sección fue la representación de los objetos en memoria, para ello se necesita guardar la información referente al tipo del objeto, los métodos y sus atributos, además de información extra y de otros aspectos útiles referentes al tipo (por ejemplo una referencia al tipo del padre). - -![](../img/memory.jpg) - -​ La imagen anterior muestra la forma en la que se representan los objetos en memoria. El TypeInfo almacena una referencia al nombre del tipo, la información del tipo del padre y además una tabla donde están ubicados los métodos del objeto como tal, y en la misma forma en la que se guardan en Cil. - -​ A la hora de crear un objeto, se calcula el tamaño que ocupará, que no es otra cosa que el total de atributos más los 3 campos adicionales usados para guardar la otra información. - -​ El orden en el que se ubican los atributos, es primero los del padre y luego los propios del objeto, entonces a la hora de acceder a ellos se calcula el offset de este atributo en su tipo estático y a este se le suma 3 porque ahí es donde empiezan a presentar los mismo. - -​ De forma similar se hace para acceder a los métodos, primero se busca en la posición 3 de la tabla del objeto, donde encontramos el TypeInfo y desde allí se accede a la nueva tabla a partir de la cuál se busca el índice de la función llamada según la información que se tiene del tipo estático del objeto, resaltar que ahí se encuentra la dirección real del método. - - - -#### Problemas técnicos - -​ Un especial tratamiento hubo que dedicarle al menejo de los comentarios y strings en el lexer, puesto que las expresiones regulares que se definieron para el manejo de estos no cubrían todos los casos posibles. Para ello _ply_ ofrecía una solución que consitía en crear una especie de estados, donde una vez que se accede a esos estados, se le puede dar un tratamiento diferenciado a ciertos tokens, tratamiento que no poseen en el estado _Initial_, que es el que se usa por defecto en _ply_. En este punto lo más difícil de anlizar fueron los comentarios que se realizaban con ((\*...\*)), pero para ello al encontrarse el primer (* se entró a un nuevo estado y por tanto todas las demás reglas eran ignoradas, en ese estado nos mantuvimos hasta llegar a *). - -​ Los otros problemas más relevantes que tuvimos radicaron en la generación de código, por ejemplo a la hora de determinar como utilizar los registros para almacenar los valores y con que fin se iba a utilizar cada uno; también surgieron otros errores, pero afortunadamente se le puedo dar con la solución aceptada para cada uno de ellos. \ No newline at end of file diff --git a/doc/report.pdf b/doc/report.pdf deleted file mode 100644 index a5dc817a1af1bcb4b0cbcdb5027fc82e337bb907..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183918 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 Date: Fri, 25 Feb 2022 18:40:50 -0500 Subject: [PATCH 43/44] docs(): fix details. add report. right commit. --- doc/report.md | 269 +++++++++++++++++++++++++++++++++++++++++++++++++ doc/report.pdf | Bin 0 -> 183918 bytes doc/team.yml | 18 ++-- img/memory.jpg | Bin 0 -> 13887 bytes src/coolc.sh | 7 +- 5 files changed, 280 insertions(+), 14 deletions(-) create mode 100644 doc/report.md create mode 100644 doc/report.pdf create mode 100644 img/memory.jpg diff --git a/doc/report.md b/doc/report.md new file mode 100644 index 000000000..da0d511b4 --- /dev/null +++ b/doc/report.md @@ -0,0 +1,269 @@ +# Compilador de Cool + +- José Carlos Hernández Piñera C411 +- Yan Carlos González Blanco C411 +- Henry Estévez Gómez C411 + + + +## Temario + +1. Detalles técnicos + - Dependencias del proycto. + - Estructura y organización del proyecto. + - Cómo ejecutarlo. +2. Documentación acerca del desarrollo y funcionamiento del proyecto + - Análisis sintáctico + - Lexer + - Parser + - Análisis semántico + - Generación de código + - Código intermedio (CIL) + - Código MIPS +3. Principales problemas técnicos. + + + +### 1. Detalles técnicos + +​ Para el uso del compilador se hace necesarion tener instalado Python 3.7 o superior. De manera general se emplean pocos paquetes de terceros, de cualquier forma se muestran a continuación los detalles relacionados con estos y para que se usan dentro del compilador. + +- ply: es una implementación enteramente en Pyhton de las herramientas de análisis _lex_ y _yacc_, que facilitan el desarrollo del lexer y el parser, brindando un cómodo y aceptado manejo de los mismos. +- pytest y pytest-ordering: se usan para llevar a cabo los tests automáticos de cada una de las fases por la que transita el compilador. + + + +​ De igual manera dentro del archivo _requirements.txt_ se encuentran recogidas todas las dependencias del proyecto, además de que se ofrece la posibilidad de utilizar un entorno virutal por medio de _pipenv_ para garantizar que el ambiente en que se pruebe posteriormente el compilador sea exactamente el mismo en el que se desarrolló y por tanto evitar problemas de incongruencia de paquetes y módulos. + +Si se quisiera instalar directamente los paquetes sin hacer uso de pipenv el comando sería: + +```bash +pip3 install -r requirements.txt +``` + +Ahora usando pipenv tenemos: + +```bash +~$ pipevn shell +~$ pipenv install --ignore-pipefile +``` + +Notemos que ambos comandos se ejecutan en una terminal ubicada en la raiz del proyecto. + +​ El archivo principal del proyecto es _main.py_, se encuentra ubicado en la carpeta _src_, este recibe como argumento dos ficheros: uno de entrada que debe tener la extensión .cl (que cuenta con el código de COOL) y otro de salida donde se devuelve el código generado en MIPS. + +​ El compilador también se puede ejecutar haciendo uso del fichero _coolc.sh_, ubicado también dentro del directorio _src_. + +​ Una vez que se ejecute el compilador el fichero generado con el código de MIPS, se ubicará en la misma carpeta, con el nombre _mips_code.asm_, esto se realizará siempre que no se pase fichero de salida a la hora de llamar al _main_, puesto que este segundo parámentro no es obligatorio para nosotros. + +​ Estructura y organización de los directorios del proyecto a partir de la carpeta _src_: + +```bash +. +├── cool +│   ├── code.cl +│   ├── codegen +│   │   ├── cilgen.py +│   │   ├── cil_visitor.py +│   │   ├── codegen.py +│   │   ├── __init__.py +│   │   ├── __main__.py +│   │   ├── mipsgen.py +│   │   ├── mips_visitor.py +│   │   └── utils +│   │   ├── ast_cil.py +│   │   ├── __init__.py +│   │   ├── __main__.py +│   │   ├── print_ast.py +│   │   └── tools.py +│   ├── __init__.py +│   ├── lexer +│   │   ├── __init__.py +│   │   ├── lexer.py +│   │   └── __main__.py +│   ├── __main__.py +│   ├── parser +│   │   ├── __init__.py +│   │   ├── __main__.py +│   │   ├── output +│   │   │   ├── debug.txt +│   │   │   ├── parselog.txt +│   │   │   └── parsetab.py +│   │   └── parser.py +│   ├── semantic +│   │   ├── collectVariables.py +│   │   ├── helpers.py +│   │   ├── __init__.py +│   │   ├── __main__.py +│   │   ├── semantic.py +│   │   ├── typeBuilder.py +│   │   ├── typeChecker.py +│   │   ├── typeCollector.py +│   │   └── types.py +│   └── utils +│   ├── ast.py +│   ├── errors.py +│   ├── helpers.py +│   ├── __init__.py +│   ├── logger.py +│   ├── __main__.py +│   ├── tokens.py +│   └── visitor.py +├── coolc.sh +├── main.py +├── makefile +├── mips-code.asm +├── Readme.md +``` + + + +### 2. Documentación acerca del desarrollo y funcionamiento del proyecto + +Esta sección se encuentra dividida en 3 grupos o fases: + +- Análisis sintáctico: comprende desde la comprobación del código fuente escrito en _COOL_ hasta su representación en el árbol de derivación, incluye todos los aspectos relacionados con la definición de la gramática, así como la construcción del lexer y el parser. +- Análisis semántico: se basa en la revisión de los aspectos aceptados en la fase anterior, mediante la validación de que todos los predicados semánticos definidos previamente se cumplan. +- Generación de código: luego de cada uno de los chequeos aplicados en las fases anteriores, se construye un código intermedio para la posterior transformación a código _MIPS_. + +Se intentará detallar lo mejor posible cada una de estas fases a lo largo del informe. + +#### Análisis sintáctico: + +​ Como se mencionó en la sección anterior para el desarrollo del compilador se uso _ply_, paquete que incluye soporte al parser _LALR(1)_, así como las herramientas para el análisis léxico de validación de entrada y el reporte de errores. + +​ El análisis sintáctico se encuentra separado en dos fases: en una se realiza el análisis léxico y en la otra el proceso de parsing. + +**Análisis léxico:** + +​ Esta fase en encarga del procesamiento del código fuente escrito en _Cool_, mediante la creación de _tokens_, que no son más que secuencias de caracteres que tienen un significado para el programa. Todos los espacios en blanco, campos de línea (\n), tabuladores (\t) y demás caracteres sin importancia son removidos también durante esta fase. + +​ Dicho de otra forma, el lexer no es otra cosa que el proceso de transformación de de una secuencia de caracteres (strings) en una secuencia de tokens. + +​ Un token está representado por la siguiente clase: + +```python +class Token: + def __init__(self, lex: str, type_: str, lineno: int, pos: int): + self.lex = lex + self.type = type_ + self.lineno = lineno + self.pos = pos + + def __str__(self): + return f'{self.type}: {self.lex} ({self.lineno}, {self.pos})' + + def __repr__(self): + return str(self) +``` + +​ Como se puede comprbar un token está compuesto por un lexema, que no es más que una especie de nombre que se le hace corresponder al token; además también cuenta con un tipo, que se emplea para agrupar a los que tienen características similares, notar que para las palabras reservadas del lenguaje el lexema y el tipo son el mismo, no ocurriendo lo mismo para los strings y números. También se lleva para cada token el número de línea en el que aparece y la posición dentro de esa línea (número de la columna). + +​ La definición de todas las palabras reservadas del lenguaje se encuentra recogida dentro de _tokens.py_ ubicado en el directorio _src/cool/utils_. + +​ El proceso de selección de los tokens dentro de código fuente se realiza por medio de una serie de expresiones regulares, definidas para cada una de las palabras reservadas del lenguaje, así como para todos los símbolos presentes en Cool. + +​ Para ello se emplea _ply_, quien propone una especie de convención de la forma t_tipo y la definición de la expresión regular dentro del docstring del método. + +​ En resumen sería algo como lo que se presenta a continuación: + +```python +def t_equal(self, t): + r'=' + self.update_column(t) + return t +``` + +**Proceso de Parsing** + +​ El parser, que no es más que el análisis de la secuencia de tokens que se obtienen en la sección anterior y la producción del árbol de derivación, también se implementó mediante _ply_. + +​ _Ply_ brinda igualmente una conveción para la correcta definición de las funciones relacionadas con el proceso; para cada regla gramatical hay una función cuyo nombre empieza con p_ y en el docstring contiene la forma de la producción. + +​ Sería algo como lo que se presenta a continuación. + +```python +def p_atom_new(self, p): + 'atom : new type' + p[0] = InstantiateNode(p.slice[2]) +``` + +​ _Ply_ usa los (:) para separar la parte izquierda de la parte derecha de la producción, y en cuerpo de la función contiene el código que realiza la acción de esa producción. En cada producción se construye un nodo del Árbol de Sintaxis Abstracta (AST). + +​ El parámetro _p_ que se muestra dentro del cuerpo contiene los resultados que se obtuvieron luego de parsear el lado derecho de la producción. Es posible indexar en p para acceder a los datos, en el índice 0 se deja siempre el resultado de la acción que se realizó, mientras que a partir de 1 nos comenzamos a referirnos al primer símbolo de la parte derecha de la producción. + +​ _Ply_ genera un parser que usa el algoritmo de shift-reduce LALR(1), uno de los más usados en la actualidad, notemos que la gramática de Cool fue refactorizada para ser procesada por LALR(1) sin errores (para ello se eliminó todo tipo de ambigüedad y se tuvo en cuenta la precedencia de todos los operadores presentes), puesto que LALR(1) no puede manejar todas las gramáticas libres del contexto. + +​ _Ply_ también se emplea para la recuperación y el manejo de los errores. + + + +#### Análisis semántico + +​ El objetivo del análisis semántico es validar el correcto cumplimiento de los predicados semánticos y validar, además, la información de los tipos para la posterior fase de transformación del código de Cool a Mips. + +​ Para el desarrollo de esta fase nos apoyamos en el árbol de derivación, estructura que se presenta de forma conveniente para ser explorada, luego el procedimiento para validar cada uno de los predicados pasa por realizar un recorrido por cada uno de los nodos de dicho árbol. + +​ Dado el hecho de que la mayoría de las reglas semánticas incluyen al uso de variables y funciones, así como las definiciones de estas; se hace necesario, por lo tanto, acceder a un scope, donde están definidas todas las variables y funciones que se emplean en el nodo. + +​ También se emplea un Contexto, que contiene todas las definiciones de los tipos que se construyen a lo largo del programa. + +​ Para realizar estos recorridos de los que se hablan se emplea el patrón _visitor_, el cual será de relevante importancia a partir de este momento y se usará como pieza fundamental en todas las acciones que se realicen para el funcionamiento del compilador, este patrón nos permite realizar una abstracción en el concepto de procesamiento de un nodo. + +​ Apoyándonos en _visitor_, en esta fase realizamos varios recorridos sobre el AST, que permiten en este orden, realizar los siguientes procedimientos: + +- Recolectar los tipos definidos, la implementación está dentro de _TypeCollector_, en este recorrido solo nos interesan los nodos _ProgramNode_ y _ClassDeclarationNode_. + +- Construcción del contexto de métodos y atributos, la implementaión está dentro de _TypeBuilder_, en este recorridos solo nos interesan los nodos _FuncDeclarationNode_ y _AttrDeclarationNode_ + +- Construcción de scopes recolectando las variables definidas en el programa; teniendo en cuenta, como es natural, la visibilidad de cada una de estas, la implementación está dentro de _CollectVariables_. + + ​ En este punto se requiere un poco de atención sobre el orden en que se definen los atributos, puesto que la inicialización de estos no puede depender de uno que esté declarado posteriormente en el código. + +- Chequear los tipos, en esta pasada se verifica la consistencia de todos los tipos presentes en todos los nodos del AST para detectar con ello la mayor cantidad de errores y por consiguiente la creación de instancias de ErrorType para mostrar que cierto tipo presentó algún error semántico. La implentación está dentro de _TypeCheker_. + +​ Toda la implementación referente al procesamiento de esta etapa del compilador está en el directorio _src/cool/semantic_. Se pueden referir a la misma para analizar cualquier duda que surja. + + + +#### Generación de código. + +​ Para la etapa de generación de código, debido a que el salto de Cool a Mips, es demasiado complejo, se genera primeramente un código intermedio, CIL, para facilitar todo el proceso. + +**Código intermedio (Cool -> Cil)** + +​ Para la generación de Cil, también se emplea el patrón visitor, la idea principal es generar para cada nodo del AST de Cool, su correspondiente conjunto de instrucciones el Cil; en todo momento se asegura que las variables y funciones dentro del programa tengan nombre únicos para asegurar que no ocurran futuras incongruencias o inconsistencias durante la generación y posterior ejecución. + +​ En el leguanje intermendio se menejan 3 secciones fundamentales .TYPES, .DATA y .CODE, que recojen todos los tipos declarados en el programa con sus correspondientes funciones y atributos, las cadenas de texto constantes que serán usadas durante la ejecución y el cuerpo de la funciones en sí, respectivamente. + +​ Los tipos built-in que existen en Cool (Object, IO, Int, String, Bool) son definidos directamente dentro de CIL, para garantizar un fácil manejo de todas las funciones presentes en estos métodos, se concretó la idea de crear nuevo nodos en Cil: _ExitNode_ y _CopyNode_ para _abort_ y _copy_ de Object; además por el hecho de que en Mips se realiza un trato diferente asociados a los tipos _int_ y _string_ cuando se hacen llamados al sistema se decidió eliminar las funciones Read y Print, para en su lugar agregar: ReadInt, ReadString, PrintInt, PrintString, esto persigue que se realice de forma más natural y simple los llamados a: in_int, in_string, out_int y out_string presentes en IO. + +​ Por otro lado para los métodos de String: lenght, concat y substr se crearon los nodos: LenghtNode, ConcatNode y SubstringNode, para garantizar lo mismo que se persigue en la explicación del párrafo anterior. + +​ Con esto dichas funciones se crear directamente en la generación a Mips; lo que permite, como es fácil notar, ganar en eficiencia y manejar de forma más adecuada las particularidades de cada una de ellas. + +​ Algo que presentó una notable relevancia en la generación de Cil fue el hecho de la inicialización de los atributos, nos referimos tanto a los heredados como los de la propia clase; cuando se crea una instancia de una clase se deben inicializar todos los atributos a su expresión inicial, en caso de que tengan alguna, en otro caso se usa su expresión por defecto; esto se aseguró creando para cada tipo un constructor que se encarga de darle un valor a cada uno de sus atributos, este es llamada cada vez que se crea la instancia de algún tipo. + +**Generación de MIPS (Cil -> Mips)** + +​ Naturalmente para generar el código en Mips también se emplea el patrón visitor, pero en esta ocasión recorriendo todos los nodos de Cil que fueron creados en el paso anterior, para cada uno de estos nodos de Cil, se genera el conjunto de instrucciones necesarias para Mips. + +​ Una de las principales dificultades que se presentaron en esta sección fue la representación de los objetos en memoria, para ello se necesita guardar la información referente al tipo del objeto, los métodos y sus atributos, además de información extra y de otros aspectos útiles referentes al tipo (por ejemplo una referencia al tipo del padre). + +![](../img/memory.jpg) + +​ La imagen anterior muestra la forma en la que se representan los objetos en memoria. El TypeInfo almacena una referencia al nombre del tipo, la información del tipo del padre y además una tabla donde están ubicados los métodos del objeto como tal, y en la misma forma en la que se guardan en Cil. + +​ A la hora de crear un objeto, se calcula el tamaño que ocupará, que no es otra cosa que el total de atributos más los 3 campos adicionales usados para guardar la otra información. + +​ El orden en el que se ubican los atributos, es primero los del padre y luego los propios del objeto, entonces a la hora de acceder a ellos se calcula el offset de este atributo en su tipo estático y a este se le suma 3 porque ahí es donde empiezan a presentar los mismo. + +​ De forma similar se hace para acceder a los métodos, primero se busca en la posición 3 de la tabla del objeto, donde encontramos el TypeInfo y desde allí se accede a la nueva tabla a partir de la cuál se busca el índice de la función llamada según la información que se tiene del tipo estático del objeto, resaltar que ahí se encuentra la dirección real del método. + + + +#### Problemas técnicos + +​ Un especial tratamiento hubo que dedicarle al menejo de los comentarios y strings en el lexer, puesto que las expresiones regulares que se definieron para el manejo de estos no cubrían todos los casos posibles. Para ello _ply_ ofrecía una solución que consitía en crear una especie de estados, donde una vez que se accede a esos estados, se le puede dar un tratamiento diferenciado a ciertos tokens, tratamiento que no poseen en el estado _Initial_, que es el que se usa por defecto en _ply_. En este punto lo más difícil de anlizar fueron los comentarios que se realizaban con ((\*...\*)), pero para ello al encontrarse el primer (* se entró a un nuevo estado y por tanto todas las demás reglas eran ignoradas, en ese estado nos mantuvimos hasta llegar a *). + +​ Los otros problemas más relevantes que tuvimos radicaron en la generación de código, por ejemplo a la hora de determinar como utilizar los registros para almacenar los valores y con que fin se iba a utilizar cada uno; también surgieron otros errores, pero afortunadamente se le puedo dar con la solución aceptada para cada uno de ellos. \ No newline at end of file diff --git a/doc/report.pdf b/doc/report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a5dc817a1af1bcb4b0cbcdb5027fc82e337bb907 GIT binary patch literal 183918 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 Date: Fri, 25 Feb 2022 20:10:57 -0500 Subject: [PATCH 44/44] docs(): fix details in docs. --- doc/report.md | 42 +++++++++++++++++++----------------------- doc/report.pdf | Bin 183918 -> 186651 bytes 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/doc/report.md b/doc/report.md index da0d511b4..0f07fcf04 100644 --- a/doc/report.md +++ b/doc/report.md @@ -31,9 +31,7 @@ - ply: es una implementación enteramente en Pyhton de las herramientas de análisis _lex_ y _yacc_, que facilitan el desarrollo del lexer y el parser, brindando un cómodo y aceptado manejo de los mismos. - pytest y pytest-ordering: se usan para llevar a cabo los tests automáticos de cada una de las fases por la que transita el compilador. - - -​ De igual manera dentro del archivo _requirements.txt_ se encuentran recogidas todas las dependencias del proyecto, además de que se ofrece la posibilidad de utilizar un entorno virutal por medio de _pipenv_ para garantizar que el ambiente en que se pruebe posteriormente el compilador sea exactamente el mismo en el que se desarrolló y por tanto evitar problemas de incongruencia de paquetes y módulos. +​ De igual manera dentro del archivo _requirements.txt_ se encuentran recogidas todas las dependencias del proyecto, además de que se ofrece la posibilidad de utilizar un entorno virutal, por medio de _pipenv_, para garantizar que el ambiente en que se pruebe posteriormente el compilador sea exactamente el mismo en el que se desarrolló y por tanto evitar problemas de incongruencia de paquetes y módulos. Si se quisiera instalar directamente los paquetes sin hacer uso de pipenv el comando sería: @@ -41,7 +39,7 @@ Si se quisiera instalar directamente los paquetes sin hacer uso de pipenv el com pip3 install -r requirements.txt ``` -Ahora usando pipenv tenemos: +Ahora usando pipenv empleamos: ```bash ~$ pipevn shell @@ -50,11 +48,11 @@ Ahora usando pipenv tenemos: Notemos que ambos comandos se ejecutan en una terminal ubicada en la raiz del proyecto. -​ El archivo principal del proyecto es _main.py_, se encuentra ubicado en la carpeta _src_, este recibe como argumento dos ficheros: uno de entrada que debe tener la extensión .cl (que cuenta con el código de COOL) y otro de salida donde se devuelve el código generado en MIPS. +​ El archivo principal del proyecto es _main.py_, se encuentra ubicado en la carpeta _src_, este recibe como argumento dos ficheros: uno de entrada que debe tener la extensión .cl (que cuenta con el código de Cool) y otro de salida donde se devuelve el código generado en Mips. ​ El compilador también se puede ejecutar haciendo uso del fichero _coolc.sh_, ubicado también dentro del directorio _src_. -​ Una vez que se ejecute el compilador el fichero generado con el código de MIPS, se ubicará en la misma carpeta, con el nombre _mips_code.asm_, esto se realizará siempre que no se pase fichero de salida a la hora de llamar al _main_, puesto que este segundo parámentro no es obligatorio para nosotros. +​ Una vez que se ejecute el compilador ,el fichero generado con el código de MIPS, se ubicará en la misma carpeta, con el nombre _mips_code.asm_, esto se realizará siempre que no se pase fichero de salida a la hora de llamar al _main_, puesto que este segundo parámentro no es obligatorio para nosotros. ​ Estructura y organización de los directorios del proyecto a partir de la carpeta _src_: @@ -120,7 +118,7 @@ Notemos que ambos comandos se ejecutan en una terminal ubicada en la raiz del pr ### 2. Documentación acerca del desarrollo y funcionamiento del proyecto -Esta sección se encuentra dividida en 3 grupos o fases: +El compilador de forma general, se encuentra dividido en 3 grandes fases o grupos: - Análisis sintáctico: comprende desde la comprobación del código fuente escrito en _COOL_ hasta su representación en el árbol de derivación, incluye todos los aspectos relacionados con la definición de la gramática, así como la construcción del lexer y el parser. - Análisis semántico: se basa en la revisión de los aspectos aceptados en la fase anterior, mediante la validación de que todos los predicados semánticos definidos previamente se cumplan. @@ -138,7 +136,7 @@ Se intentará detallar lo mejor posible cada una de estas fases a lo largo del i ​ Esta fase en encarga del procesamiento del código fuente escrito en _Cool_, mediante la creación de _tokens_, que no son más que secuencias de caracteres que tienen un significado para el programa. Todos los espacios en blanco, campos de línea (\n), tabuladores (\t) y demás caracteres sin importancia son removidos también durante esta fase. -​ Dicho de otra forma, el lexer no es otra cosa que el proceso de transformación de de una secuencia de caracteres (strings) en una secuencia de tokens. +​ Dicho de otra forma, el lexer no es otra cosa que el proceso de transformación de una secuencia de caracteres (strings) en una secuencia de tokens. ​ Un token está representado por la siguiente clase: @@ -157,13 +155,13 @@ class Token: return str(self) ``` -​ Como se puede comprbar un token está compuesto por un lexema, que no es más que una especie de nombre que se le hace corresponder al token; además también cuenta con un tipo, que se emplea para agrupar a los que tienen características similares, notar que para las palabras reservadas del lenguaje el lexema y el tipo son el mismo, no ocurriendo lo mismo para los strings y números. También se lleva para cada token el número de línea en el que aparece y la posición dentro de esa línea (número de la columna). +​ Como se puede comprbar un token está compuesto por un lexema, que no es más que una especie de nombre que se le hace corresponder al token; además también cuenta con un tipo, notemos que para las palabras reservadas del lenguaje el lexema y el tipo son el mismo, no ocurriendo lo mismo para los strings y números. También se lleva para cada token el número de línea en el que aparece y la posición dentro de esa línea (número de la columna). ​ La definición de todas las palabras reservadas del lenguaje se encuentra recogida dentro de _tokens.py_ ubicado en el directorio _src/cool/utils_. ​ El proceso de selección de los tokens dentro de código fuente se realiza por medio de una serie de expresiones regulares, definidas para cada una de las palabras reservadas del lenguaje, así como para todos los símbolos presentes en Cool. -​ Para ello se emplea _ply_, quien propone una especie de convención de la forma t_tipo y la definición de la expresión regular dentro del docstring del método. +​ Para ello se emplea _ply_, quien propone una especie de convención de la forma `t_tipo` y la definición de una expresión regular dentro del docstring del método, para reconocer la palabra. ​ En resumen sería algo como lo que se presenta a continuación: @@ -188,11 +186,11 @@ def p_atom_new(self, p): p[0] = InstantiateNode(p.slice[2]) ``` -​ _Ply_ usa los (:) para separar la parte izquierda de la parte derecha de la producción, y en cuerpo de la función contiene el código que realiza la acción de esa producción. En cada producción se construye un nodo del Árbol de Sintaxis Abstracta (AST). +​ _Ply_ usa los (:) para separar la parte izquierda de la parte derecha de la producción, y en el cuerpo de la función se detalla el código que realiza la acción de esa producción. En cada producción se construye un nodo del Árbol de Sintaxis Abstracta (AST). ​ El parámetro _p_ que se muestra dentro del cuerpo contiene los resultados que se obtuvieron luego de parsear el lado derecho de la producción. Es posible indexar en p para acceder a los datos, en el índice 0 se deja siempre el resultado de la acción que se realizó, mientras que a partir de 1 nos comenzamos a referirnos al primer símbolo de la parte derecha de la producción. -​ _Ply_ genera un parser que usa el algoritmo de shift-reduce LALR(1), uno de los más usados en la actualidad, notemos que la gramática de Cool fue refactorizada para ser procesada por LALR(1) sin errores (para ello se eliminó todo tipo de ambigüedad y se tuvo en cuenta la precedencia de todos los operadores presentes), puesto que LALR(1) no puede manejar todas las gramáticas libres del contexto. +​ _Ply_ genera un parser que usa el algoritmo de shift-reduce LALR(1), uno de los más usados en la actualidad; notemos que la gramática de Cool fue refactorizada para ser procesada, por LALR(1), sin errores (para ello se eliminó todo tipo de ambigüedad y se tuvo en cuenta la precedencia de todos los operadores presentes), puesto que LALR(1) no puede manejar todas las gramáticas libres del contexto. ​ _Ply_ también se emplea para la recuperación y el manejo de los errores. @@ -200,9 +198,9 @@ def p_atom_new(self, p): #### Análisis semántico -​ El objetivo del análisis semántico es validar el correcto cumplimiento de los predicados semánticos y validar, además, la información de los tipos para la posterior fase de transformación del código de Cool a Mips. +​ El objetivo del análisis semántico es asegurar el correcto cumplimiento de los predicados semánticos y validar, además, la información de los tipos para la posterior fase de transformación del código de Cool a Mips. -​ Para el desarrollo de esta fase nos apoyamos en el árbol de derivación, estructura que se presenta de forma conveniente para ser explorada, luego el procedimiento para validar cada uno de los predicados pasa por realizar un recorrido por cada uno de los nodos de dicho árbol. +​ Para el desarrollo de esta fase nos apoyamos en el árbol de sintaxis abstracta (AST), estructura que se presenta de forma conveniente para ser explorada, luego el procedimiento para validar cada uno de los predicados pasa por realizar un recorrido por cada uno de los nodos de dicho árbol. ​ Dado el hecho de que la mayoría de las reglas semánticas incluyen al uso de variables y funciones, así como las definiciones de estas; se hace necesario, por lo tanto, acceder a un scope, donde están definidas todas las variables y funciones que se emplean en el nodo. @@ -220,7 +218,7 @@ def p_atom_new(self, p): ​ En este punto se requiere un poco de atención sobre el orden en que se definen los atributos, puesto que la inicialización de estos no puede depender de uno que esté declarado posteriormente en el código. -- Chequear los tipos, en esta pasada se verifica la consistencia de todos los tipos presentes en todos los nodos del AST para detectar con ello la mayor cantidad de errores y por consiguiente la creación de instancias de ErrorType para mostrar que cierto tipo presentó algún error semántico. La implentación está dentro de _TypeCheker_. +- Chequear los tipos, en esta pasada se verifica la consistencia de todos los tipos presentes en todos los nodos del AST para detectar con ello la mayor cantidad de errores y por consiguiente, en caso de que se encuentren los mismos, garantizar la creación de instancias de ErrorType para mostrar que cierto tipo presentó algún error semántico. La implentación está dentro de _TypeCheker_. ​ Toda la implementación referente al procesamiento de esta etapa del compilador está en el directorio _src/cool/semantic_. Se pueden referir a la misma para analizar cualquier duda que surja. @@ -236,13 +234,13 @@ def p_atom_new(self, p): ​ En el leguanje intermendio se menejan 3 secciones fundamentales .TYPES, .DATA y .CODE, que recojen todos los tipos declarados en el programa con sus correspondientes funciones y atributos, las cadenas de texto constantes que serán usadas durante la ejecución y el cuerpo de la funciones en sí, respectivamente. -​ Los tipos built-in que existen en Cool (Object, IO, Int, String, Bool) son definidos directamente dentro de CIL, para garantizar un fácil manejo de todas las funciones presentes en estos métodos, se concretó la idea de crear nuevo nodos en Cil: _ExitNode_ y _CopyNode_ para _abort_ y _copy_ de Object; además por el hecho de que en Mips se realiza un trato diferente asociados a los tipos _int_ y _string_ cuando se hacen llamados al sistema se decidió eliminar las funciones Read y Print, para en su lugar agregar: ReadInt, ReadString, PrintInt, PrintString, esto persigue que se realice de forma más natural y simple los llamados a: in_int, in_string, out_int y out_string presentes en IO. +​ Los tipos built-in que existen en Cool (Object, IO, Int, String, Bool) son definidos directamente dentro de CIL, para garantizar un fácil manejo de todas las funciones presentes en estos métodos, se concretó la idea de crear nuevos nodos en Cil dígase: _ExitNode_ y _CopyNode_ para _abort_ y _copy_ de Object. Además por el hecho de que en Mips se realiza un trato diferente asociados a los tipos _int_ y _string_ cuando se hacen llamados al sistema se decidió eliminar las funciones Read y Print, para en su lugar agregar: ReadInt, ReadString, PrintInt, PrintString, esto persigue que se realice de forma más natural y simple los llamados a: in_int, in_string, out_int y out_string presentes en IO. ​ Por otro lado para los métodos de String: lenght, concat y substr se crearon los nodos: LenghtNode, ConcatNode y SubstringNode, para garantizar lo mismo que se persigue en la explicación del párrafo anterior. -​ Con esto dichas funciones se crear directamente en la generación a Mips; lo que permite, como es fácil notar, ganar en eficiencia y manejar de forma más adecuada las particularidades de cada una de ellas. +​ Con esto, dichas funciones se crean directamente en la generación a Mips; lo que permite, como es fácil notar, ganar en eficiencia y manejar de forma más adecuada las particularidades de cada una de ellas. -​ Algo que presentó una notable relevancia en la generación de Cil fue el hecho de la inicialización de los atributos, nos referimos tanto a los heredados como los de la propia clase; cuando se crea una instancia de una clase se deben inicializar todos los atributos a su expresión inicial, en caso de que tengan alguna, en otro caso se usa su expresión por defecto; esto se aseguró creando para cada tipo un constructor que se encarga de darle un valor a cada uno de sus atributos, este es llamada cada vez que se crea la instancia de algún tipo. +​ Algo que presentó una notable relevancia en la generación de Cil fue el hecho de la inicialización de los atributos, nos referimos tanto a los heredados como los de la propia clase; cuando se crea una instancia de una clase se deben inicializar todos los atributos con su expresión inicial, en caso de que tengan alguna, en otro caso se usa su expresión por defecto; esto se aseguró creando para cada tipo un constructor que se encarga de darle un valor a cada uno de sus atributos, este es llamada cada vez que se crea la instancia de algún tipo. **Generación de MIPS (Cil -> Mips)** @@ -252,15 +250,13 @@ def p_atom_new(self, p): ![](../img/memory.jpg) -​ La imagen anterior muestra la forma en la que se representan los objetos en memoria. El TypeInfo almacena una referencia al nombre del tipo, la información del tipo del padre y además una tabla donde están ubicados los métodos del objeto como tal, y en la misma forma en la que se guardan en Cil. - -​ A la hora de crear un objeto, se calcula el tamaño que ocupará, que no es otra cosa que el total de atributos más los 3 campos adicionales usados para guardar la otra información. +​ La imagen anterior muestra la forma en la que se representan los objetos en memoria. El TypeInfo almacena una referencia al nombre del tipo, la información del tipo del padre y además una tabla donde están ubicados los métodos del objeto como tal, y en la misma forma en la que se guardan en Cil. A la hora de crear un objeto, se calcula el tamaño que ocupará, que no es otra cosa que el total de atributos más los 3 campos adicionales usados para guardar la otra información que se muestra en la figura. ​ El orden en el que se ubican los atributos, es primero los del padre y luego los propios del objeto, entonces a la hora de acceder a ellos se calcula el offset de este atributo en su tipo estático y a este se le suma 3 porque ahí es donde empiezan a presentar los mismo. -​ De forma similar se hace para acceder a los métodos, primero se busca en la posición 3 de la tabla del objeto, donde encontramos el TypeInfo y desde allí se accede a la nueva tabla a partir de la cuál se busca el índice de la función llamada según la información que se tiene del tipo estático del objeto, resaltar que ahí se encuentra la dirección real del método. - +​ De forma similar se hace para acceder a los métodos, primero se busca en la posición 3 de la tabla del objeto, donde encontramos el TypeInfo y desde allí se accede a la nueva tabla a partir de la cuál se busca el índice de la función llamada, según la información que se tiene del tipo estático del objeto, resaltar que ahí se encuentra la dirección real del método. +​ También requirió especial atención el nodo _ConformsNode_, usado para determinar si el tipo de una expresión se conforma con un _typex_. Para calcular esto se accede al TypeInfo del objeto y a partir de ahí, se realiza un ciclo por los los tipos del padre hasta encontrar alguno que sea igual a _typex_. La igualdad de tipos se comprueba accediendo a TypeName. #### Problemas técnicos diff --git a/doc/report.pdf b/doc/report.pdf index a5dc817a1af1bcb4b0cbcdb5027fc82e337bb907..c4b0f085acb9ed58a336c9dc17f35c2f962a1bf4 100644 GIT binary patch delta 73721 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±P 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 delta 71073 zcmY&9o^RhCt{s;fJOC20&92mgP zB`8SZ;_7T}YzOC=d6B6TLowtuv~{F5UkA!{H!0iA%-pfQQ}+k*9h62VKo~Ff{R7l; zAN6Lcpw&mZ_uDR0h#tB|k`zH#B!8>JVBzhN^2=4%*7nleiQX)2)=-R4*TG0b-lFLrCd>OenfU6tvm`|Bt`)0l}pbx%D+DfyJ9D!t%S z%HjU(efwi=&4c)o`NZP=CW?;HdRB^wbaiiS%Hb<75mwf#BJpkbEB*aS0QmBq5aRr* z_t~WVyL!d6c=l=N^>hXhZGC<|KIqwpdz>_T+3h(+>>xBK)Lk3zwI?jn(o?-$L?cD80pm6X$Z7D0nMY0ezkgJ>-&0xKAWI?Y)crsqxc z+V*r_O-jq%na7ITrLQu%2o*h$n)WVSM}}%LJ?|#t;iKIK3ApmC6;@NWMt{X21`EJ8 zSt%f;*Uaght459#1k_HSp6?)Oqy_QPvXu!$XjD&Xv#Z?Wn+{G#0$E0QmkCg08!7R& zDk6?z6^&)N^P`OQ29V3xYUwj?3B%{oX6_WM95gPF(qw9TT;ddQC2^IC zt^{f&D0}}H*j=#LVR;Hx^04t}aph=;e&r$v!8N8J}*2mYw67X_@;^!l?0R$zqF0Ao?3&u}!Z_I)a#G8G zeLI?c-k^19QZD7;3mW!$Fr=oPSa!lJ&neQTy;vIL0;_+{SonG@W{Vd0J~#cTPPBE} zWJk?T`TI?th1_SRXF{5I%q#=SLD#@kw%ps~ep*R%2b;*<{uNt-DeD}y1u(QyKX$%s z1?3}$9AUyceFd>+BzRz8Gu}y}A((S_>6S8wxA)fnl9pem*4u|?)8WeI)zg1SWtZy0 z9oS%8*`|xzs;;Mf?MHK-EHLbcdA(E1A1P4C#XftfX(M zL0Z-M0};Hn+?s!QJ8-J{n<`+Yx13b${K^k7r5Rl?vnyZ3#BA1N1h{4}G3TkAEp2Ch z5%JlN{k4azj<@xyu+DDyAqQzc-(C^*Bi)jIg?FFmw*X_tDyLfAw`J37Y%hU_$nWKF z>#-S-pQ9I2OTnEcIMs&C-?e|^=xeMAG;^b@u$m5Y;ycUFT|X3c;ZD`V zAIz$&x6~KU37qdTm=MOhN~P1x;J|Eu4*T6d7Fig*SEqUjh- zIQH?saefK?I8a)>`H%b`!Qs8$om0Q3w0cLK^eg~CzyBfhpCuCd5t7sYEW_qM8=6z! zr?k39ZFk)_AvLr)M}2Wj{@OPUW?+hQd7J?C`bTM+n!I2RI{rX37Un)R8Nw%Eqe(_T zK<2H3YL-&Wx<7yDjjTt_WB|K3>4IA=LL9!Kd{a3h5F!>;mm;c%thP2UA`DzNIgq|q zx|IZo2vl#Cu!wU^V2kq{Nef3wHGk-5@cr2b8nHW#TXw+QN9D|KV#)0u;xCu^J30`i zT+SGp&VU*G5tZcM_ra==C{!XpNL$k(RH7HLM!MZh{{M3+^ke_AwbJb*^zbXw=(VSe z*U5;rgQeZ@T4o||Gj&blU_i(BdRx{)ku{t^e2ZU*JlRI($tu-RYt+|%dDYi@@Qx4` zw$046`YoB-x=Zx4pC|ojME-UrwBM9>wcHc+T)YHCd(2!yW|^)$9|MkY>oTRiRV0S& zbB5h9-P_yhN|58HI)n92KdoSC>ysv~X~(Zni0=cQ8S**0U4(s^Apuh3>wbnm#ntG0 zb)GWvcGWf}vZAf^zH}Pq@ zIh>hOy@W?~o(H~ImB9b=+m$vJ1r;*CHT4^ByY0LyCq3t}%Moa&s5@vE4B4TQYRk&vCYEnlE-2iXW) z{#$yS*aDRy$a#d{RaT2O!G%`4a^_q|bM48d%J~r)02(xz$p$A=Z`L;XhhvR$C;cMc zmDJdNTvimV@`Xtz#Wy7|i!D+V4K881PNqG#8s?wi6gB7>WC#aq;D%dstR_NXpJr&1 z88z4+UO-r?7k9dlxrEkVk`zZq8v0N@Z^cKLGz<%a7hMY@-to66+BX_ks&X2N9jG9R zZ0Zw$LQh&+)H;G#MtV0WP-j`eu2;I(Tkajw&=M_LBaB$KuHU%jWqWm54F-G$4oY5M zg!>q8kGYZr0^V7=3r5uP!ct_pcG!Q@5?Mq%(gWV4eT`)B4bh~1i}XLncbQ}`gz$gN zf6mATL;e{Y)V;kx98cj)>~H{0inuf>_a~L?y|5+4Z1omOQa*X8(F|3;x5j$_4htHJ z__$2yjlD>u2Y$b2n@D7n-aj*0n&q%IU^;ZRSet>eHxZ8Gz!`dDkzyO?DIs46bl{=x zP5i|1G(cffhxE77?03AIX~-+WfhxyDz-gN-fi^HDSVc7H4}pMEMD8>kFROA z3mW(rF1OyI2RbTYqhFFEPX0oiAl%*i)6{A}mk@E)O=P^?`MMt)j?NxEafGND1zY@0 zNk3SipI{|!z#F|dPmuV1PP=(8>gL(n3xeF$*h}(F8$9EgJAhVthsvU2FRV``)ryd3O3m5xjO+!Lp>9Gt zIID9?EOV=>UWa}RdLgHbuLg}w-fsf-ttM?)$UeIh>=-}xgaBh6R<<0|-Q)CWJ=a*K z>UTHO5SYfZIQS!WIoGELN$!G`AKMu*j^ZL1q_@zIy}T4DFEzwezKM-429By(OGIyv zvmwXE$4Aih=#7=tRhMa?R-}9}_0-Edm<5oWx>{s^Rt{P{oVn~3LrlG#9#K0pA!w8N z7>0vO^sV$f5CBaKyiY+MkjsZ(Y~xVJB)AwzBI7<`U1;pAk(oMg7yoV&5rSL9T9#ua zSAB;gJTw}(ZN}KjKsVpH^DxUFe+=nKF{tH+qlARKi>p2AY*7JdWg*CgLYh1x-0Qs} z1W^HlpTw*%7Z?F$LxN&Ff4hf7c9@9qgG9MSh)VbL@c_I*9xm6Pb1vs4nL(IY!+AP0 zS(#N5jAJVLH6fWRm~8{oC4v?y}76GJ+%nirkiT3>&%zR&dc+4 zPodKIl>N-fqXe@-!yDVdeo>vQxqRnYW3;{@aftgZb{(d z_vYkFG#3%C>&km!A^Jg%kkxyox}?12XLo0xdg0n(c#j)g#!bIgg6=w5F!olr z!;&$psz`pdh`P6eB14Z}ZxeMTU{B2h>2UGNhXdS)xpW-?u`{lOgFaz}O2N)8gH{*)^i^_$a_?7YXu%W(5?IOOPZ*Eq8qH#FDS z<#AMOp7B)XY3isj&ZFz7e92EIsYM}OkOV_;-eOXQSmD8?RydwVC)8g7OIosTIhH>5 z-x&VfA44f=6mtRD%`_ta;Y+-iX7-ZwdeSH96hBb{Hu74VABjLwK_AQSiV^n*ZU(so zZ2iCq7H$XCwm5o-*9s>lY#NkEAg_RRJY3R@8*5^u8<8#<)zFqS?dLK>u!X8ThO}sw zV09v^*iBd~D*OObU45kKJtHsZ|YigybUujnO; z<>rFqB^vjetK3VpEZ<)ipT9ik6I4q74&t1!)qM#(Sa=D0aFj_21wV2|OMal{g+T!( zmFoJOh>GGC(ts1``#m#N=6`C!O=b8k8!X2=m*jglF1Tj<&%8I+C=%8-7ny( zg2sohuX9r3b@~i(HktD8YT-Af?knfSkXzEODaV|cwx?gI(7gIS{a0JhrIpkLbCEf7 zWXES!8IFdPAep)sON>p(ZCV=Y$+wDJ0M*aC%|F2h=tMBaAcO>WY;`x6^MCrE3Ww{2 zzPLTuM(TZ)RyVa69K%AiSPFgHkk)~V*8QcJ1+ytfa-tQHhPS`fo!b*~61fqi)jn&j z34aRjXt|C^GF=|A!9#AHw8)O!nn;LunN15mlZi2KC-+1~!>-&<&lkan8PQMhE{eC) zIK}p#9{EC*nFHZ7Uf*tU3-662(U5v-)*K@#d>ugM!y=^1cO71K+Z`n8lr)wuaP$>-;b~y$=ztAf3P2PG4t!in*8gvCUIAnkOvzan*2G!O{~f`V<`9@AXV>Tz^=n z;lJqPqD7hY)F%Il20Ec`=i0ybvD+g0P`Llam&SRm$m-rHwUNX$9X^YDN0!E^Ek-b$%p2iPr zQrG>gMrPf;TlF-vPKNKo)KI+_!w*kZFTn4{fz@i^*Jxm$WpHDJ*JHSUWJ$=9cakhx;-h3>? z$H=V44k;{qcc8q++jPs{?@_~derUSHL#8Z8z*{_pXFd{odG^)`{K!cS+rvT}Wid>VwU>EG zM9p>Kvk$YT0bEmq4kEb6UM9ClZ}=$uL;AbWC_eAQF!BizCkhqsA=~a{w(o+jP*(lJ zR3}0RQm9>ZwT9b$`Yz=XBf&f6L3A zNJ7RpY%ZoPt0RLY{L?$P<1&0Lw`Wg{kha#Fn-zRk9twp`#aaKhQx?|}SHfO}B?S$Y zPEDEOi|OPtH(R--g~ltKTo4<#DLCQ`YeMkrxSTCL6;Nr*E@*~ z;;tDKs3)L8I_x?HvMQP*nII8%fF_tT(Hlt##B{3!#txnefI}z zCr=6LCP=zAm{hmL81v4PD>C%oEDrLsKA(?Hh=KG^a690hA&E`%W!}e!obWyOZ&=-o z;vTbeZ&lX^KO-{m?*4jXDe&>Qh2Hoyt7Hfn1pe-wUZCZkFO;`JiQ4LD-I##ET<37G z(tkoPh`+BvN(zGA(+o?`ZI@^mx+-1_FOD4q=R^uukd)c^9a_Zu2YCF)c|!!$+2HZ- zY519+w&%b;yR;^)8DZEp1Gsx`%{uOHvycn@?$%{BS9nxO6l-UyD7<;mz?I=pLY&OJ z2WQg0@rHrcVY%V@k(FBr#B#cCMmOe*B!DV9PJ`%BB_E08+4{;bmbNopx_z>6eXi!x z4Y>H#JI@&wH=1mqqP%dTh}Rq}MyRfM(NrL^*-s!!BP%}^hK?gk_E&0BC;OPyvv>YN zfkLe^`UOrX39>SN76gh2(c=E*XkdZZufV^*d+|_INYr73WtAcjBAW9{|(^11+>MA^=TGS^-o z6`TYBBWYBnl!&xOJuy+Y`l+IE)3)A;ca~3=71@yPre^&BYNYrjyD7E|!zAhrE#wrs zFEAN40?Okm9D>f1IlLo|L_M21yag>9OEAEl$s;@uCGaC<4~K*CtH#bNnCdA2Qt6U${{vUXX#*mPJhz}pcQlP!jf_$bJrd68qcrU=O7Hyk*PM|;{ z+iIhjJ0B=cJ7(~t#0Ebv5E$Q%iKTlm$$Xvtz{D*}op&~KL-p9srv zdNq2%@5x@m+X~G5B|Ie@7}YD5A_f1c`rBjLy>Ik;MW)33 z$nI{eNn*I^nT*YJ1@*kXMsl~Gj- z?wM-q<>EdReY942^Nd%vLEE<6-A*H422d5cwR{lV0bA@kE4Gz(Z8}hV@H6!#?*)t` zj5_p)>haX-_hQ;bs8{~^3B}UD{3H6l!s>J#h*-p3u7P2NC0TF)Ge;^zWv}!Ou<}84IM{y%(!O@(NbBNH@qI#lv zT=gJL7A&ni7^4{@PN;I=yt;A(L%LC$3isbwfHbnf0i*Jh z=VN6(vj>_EZHfp1M|8 z5oYAZ{R|B*Us)#T2)ezQ{?@^Yw^k;5?NUnTN3JmD{WzVBs7V4UIJ!yd=%&p6CVAAV z>f0hBpcWoibU_5V3b`R&+J7~(5S^UH5QQJhLF%zyYJjiT!ju!yY@^;gQ%wKq{1EO* z;}PF!UA!%twPrRdja24X$Sb&1BjlyyzgtKztJY;_C0w4e_;5M% z#ZlMUT0RBlc#m$?Y~F&3%QLzNL#);!WL@h?2GEoqFonvdoI}xd{NY8zvnmCLrGZyq zB@BbwjWvS{!(!pg^Fqp{`r#RWD9xS`JoQcu$KS#<209PS2kvvD!QMeBJcdE2O&bK0 ztIQevE*uRCULs&cE~MbTWs`A?ZN-%SGZo%qe-Ed`IuX7%s374x>h z6^%D7`LZFPZ2bs#E-H(&w)u)E_7mPxgkPTUuq*I) zr9Emj_eQ-Qk!)|;1-1EwjgZL*-;0j)1wwy5io+*sgTjFMuLHR8q8+SXHmEHDqmKzI z?#W&yVmx!ytlxFq*88udct(p@ZADfP`71uZ8%cfu4LKgA{x9rIhT6cdCitEymSthTJ)xZ;SCdJx-5QD=r^c zF;c7)qC5I=&5vw8d`1S{www}H8*-vm=QNT-J{>@-Zlcki2k;Oy-egELLLM~@nr>+Y zmqbF#KQ+W|5Qx4O*6bOQ^pgcK;t1B^cqr`wb>8N-D;a~`#8`UC0*}VXHG?zHo7D#~ z+WrK3{Hnpoi_g`kUlu13Qn6o(q^{y$_}6Fsm-&F?{kL$VMfe)yh3iX>-}V_;3zJ~i zdiBi;B!eTTxGUnE-rgb_yOx3gC7O}eu*fj%<2%kJUtB&{)kTlpGH??4+|p1TjCLfX%?ZEjR# zCdq|q?Q{4_t*(N?u4N6ZggkT-pFQwJ{CYYhwMPoAu3NsLa@wfb*$k*4iAK2*J2kjq z6yN{i3>F~YUgybC@C#c;^<2x~15zx24^-2k?datjZB|2AJ%115W5#4kEYUtLc2CAi z*9L_SCrd7Nckn#R^)XBGjGc`4b|quu(Tg&vX`F*eCX;ihCtJ6tUH8efO*#kPn~ z59jaqjrhYiO2?iVeZy8BO?}G(jhisEmxXUZdJKMh`NW&lf_u&gJ|XVg{_Y6CKgrh7 z)-n=MiAD^MXyi0|zLkXFLrUb@cecRB>fzv=1toOzQXS`n@701_<})bOf>@Pbg+SWS zcKl_KJ>}nB2T+b*lHGZPRUmslR$a5TA=~;ze)LY%9K=)%$rN4FJK@xphGU zeF5QfM>&V8zWWj`^<=CaIkCU6cJEN(thFf3FsrdYs%~w7JL&tvg8J&z8__CyK5coj ze>vGZXoAPKbyJnyNxoO{s)GUbz%{)m3ofH$WwV*js)+m9IMmxnHF0*4lZaz`-i=Yv{r`g_qY_`XKb)ZS2y zZ=x(UzL7aC_s%arb1*M8a)rB@g#SW1Fss7i235=aP_g1ipOhk1i+?$w&g^y?YY<~G zs$kD0faz$821aPqzvFk{z$RmYHARa)j}t1A+_b8|4Im8RhCKDk6Gh?&R)bmDV^oG` zAd5~1LnC5X7c<6~OzT^>V?XBW$1_SEDKQI2ydQx3>-^onS6nW(nB|)LHEm{aY z%_Iu>YxV3{(o_Iqhk6x#2ZfvZ8yzzMp**fAd^Lbwo16}%3Db<1A?J~p;(CPQPD1V% zJAzKB#BUf2&V@%22)cf^x|9Hn#3VU4^F-s-LV@D_=l7SszYs7jO%P~lb^ZEv-mpsf z7GZm>835YNM5COu`duOgnP%k6p@hv*%v%{ZY z&3RJ!#TF�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