diff --git a/proto/text_parser.go b/proto/text_parser.go
index d1caeff..5c466d5 100644
--- a/proto/text_parser.go
+++ b/proto/text_parser.go
@@ -567,6 +567,9 @@
 				if err := p.readAny(key, props.mkeyprop); err != nil {
 					return err
 				}
+				if err := p.consumeOptionalSeparator(); err != nil {
+					return err
+				}
 				if err := p.consumeToken("value"); err != nil {
 					return err
 				}
@@ -576,6 +579,9 @@
 				if err := p.readAny(val, props.mvalprop); err != nil {
 					return err
 				}
+				if err := p.consumeOptionalSeparator(); err != nil {
+					return err
+				}
 				if err := p.consumeToken(terminator); err != nil {
 					return err
 				}
@@ -605,14 +611,10 @@
 			}
 		}
 
-		// For backward compatibility, permit a semicolon or comma after a field.
-		tok = p.next()
-		if tok.err != nil {
-			return tok.err
+		if err := p.consumeOptionalSeparator(); err != nil {
+			return err
 		}
-		if tok.value != ";" && tok.value != "," {
-			p.back()
-		}
+
 	}
 
 	if reqCount > 0 {
@@ -621,6 +623,19 @@
 	return reqFieldErr
 }
 
+// consumeOptionalSeparator consumes an optional semicolon or comma.
+// It is used in readStruct to provide backward compatibility.
+func (p *textParser) consumeOptionalSeparator() error {
+	tok := p.next()
+	if tok.err != nil {
+		return tok.err
+	}
+	if tok.value != ";" && tok.value != "," {
+		p.back()
+	}
+	return nil
+}
+
 func (p *textParser) readAny(v reflect.Value, props *Properties) error {
 	tok := p.next()
 	if tok.err != nil {
