new WITH SYNTAX clause parsing

diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index 36d9baf..f39bd12 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -120,6 +120,7 @@
 %token	<tv_str>	TOK_capitalreference		/* "CLASS1" */
 %token	<tv_str>	TOK_typefieldreference		/* "&Pork" */
 %token	<tv_str>	TOK_valuefieldreference		/* "&id" */
+%token	<tv_str>	TOK_Literal			/* "BY" */
 
 /*
  * Token types representing ASN.1 standard keywords.
@@ -307,8 +308,8 @@
 %type	<a_value>		RestrictedCharacterStringValue
 %type	<a_wsynt>		optWithSyntax
 %type	<a_wsynt>		WithSyntax
-%type	<a_wsynt>		WithSyntaxFormat
-%type	<a_wchunk>		WithSyntaxFormatToken
+%type	<a_wsynt>		WithSyntaxList
+%type	<a_wchunk>		WithSyntaxToken
 %type	<a_marker>		optMarker Marker
 %type	<a_int>			optUnique
 %type	<a_pres>		optPresenceConstraint PresenceConstraint
@@ -1054,27 +1055,30 @@
 WithSyntax:
 	TOK_WITH TOK_SYNTAX '{'
 		{ asn1p_lexer_hack_enable_with_syntax(); }
-		WithSyntaxFormat
+		WithSyntaxList
 		'}' {
 		$$ = $5;
 	}
 	;
 
-WithSyntaxFormat:
-	WithSyntaxFormatToken {
+WithSyntaxList:
+	WithSyntaxToken {
 		$$ = asn1p_wsyntx_new();
 		TQ_ADD(&($$->chunks), $1, next);
 	}
-	| WithSyntaxFormat WithSyntaxFormatToken {
+	| WithSyntaxList WithSyntaxToken {
 		$$ = $1;
 		TQ_ADD(&($$->chunks), $2, next);
 	}
 	;
 
-WithSyntaxFormatToken:
+WithSyntaxToken:
 	TOK_opaque {
 		$$ = asn1p_wsyntx_chunk_frombuf($1.buf, $1.len, 0);
 	}
+	| TOK_Literal {
+		$$ = asn1p_wsyntx_chunk_frombuf($1, strlen($1), 0);
+	}
 	| ClassFieldIdentifier {
 		asn1p_ref_t *ref;
 		int ret;
@@ -1084,6 +1088,9 @@
 		checkmem(ret == 0);
 		$$ = asn1p_wsyntx_chunk_fromref(ref, 0);
 	}
+	| '[' WithSyntaxList ']' {
+		$$ = asn1p_wsyntx_chunk_fromsyntax($2);
+	}
 	;
 
 ExtensionAndException:
@@ -2340,10 +2347,9 @@
 		expr->Identifier);
 }
 
-extern char *asn1p_text;
-
 int
 yyerror(const char *msg) {
+	extern char *asn1p_text;
 	fprintf(stderr,
 		"ASN.1 grammar parse error "
 		"near line %d (token \"%s\"): %s\n",
@@ -2351,4 +2357,3 @@
 	return -1;
 }
 
-