# Buggy code
def __init__(self, stmt, context):
    self.stmt = stmt
    self.context = context
    self.stmt_table = {
        ast.Expr: self.expr,
        ast.Pass: self.parse_pass,
        ast.AnnAssign: self.ann_assign,
        ast.Assign: self.assign,
        ast.If: self.parse_if,
        ast.Call: self.call,
        ast.Assert: self.parse_assert,
        ast.For: self.parse_for,
        ast.AugAssign: self.aug_assign,
        ast.Break: self.parse_break,
        ast.Continue: self.parse_continue,
        ast.Return: self.parse_return,
        ast.Delete: self.parse_delete,
    }
    stmt_type = self.stmt.__class__
    if stmt_type in self.stmt_table:
        self.lll_node = self.stmt_table[stmt_type]()
    elif isinstance(stmt, ast.Name) and stmt.id == "throw":
        self.lll_node = LLLnode.from_list(["assert", 0], typ=None, pos=getpos(stmt))
    else:
        raise StructureException("Unsupported statement type: %s" % type(stmt), stmt)


# Traceback (vyper.exceptions.StructureException)
Traceback (most recent call last):
File "vyper-bin", line 56, in <module>
print(optimizer.optimize(parse_to_lll(code)))
File "/home/jacques/projects/vyper/vyper/parser/parser.py", line 991, in parse_to_lll
return parse_tree_to_lll(code, kode)
File "/home/jacques/projects/vyper/vyper/parser/parser.py", line 464, in parse_tree_to_lll
o, otherfuncs, _globals, sigs, external_contracts, origcode, _custom_units, defaultfunc, runtime_only
File "/home/jacques/projects/vyper/vyper/parser/parser.py", line 417, in parse_other_functions
sub.append(parse_func(_def, _globals, {**{'self': sigs}, **external_contracts}, origcode, _custom_units))  # noqa E999
File "/home/jacques/projects/vyper/vyper/parser/parser.py", line 554, in parse_func
['seq'] + clampers + [parse_body(c, context) for c in code.body] + ['stop']
File "/home/jacques/projects/vyper/vyper/parser/parser.py", line 554, in <listcomp>
['seq'] + clampers + [parse_body(c, context) for c in code.body] + ['stop']
File "/home/jacques/projects/vyper/vyper/parser/parser.py", line 572, in parse_body
return parse_stmt(code, context)
File "/home/jacques/projects/vyper/vyper/parser/parser.py", line 760, in parse_stmt
return Stmt(stmt, context).lll_node
File "/home/jacques/projects/vyper/vyper/parser/stmt.py", line 68, in __init__
self.lll_node = self.stmt_table[stmt_type]()
File "/home/jacques/projects/vyper/vyper/parser/stmt.py", line 75, in expr
return Stmt(self.stmt.value, self.context).lll_node
File "/home/jacques/projects/vyper/vyper/parser/stmt.py", line 72, in __init__
raise StructureException("Unsupported statement type: %s" % type(stmt), stmt)
vyper.exceptions.StructureException: line 5: Unsupported statement type: <class '_ast.Str'>

# Fixed code
def __init__(self, stmt, context):
    self.stmt = stmt
    self.context = context
    self.stmt_table = {
        ast.Expr: self.expr,
        ast.Pass: self.parse_pass,
        ast.AnnAssign: self.ann_assign,
        ast.Assign: self.assign,
        ast.If: self.parse_if,
        ast.Call: self.call,
        ast.Assert: self.parse_assert,
        ast.For: self.parse_for,
        ast.AugAssign: self.aug_assign,
        ast.Break: self.parse_break,
        ast.Continue: self.parse_continue,
        ast.Return: self.parse_return,
        ast.Delete: self.parse_delete,
        ast.Str: self.parse_docblock,  # docblock
    }
    stmt_type = self.stmt.__class__
    if stmt_type in self.stmt_table:
        lll_node = self.stmt_table[stmt_type]()
        self.lll_node = lll_node
    elif isinstance(stmt, ast.Name) and stmt.id == "throw":
        self.lll_node = LLLnode.from_list(["assert", 0], typ=None, pos=getpos(stmt))
    else:
        raise StructureException("Unsupported statement type: %s" % type(stmt), stmt)