Пример #1
0
        public IKeyword Parse(ActionScriptReader acr)
        {
            InstanceName = acr.ReadString().Split(',')[1].Split('"')[1];
            if (acr.PeekString().Contains("extends"))
            {
                Extends = acr.ReadString().Split(',')[1].Split('"')[1];
            }

            // Skip everything until method traits
            // TODO: Implement loading all other information later
DoCycle:
            while (!acr.PeekString().Contains("trait method") && !acr.PeekString().Contains("end ; instance"))
            {
                string xa;
                xa = acr.ReadString();
            }

            if (acr.PeekString().Contains("end ; instance"))
            {
                return(this);
            }

            QName method = new QName(acr.ReadString());

            MethodKeyword mk = new MethodKeyword(acr);

            Methods.Add(mk);

            goto DoCycle;
        }
Пример #2
0
 /// <summary>
 /// Parses all fields, keywords, etc. from the disassembled output
 /// </summary>
 public void Parse()
 {
     using (ActionScriptReader acr = new ActionScriptReader(new FileStream(File, FileMode.Open))) {
         string kw = acr.ReadString();
         if (kw == "class " || kw == "class")
         {
             ClassKeyword = new ClassKeyword(acr);
         }
     }
 }
Пример #3
0
        public IKeyword Parse(ActionScriptReader acr)
        {
            ReferenceId = acr.ReadString();
            if (acr.PeekString().Contains("instance"))
            {
                Instance = new InstanceKeyword(acr);
            }
            ClassInit = new ClassInitKeyword(acr);

            return(this);
        }
Пример #4
0
        public IKeyword Parse(ActionScriptReader acr)
        {
            acr.ReadString(); // skip "code" string

            // While there's still instructions to be read, continue reading
            while (!acr.PeekString().Contains("returnvoid") && !acr.PeekString().Contains("returnvalue"))
            {
                string instr = acr.ReadString();
                if (!string.IsNullOrEmpty(instr))
                {
                    Instructions.Add(InstructionReader.ParseInstruction(instr));
                }
            }

            return(this);
        }
Пример #5
0
        public IKeyword Parse(ActionScriptReader acr)
        {
            acr.ReadString(); // skip "body" string
            string ms = acr.ReadString();

            MaxStack = Convert.ToInt32(ms.Split(' ')[ms.Count(a => a == ' ')]);
            string lc = acr.ReadString();

            LocalCount = Convert.ToInt32(lc.Split(' ')[lc.Count(a => a == ' ')]);
            string isd = acr.ReadString();

            InitScopeDepth = Convert.ToInt32(isd.Split(' ')[isd.Count(a => a == ' ')]);
            string msd = acr.ReadString();

            MaxScopeDepth = Convert.ToInt32(msd.Split(' ')[msd.Count(a => a == ' ')]);

            if (acr.PeekString().Contains("code"))
            {
                Code = new CodeKeyword(acr);
            }

            return(this);
        }
Пример #6
0
        public IKeyword Parse(ActionScriptReader acr)
        {
            if (!acr.ReadString().Contains("method"))
            {
                return(null);
            }

            Name        = acr.ReadString().Split('"')[1];
            ReferenceId = acr.ReadString();

            while (acr.PeekString().Contains("param"))
            {
                Parameters.Add(acr.ReadString().Split(new [] { "param " }, StringSplitOptions.None)[1]);
            }

            ReturnType = acr.ReadString().Split(new [] { "returns " }, StringSplitOptions.None)[1];

            if (acr.PeekString().Contains("body"))
            {
                Body = new BodyKeyword(acr);
            }

            return(this);
        }
Пример #7
0
 public InstanceKeyword(ActionScriptReader acr) => Parse(acr);
Пример #8
0
 public BodyKeyword(ActionScriptReader acr) => Parse(acr);
Пример #9
0
 public ClassKeyword(ActionScriptReader acr) => Parse(acr);
Пример #10
0
 public MethodKeyword(ActionScriptReader acr)
 {
     Parameters = new List <QName>();
     Parse(acr);
 }
Пример #11
0
 public IKeyword Parse(ActionScriptReader acr)
 {
     return(this);
 }