コード例 #1
0
        public override bool test(CSsemi.CSemiExp semi, string filename)
        {
            if (semi[semi.count - 1] != "{")
                return false;

            int index = semi.FindFirst("(");
            if (index > 0 && !isSpecialToken(semi[index - 1]))
            {
                CSsemi.CSemiExp local = new CSsemi.CSemiExp();
                local.Add("function").Add(semi[index - 1]);
                doActions(local, filename);
                return true;
            }
            return false;
        }
コード例 #2
0
        public override bool test(CSsemi.CSemiExp semi, string filename)
        {
            if (semi[semi.count - 1] != "{")
                return false;
            int index = semi.FindFirst("(");

            List<Elem> table = RepositoryForOutput.storageForOutput_;
            CSsemi.CSemiExp local = new CSsemi.CSemiExp();
            try
            {
                if (index > 0 && !isSpecialToken(semi[index - 1]))
                {
                    for (int i = index - 1; i < semi.count; i++)
                    {
                        foreach (Elem e in table)
                        {
                            if ((e.name.Equals(semi[i])) && !(e.type.Equals("function")) && !(e.type.Equals("namespace")))
                            {
                                local.Add("Using").Add(semi[i]).Add(e.filename).Add(e.namespacename);
                                doActions(local, filename);
                                return false;
                            }
                        }
                    }
                }
            }
            catch
            {
            }
            return false;
        }
コード例 #3
0
 // wether the semi contain name of function
 bool containFunctionName(CSsemi.CSemiExp semi)
 {
     if (semi[semi.count - 1] == "{")  // found "{"
       {
       int index = semi.FindFirst("(");
       if (index > 0 && !DetectFunction.isSpecialToken(semi[index - 1]))    // and found "(" before "{" and at least a token before "("
           return true;
       else
           return false;
       }
       else
       return false;
 }
コード例 #4
0
        public override bool test(CSsemi.CSemiExp semi)
        {
            if (semi[semi.count - 1] != "{")
            return false;

              // strip off leading #if(TEST_XYZ) if it's in this semi

              if (semi.FindFirst("#") != -1)
              {
            int loc = semi.FindFirst(")");
            for (int i = 0; i <= loc; ++i)
              semi.remove(0);
              }
              // now find function

              int index = semi.FindFirst("(");
              if (index > 0 && !isSpecialToken(semi[index - 1]))
              {
            CSsemi.CSemiExp local = new CSsemi.CSemiExp();
            local.Add("function").Add(semi[index - 1]);
            doActions(local);
            return true;
              }
              return false;
        }
コード例 #5
0
        public override bool test(CSsemi.CSemiExp semi)
        {
            Repository repo_ = Repository.getInstance();
            int index = semi.FindFirst("new");
            if (index != -1)
            {
                string currclassName = DetectParentClass.getClassName(repo_.semi.lineCount);
                CSsemi.CSemiExp local = new CSsemi.CSemiExp();
                // local semiExp with tokens for type and name
                local.displayNewLines = false;
                local.Add(semi[index + 1]).Add(semi[index - 2]).Add(currclassName);
                doActionsAggregation(local);
                return true;
            }

            return false;
        }
コード例 #6
0
        public override bool test(CSsemi.CSemiExp semi)
        {
            Display.displayRules(actionDelegate, "rule   DetectFunction");
              if (semi[semi.count - 1] != "{")
            return false;

              int index = semi.FindFirst("(");
              if (index > 0 && !isSpecialToken(semi[index - 1]))
              {
            CSsemi.CSemiExp local = new CSsemi.CSemiExp();
            local.Add("function").Add(semi[index - 1]);
            doActions(local);
            return true;
              }
              return false;
        }
コード例 #7
0
        public override bool test(CSsemi.CSemiExp semi)
        {
            string[] SpecialToken = { "if", "else", "for", "foreach", "while", "switch", "case", "do", "break" };
            int index = -1;
            int index2 = 0;
            CSsemi.CSemiExp local = new CSsemi.CSemiExp();
            bool flag = false;
            foreach (string stoken in SpecialToken)
            {
                index = semi.Contains(stoken);
                index2 = semi.FindFirst("{");
                if (index != -1 && index2 == -1)
                {
                    local = new CSsemi.CSemiExp();
                    // local semiExp with tokens for type and name
                    local.displayNewLines = false;
                    local.Add("Scope").Add(semi[index]);
                    doActions(local);
                    flag = false;
                }
            }
            if (flag)
                return true;

            return false;

        }
