public override bool test(ITokenCollection semi)
        {
            int index;

            semi.find("delegate", out index);
            if (index != -1 && semi.size() > index + 2)
            {
                ITokenCollection local = Factory.create();
                local.add(semi[index]).add(semi[index + 2]);
                doActions(local);
                return(true);
            }
            return(false);
        }
        public override bool test(ITokenCollection semi)
        {
            int index;

            semi.find("{", out index);
            if (index != -1)
            {
                ITokenCollection local = Factory.create();
                // create local semiExp with tokens for type and name
                local.add("control").add("anonymous");
                doActions(local);
                return(true);
            }
            return(false);
        }
Пример #3
0
 public override bool test(ITokenCollection semi)
 {
   Display.displayRules(actionDelegate, "rule   DetectNamespace");
   int index;
   semi.find("namespace", out index);
   if (index != -1 && semi.size() > index + 1)
   {
     ITokenCollection local = Factory.create();
     // create local semiExp with tokens for type and name
     local.add(semi[index]).add(semi[index + 1]);
     doActions(local);
     return true;
   }
   return false;
 }
Пример #4
0
        public override bool test(ITokenCollection semi)
        {
            Display.displayRules(actionDelegate, "rule   DetectAnonymousScope");
            int index;

            semi.find("{", out index);
            if (index != -1)
            {
                ITokenCollection local = Factory.create();
                local.add("control").add("anonymous");
                doActions(local);
                return(true);
            }
            return(false);
        }
        public override bool test(ITokenCollection semi)
        {
            Display.displayRules(actionDelegate, "rule   DetectAlias");
            int index;

            if (semi.find("using", out index) && !semi.find("System", out index) && semi.find("=", out index))
            {
                ITokenCollection local = Factory.create();
                local.add("alias").add(semi[index - 1]);
                StringBuilder ConcreType = new StringBuilder();
                string        alias      = semi[index - 1];
                index++;
                while (semi[index] != ";" && semi[index] != "<")
                {
                    ConcreType.Append(semi[index]);
                    index++;
                }
                string type = ConcreType.ToString();
                local.add(ConcreType.ToString());
                doActions(local);
                return(true);
            }
            return(false);
        }
        public override bool test(ITokenCollection semi)
        {
            Display.displayRules(actionDelegate, "rule   DetectDelegates");
            int index;

            semi.find("delegate", out index);
            if (index != -1 && semi.size() > index + 1)
            {
                ITokenCollection local = Factory.create();
                local.add(semi[index]).add(semi[index + 2]);
                doActions(local);
                return(true);
            }
            return(false);
        }
        public override bool test(ITokenCollection semi)
        {
            int index;

            semi.find("namespace", out index);
            if (index != -1 && semi.size() > index + 1)
            {
                ITokenCollection local = Factory.create();
                // create local semiExp with tokens for type and name
                local.add(semi[index]).add(semi[index + 1]);
                doActions(local);
                return(true);
            }
            return(false);
        }
Пример #8
0
        public override bool test(ITokenCollection semi)//Added semi.find function in ITok ss
        {
            Display.displayRules(actionDelegate, "rule   DetectDelegate");
            int index;

            semi.find("delegate", out index);
            if (index != -1 && semi.size() > index + 1)
            {
                ITokenCollection local = Factory.create();//need factory bcoz i dont have semi class but interface ss
                // create local semiExp with tokens for type and name
                local.add(semi[index]).add(semi[index + 2]);
                doActions(local);
                return(true);//Fully satisfied no more parsing required ss
            }
            return(false);
        }
Пример #9
0
    public override bool test(ITokenCollection semi)
    {
      Display.displayRules(actionDelegate, "rule   DetectFunction");
      if (semi[semi.size() - 1] != "{")
        return false;

      int index;
      semi.find("(", out index);
      if (index > 0 && !isSpecialToken(semi[index - 1]))
      {
        ITokenCollection local = Factory.create();
        local.add("function").add(semi[index - 1]);
        doActions(local);
        return true;
      }
      return false;
    }
        //---------------<Extract the semi expression of parameter>-------------
        private ITokenCollection getPara(ITokenCollection semi)
        {
            ITokenCollection current = Factory.create();
            int index;

            semi.find("(", out index);
            index++;
            while (index < semi.size())
            {
                if (semi[index] != "}")
                {
                    current.add(semi[index]);
                }
                index++;
            }
            return(current);
        }
