clause('open_block block_contents close_block') do |expression, contents, close|
        raise unless expression[0] == close
        Nodes::BlockExpressionNode.new(expression[0], expression[1], expression[2], contents[0], contents[1])