encoding/protobuf: don't rely on verbatim Ident formatting

Parse the expressions into proper CUE before
formatting.

Change-Id: I66fdf247c7f5d949aa76aa46906b36656c502f25
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/4721
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/encoding/protobuf/parse.go b/encoding/protobuf/parse.go
index a58943d..b35e6ae 100644
--- a/encoding/protobuf/parse.go
+++ b/encoding/protobuf/parse.go
@@ -291,9 +291,11 @@
 }
 
 func (p *protoConverter) toExpr(pos scanner.Position, name string) (expr ast.Expr) {
-	a := strings.Split(name, ".")
-	expr = &ast.Ident{NamePos: p.toCUEPos(pos), Name: a[0]}
-	expr = ast.NewSel(expr, a[1:]...)
+	expr, err := parser.ParseExpr("", name, parser.ParseComments)
+	if err != nil {
+		panic(err)
+	}
+	ast.SetPos(expr, p.toCUEPos(pos))
 	return expr
 }