Пример #11
0
        public string testusing(ITokenCollection semi)
        {
            int index;

            semi.find("using", out index);
            if (index != -1 && semi.size() > index + 1)
            {
                // ITokenCollection local = Factory.create();
                // create local semiExp with tokens for type and name
                //local.add(semi[index]).add(semi[index + 1]);
                if (semi[index + 1] != "System")
                {
                    return(semi[index + 1]);
                }
            }
            return(null);
        }
Пример #12
0
        public override bool test(ITokenCollection semi)
        {
            Display.displayRules(actionDelegate, "rule   DetectAlias");
            int index;

            semi.find("using", out index);
            if (index != -1 && semi.size() > index + 1)
            {
                ITokenCollection local = Factory.create();
                if (semi[index + 1] != "System" && semi[index + 2] == "=")
                {
                    local.add(semi[index]).add(semi[index + 1]).add(semi[index + 3]);
                    doActions(local);
                    return(true);
                }
            }
            return(false);
        }
Пример #13
0
        public override bool test(ITokenCollection semi)
        {
            Display.displayRules(actionDelegate, "rule   DetectNamespace");
            int index;

            semi.find("namespace", out index);
            if (index != -1 && semi.size() > index + 1)
            {
                var local = Factory.create();
                // create local semiExp with tokens for type and name
                local.add(semi[index]).add(semi[index + 1]);
                doActions(local);
                var repo = Repository.getInstance();
                repo.currentNameSpace = semi[index + 1];
                return(true);
            }

            return(false);
        }
Пример #14
0
        public override bool test(ITokenCollection semi)
        {
            if (semi[semi.size() - 1] != "{")
            {
                return(false);
            }

            int index;

            semi.find("(", out index);
            if (index > 0 && !isSpecialToken(semi[index - 1]))
            {
                ITokenCollection local = Factory.create();
                local.add("function").add(semi[index - 1]);
                doActions(local);
                return(true);
            }
            return(false);
        }
Пример #15
0
        public override bool test(ITokenCollection semi)
        {
            Display.displayRules(actionDelegate, "rule   DetectClass");
            int indexDG;

            semi.find("delegate", out indexDG);

            if (indexDG != -1 && semi.size() > indexDG + 1 &&
                semi[semi.size() - 1] == ";")
            {
                ITokenCollection local = Factory.create();
                local.filePath = semi.filePath;
                // local semiExp with tokens for type and name
                local.add(semi[indexDG]).add(semi[indexDG + 1]).add(semi[indexDG + 2]);
                doActions(local);
                return(true);
            }
            return(false);
        }
Пример #16
0
        public override bool test(ITokenCollection semi)
        {
            Display.displayRules(actionDelegate, "rule   DetectUsing");
            int index;

            semi.find("using", out index);
            if (index != -1 && semi.size() > index + 1)
            {
                ITokenCollection local = Factory.create();
                // create local semiExp with tokens for type and name
                if (!semi[index + 1].Equals("System"))
                {
                    local.add(semi[index]).add(semi[index + 1]);
                    local.currentFilename = semi.currentFilename;
                    doActions(local);
                    return(true);
                }
            }
            return(false);
        }
Пример #17
0
        public override bool test(ITokenCollection semi)
        {
            Display.displayRules(actionDelegate, "rule   DetectClass");

            if (!semi.hasSequence("class", ":", "{"))
            {
                return(true);
            }

            int indexColon;

            semi.find(":", out indexColon);

            var local = Factory.create();

            local.add(semi[indexColon + 1]).add("base").add(";");
            doActions(local);

            return(true);
        }
