private void ParseFieldType(FileNode fn, MessageNode node, FieldNode fieldNode) { string packageName = fn.Package; // 字段类型 fieldNode.Type = GetFieldType(); fieldNode.TypeName = CurrToken.Value; var maybePackageName = CurrToken.Value; Next(); if (CurrToken.Type == TokenType.Dot) { Next(); fieldNode.TypeName = CurrToken.Value; packageName = maybePackageName; Next(); } if (fieldNode.Type == FieldType.None && !ResolveFieldType(packageName, fieldNode)) { AddUnsolveNode(fieldNode); } node.AddField(fieldNode); }
private void ParseFieldType(FileNode fn, MessageNode node, FieldNode fieldNode) { // 类型 if (CurrToken.Type == TokenType.Array) { fieldNode.Container = FieldContainer.Array; fieldNode.PBLabel = PBFieldLabel.Repeated; Next(); Consume(TokenType.LAngleBracket); } else { fieldNode.Container = FieldContainer.None; } // 字段类型 fieldNode.Type = GetFieldType(); fieldNode.TypeName = CurrToken.Value; if (fieldNode.Type == FieldType.None && !ResolveFieldType(fn.Package, fieldNode)) { AddUnsolveNode(fieldNode); } node.AddField(fieldNode); Next(); if (fieldNode.Container == FieldContainer.Array) { Consume(TokenType.RAngleBracket); } }