示例#1
0
        public override object VisitEnumTypeDefDecl(PParser.EnumTypeDefDeclContext context)
        {
            // ENUM name=iden
            PEnum pEnum = (PEnum)nodesToDeclarations.Get(context);

            // LBRACE enumElemList RBRACE
            if (context.enumElemList() is PParser.EnumElemListContext elemList)
            {
                EnumElem[] elems = (EnumElem[])Visit(elemList);
                for (int i = 0; i < elems.Length; i++)
                {
                    EnumElem elem = elems[i];
                    elem.Value = i;
                    pEnum.AddElement(elem);
                }
            }
            // | LBRACE numberedEnumElemList RBRACE
            else if (context.numberedEnumElemList() is PParser.NumberedEnumElemListContext numberedElemList)
            {
                EnumElem[] numberedElems = (EnumElem[])Visit(numberedElemList);
                foreach (EnumElem elem in numberedElems)
                {
                    pEnum.AddElement(elem);
                }
            }
            else
            {
                Debug.Fail("grammar requires enum declarations to have element lists");
            }

            return(pEnum);
        }
示例#2
0
        public override object VisitEnumTypeDefDecl(PParser.EnumTypeDefDeclContext context)
        {
            string symbolName = context.name.GetText();
            PEnum  pEnum      = CurrentScope.Put(symbolName, context);

            nodesToDeclarations.Put(context, pEnum);
            return(VisitChildren(context));
        }
示例#3
0
 static void GenEnum(PEnum penum)
 {
     AppendLine(0, "enum {0} {{", penum.m_name);
     foreach (var item in penum.m_items.OrderBy(item_ => item_.Value))
     {
         AppendLine(1, "{0} = {1};", item.Key, item.Value);
     }
     AppendLine(0, "}");
 }
示例#4
0
 static void GenEnum(PEnum penum)
 {
     AppendLine(1, "public enum {0}", penum.m_name);
     AppendLine(1, "{");
     foreach (var item in penum.m_items.OrderBy(item_ => item_.Value))
     {
         AppendLine(2, "{0} = {1},", item.Key, item.Value);
     }
     AppendLine(1, "}");
 }
示例#5
0
 public void CopyFrom(EditorMessage message)
 {
     if (message.m_message != null)
     {
         m_message = message.m_message;
     }
     if (message.m_enum != null)
     {
         m_enum = message.m_enum;
     }
 }
示例#6
0
        public PEnum Put(string name, PParser.EnumTypeDefDeclContext tree)
        {
            PEnum @enum = new PEnum(name, tree);

            CheckConflicts(
                @enum,
                Namespace(enums),
                Namespace(interfaces),
                Namespace(typedefs),
                Namespace(machines));
            enums.Add(name, @enum);
            return(@enum);
        }
示例#7
0
        public static EditorMessage NewEnum(PEnum penum = null)
        {
            var obj = new EditorMessage();

            if (penum != null)
            {
                obj.m_enum = penum;
            }
            else
            {
                obj.m_enum = new PEnum();
            }
            return(obj);
        }
示例#8
0
文件: DefEnum.cs 项目: zhangga/luban
        public DefEnum(PEnum e)
        {
            Name           = e.Name;
            Namespace      = e.Namespace;
            IsFlags        = e.IsFlags;
            IsUniqueItemId = e.IsUniqueItemId;

            foreach (var item in e.Items)
            {
                Items.Add(new Item {
                    Name = item.Name, Alias = item.Alias, Value = item.Value
                });
            }
        }
示例#9
0
        public bool Lookup(string name, out PEnum tree)
        {
            Scope current = this;

            while (current != null)
            {
                if (current.Get(name, out tree))
                {
                    return(true);
                }

                current = current.Parent;
            }

            tree = null;
            return(false);
        }
示例#10
0
        protected void AddEnum(XElement e)
        {
            ValidAttrKeys(e, _enumOptionalAttrs, _enumRequiredAttrs);
            var en = new PEnum()
            {
                Name      = XmlUtil.GetRequiredAttribute(e, "name"),
                Namespace = CurNamespace,
                IsFlags   = XmlUtil.GetOptionBoolAttribute(e, "flags"),
            };

            foreach (XElement item in e.Elements())
            {
                ValidAttrKeys(item, _enumOptionalItemAttrs, _enumItemRequiredAttrs);
                en.Items.Add(new EnumItem()
                {
                    Name  = XmlUtil.GetRequiredAttribute(item, "name"),
                    Alias = XmlUtil.GetOptionalAttribute(item, "alias"),
                    Value = XmlUtil.GetOptionalAttribute(item, "value"),
                });
            }
            s_logger.Trace("add enum:{@enum}", en);
            _enums.Add(en);
        }
示例#11
0
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        EditorGUI.BeginProperty(position, label, property);

        object obj;

        try
        {
            UnityEngine.Object f****r = property.serializedObject.targetObject;

            obj = GetFieldViaPath(f****r.GetType(), property.propertyPath, f****r);
        }
        catch (Exception e)
        {
            Debug.Log("Error " + e.StackTrace);
            return;
        }

        PEnum t = obj as PEnum;

        t.Value = EditorGUI.EnumPopup(position, label, t.Value);

        EditorGUI.EndProperty();
    }
 public Exception DuplicateEnumValue(PParser.NumberedEnumElemContext location, PEnum pEnum)
 {
     return(IssueError(location,
                       $"enum element {location.name.GetText()} in {pEnum.Name} duplicates previous value"));
 }
示例#13
0
        public string GetEnumFileName(PEnum e)
        {
            string enumName = GetEnumTypeName(e);

            return($"{enumName}.java");
        }
示例#14
0
 public string GetEnumTypeName(PEnum pEnum)
 {
     return(pEnum.Name);
 }
示例#15
0
 public EnumEnum()
 {
     Key   = new PEnum(typeof(K));
     Value = new PEnum(typeof(V));
 }
示例#16
0
 public KeyEnum()
 {
     Value = new PEnum(typeof(E));
 }
示例#17
0
 public EnumValue()
 {
     Key = new PEnum(typeof(E));
 }
示例#18
0
 public bool Get(string name, out PEnum tree)
 {
     return(enums.TryGetValue(name, out tree));
 }
示例#19
0
文件: EnumType.cs 项目: yzhang90/P-1
 public EnumType(PEnum enumDecl) : base(TypeKind.Enum)
 {
     EnumDecl = enumDecl;
 }