public void Clone(IdentifierClass ic)
 {
     ID          = ic.ID; Type = ic.Type; Name = ic.Name;
     DisplayName = ic.DisplayName;
     //Array_ID = new int[ic.Array_ID.Length];
     //for (int i = 0; i < Array_ID.Length; i++) Array_ID[i] = ic.Array_ID[i];
 }
Beispiel #2
0
        public static Identifier Read(Stream stream)
        {
            byte firstOctet = (byte)stream.ReadByte();

            if (WellKnownIdentifiers.ContainsKey(firstOctet))
            {
                return(WellKnownIdentifiers[firstOctet]);
            }

            IdentifierClass identifierClass = (IdentifierClass)(firstOctet & 0b11000000);
            EncodingType    encodingType    = (EncodingType)(firstOctet & 0b00100000);
            int             tag             = firstOctet & 0b00011111;

            if (tag != 0b00011111)
            {
                var identifier = new Identifier
                {
                    IdentifierClass = identifierClass,
                    EncodingType    = encodingType,
                    Tag             = tag
                };

                return(identifier);
            }

            throw new NotImplementedException();
        }
        /// <summary>
        /// Добавить идентификатор
        /// </summary>
        /// <param name="symbol">Символ</param>
        /// <param name="classUsed">Класс</param>
        /// <returns>Идентификатор</returns>
        public Identifier Add(Symbol symbol, IdentifierClass classUsed)
        {
            var identifier = new Identifier
            {
                Symbol = symbol,
                Class  = classUsed
            };

            return(_identifiers.Add(identifier) ? identifier : null);
        }
Beispiel #4
0
        public static void WriteIdentifier(Stream stream, IdentifierClass identifierClass, EncodingType encodingType,
                                           int tag)
        {
            var identifier = new Identifier
            {
                IdentifierClass = IdentifierClass.Universal,
                EncodingType    = encodingType,
                Tag             = tag
            };

            identifier.Write(stream);
        }
Beispiel #5
0
 // Создание определяющего вхождения идентификатора
 private IdentifierDesc CreateIdentifier(string identifierName, IdentifierClass identifierClass, TypeDesc identifierType = null)
 {
     if (CurrentScope.FindIdentifierInCurrentScope(identifierName) == null)
     {
         return(new IdentifierDesc(identifierName, identifierClass, identifierType));
     }
     else
     {
         // Идентификатор уже определен в текущей области действия, ошибка
         Error(101);
         return(null);
     }
 }
Beispiel #6
0
        // Поиск прикладного вхождения идентификатора
        private IdentifierDesc FindIdentifier(string identifierName, IdentifierClass identifierClass = IdentifierClass.Unknown)
        {
            var identifier = CurrentScope.FindIdentifier(identifierName);

            if (identifier != null)
            {
                return(identifier);
            }
            else
            {
                // Определяющее вхождение не найдено, занести в ТИ неопределенный идентификатор
                Error(104);
                identifier = new IdentifierDesc(identifierName, identifierClass, null);
                CurrentScope.IdentifierTable.Add(identifier);
                return(identifier);
            }
        }
 public IdentifierClass(IdentifierClass ic)
 {
     Clone(ic);
 }
    public IdentifierClass?SerializeDeserializeClass()
    {
        var t = new IdentifierClass(1234, 5678, 9101112, 13141516);

        return(TinyhandSerializer.Deserialize <IdentifierClass>(TinyhandSerializer.Serialize(t)));
    }
 public IdentifierDesc(string name, IdentifierClass identifierClass, TypeDesc type)
 {
     this.name            = name;
     this.identifierClass = identifierClass;
     this.type            = type;
 }
 public IdentifierDesc(string name, IdentifierClass identifierClass)
 {
     this.name            = name;
     this.identifierClass = identifierClass;
 }