Пример #18
0
        public override bool test(ITokenCollection semi)
        {
            Display.displayRules(actionDelegate, "rule   DetectUsing");
            int index;

            semi.find("using", out index);
            if (index != -1 && semi.size() > index + 1)
            {
                ITokenCollection local = Factory.create();
                // create local semiExp with tokens for type and name
                //Console.WriteLine(semi[index]+"!!!!");
                //Console.WriteLine(semi[index + 1]);
                if (semi[index + 1] != "System")
                {
                    local.add(semi[index]).add(semi[index + 1]);
                    doActions(local);
                }
                return(true);
            }
            return(false);
        }
        public override bool test(ITokenCollection semi)
        {
            int index = indexOfType(semi);
            int indexColon;

            semi.find(":", out indexColon);
            if (index != -1 && semi.size() > index + 1)
            {
                if (indexColon != -1 && semi.size() > indexColon + 1)
                {
                    for (int i = indexColon + 1; i < semi.size() - 1; i++)
                    {
                        if (this.isPossibleType(semi[i]))
                        {
                            ITokenCollection local = Factory.create();
                            local.filePath = semi.filePath;

                            int indexBegin = i;
                            for (int j = i - 1; j >= 0; j = j - 2)
                            {
                                if (semi[j] != ".")
                                {
                                    indexBegin = j + 1;
                                    break;
                                }
                                indexBegin = j - 1;
                            }

                            for (int k = indexBegin; k <= i; k = k + 2)
                            {
                                local.add(semi[k]);
                            }
                            doActions(local);
                        }
                    }
                }
                return(true);
            }
            return(false);
        }
Пример #20
0
        public override bool test(ITokenCollection semi)
        {
            int    index;
            string type = String.Empty;

            semi.find("using", out index);
            if (index != -1 && semi.size() > index + 1 && (!(semi[index + 1].ToString().ToLower().Equals("system"))))
            {
                ITokenCollection local = Factory.create();
                if ((semi.contains("=") && semi.Count() > 3) || semi[index + 1].Contains("("))
                {
                    ;
                }
                else
                {
                    type = "using";
                    local.add(semi[index]).add(semi[index + 1]);
                    doActions(local);
                }
                return(true);
            }
            return(false);
        }
Пример #21
0
    static void Main(string[] args)
    {
      Console.Write("\n  testing Semi");
      Console.Write("\n ==============");

      

      ITokenCollection semi = Factory.create();

      string source = "../../semi.cs";
      if (!semi.open(source))
      {
        Console.Write("\n  Can't open {0}\n", source);
        return;
      }
      while (!semi.isDone())
      {
        semi.get();
        semi.show();
      }
      Console.Write("\n");

      Console.Write("\n  demonstrating semi operations");
      Console.Write("\n -------------------------------");

      ITokenCollection test = Factory.create();

      test.add("one").add("two").add("three");
      test.show();
      if (test.hasSequence("one", "three"))
        Console.Write("\n  semi has token \"one\" followed by token \"three\"");
      if (!test.hasSequence("foo", "two"))
        Console.Write("\n  semi does not have token \"foo\" followed by token \"two\"");
      if (!test.hasTerminator())
        Console.Write("\n  semi does not have terminator");

      Console.Write("\n  demonstrate changing semi with insert and add");
      test.insert(0, "#");
      test.add("\n");
      test.show();

      Console.Write("\n  demonstrate semi tests");
      if (test.hasTerminator())
        Console.Write("\n  semi has terminator");
      else
        Console.Write("\n  semi does not have terminator");

      int index;
      Token tok = "two";
      if (test.find(tok, out index))
        Console.Write("\n  found token \"{0}\" at position {1}", tok, index);
      else
        Console.Write("\n  did not find token \"{0}\"", tok);
      tok = "foo";
      if (test.find(tok, out index))
        Console.Write("\n  found token \"{0}\" at position {1}", tok, index);
      else
        Console.Write("\n  did not find token \"{0}\"", tok);

      tok = "one";
      Token tok2 = test.predecessor(tok);
      Console.Write("\n  predecessor of \"{0}\" is \"{1}\"", tok, tok2);
      tok = "bar";
      tok2 = test.predecessor(tok);
      Console.Write("\n  predecessor of \"{0}\" is \"{1}\"", tok, tok2);

      Console.Write("\n  indexing semi\n  ");
      for (int i = 0; i < test.size(); ++i)
        Console.Write("{0} ", test[i]);
      Console.Write("\n  using foreach:\n  ");
      foreach (var tk in test)
        Console.Write("{0} ", tk);

      Console.Write("\n\n");
    }
