Exemple #1
0
        public static string DisplayText(CharacterSet CharSet, bool ReplaceSpaceChar = true, int MaxSize = 0x400, string OversizeMessage = "", short BreakWidth = -1)
        {
            int             num;
            string          str2 = "";
            NumberRangeList list = CharSet.RangeList();
            bool            flag = true;

            for (num = 0; (num < list.Count) & flag; num++)
            {
                if (!IsDisplayRange(list[num].First, list[num].Last))
                {
                    flag = false;
                }
            }
            if (flag)
            {
                int num2 = CharSet.Count() - 1;
                for (num = 0; num <= num2; num++)
                {
                    str2 = str2 + DisplayChar(CharSet[num], true);
                }
                return(str2);
            }
            return(DisplayRangeListText(CharSet.RangeList()));
        }
Exemple #2
0
        public static string DisplayRangeListText(NumberRangeList Ranges)
        {
            string str2 = "";

            str2 = DisplayRangeText(Ranges[0]);
            int num2 = Ranges.Count - 1;

            for (int i = 1; i <= num2; i++)
            {
                NumberRange range = Ranges[i];
                str2  = str2 + ", " + DisplayRangeText(Ranges[i]);
                range = null;
            }
            return(str2);
        }
Exemple #3
0
        public NumberRangeList RangeList()
        {
            NumberRangeList list2 = new NumberRangeList();

            if (m_count >= 1)
            {
                int first = m_list[0];
                int last  = first;
                int num5  = m_count - 1;
                for (int i = 1; i <= num5; i++)
                {
                    int num4 = m_list[i];
                    if (num4 != (last + 1))
                    {
                        list2.Add(new NumberRange(first, last));
                        first = num4;
                    }
                    last = num4;
                }
                list2.Add(new NumberRange(first, last));
            }
            return(list2);
        }
