# File kwartz.rb, line 3562
        def parse_stmt_elem
            Kwartz::assert() unless token() == :elem
            scan()
            _syntaxerr("':elem' requires '('.") unless token() == '('
            scan()
            name_expr = parse_expression()
            _syntaxerr("':elem(' is not closed.") unless token() == ')'
            scan()
            _syntaxerr("':elem' requires an element name.") unless name_expr.token == :variable
            name = name_expr.left
            _push_element_name(name)
            nodelist = parse_stmt_list()
            _syntaxerr("':elem' is not closed by ':end'.") unless token() == :end
            _pop_element_name()
            scan()
            return MacroStmtNode.new(:macro, 'elem_' + name, nodelist)
        end