from sys import stderr EXIT_CODE_FILE_ERROR = 1 EXIT_CODE_INVALID_TOKEN = 2 EXIT_CODE_SYNTAX_ERROR = 4 EXIT_CODE_EOF = 7 # vim autoindent misbehaves if I type these verbatim in strings LEFT_BRACE = "{" RIGHT_BRACE = "}" LEFT_BRACKET = "[" RIGHT_BRACKET = "]" LEFT_PAREN = "(" RIGHT_PAREN = ")" class JackSyntaxError(Exception): def __init__(self, msg, token): self.message = msg self.token = token super().__init__(msg) def print_err(msg): print(msg, file=stderr)