Exemple #4
0
        internal bool SaveVer5(string Path)
        {
            bool flag2;

            SimpleDB.Writer writer = new SimpleDB.Writer();
            try
            {
                short num;
                short num2;
                writer.Open(Path, "GOLD Parser Tables/v5.0");
                writer.NewRecord();
                writer.StoreByte(0x70);
                writer.StoreInt16(0);
                string name = "Name";
                writer.StoreString(name);
                writer.StoreString(this.Properties["Name"].Value);
                writer.NewRecord();
                writer.StoreByte(0x70);
                writer.StoreInt16(1);
                name = "Version";
                writer.StoreString(name);
                writer.StoreString(this.Properties["Version"].Value);
                writer.NewRecord();
                writer.StoreByte(0x70);
                writer.StoreInt16(2);
                name = "Author";
                writer.StoreString(name);
                writer.StoreString(this.Properties["Author"].Value);
                writer.NewRecord();
                writer.StoreByte(0x70);
                writer.StoreInt16(3);
                name = "About";
                writer.StoreString(name);
                writer.StoreString(this.Properties["About"].Value);
                writer.NewRecord();
                writer.StoreByte(0x70);
                writer.StoreInt16(4);
                name = "Character Set";
                writer.StoreString(name);
                writer.StoreString(this.Properties["Character Set"].Value);
                writer.NewRecord();
                writer.StoreByte(0x70);
                writer.StoreInt16(5);
                name = "Character Mapping";
                writer.StoreString(name);
                writer.StoreString(this.Properties["Character Mapping"].Value);
                writer.NewRecord();
                writer.StoreByte(0x70);
                writer.StoreInt16(6);
                name = "Generated By";
                writer.StoreString(name);
                writer.StoreString(this.Properties["Generated By"].Value);
                writer.NewRecord();
                writer.StoreByte(0x70);
                writer.StoreInt16(7);
                name = "Generated Date";
                writer.StoreString(name);
                writer.StoreString(this.Properties["Generated Date"].Value);
                writer.NewRecord();
                writer.StoreByte(0x74);
                writer.StoreInt16(this.m_Symbol.Count());
                writer.StoreInt16(this.m_CharSet.Count);
                writer.StoreInt16(this.m_Production.Count());
                writer.StoreInt16(this.m_DFA.Count);
                writer.StoreInt16(this.m_LALR.Count);
                writer.StoreInt16(this.m_Group.Count);
                writer.NewRecord();
                writer.StoreByte(0x49);
                writer.StoreInt16(this.m_DFA.InitialState);
                writer.StoreInt16(this.m_LALR.InitialState);
                short num3 = (short)(this.m_CharSet.Count - 1);
                for (num2 = 0; num2 <= num3; num2 = (short)(num2 + 1))
                {
                    NumberRangeList list = this.m_CharSet[num2].RangeList();
                    writer.NewRecord();
                    writer.StoreByte(0x63);
                    writer.StoreInt16(num2);
                    writer.StoreInt16(0);
                    writer.StoreInt16(list.Count);
                    writer.StoreEmpty();
                    short num4 = (short)(list.Count - 1);
                    num = 0;
                    while (num <= num4)
                    {
                        writer.StoreInt16(list[num].First);
                        writer.StoreInt16(list[num].Last);
                        num = (short)(num + 1);
                    }
                }
                short num5 = (short)(this.m_Symbol.Count() - 1);
                for (num2 = 0; num2 <= num5; num2 = (short)(num2 + 1))
                {
                    writer.NewRecord();
                    writer.StoreByte(0x53);
                    writer.StoreInt16(num2);
                    Symbol symbol  = this.m_Symbol[num2];
                    Symbol symbol2 = symbol;
                    name = symbol2.Name;
                    writer.StoreString(name);
                    symbol2.Name = name;
                    writer.StoreInt16((int)symbol.Type);
                    symbol = null;
                }
                short num6 = (short)(this.m_Group.Count - 1);
                for (num2 = 0; num2 <= num6; num2 = (short)(num2 + 1))
                {
                    writer.NewRecord();
                    writer.StoreByte(0x67);
                    Group group = this.m_Group[num2];
                    writer.StoreInt16(num2);
                    writer.StoreString(group.Name);
                    writer.StoreInt16(group.Container.TableIndex);
                    writer.StoreInt16(group.Start.TableIndex);
                    writer.StoreInt16(group.End.TableIndex);
                    writer.StoreInt16((int)group.Advance);
                    writer.StoreInt16((int)group.Ending);
                    writer.StoreEmpty();
                    writer.StoreInt16(group.Nesting.Count);
                    short num7 = (short)(group.Nesting.Count - 1);
                    num = 0;
                    while (num <= num7)
                    {
                        writer.StoreInt16(group.Nesting[num]);
                        num = (short)(num + 1);
                    }
                    group = null;
                }
                short num8 = (short)(this.m_Production.Count() - 1);
                for (num2 = 0; num2 <= num8; num2 = (short)(num2 + 1))
                {
                    writer.NewRecord();
                    writer.StoreByte(0x52);
                    writer.StoreInt16(num2);
                    writer.StoreInt16(this.m_Production[num2].Head.TableIndex);
                    writer.StoreEmpty();
                    short num9 = (short)(this.m_Production[num2].Handle().Count() - 1);
                    num = 0;
                    while (num <= num9)
                    {
                        writer.StoreInt16(this.m_Production[num2].Handle()[num].TableIndex);
                        num = (short)(num + 1);
                    }
                }
                short num10 = (short)(this.DFA.Count - 1);
                for (num2 = 0; num2 <= num10; num2 = (short)(num2 + 1))
                {
                    writer.NewRecord();
                    writer.StoreByte(0x44);
                    writer.StoreInt16(num2);
                    if (this.DFA[num2].Accept != null)
                    {
                        writer.StoreBoolean(true);
                        writer.StoreInt16(this.DFA[num2].Accept.TableIndex);
                    }
                    else
                    {
                        writer.StoreBoolean(false);
                        writer.StoreInt16(0);
                    }
                    writer.StoreEmpty();
                    short num11 = (short)(this.DFA[num2].Edges().Count() - 1);
                    num = 0;
                    while (num <= num11)
                    {
                        writer.StoreInt16(this.DFA[num2].Edges()[num].Characters.TableIndex);
                        writer.StoreInt16(this.DFA[num2].Edges()[num].Target);
                        writer.StoreEmpty();
                        num = (short)(num + 1);
                    }
                }
                short num12 = (short)(this.LALR.Count - 1);
                for (num2 = 0; num2 <= num12; num2 = (short)(num2 + 1))
                {
                    writer.NewRecord();
                    writer.StoreByte(0x4c);
                    writer.StoreInt16(num2);
                    writer.StoreEmpty();
                    short num13 = (short)(this.LALR[num2].Count - 1);
                    for (num = 0; num <= num13; num = (short)(num + 1))
                    {
                        writer.StoreInt16(this.LALR[num2][num].SymbolIndex());
                        writer.StoreInt16((int)this.LALR[num2][num].Type());
                        writer.StoreInt16(this.LALR[num2][num].Value());
                        writer.StoreEmpty();
                    }
                }
                writer.Close();
                flag2 = true;
            }
            catch (Exception exception1)
            {
                Exception exception = exception1;
                flag2 = false;
            }
            return(flag2);
        }