diff --git a/pycparserext/ext_c_parser.py b/pycparserext/ext_c_parser.py
index 62efb56..f91394e 100644
--- a/pycparserext/ext_c_parser.py
+++ b/pycparserext/ext_c_parser.py
@@ -558,6 +558,15 @@ class GnuCParser(_AsmAndAttributesMixin, CParserBase):
         """
         p[0] = RangeExpression(p[2], p[4], coord=self._coord(p.lineno(1)))
 
+    def p_labeled_statement_4(self, p):
+        """ labeled_statement : CASE constant_expression ELLIPSIS constant_expression \
+                COLON pragmacomp_or_statement
+        """
+        p[0] = c_ast.Case(
+                RangeExpression(p[2], p[4], coord=self._coord(p.lineno(1))),
+                [p[6]],
+                self._coord(p.lineno(1)))
+
     def p_unified_volatile_gnu(self, p):
         """ unified_volatile : VOLATILE
                              | __VOLATILE

diff --git a/test/test_pycparserext.py b/test/test_pycparserext.py
index 2162073..5d77556 100644
--- a/test/test_pycparserext.py
+++ b/test/test_pycparserext.py
@@ -469,6 +469,22 @@ def test_designated_initializers():
     assert _round_trip_matches(src)
 
 
+def test_case_ranges():
+    src = """
+    void f() {
+        switch (1) {
+            case 3:
+                break;
+            case 0 ... 5:
+                break;
+            case 'A' ... 'Z':
+                break;
+        }
+    }
+    """
+    assert _round_trip_matches(src)
+
+
 @pytest.mark.parametrize("restrict_kw", ["restrict", "__restrict__", "__restrict"])
 def test_restrict(restrict_kw):
     src = """

Support for case ranges
Hi,

Thanks for this project!

I see that you've implemented designated range initializers. Would you consider implementing the somewhat related case ranges (https://gcc.gnu.org/onlinedocs/gcc/Case-Ranges.html)?
test/test_pycparserext.py::test_case_ranges
test/test_pycparserext.py::test_asm_volatile_1 test/test_pycparserext.py::test_asm_volatile_2 test/test_pycparserext.py::test_asm_volatile_3 test/test_pycparserext.py::test_asm_volatile_4 test/test_pycparserext.py::test_asm_label test/test_pycparserext.py::test_funky_header_code test/test_pycparserext.py::test_funky_header_code_2 test/test_pycparserext.py::test_funky_header_code_3 test/test_pycparserext.py::test_funky_header_code_4 test/test_pycparserext.py::test_funky_header_code_5 test/test_pycparserext.py::test_opencl[int] test/test_pycparserext.py::test_opencl[uint] test/test_pycparserext.py::test_array_attributes test/test_pycparserext.py::test_func_decl_attribute test/test_pycparserext.py::test_func_ret_ptr_decl_attribute test/test_pycparserext.py::test_array_ptr_decl_attribute test/test_pycparserext.py::test_gnu_statement_expression test/test_pycparserext.py::test_empty_gnu_statement_expression test/test_pycparserext.py::test_lvalue_gnu_statement_expression test/test_pycparserext.py::test_empty_struct_declaration test/test_pycparserext.py::test_nesty_c_declarator test/test_pycparserext.py::test_const_ptr_func_arg test/test_pycparserext.py::test_pointer_reproduction test/test_pycparserext.py::test_no_added_attr test/test_pycparserext.py::test_double_pointer test/test_pycparserext.py::test_designated_initializers test/test_pycparserext.py::test_restrict[restrict] test/test_pycparserext.py::test_restrict[__restrict__] test/test_pycparserext.py::test_restrict[__restrict] test/test_pycparserext.py::test_node_visitor test/test_pycparserext.py::test_typeof_reproduction test/test_pycparserext.py::test_typedef