def parse_stmt_value
Kwartz::assert() unless token() == :value
scan()
_syntaxerr("':value' requires '('.") unless token() == '('
scan()
assign_expr = parse_assignment()
_syntaxerr("':value(' is not closed.") unless token() == ')'
scan()
_syntaxerr("':value' requires assignment.") unless assign_expr.token == '='
name_expr = assign_expr.left
_syntaxerr("':value' requires a name.") unless name_expr.token == :variable
name = name_expr.left
expr = assign_expr.right
print_stmt = PrintStmtNode.new(:print, expr, nil)
nodelist = NodeList.new([print_stmt])
return MacroStmtNode.new(:macro, 'cont_' + name, nodelist)
end