opaque WITH SYNTAX

diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index a4842e2..da06b4c 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -234,9 +234,6 @@
 %type	<a_expr>		DefinedTypeRef
 %type	<a_expr>		ValueSetDefinition  /* Val INTEGER ::= {1|2} */
 %type	<a_expr>		ValueDefinition		/* val INTEGER ::= 1*/
-%type	<a_expr>		optValueSetBody
-%type	<a_expr>		ValueSetBody
-%type	<a_expr>		ValueSetElement
 %type	<a_value>		Value
 %type	<a_value>		DefinedValue
 %type	<a_value>		SignedNumber
@@ -686,12 +683,13 @@
 
 
 ValueSetDefinition:
-	TypeRefName DefinedTypeRef TOK_PPEQ '{' optValueSetBody '}' {
+	TypeRefName DefinedTypeRef TOK_PPEQ
+		'{' { asn1p_lexer_hack_push_opaque_state(); } Opaque /* '}' */ {
 		$$ = $2;
 		assert($$->Identifier == 0);
 		$$->Identifier = $1;
 		$$->meta_type = AMT_VALUESET;
-		// take care of optValueSetBody 
+		// take care of ValueSet body
 	}
 	;
 
@@ -711,40 +709,12 @@
 	}
 	;
 
-optValueSetBody:
-	{ }
-	| ValueSetBody {
-	}
-	;
-
-/*
- * X.680 does not permit ElementSetSpecs starting with ellipsis,
- * i.e. (..., A, B). This is very strange: the ElementSetSpecs is used
- * inside ValueSet, and ValueSets "in the wild" tend to have the first
- * ellipsis.
- */
-ValueSetBody:
-	ValueSetElement {
-	}
-	| ValueSetBody ',' ValueSetElement {
-	}
-	;
-
-ValueSetElement:
-	TOK_ThreeDots {
-	}
-	| ElementSetSpec {
-	}
-	;
-
-
 /*
  * Data Type Reference.
  * === EXAMPLE ===
  * Type3 ::= CHOICE { a Type1,  b Type 2 }
  * === EOF ===
  */
-
 DataTypeReference:
 	/*
 	 * Optionally tagged type definition.