CannotDefineFunctionInBodyError = object of ValueError
proc evaluate(ast: AST): int {....raises: [KeyError, CannotDefineFunctionInBodyError], tags: [].}
proc evaluate(ast: AST; variables: var Table[string, int]; functions: var Table[string, AST]): int {. ...raises: [KeyError, CannotDefineFunctionInBodyError], tags: [].}