Пример #22
0
        public override bool test(ITokenCollection semi)
        {
            var repo = Repository.getInstance();

            int parIndex;

            if (!semi.find("(", out parIndex))
            {
                return(false);
            }

            var local = semi.clone().getFunctionParams();

            if (local.size() == 0 || local[0] == "using")
            {
                return(false);
            }

            Display.displayRules(actionDelegate, "rule   DetectDeclar");
            int index;

            local.find(";", out index);
            if (index != -1)
            {
                local = compactGeneric(local);
                var pos = 0;
                while (pos < local.size())
                {
                    if (repo.qualTable.contains(local[pos]))
                    {
                        local.remove(pos);
                    }
                    else
                    {
                        ++pos;
                    }
                }

                local.find("=", out index);
                if (index != -1)
                {
                    while (index < local.size() - 1)
                    {
                        local.remove(index);
                    }
                }

                int indexPar;
                local.find("(", out indexPar);
                if (indexPar > -1)
                {
                    return(false);
                }

                if (local.size() == 3)
                {
                    doActions(local);
                    return(false);
                }

                if (local.size() == 5 && local[1] == ".")
                {
                    doActions(local);
                    return(false);
                }
            }

            return(false);
        }
Пример #23
0
    static void Main(string[] args)
    {
      Console.Write("\n  testing Semi");
      Console.Write("\n ==============");

      // Access Semi through interface and object factory.
      // That isolates client from any changes that may occur to Semi
      // as long as ITokenCollection doesn't change.

      ITokenCollection semi = Factory.create();

      string source = "C:\\Project2\\TestTypeAnaylyzer\\RulesAndActions.cs";
      if (!semi.open(source))
      {
        Console.Write("\n  Can't open {0}\n", source);
        return;
      }
      while (!semi.isDone())
      {
        semi.get();
        semi.show();
      }
      Console.Write("\n");

      Console.Write("\n  demonstrating semi operations");
      Console.Write("\n -------------------------------");

      ITokenCollection test = Factory.create();

      test.add("one").add("two").add("three");
      test.show();
      if (test.hasSequence("one", "three"))
        Console.Write("\n  semi has token \"one\" followed by token \"three\"");
      if (!test.hasSequence("foo", "two"))
        Console.Write("\n  semi does not have token \"foo\" followed by token \"two\"");
      if (!test.hasTerminator())
        Console.Write("\n  semi does not have terminator");

      Console.Write("\n  demonstrate changing semi with insert and add");
      test.insert(0, "#");
      test.add("\n");
      test.show();

      Console.Write("\n  demonstrate semi tests");
      if (test.hasTerminator())
        Console.Write("\n  semi has terminator");
      else
        Console.Write("\n  semi does not have terminator");

      int index;
      Token tok = "two";
      if (test.find(tok, out index))
        Console.Write("\n  found token \"{0}\" at position {1}", tok, index);
      else
        Console.Write("\n  did not find token \"{0}\"", tok);
      tok = "foo";
      if (test.find(tok, out index))
        Console.Write("\n  found token \"{0}\" at position {1}", tok, index);
      else
        Console.Write("\n  did not find token \"{0}\"", tok);

      tok = "one";
      Token tok2 = test.predecessor(tok);
      Console.Write("\n  predecessor of \"{0}\" is \"{1}\"", tok, tok2);
      tok = "bar";
      tok2 = test.predecessor(tok);
      Console.Write("\n  predecessor of \"{0}\" is \"{1}\"", tok, tok2);

      Console.Write("\n  indexing semi\n  ");
      for (int i = 0; i < test.size(); ++i)
        Console.Write("{0} ", test[i]);
      Console.Write("\n  using foreach:\n  ");
      foreach (var tk in test)
        Console.Write("{0} ", tk);

      Console.Write("\n\n");
            Console.ReadKey();
    }