コード例 #8
0
        public override bool test(CSsemi.CSemiExp semi)
        {
            int indexCL = semi.Contains("class");
            int indexIF = semi.Contains("interface");

            int index = Math.Max(indexCL, indexIF);
            int index2 = semi.FindFirst(":");
            if (index != -1 && index2 != -1)
            {
                CSsemi.CSemiExp local = new CSsemi.CSemiExp();
                // local semiExp with tokens for type and name
                local.displayNewLines = false;
                local.Add(semi[index + 1]).Add(semi[index + 3]);
                doActionsInheritance(local);

                int multiInheritCount = semi.FindAll(",");
                while (multiInheritCount > 0)
                {
                    index2 = index2 + 2;
                    local = new CSsemi.CSemiExp();
                    local.displayNewLines = false;
                    local.Add(semi[index + 1]).Add(semi[index2 + 1]);
                    doActionsInheritance(local);
                    multiInheritCount--;
                }

                return true;
            }
            return false;
        }
コード例 #9
0
        public override bool test(CSsemi.CSemiExp semi)
        {
            string[] SpecialToken = { "if", "else", "for", "foreach", "while", "catch", "try", "finally", "switch", "do" };
            int index = -1;
            foreach (string stoken in SpecialToken)
            {
                int tempindex = semi.Contains(stoken);
                if (tempindex != -1)
                    index = Math.Max(index, tempindex);

            }
            int index2 = semi.FindFirst("{");

            if (index != -1 && index2 != -1)
            {
                CSsemi.CSemiExp local = new CSsemi.CSemiExp();
                // local semiExp with tokens for type and name
                local.displayNewLines = false;
                local.Add("Scope").Add(semi[index]);
                doActions(local);
                return true;
            }

            return false;
        }
コード例 #10
0
ファイル: RulesAndActions.cs プロジェクト: WaverV/Projects
        public override bool test(CSsemi.CSemiExp semi, string file)
        {
            try
            {
                if (semi[semi.count - 1] != "{")
                    return false;

                int index = semi.FindFirst("(");
                if (index > 0 && !isSpecialToken(semi[index - 1]))
                {
                    List<Elem> output = OutputRepository.output_;

                    foreach (Elem e in output)
                    {
                        for (int i = 0; i < semi.count - 1; i++)
                        {
                            if (e.name.Equals(semi[i]) && !e.type.Equals("namespace") && !e.type.Equals("function"))
                            {
                                CSsemi.CSemiExp local = new CSsemi.CSemiExp();
                                local.Add("Using").Add(semi[i]);
                                doActions(local, file);
                                return true;
                            }

                        }
                    }

                }
            }
            catch { }
            return false;
        }
コード例 #11
0
      public override bool test(CSsemi.CSemiExp semi)
      {
          if (semi[semi.count - 1] != "{" )
              return false;

          int index = semi.FindFirst("(");
          if (semi[index + 1] == ")")
              return false;
          if (index > 0 && !isSpecialToken(semi[index - 1]))
          {
              CSsemi.CSemiExp local = new CSsemi.CSemiExp();
              if (semi.Contains(".") != -1)
                  index = semi.FindFirst(".");
              local.Add("Using").Add(semi[index + 1]);
              doActions(local);
              return true;
          }
          return false;
      }
コード例 #12
0
 public override bool test(CSsemi.CSemiExp semi)
 {
     int index = semi.Contains("new");
     if (index != -1)
     {
         CSsemi.CSemiExp local = new CSsemi.CSemiExp();
         local.displayNewLines = false;
         if (semi.Contains(".") != -1)
             index = semi.FindFirst(".");
         local.Add("Aggregation").Add(semi[index + 1]);
         doActions(local);
         return true;
     }
     return false;
 }
コード例 #13
0
 public override bool test(CSsemi.CSemiExp semi)
 {
     int index = semi.FindFirst("(");
     if (index>0 && isSpecialToken(semi[index-1]))
     {
         CSsemi.CSemiExp local = new CSsemi.CSemiExp();
         local.Add("braceless").Add("braceless");
         doActions(local);
         semi.remove(index);
         test(semi);
         return true;
     }
     return false;
 }