Beispiel #1
0
 /// <exception cref="Kirikiri.Tjs2.VariantException"></exception>
 /// <exception cref="Kirikiri.Tjs2.CompileException"></exception>
 /// <exception cref="Kirikiri.Tjs2.TJSException"></exception>
 public virtual void Parse(string script, bool isexpr, bool resultneeded)
 {
     mCompileErrorCount = 0;
     mLexicalAnalyzer = new LexicalAnalyzer(this, script, isexpr, resultneeded);
     mLineData = new ScriptLineData(script, mLineOffset);
     Program();
     mLexicalAnalyzer = null;
     if (mCompileErrorCount > 0)
     {
         throw new TJSScriptError(mFirstError, this, mFirstErrorPos);
     }
 }
Beispiel #2
0
 public virtual void LexTest(string script)
 {
     Compiler compiler = new Compiler(this);
     int token = 0;
     int token1;
     ScriptLineData lineData = new ScriptLineData(script, 0);
     Lexer lexer = new Lexer(compiler, script, false, false);
     LexicalAnalyzer lex = new LexicalAnalyzer(compiler, script, false, false);
     try
     {
         do
         {
             token = lexer.GetNext();
             token1 = lex.GetNext();
             if (token1 != token)
             {
                 int oleline = lineData.GetSrcPosToLine(lexer.GetCurrentPosition());
                 int newline = lineData.GetSrcPosToLine(lex.GetCurrentPosition());
                 System.Console.Out.Write("error line:" + oleline + ", " + newline + "\n");
             }
             int v1 = lexer.GetValue();
             int v2 = lex.GetValue();
             if (v1 != v2)
             {
                 int oleline = lineData.GetSrcPosToLine(lexer.GetCurrentPosition());
                 int newline = lineData.GetSrcPosToLine(lex.GetCurrentPosition());
                 System.Console.Out.Write("error line:" + oleline + ", " + newline + "\n");
             }
             if (v1 != 0)
             {
                 object o1 = lexer.GetValue(v1).ToJavaObject();
                 object o2 = lex.GetValue(v2).ToJavaObject();
                 if (!o1.Equals(o2))
                 {
                     int oleline = lineData.GetSrcPosToLine(lexer.GetCurrentPosition());
                     int newline = lineData.GetSrcPosToLine(lex.GetCurrentPosition());
                     System.Console.Out.Write("o1:" + o1.ToString() + ", o2" + o2.ToString() + "\n");
                     System.Console.Out.Write("error line:" + oleline + ", " + newline + "\n");
                 }
             }
         }
         while (token != 0);
     }
     catch (CompileException)
     {
     }
     long start = Runtime.CurrentTimeMillis();
     lexer = new Lexer(compiler, script, false, false);
     try
     {
         do
         {
             token = lexer.GetNext();
             lexer.GetValue();
         }
         while (token != 0);
     }
     catch (CompileException)
     {
     }
     long time = Runtime.CurrentTimeMillis() - start;
     System.Console.Out.Write("old lex : " + time + "ms\n");
     start = Runtime.CurrentTimeMillis();
     lex = new LexicalAnalyzer(compiler, script, false, false);
     try
     {
         do
         {
             token = lex.GetNext();
             lex.GetValue();
         }
         while (token != 0);
     }
     catch (CompileException)
     {
     }
     time = Runtime.CurrentTimeMillis() - start;
     System.Console.Out.Write("new lex : " + time + "ms\n");
 }