Example #1
0
        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);
        }
Example #2
0
        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);
            }
        }