[webkit-changes] cvs commit: JavaScriptCore/kjs debugger.cpp debugger.h function.cpp function_object.cpp grammar.cpp grammar.y internal.cpp internal.h interpreter.cpp interpreter.h nodes.cpp

Geoffrey ggaren at opensource.apple.com
Tue Aug 2 13:39:14 PDT 2005


ggaren      05/08/02 13:39:13

  Modified:    .        Tag: Safari-2-0-branch ChangeLog
               JavaScriptCore.xcodeproj Tag: Safari-2-0-branch
                        project.pbxproj
               kjs      Tag: Safari-2-0-branch debugger.cpp debugger.h
                        function.cpp function_object.cpp grammar.cpp
                        grammar.y internal.cpp internal.h interpreter.cpp
                        interpreter.h nodes.cpp
  Log:
          Merged from TOT to Safari-2-0-branch.
  
          2005-07-27  Maciej Stachowiak  <mjs at apple.com>
  
                  Changes by Michael Kahl, reviewed by me.
  
                  - fixed <rdar://problem/4194278> Need better debugging support in JavaScriptCore
  
                  * JavaScriptCore.xcodeproj/project.pbxproj:
                  * kjs/debugger.cpp:
                  (KJS::AttachedInterpreter::AttachedInterpreter):
                  (KJS::AttachedInterpreter::~AttachedInterpreter):
                  (Debugger::~Debugger):
                  (Debugger::attach):
                  (Debugger::detach):
                  (Debugger::sourceParsed):
                  * kjs/debugger.h:
                  * kjs/function.cpp:
                  (KJS::FunctionImp::call):
                  (KJS::GlobalFuncImp::call):
                  * kjs/function_object.cpp:
                  (FunctionObjectImp::construct):
                  * kjs/grammar.y:
                  * kjs/internal.cpp:
                  (Parser::parse):
                  (InterpreterImp::evaluate):
                  * kjs/internal.h:
                  (KJS::InterpreterImp::setDebugger):
                  * kjs/interpreter.cpp:
                  * kjs/interpreter.h:
                  (KJS::Interpreter::imp):
                  * kjs/nodes.cpp:
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.677.6.13 +34 -0     JavaScriptCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/ChangeLog,v
  retrieving revision 1.677.6.12
  retrieving revision 1.677.6.13
  diff -u -r1.677.6.12 -r1.677.6.13
  --- ChangeLog	2 Aug 2005 16:39:22 -0000	1.677.6.12
  +++ ChangeLog	2 Aug 2005 20:39:09 -0000	1.677.6.13
  @@ -1,3 +1,37 @@
  +2005-08-02  Geoffrey Garen  <ggaren at apple.com>
  +        Merged from TOT to Safari-2-0-branch.
  +
  +        2005-07-27  Maciej Stachowiak  <mjs at apple.com>
  +        
  +                Changes by Michael Kahl, reviewed by me.
  +        
  +                - fixed <rdar://problem/4194278> Need better debugging support in JavaScriptCore
  +            
  +                * JavaScriptCore.xcodeproj/project.pbxproj:
  +                * kjs/debugger.cpp:
  +                (KJS::AttachedInterpreter::AttachedInterpreter):
  +                (KJS::AttachedInterpreter::~AttachedInterpreter):
  +                (Debugger::~Debugger):
  +                (Debugger::attach):
  +                (Debugger::detach):
  +                (Debugger::sourceParsed):
  +                * kjs/debugger.h:
  +                * kjs/function.cpp:
  +                (KJS::FunctionImp::call):
  +                (KJS::GlobalFuncImp::call):
  +                * kjs/function_object.cpp:
  +                (FunctionObjectImp::construct):
  +                * kjs/grammar.y:
  +                * kjs/internal.cpp:
  +                (Parser::parse):
  +                (InterpreterImp::evaluate):
  +                * kjs/internal.h:
  +                (KJS::InterpreterImp::setDebugger):
  +                * kjs/interpreter.cpp:
  +                * kjs/interpreter.h:
  +                (KJS::Interpreter::imp):
  +                * kjs/nodes.cpp:
  +
   2005-08-02  Adele Peterson  <adele at apple.com>
   
           Merged from TOT to Safari-2-0-branch.
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.2.2.3   +2 -2      JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
  
  Index: project.pbxproj
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj,v
  retrieving revision 1.2.2.2
  retrieving revision 1.2.2.3
  diff -u -r1.2.2.2 -r1.2.2.3
  --- project.pbxproj	29 Jul 2005 23:23:35 -0000	1.2.2.2
  +++ project.pbxproj	2 Aug 2005 20:39:10 -0000	1.2.2.3
  @@ -118,7 +118,7 @@
   		9374D3A9038D9D74008635CE /* scope_chain.h in Headers */ = {isa = PBXBuildFile; fileRef = 9374D3A7038D9D74008635CE /* scope_chain.h */; settings = {ATTRIBUTES = (Private, ); }; };
   		9374D3AA038D9D74008635CE /* scope_chain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9374D3A8038D9D74008635CE /* scope_chain.cpp */; };
   		937F4F25048E5B9900CA2AC4 /* internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 937F4F24048E5B9900CA2AC4 /* internal.h */; };
  -		938772E6038BFE19008635CE /* array_instance.h in Headers */ = {isa = PBXBuildFile; fileRef = 938772E5038BFE19008635CE /* array_instance.h */; };
  +		938772E6038BFE19008635CE /* array_instance.h in Headers */ = {isa = PBXBuildFile; fileRef = 938772E5038BFE19008635CE /* array_instance.h */; settings = {ATTRIBUTES = (Private, ); }; };
   		F50888B7030BB74C012A967E /* simple_number.h in Headers */ = {isa = PBXBuildFile; fileRef = F50888B6030BB74C012A967E /* simple_number.h */; settings = {ATTRIBUTES = (Private, ); }; };
   		F5341392030CEEB1018BE7F3 /* reference.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5341390030CEEB1018BE7F3 /* reference.cpp */; settings = {ATTRIBUTES = (Private, ); }; };
   		F5341393030CEEB1018BE7F3 /* reference.h in Headers */ = {isa = PBXBuildFile; fileRef = F5341391030CEEB1018BE7F3 /* reference.h */; settings = {ATTRIBUTES = (Private, ); }; };
  @@ -138,7 +138,7 @@
   		F692A8920255597D01FF60F7 /* date_object.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8560255597D01FF60F7 /* date_object.h */; settings = {ATTRIBUTES = (Private, ); }; };
   		F692A8930255597D01FF60F7 /* date_object.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8570255597D01FF60F7 /* date_object.lut.h */; };
   		F692A8940255597D01FF60F7 /* debugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A8580255597D01FF60F7 /* debugger.cpp */; };
  -		F692A8950255597D01FF60F7 /* debugger.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8590255597D01FF60F7 /* debugger.h */; };
  +		F692A8950255597D01FF60F7 /* debugger.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8590255597D01FF60F7 /* debugger.h */; settings = {ATTRIBUTES = (Private, ); }; };
   		F692A8960255597D01FF60F7 /* error_object.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A85A0255597D01FF60F7 /* error_object.cpp */; };
   		F692A8970255597D01FF60F7 /* error_object.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A85B0255597D01FF60F7 /* error_object.h */; settings = {ATTRIBUTES = (Private, ); }; };
   		F692A8980255597D01FF60F7 /* function_object.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A85C0255597D01FF60F7 /* function_object.cpp */; };
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.3.72.1  +27 -35    JavaScriptCore/kjs/debugger.cpp
  
  Index: debugger.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/debugger.cpp,v
  retrieving revision 1.3
  retrieving revision 1.3.72.1
  diff -u -r1.3 -r1.3.72.1
  --- debugger.cpp	15 Apr 2002 23:40:57 -0000	1.3
  +++ debugger.cpp	2 Aug 2005 20:39:11 -0000	1.3.72.1
  @@ -36,13 +36,16 @@
     struct AttachedInterpreter
     {
     public:
  -    AttachedInterpreter(Interpreter *i) : interp(i) {}
  +    AttachedInterpreter(Interpreter *i, AttachedInterpreter *ai) : interp(i), next(ai) { ++Debugger::debuggersPresent; }
  +    ~AttachedInterpreter() { --Debugger::debuggersPresent; }
       Interpreter *interp;
       AttachedInterpreter *next;
     };
   
   }
   
  +int Debugger::debuggersPresent = 0;
  +
   Debugger::Debugger()
   {
     rep = new DebuggerImp();
  @@ -50,53 +53,42 @@
   
   Debugger::~Debugger()
   {
  -  // detach from all interpreters
  -  while (rep->interps)
  -    detach(rep->interps->interp);
  -
  +  detach(0);
     delete rep;
   }
   
   void Debugger::attach(Interpreter *interp)
   {
  -  if (interp->imp()->debugger() != this)
  -    interp->imp()->setDebugger(this);
  -
  -  // add to the list of attached interpreters
  -  if (!rep->interps)
  -    rep->interps = new AttachedInterpreter(interp);
  -  else {
  -    AttachedInterpreter *ai = rep->interps;
  -    while (ai->next)
  -      ai = ai->next;
  -    ai->next = new AttachedInterpreter(interp);;
  -  }
  +  Debugger *other = interp->imp()->debugger();
  +  if (other == this)
  +    return;
  +  if (other)
  +    other->detach(interp);
  +  interp->imp()->setDebugger(this);
  +  rep->interps = new AttachedInterpreter(interp, rep->interps);
   }
   
   void Debugger::detach(Interpreter *interp)
   {
  -  if (interp->imp()->debugger() == this)
  -    interp->imp()->setDebugger(this);
  -
  -  // remove from the list of attached interpreters
  -  if (rep->interps->interp == interp) {
  -    AttachedInterpreter *old = rep->interps;
  -    rep->interps = rep->interps->next;
  -    delete old;
  -  }
  +  if (interp && interp->imp()->debugger() == this)
  +    interp->imp()->setDebugger(0);
   
  -  AttachedInterpreter *ai = rep->interps;
  -  while (ai->next && ai->next->interp != interp)
  -    ai = ai->next;
  -  if (ai->next) {
  -    AttachedInterpreter *old = ai->next;
  -    ai->next = ai->next->next;
  -    delete old;
  +  // iterate the addresses where AttachedInterpreter pointers are stored
  +  // so we can unlink items from the list
  +  AttachedInterpreter **p = &rep->interps;
  +  AttachedInterpreter *q;
  +  while ((q = *p)) {
  +    if (!interp || q->interp == interp) {
  +      *p = q->next;
  +      delete q;
  +    } else {
  +      p = &q->next;
  +    }
     }
   }
   
  -bool Debugger::sourceParsed(ExecState */*exec*/, int /*sourceId*/,
  -                            const UString &/*source*/, int /*errorLine*/)
  +bool Debugger::sourceParsed(ExecState */*exec*/, int /*sourceId*/, const UString &/*sourceURL*/, 
  +                           const UString &/*source*/, int /*errorLine*/)
   {
     return true;
   }
  
  
  
  1.3.72.1  +6 -3      JavaScriptCore/kjs/debugger.h
  
  Index: debugger.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/debugger.h,v
  retrieving revision 1.3
  retrieving revision 1.3.72.1
  diff -u -r1.3 -r1.3.72.1
  --- debugger.h	15 Apr 2002 23:40:57 -0000	1.3
  +++ debugger.h	2 Aug 2005 20:39:11 -0000	1.3.72.1
  @@ -101,14 +101,14 @@
        * @param exec The current execution state
        * @param sourceId The ID of the source code (corresponds to the
        * sourceId supplied in other functions such as @ref atStatement()
  -     * @param source The source code that was parsed
  +     * @param sourceURL Where the source code that was parsed came from 
        * @param errorLine The line number at which parsing encountered an
        * error, or -1 if the source code was valid and parsed succesfully
        * @return true if execution should be continue, false if it should
        * be aborted
        */
  -    virtual bool sourceParsed(ExecState *exec, int sourceId,
  -			      const UString &source, int errorLine);
  +     virtual bool sourceParsed(ExecState *exec, int sourceId, const UString &sourceURL,
  +                  const UString &source, int errorLine);
   
       /**
        * Called when all functions/programs associated with a particular
  @@ -205,6 +205,9 @@
   
     private:
       DebuggerImp *rep;
  +
  +  public:
  +    static int debuggersPresent;
     };
   
   };
  
  
  
  1.38.8.1  +27 -14    JavaScriptCore/kjs/function.cpp
  
  Index: function.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/function.cpp,v
  retrieving revision 1.38
  retrieving revision 1.38.8.1
  diff -u -r1.38 -r1.38.8.1
  --- function.cpp	16 Mar 2005 18:30:25 -0000	1.38
  +++ function.cpp	2 Aug 2005 20:39:11 -0000	1.38.8.1
  @@ -77,6 +77,17 @@
   {
     Object &globalObj = exec->dynamicInterpreter()->globalObject();
   
  +  // enter a new execution context
  +  ContextImp ctx(globalObj, exec->dynamicInterpreter()->imp(), thisObj, codeType(),
  +                 exec->context().imp(), this, &args);
  +  ExecState newExec(exec->dynamicInterpreter(), &ctx);
  +  newExec.setException(exec->exception()); // could be null
  +
  +  // assign user supplied arguments to parameters
  +  processParameters(&newExec, args);
  +  // add variable declarations (initialized to undefined)
  +  processVarDecls(&newExec);
  +
     Debugger *dbg = exec->dynamicInterpreter()->imp()->debugger();
     int sid = -1;
     int lineno = -1;
  @@ -87,29 +98,18 @@
       }
   
       Object func(this);
  -    bool cont = dbg->callEvent(exec,sid,lineno,func,args);
  +    bool cont = dbg->callEvent(&newExec,sid,lineno,func,args);
       if (!cont) {
         dbg->imp()->abort();
         return Undefined();
       }
     }
   
  -  // enter a new execution context
  -  ContextImp ctx(globalObj, exec->dynamicInterpreter()->imp(), thisObj, codeType(),
  -                 exec->context().imp(), this, &args);
  -  ExecState newExec(exec->dynamicInterpreter(), &ctx);
  -  newExec.setException(exec->exception()); // could be null
  -
  -  // assign user supplied arguments to parameters
  -  processParameters(&newExec, args);
  -  // add variable declarations (initialized to undefined)
  -  processVarDecls(&newExec);
  -
     Completion comp = execute(&newExec);
   
     // if an exception occured, propogate it back to the previous execution object
     if (newExec.hadException())
  -    exec->setException(newExec.exception());
  +    comp = Completion(Throw, newExec.exception());
   
   #ifdef KJS_VERBOSE
     if (comp.complType() == Throw)
  @@ -121,8 +121,14 @@
   #endif
   
     if (dbg) {
  +    if (inherits(&DeclaredFunctionImp::info))
  +      lineno = static_cast<DeclaredFunctionImp*>(this)->body->lastLine();
  +
  +    if (comp.complType() == Throw)
  +        newExec.setException(comp.value());
  +
       Object func(this);
  -    int cont = dbg->returnEvent(exec,sid,lineno,func);
  +    int cont = dbg->returnEvent(&newExec,sid,lineno,func);
       if (!cont) {
         dbg->imp()->abort();
         return Undefined();
  @@ -640,6 +646,13 @@
         UString errMsg;
         ProgramNode *progNode = Parser::parse(UString(), 0, s.data(),s.size(),&sid,&errLine,&errMsg);
   
  +      Debugger *dbg = exec->dynamicInterpreter()->imp()->debugger();
  +      if (dbg) {
  +        bool cont = dbg->sourceParsed(exec, sid, UString(), s, errLine);
  +        if (!cont)
  +          return Undefined();
  +      }
  +
         // no program node means a syntax occurred
         if (!progNode) {
   	Object err = Error::create(exec,SyntaxError,errMsg.ascii(),errLine);
  
  
  
  1.24.10.1 +2 -1      JavaScriptCore/kjs/function_object.cpp
  
  Index: function_object.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/function_object.cpp,v
  retrieving revision 1.24
  retrieving revision 1.24.10.1
  diff -u -r1.24 -r1.24.10.1
  --- function_object.cpp	7 Oct 2004 21:30:47 -0000	1.24
  +++ function_object.cpp	2 Aug 2005 20:39:11 -0000	1.24.10.1
  @@ -217,7 +217,8 @@
     // notify debugger that source has been parsed
     Debugger *dbg = exec->dynamicInterpreter()->imp()->debugger();
     if (dbg) {
  -    bool cont = dbg->sourceParsed(exec,sid,body,errLine);
  +    // send empty sourceURL to indicate constructed code
  +    bool cont = dbg->sourceParsed(exec,sid,UString(),body,errLine);
       if (!cont) {
         dbg->imp()->abort();
         return Object(new ObjectImp());
  
  
  
  1.20.22.1 +374 -370  JavaScriptCore/kjs/Attic/grammar.cpp
  
  Index: grammar.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/Attic/grammar.cpp,v
  retrieving revision 1.20
  retrieving revision 1.20.22.1
  diff -u -r1.20 -r1.20.22.1
  --- grammar.cpp	18 Nov 2003 05:40:43 -0000	1.20
  +++ grammar.cpp	2 Aug 2005 20:39:11 -0000	1.20.22.1
  @@ -182,7 +182,7 @@
   
   
   
  -#define	YYFINAL		358
  +#define	YYFINAL		359
   #define	YYFLAG		-32768
   #define	YYNTBASE	85
   
  @@ -242,9 +242,9 @@
      408,   416,   423,   429,   439,   450,   458,   467,   477,   478,
      480,   483,   486,   490,   494,   497,   500,   504,   508,   511,
      514,   518,   522,   528,   534,   538,   544,   545,   547,   549,
  -   552,   556,   561,   564,   568,   572,   576,   580,   584,   589,
  -   595,   598,   604,   611,   616,   622,   624,   628,   631,   635,
  -   636,   638,   640,   643,   645
  +   552,   556,   561,   564,   568,   572,   576,   580,   584,   588,
  +   593,   599,   602,   608,   615,   620,   626,   628,   632,   635,
  +   639,   640,   642,   644,   647,   649
   };
   
   static const short yyrhs[] = {     3,
  @@ -305,14 +305,14 @@
      133,    65,     0,     0,   134,     0,   135,     0,   134,   135,
        0,     9,   114,    69,     0,     9,   114,    69,   117,     0,
       10,    69,     0,    10,    69,   117,     0,    58,    69,   115,
  -     0,    30,   114,    84,     0,    31,   116,   140,     0,    31,
  -   116,   141,     0,    31,   116,   140,   141,     0,    32,    62,
  -    58,    63,   116,     0,    33,   116,     0,    15,    58,    62,
  -    63,   145,     0,    15,    58,    62,   144,    63,   145,     0,
  -    15,    62,    63,   145,     0,    15,    62,   144,    63,   145,
  -     0,    58,     0,   144,    68,    58,     0,    64,    65,     0,
  -    64,   147,    65,     0,     0,   147,     0,   148,     0,   147,
  -   148,     0,   115,     0,   142,     0
  +     0,    30,   114,    84,     0,    30,   114,     1,     0,    31,
  +   116,   140,     0,    31,   116,   141,     0,    31,   116,   140,
  +   141,     0,    32,    62,    58,    63,   116,     0,    33,   116,
  +     0,    15,    58,    62,    63,   145,     0,    15,    58,    62,
  +   144,    63,   145,     0,    15,    62,    63,   145,     0,    15,
  +    62,   144,    63,   145,     0,    58,     0,   144,    68,    58,
  +     0,    64,    65,     0,    64,   147,    65,     0,     0,   147,
  +     0,   148,     0,   147,   148,     0,   115,     0,   142,     0
   };
   
   #endif
  @@ -336,9 +336,9 @@
      457,   461,   463,   464,   467,   470,   473,   476,   481,   483,
      486,   488,   492,   493,   499,   501,   505,   506,   513,   515,
      519,   520,   526,   531,   536,   538,   542,   544,   547,   549,
  -   552,   554,   557,   559,   562,   567,   571,   573,   574,   577,
  -   581,   585,   587,   590,   592,   597,   599,   602,   605,   609,
  -   612,   616,   618,   621,   623
  +   552,   554,   557,   559,   562,   567,   569,   572,   574,   575,
  +   578,   582,   586,   588,   591,   593,   598,   600,   603,   606,
  +   610,   613,   617,   619,   622,   624
   };
   #endif
   
  @@ -388,9 +388,9 @@
      124,   125,   125,   125,   125,   125,   125,   125,   126,   126,
      127,   127,   127,   127,   128,   128,   128,   128,   129,   129,
      129,   129,   130,   131,   132,   132,   133,   133,   134,   134,
  -   135,   135,   136,   136,   137,   138,   139,   139,   139,   140,
  -   141,   142,   142,   143,   143,   144,   144,   145,   145,   146,
  -   146,   147,   147,   148,   148
  +   135,   135,   136,   136,   137,   138,   138,   139,   139,   139,
  +   140,   141,   142,   142,   143,   143,   144,   144,   145,   145,
  +   146,   146,   147,   147,   148,   148
   };
   
   static const short yyr2[] = {     0,
  @@ -411,20 +411,20 @@
        7,     6,     5,     9,    10,     7,     8,     9,     0,     1,
        2,     2,     3,     3,     2,     2,     3,     3,     2,     2,
        3,     3,     5,     5,     3,     5,     0,     1,     1,     2,
  -     3,     4,     2,     3,     3,     3,     3,     3,     4,     5,
  -     2,     5,     6,     4,     5,     1,     3,     2,     3,     0,
  -     1,     1,     2,     1,     1
  +     3,     4,     2,     3,     3,     3,     3,     3,     3,     4,
  +     5,     2,     5,     6,     4,     5,     1,     3,     2,     3,
  +     0,     1,     1,     2,     1,     1
   };
   
  -static const short yydefact[] = {   190,
  +static const short yydefact[] = {   191,
        1,     2,     3,     5,     4,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     8,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     7,     9,     0,     0,     6,
        0,     0,    20,     0,     0,     0,     0,   137,    10,    29,
       11,    34,    44,    45,    46,    49,    61,    65,    68,    72,
       79,    84,    86,    88,    90,    92,    94,    96,   110,     0,
  -   194,   112,   113,   114,   115,   116,   117,   118,   119,   120,
  -   121,   122,   123,   124,   125,   195,    30,   191,   192,   156,
  +   195,   112,   113,   114,   115,   116,   117,   118,   119,   120,
  +   121,   122,   123,   124,   125,   196,    30,   192,   193,   156,
        0,   155,   149,     0,     9,     0,    34,    35,   134,     0,
      132,   152,     0,   151,     0,     0,   160,   159,     0,    46,
       51,    50,     0,     0,     0,    52,     0,     0,     0,     0,
  @@ -435,359 +435,359 @@
      107,   108,    98,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,   139,     0,
  -   138,   193,   158,   157,     0,    46,   150,     0,    27,    28,
  +   138,   194,   158,   157,     0,    46,   150,     0,    27,    28,
       26,    13,    33,     0,   135,   131,     0,   130,   154,   153,
  -     0,   186,     0,     0,   162,   161,     0,     0,     0,     0,
  -     0,   176,   126,     0,     0,   177,   178,   175,    12,    14,
  -     0,     0,   127,    16,    20,    15,    18,    23,    40,     0,
  -    42,     0,    32,     0,    39,    97,    63,    62,    64,    66,
  -    67,    69,    70,    71,    78,    77,    75,    76,    73,    74,
  -    80,    81,    82,    83,    85,    87,    89,    91,    93,     0,
  -   111,   134,     0,     0,   149,   136,   133,     0,     0,     0,
  -   184,     0,     0,     0,     0,     0,     0,     0,     0,   181,
  -   179,     0,    24,     0,    41,     0,    31,    38,     0,     0,
  -   135,   149,     0,     0,   182,     0,   188,     0,   185,   187,
  -   140,     0,   143,   167,   164,   163,     0,     0,    17,    19,
  -    43,    95,     0,     0,     0,     0,   149,   183,   189,     0,
  -   142,     0,     0,   168,   169,     0,    25,     0,     0,   149,
  -   146,     0,   141,     0,     0,   165,   167,   170,   180,   147,
  -     0,     0,     0,   171,   173,     0,   148,     0,   144,   128,
  -   172,   174,   166,   145,   129,     0,     0,     0
  +     0,   187,     0,     0,   162,   161,     0,     0,     0,     0,
  +     0,   177,   176,   126,     0,     0,   178,   179,   175,    12,
  +    14,     0,     0,   127,    16,    20,    15,    18,    23,    40,
  +     0,    42,     0,    32,     0,    39,    97,    63,    62,    64,
  +    66,    67,    69,    70,    71,    78,    77,    75,    76,    73,
  +    74,    80,    81,    82,    83,    85,    87,    89,    91,    93,
  +     0,   111,   134,     0,     0,   149,   136,   133,     0,     0,
  +     0,   185,     0,     0,     0,     0,     0,     0,     0,     0,
  +   182,   180,     0,    24,     0,    41,     0,    31,    38,     0,
  +     0,   135,   149,     0,     0,   183,     0,   189,     0,   186,
  +   188,   140,     0,   143,   167,   164,   163,     0,     0,    17,
  +    19,    43,    95,     0,     0,     0,     0,   149,   184,   190,
  +     0,   142,     0,     0,   168,   169,     0,    25,     0,     0,
  +   149,   146,     0,   141,     0,     0,   165,   167,   170,   181,
  +   147,     0,     0,     0,   171,   173,     0,   148,     0,   144,
  +   128,   172,   174,   166,   145,   129,     0,     0,     0
   };
   
   static const short yydefgoto[] = {    39,
       40,    41,   126,   127,   128,   122,   123,    42,    43,    44,
  -   136,   230,    45,    46,    47,    48,    49,    50,    51,    52,
  +   136,   231,    45,    46,    47,    48,    49,    50,    51,    52,
       53,    54,    55,    56,    57,    58,    59,   154,    60,    61,
  -    62,   351,    63,    90,    91,   195,    64,    65,    66,    67,
  -   188,    68,    69,    70,    71,    72,   305,   323,   324,   325,
  -   337,    73,    74,    75,   216,   217,    76,    77,   204,   271,
  -   356,   124,    79
  +    62,   352,    63,    90,    91,   195,    64,    65,    66,    67,
  +   188,    68,    69,    70,    71,    72,   306,   324,   325,   326,
  +   338,    73,    74,    75,   217,   218,    76,    77,   204,   272,
  +   357,   124,    79
   };
   
  -static const short yypact[] = {   779,
  --32768,-32768,-32768,-32768,-32768,     5,   -28,   111,   -30,     6,
  -   -31,   335,  1252,  1252,   -16,-32768,   853,    -5,  1252,     9,
  -    57,  1252,   -20,  1252,  1252,-32768,   -21,  1252,  1252,-32768,
  -  1252,   409,    -1,  1252,  1252,  1252,  1252,-32768,-32768,-32768,
  --32768,    42,-32768,    43,   179,-32768,-32768,   -14,    12,   195,
  -    82,   118,    72,    85,    93,   151,   -23,-32768,-32768,    11,
  +static const short yypact[] = {   780,
  +-32768,-32768,-32768,-32768,-32768,     5,   -52,   111,     9,     6,
  +    25,   336,  1253,  1253,    -3,-32768,   854,    47,  1253,    50,
  +    57,  1253,    29,  1253,  1253,-32768,    36,  1253,  1253,-32768,
  +  1253,   410,    12,  1253,  1253,  1253,  1253,-32768,-32768,-32768,
  +-32768,    83,-32768,    84,   180,-32768,-32768,   -34,    61,   220,
  +    82,   212,    76,    94,    95,   151,    31,-32768,-32768,    11,
   -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  --32768,-32768,-32768,-32768,-32768,-32768,-32768,   779,-32768,-32768,
  -     7,-32768,   964,   161,-32768,    45,    42,-32768,   136,    17,
  --32768,-32768,     8,-32768,   198,    24,-32768,-32768,    18,    90,
  --32768,-32768,  1252,   236,  1252,-32768,  1252,  1252,   -45,   483,
  -   219,-32768,-32768,   853,-32768,-32768,    59,   202,   204,   -21,
  -   935,   123,   205,   557,-32768,   186,  1036,   197,-32768,-32768,
  --32768,-32768,  1108,  1252,   217,-32768,  1252,   218,-32768,-32768,
  +-32768,-32768,-32768,-32768,-32768,-32768,-32768,   780,-32768,-32768,
  +     7,-32768,   965,   102,-32768,    45,    83,-32768,   112,    16,
  +-32768,-32768,     8,-32768,   197,   -19,-32768,-32768,    18,   105,
  +-32768,-32768,  1253,   198,  1253,-32768,  1253,  1253,    20,   484,
  +   119,-32768,-32768,   854,-32768,-32768,    -6,   192,   203,    36,
  +   936,   -37,   207,   558,-32768,   174,  1037,   209,-32768,-32768,
  +-32768,-32768,  1109,  1253,   221,-32768,  1253,   222,-32768,-32768,
   -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  --32768,-32768,-32768,  1252,  1252,  1252,  1252,  1252,  1252,  1252,
  -  1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,
  -  1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,-32768,  1252,
  --32768,-32768,-32768,-32768,   222,    87,   209,   203,-32768,-32768,
  --32768,-32768,-32768,  1252,-32768,-32768,   -30,-32768,-32768,-32768,
  -   105,-32768,   220,   103,-32768,-32768,   113,   223,   115,   116,
  -   117,-32768,-32768,   224,   -20,   249,-32768,-32768,-32768,-32768,
  -    35,  1252,-32768,-32768,    -1,-32768,-32768,-32768,-32768,   119,
  --32768,   196,-32768,   200,-32768,-32768,-32768,-32768,-32768,   -14,
  -   -14,    12,    12,    12,   195,   195,   195,   195,   195,   195,
  -    82,    82,    82,    82,   118,    72,    85,    93,   151,   221,
  --32768,    -3,   -44,  1252,  1252,-32768,-32768,   220,   126,   631,
  --32768,   220,   230,   853,  1252,   853,   225,   853,   233,-32768,
  --32768,   226,-32768,  1180,-32768,  1252,-32768,-32768,  1252,  1252,
  -   268,  1252,   127,   210,-32768,   220,-32768,   705,-32768,-32768,
  -   270,   157,-32768,   287,-32768,-32768,   234,  1252,-32768,-32768,
  --32768,-32768,   174,  1252,   214,   853,  1252,-32768,-32768,   853,
  --32768,  1252,    23,   287,-32768,   -20,-32768,   853,   175,  1252,
  --32768,   237,-32768,   201,   232,-32768,   287,-32768,-32768,-32768,
  -   853,   239,   853,   853,   853,   241,-32768,   853,-32768,-32768,
  -   853,   853,-32768,-32768,-32768,   307,   309,-32768
  +-32768,-32768,-32768,  1253,  1253,  1253,  1253,  1253,  1253,  1253,
  +  1253,  1253,  1253,  1253,  1253,  1253,  1253,  1253,  1253,  1253,
  +  1253,  1253,  1253,  1253,  1253,  1253,  1253,  1253,-32768,  1253,
  +-32768,-32768,-32768,-32768,   223,    87,   210,   199,-32768,-32768,
  +-32768,-32768,-32768,  1253,-32768,-32768,     9,-32768,-32768,-32768,
  +    64,-32768,   224,    99,-32768,-32768,   103,   225,   121,   122,
  +   123,-32768,-32768,-32768,   227,    29,   252,-32768,-32768,-32768,
  +-32768,    27,  1253,-32768,-32768,    12,-32768,-32768,-32768,-32768,
  +   125,-32768,   187,-32768,   201,-32768,-32768,-32768,-32768,-32768,
  +   -34,   -34,    61,    61,    61,   220,   220,   220,   220,   220,
  +   220,    82,    82,    82,    82,   212,    76,    94,    95,   151,
  +   217,-32768,    -1,   -44,  1253,  1253,-32768,-32768,   224,   156,
  +   632,-32768,   224,   232,   854,  1253,   854,   228,   854,   233,
  +-32768,-32768,   226,-32768,  1181,-32768,  1253,-32768,-32768,  1253,
  +  1253,   269,  1253,   158,   213,-32768,   224,-32768,   706,-32768,
  +-32768,   271,   175,-32768,   287,-32768,-32768,   235,  1253,-32768,
  +-32768,-32768,-32768,   176,  1253,   215,   854,  1253,-32768,-32768,
  +   854,-32768,  1253,    43,   287,-32768,    29,-32768,   854,   177,
  +  1253,-32768,   238,-32768,   202,   234,-32768,   287,-32768,-32768,
  +-32768,   854,   239,   854,   854,   854,   242,-32768,   854,-32768,
  +-32768,   854,   854,-32768,-32768,-32768,   308,   310,-32768
   };
   
   static const short yypgoto[] = {-32768,
  --32768,-32768,-32768,    89,-32768,-32768,    91,   302,   308,-32768,
  -   -34,-32768,    41,-32768,     1,   120,    88,   -18,    75,   142,
  -   143,   144,   146,   141,-32768,-32768,  -122,-32768,    -9,   -17,
  -   -22,   -25,-32768,   138,   128,    67,-32768,-32768,-32768,-32768,
  -  -249,-32768,-32768,-32768,-32768,-32768,-32768,    -7,-32768,    13,
  --32768,-32768,-32768,-32768,-32768,   129,-32768,-32768,   131,  -223,
  +-32768,-32768,-32768,    85,-32768,-32768,    91,   307,   309,-32768,
  +   -26,-32768,    41,-32768,     1,   116,  -114,    15,    81,   143,
  +   144,   145,   147,   142,-32768,-32768,  -122,-32768,    -9,   -17,
  +   -22,   -25,-32768,   139,   129,    67,-32768,-32768,-32768,-32768,
  +  -250,-32768,-32768,-32768,-32768,-32768,-32768,    -7,-32768,    13,
  +-32768,-32768,-32768,-32768,-32768,   117,-32768,-32768,   132,  -224,
   -32768,     2,   -74
   };
   
   
  -#define	YYLAST		1326
  +#define	YYLAST		1327
   
   
   static const short yytable[] = {   104,
  -   111,    78,    99,   182,   227,    80,    92,   183,   199,   139,
  -   231,   179,   109,   101,   102,   294,   177,   196,   205,   106,
  -   290,   117,   180,   197,   112,   113,    95,    89,   115,   116,
  -    96,   236,   335,    83,   129,   130,   131,   132,   212,   292,
  -   189,   190,   315,   110,   295,   103,   155,   114,   299,   182,
  -   189,   190,   193,   100,   100,   260,   105,   261,   178,   100,
  -   156,   157,    81,    93,   100,   100,   125,   332,   100,   100,
  -   107,   266,   318,   187,   100,   100,   100,   100,   180,   194,
  -   342,   202,   158,   159,   197,   180,   203,   336,    82,    94,
  -   184,   200,   191,   207,   181,   209,   218,   210,   211,   283,
  -   198,   206,   191,   133,   133,   163,   164,   134,   137,   192,
  -   264,   135,   138,     1,     2,     3,     4,     5,   108,   165,
  -   166,   219,     8,   186,   232,    84,   180,   234,   140,   141,
  -    16,   140,   141,   142,   143,   144,   145,   146,   147,   148,
  -   149,   150,   151,   152,   245,   246,   247,   248,   249,   250,
  -   173,   169,   170,   171,   172,   237,   238,   239,   167,   168,
  -    26,   310,   202,   311,   174,   272,   312,   268,    85,   153,
  -   273,    30,    31,   175,    86,   274,    33,   276,   277,   278,
  -   180,   285,   180,   180,   180,   327,   286,   220,   296,   316,
  -   221,   176,   280,   273,   180,   100,   100,   100,   100,   100,
  +   111,    78,    99,   182,   228,    80,    92,   183,   199,    83,
  +   232,   179,   109,   101,   102,   295,   196,   139,   205,   106,
  +   212,   117,   291,   197,   112,   113,   155,   221,   115,   116,
  +   222,   237,   189,   190,   129,   130,   131,   132,   202,   293,
  +   156,   157,   316,   203,   296,   243,   244,   245,   300,   182,
  +   189,   190,   336,   100,   100,   261,   220,   262,   103,   100,
  +   193,   180,    81,    93,   100,   100,    89,   333,   100,   100,
  +   177,   267,   319,   187,   100,   100,   100,   100,   180,   125,
  +   343,   194,    95,   197,   191,   180,    96,   180,    82,    94,
  +   184,   200,   110,   207,   181,   209,   219,   210,   211,   198,
  +   284,   206,   191,   213,   114,   163,   164,   337,   105,   192,
  +   265,   107,   178,     1,     2,     3,     4,     5,   108,   165,
  +   166,   202,     8,   186,   233,    84,   269,   235,   140,   141,
  +    16,   158,   159,   142,   143,   144,   145,   146,   147,   148,
  +   149,   150,   151,   152,   133,   133,   140,   141,   134,   137,
  +   215,   216,   135,   138,   173,   238,   239,   240,   167,   168,
  +    26,   273,   311,    96,   312,   275,   274,   313,    85,   153,
  +   180,    30,    31,   174,    86,   175,    33,   246,   247,   248,
  +   249,   250,   251,   277,   278,   279,   328,   286,   180,   180,
  +   180,   176,   287,   281,   194,   100,   100,   100,   100,   100,
      100,   100,   100,   100,   100,   100,   100,   100,   100,   100,
  -   100,   100,   100,   100,   100,   100,   100,   100,   194,   321,
  -   140,   141,    96,   182,   180,   142,   143,   144,   145,   146,
  -   147,   148,   149,   150,   151,   152,   328,   341,   160,   161,
  -   162,   180,   180,   251,   252,   253,   254,   242,   243,   244,
  -   214,   215,   224,   225,   293,   187,   301,   208,   303,   201,
  -   306,   153,   287,   180,   228,   302,   288,   180,   180,   344,
  -   -27,   298,   -28,   222,   233,   235,   180,   240,   241,   262,
  -   313,   215,   187,   270,   275,   279,   265,   300,   304,   289,
  -   307,   314,   320,   317,   308,   322,   326,   330,   331,   343,
  -   345,   348,   333,   339,   329,   353,   357,   187,   358,    87,
  -   340,   282,   334,   284,   255,    88,   256,   259,   257,   352,
  -   187,   258,   263,   347,   267,   349,   350,   350,   291,   346,
  -   354,   269,     0,   355,   355,    97,   338,     1,     2,     3,
  -     4,     5,     0,     0,   281,     0,     8,     0,     0,    84,
  -     0,    13,    14,     0,    16,     0,     0,     0,     0,     0,
  -    19,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  -     0,     0,     0,     0,     0,     0,    24,    25,     0,     0,
  -     0,     0,     0,     0,    26,     0,     0,     0,     0,     0,
  -     0,     0,    85,    28,    29,    30,    31,     0,    86,     0,
  -    33,     0,     0,     0,     0,    34,    35,    36,    37,     0,
  -     0,     1,     2,     3,   118,   119,     6,     0,    98,     7,
  -     8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
  -    18,     0,     0,     0,    19,    20,    21,     0,    22,    23,
  -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  -    24,    25,     0,     0,     0,     0,     0,     0,    26,     0,
  -     0,     0,     0,     0,     0,     0,   120,    28,    29,    30,
  -    31,     0,    32,   121,    33,     0,     0,     0,     0,    34,
  -    35,    36,    37,     0,     0,     1,     2,     3,     4,     5,
  -     6,     0,    38,     7,     8,     9,    10,    11,    12,    13,
  -    14,    15,    16,    17,    18,     0,     0,     0,    19,    20,
  -    21,     0,    22,    23,     0,     0,     0,     0,     0,     0,
  -     0,     0,     0,     0,    24,    25,     0,     0,     0,     0,
  -     0,     0,    26,     0,     0,     0,     0,     0,     0,     0,
  -    27,    28,    29,    30,    31,     0,    32,   213,    33,     0,
  -     0,     0,     0,    34,    35,    36,    37,     0,     0,     1,
  -     2,     3,     4,     5,     6,     0,    38,     7,     8,     9,
  -    10,    11,    12,    13,    14,    15,    16,    17,    18,     0,
  -     0,     0,    19,    20,    21,     0,    22,    23,     0,     0,
  -     0,     0,     0,     0,     0,     0,     0,     0,    24,    25,
  -     0,     0,     0,     0,     0,     0,    26,     0,     0,     0,
  -     0,     0,     0,     0,    27,    28,    29,    30,    31,     0,
  -    32,   223,    33,     0,     0,     0,     0,    34,    35,    36,
  -    37,     0,     0,     1,     2,     3,     4,     5,     6,     0,
  -    38,     7,     8,     9,    10,    11,    12,    13,    14,    15,
  -    16,    17,    18,     0,     0,     0,    19,    20,    21,     0,
  -    22,    23,     0,     0,     0,     0,     0,     0,     0,     0,
  -     0,     0,    24,    25,     0,     0,     0,     0,     0,     0,
  -    26,     0,     0,     0,     0,     0,     0,     0,    27,    28,
  -    29,    30,    31,     0,    32,   297,    33,     0,     0,     0,
  -     0,    34,    35,    36,    37,     0,     0,     1,     2,     3,
  -     4,     5,     6,     0,    38,     7,     8,     9,    10,    11,
  -    12,    13,    14,    15,    16,    17,    18,     0,     0,     0,
  -    19,    20,    21,     0,    22,    23,     0,     0,     0,     0,
  -     0,     0,     0,     0,     0,     0,    24,    25,     0,     0,
  -     0,     0,     0,     0,    26,     0,     0,     0,     0,     0,
  -     0,     0,    27,    28,    29,    30,    31,     0,    32,   319,
  -    33,     0,     0,     0,     0,    34,    35,    36,    37,     0,
  -     0,     1,     2,     3,     4,     5,     6,     0,    38,     7,
  -     8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
  -    18,     0,     0,     0,    19,    20,    21,     0,    22,    23,
  -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  -    24,    25,     0,     0,     0,     0,     0,     0,    26,     0,
  -     0,     0,     0,     0,     0,     0,    27,    28,    29,    30,
  -    31,     0,    32,     0,    33,     0,     0,     0,     0,    34,
  -    35,    36,    37,     0,     0,     1,     2,     3,     4,     5,
  -     6,     0,    38,     7,     8,     9,    10,    84,    12,    13,
  -    14,    15,    16,    17,    18,     0,     0,     0,    19,    20,
  -    21,     0,    22,    23,     0,     0,     0,     0,     0,     0,
  -     0,     0,     0,     0,    24,    25,     0,     0,     0,     0,
  -     0,     0,    26,     0,     0,     0,     0,     0,     0,     0,
  -    27,    28,    29,    30,    31,     0,    32,     0,    33,     0,
  -     0,     0,     0,    34,    35,    36,    37,     0,     0,     0,
  -     0,     0,     0,     0,  -126,     0,    38,  -126,  -126,  -126,
  -  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,
  -  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,     0,     0,
  -  -126,  -126,  -126,     0,  -126,  -126,     1,     2,     3,     4,
  -     5,     0,     0,     0,     0,     8,   185,     0,    84,     0,
  -    13,    14,     0,    16,     0,     0,     0,     0,     0,    19,
  -     0,     0,  -126,  -126,  -126,     0,     0,     0,  -126,  -126,
  -     0,     0,     0,     0,     0,    24,    25,  -126,  -126,     0,
  -     0,     0,     0,    26,     0,     0,     0,     0,     0,     0,
  -     0,    85,    28,    29,    30,    31,     0,    86,     0,    33,
  -     0,     0,     0,     0,    34,    35,    36,    37,     1,     2,
  +   100,   100,   100,   100,   100,   100,   100,   100,   297,   208,
  +   317,   140,   141,   274,   182,   180,   142,   143,   144,   145,
  +   146,   147,   148,   149,   150,   151,   152,   322,   329,   342,
  +   225,   226,   180,   180,   180,   169,   170,   171,   172,   252,
  +   253,   254,   255,   288,   180,   294,   187,   302,   201,   304,
  +   -27,   307,   153,   160,   161,   162,   303,   289,   180,   180,
  +   345,   -28,   299,   241,   242,   223,   229,   180,   234,   236,
  +   263,   314,   266,   187,   216,   290,   276,   271,   280,   301,
  +   308,   305,   315,   321,   309,   323,   318,   327,   331,   332,
  +   344,   349,   346,   334,   340,   330,   354,   358,   187,   359,
  +   285,   341,   283,   335,    87,   256,    88,   257,   260,   258,
  +   353,   187,   259,   264,   348,   268,   350,   351,   351,   292,
  +   347,   355,   270,   282,   356,   356,    97,   339,     1,     2,
        3,     4,     5,     0,     0,     0,     0,     8,     0,     0,
       84,     0,    13,    14,     0,    16,     0,     0,     0,     0,
        0,    19,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,    24,    25,     0,
        0,     0,     0,     0,     0,    26,     0,     0,     0,     0,
        0,     0,     0,    85,    28,    29,    30,    31,     0,    86,
  -     0,    33,   226,     0,     0,     0,    34,    35,    36,    37,
  -     1,     2,     3,     4,     5,     0,     0,     0,     0,     8,
  -     0,     0,    84,     0,    13,    14,     0,    16,     0,     0,
  -     0,     0,     0,    19,     0,     0,     0,     0,     0,     0,
  +     0,    33,     0,     0,     0,     0,    34,    35,    36,    37,
  +     0,     0,     1,     2,     3,   118,   119,     6,     0,    98,
  +     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
  +    17,    18,     0,     0,     0,    19,    20,    21,     0,    22,
  +    23,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  +     0,    24,    25,     0,     0,     0,     0,     0,     0,    26,
  +     0,     0,     0,     0,     0,     0,     0,   120,    28,    29,
  +    30,    31,     0,    32,   121,    33,     0,     0,     0,     0,
  +    34,    35,    36,    37,     0,     0,     1,     2,     3,     4,
  +     5,     6,     0,    38,     7,     8,     9,    10,    11,    12,
  +    13,    14,    15,    16,    17,    18,     0,     0,     0,    19,
  +    20,    21,     0,    22,    23,     0,     0,     0,     0,     0,
  +     0,     0,     0,     0,     0,    24,    25,     0,     0,     0,
  +     0,     0,     0,    26,     0,     0,     0,     0,     0,     0,
  +     0,    27,    28,    29,    30,    31,     0,    32,   214,    33,
  +     0,     0,     0,     0,    34,    35,    36,    37,     0,     0,
  +     1,     2,     3,     4,     5,     6,     0,    38,     7,     8,
  +     9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
  +     0,     0,     0,    19,    20,    21,     0,    22,    23,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    24,
       25,     0,     0,     0,     0,     0,     0,    26,     0,     0,
  -     0,     0,     0,     0,     0,    85,    28,    29,    30,    31,
  -   229,    86,     0,    33,     0,     0,     0,     0,    34,    35,
  -    36,    37,     1,     2,     3,     4,     5,     0,     0,     0,
  -     0,     8,     0,     0,    84,     0,    13,    14,     0,    16,
  -     0,     0,     0,     0,     0,    19,     0,     0,     0,     0,
  -     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  +     0,     0,     0,     0,     0,    27,    28,    29,    30,    31,
  +     0,    32,   224,    33,     0,     0,     0,     0,    34,    35,
  +    36,    37,     0,     0,     1,     2,     3,     4,     5,     6,
  +     0,    38,     7,     8,     9,    10,    11,    12,    13,    14,
  +    15,    16,    17,    18,     0,     0,     0,    19,    20,    21,
  +     0,    22,    23,     0,     0,     0,     0,     0,     0,     0,
  +     0,     0,     0,    24,    25,     0,     0,     0,     0,     0,
  +     0,    26,     0,     0,     0,     0,     0,     0,     0,    27,
  +    28,    29,    30,    31,     0,    32,   298,    33,     0,     0,
  +     0,     0,    34,    35,    36,    37,     0,     0,     1,     2,
  +     3,     4,     5,     6,     0,    38,     7,     8,     9,    10,
  +    11,    12,    13,    14,    15,    16,    17,    18,     0,     0,
  +     0,    19,    20,    21,     0,    22,    23,     0,     0,     0,
  +     0,     0,     0,     0,     0,     0,     0,    24,    25,     0,
  +     0,     0,     0,     0,     0,    26,     0,     0,     0,     0,
  +     0,     0,     0,    27,    28,    29,    30,    31,     0,    32,
  +   320,    33,     0,     0,     0,     0,    34,    35,    36,    37,
  +     0,     0,     1,     2,     3,     4,     5,     6,     0,    38,
  +     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
  +    17,    18,     0,     0,     0,    19,    20,    21,     0,    22,
  +    23,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    24,    25,     0,     0,     0,     0,     0,     0,    26,
  -     0,     0,     0,     0,     0,     0,     0,    85,    28,    29,
  -    30,    31,     0,    86,     0,    33,   309,     0,     0,     0,
  -    34,    35,    36,    37,     1,     2,     3,     4,     5,     0,
  -     0,     0,     0,     8,     0,     0,    84,     0,    13,    14,
  -     0,    16,     0,     0,     0,     0,     0,    19,     0,     0,
  +     0,     0,     0,     0,     0,     0,     0,    27,    28,    29,
  +    30,    31,     0,    32,     0,    33,     0,     0,     0,     0,
  +    34,    35,    36,    37,     0,     0,     1,     2,     3,     4,
  +     5,     6,     0,    38,     7,     8,     9,    10,    84,    12,
  +    13,    14,    15,    16,    17,    18,     0,     0,     0,    19,
  +    20,    21,     0,    22,    23,     0,     0,     0,     0,     0,
  +     0,     0,     0,     0,     0,    24,    25,     0,     0,     0,
  +     0,     0,     0,    26,     0,     0,     0,     0,     0,     0,
  +     0,    27,    28,    29,    30,    31,     0,    32,     0,    33,
  +     0,     0,     0,     0,    34,    35,    36,    37,     0,     0,
  +     0,     0,     0,     0,     0,  -126,     0,    38,  -126,  -126,
  +  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,
  +  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,     0,
  +     0,  -126,  -126,  -126,     0,  -126,  -126,     1,     2,     3,
  +     4,     5,     0,     0,     0,     0,     8,   185,     0,    84,
  +     0,    13,    14,     0,    16,     0,     0,     0,     0,     0,
  +    19,     0,     0,  -126,  -126,  -126,     0,     0,     0,  -126,
  +  -126,     0,     0,     0,     0,     0,    24,    25,  -126,  -126,
  +     0,     0,     0,     0,    26,     0,     0,     0,     0,     0,
  +     0,     0,    85,    28,    29,    30,    31,     0,    86,     0,
  +    33,     0,     0,     0,     0,    34,    35,    36,    37,     1,
  +     2,     3,     4,     5,     0,     0,     0,     0,     8,     0,
  +     0,    84,     0,    13,    14,     0,    16,     0,     0,     0,
  +     0,     0,    19,     0,     0,     0,     0,     0,     0,     0,
  +     0,     0,     0,     0,     0,     0,     0,     0,    24,    25,
  +     0,     0,     0,     0,     0,     0,    26,     0,     0,     0,
  +     0,     0,     0,     0,    85,    28,    29,    30,    31,     0,
  +    86,     0,    33,   227,     0,     0,     0,    34,    35,    36,
  +    37,     1,     2,     3,     4,     5,     0,     0,     0,     0,
  +     8,     0,     0,    84,     0,    13,    14,     0,    16,     0,
  +     0,     0,     0,     0,    19,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  -     0,     0,     0,    24,    25,     0,     0,     0,     0,     0,
  -     0,    26,     0,     0,     0,     0,     0,     0,     0,    85,
  -    28,    29,    30,    31,     0,    86,     0,    33,     0,     0,
  -     0,     0,    34,    35,    36,    37
  +    24,    25,     0,     0,     0,     0,     0,     0,    26,     0,
  +     0,     0,     0,     0,     0,     0,    85,    28,    29,    30,
  +    31,   230,    86,     0,    33,     0,     0,     0,     0,    34,
  +    35,    36,    37,     1,     2,     3,     4,     5,     0,     0,
  +     0,     0,     8,     0,     0,    84,     0,    13,    14,     0,
  +    16,     0,     0,     0,     0,     0,    19,     0,     0,     0,
  +     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  +     0,     0,    24,    25,     0,     0,     0,     0,     0,     0,
  +    26,     0,     0,     0,     0,     0,     0,     0,    85,    28,
  +    29,    30,    31,     0,    86,     0,    33,   310,     0,     0,
  +     0,    34,    35,    36,    37,     1,     2,     3,     4,     5,
  +     0,     0,     0,     0,     8,     0,     0,    84,     0,    13,
  +    14,     0,    16,     0,     0,     0,     0,     0,    19,     0,
  +     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  +     0,     0,     0,     0,    24,    25,     0,     0,     0,     0,
  +     0,     0,    26,     0,     0,     0,     0,     0,     0,     0,
  +    85,    28,    29,    30,    31,     0,    86,     0,    33,     0,
  +     0,     0,     0,    34,    35,    36,    37
   };
   
   static const short yycheck[] = {    17,
  -    23,     0,    12,    78,   127,     1,     1,     1,     1,    44,
  -   133,     1,    22,    13,    14,   265,    40,     1,     1,    19,
  -    24,    31,    68,    68,    24,    25,    58,    58,    28,    29,
  -    62,   154,    10,    62,    34,    35,    36,    37,    84,    84,
  -     6,     7,   292,    64,   268,    62,    61,    69,   272,   124,
  -     6,     7,    87,    13,    14,   178,    62,   180,    82,    19,
  -    75,    76,    58,    58,    24,    25,    68,   317,    28,    29,
  -    62,   194,   296,    83,    34,    35,    36,    37,    68,    83,
  -   330,    58,    71,    72,    68,    68,    63,    65,    84,    84,
  -    84,    84,    58,   103,    84,   105,   114,   107,   108,   222,
  -    84,    84,    58,    62,    62,    24,    25,    66,    66,    65,
  -    24,    70,    70,     3,     4,     5,     6,     7,    62,    38,
  -    39,    63,    12,    83,   134,    15,    68,   137,    42,    43,
  -    20,    42,    43,    47,    48,    49,    50,    51,    52,    53,
  -    54,    55,    56,    57,   163,   164,   165,   166,   167,   168,
  -    79,    34,    35,    36,    37,   155,   156,   157,    77,    78,
  -    50,   284,    58,   286,    80,    63,   289,    63,    58,    83,
  -    68,    61,    62,    81,    64,    63,    66,    63,    63,    63,
  -    68,    63,    68,    68,    68,   308,    68,    65,    63,    63,
  -    68,    41,   215,    68,    68,   155,   156,   157,   158,   159,
  +    23,     0,    12,    78,   127,     1,     1,     1,     1,    62,
  +   133,     1,    22,    13,    14,   266,     1,    44,     1,    19,
  +     1,    31,    24,    68,    24,    25,    61,    65,    28,    29,
  +    68,   154,     6,     7,    34,    35,    36,    37,    58,    84,
  +    75,    76,   293,    63,   269,   160,   161,   162,   273,   124,
  +     6,     7,    10,    13,    14,   178,    63,   180,    62,    19,
  +    87,    68,    58,    58,    24,    25,    58,   318,    28,    29,
  +    40,   194,   297,    83,    34,    35,    36,    37,    68,    68,
  +   331,    83,    58,    68,    58,    68,    62,    68,    84,    84,
  +    84,    84,    64,   103,    84,   105,   114,   107,   108,    84,
  +   223,    84,    58,    84,    69,    24,    25,    65,    62,    65,
  +    24,    62,    82,     3,     4,     5,     6,     7,    62,    38,
  +    39,    58,    12,    83,   134,    15,    63,   137,    42,    43,
  +    20,    71,    72,    47,    48,    49,    50,    51,    52,    53,
  +    54,    55,    56,    57,    62,    62,    42,    43,    66,    66,
  +    32,    33,    70,    70,    79,   155,   156,   157,    77,    78,
  +    50,    63,   285,    62,   287,    63,    68,   290,    58,    83,
  +    68,    61,    62,    80,    64,    81,    66,   163,   164,   165,
  +   166,   167,   168,    63,    63,    63,   309,    63,    68,    68,
  +    68,    41,    68,   216,    83,   155,   156,   157,   158,   159,
      160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
  -   170,   171,   172,   173,   174,   175,   176,   177,    83,    63,
  -    42,    43,    62,   298,    68,    47,    48,    49,    50,    51,
  -    52,    53,    54,    55,    56,    57,    63,    63,    44,    45,
  -    46,    68,    68,   169,   170,   171,   172,   160,   161,   162,
  -    32,    33,    67,    68,   264,   265,   274,    22,   276,    62,
  -   278,    83,    67,    68,    68,   275,    67,    68,    68,    69,
  -    69,   270,    69,    69,    58,    58,    68,   158,   159,    58,
  -   290,    33,   292,    64,    62,    62,    84,    58,    64,    69,
  -    58,    24,    23,    84,    69,     9,    63,    84,   316,    63,
  -    69,    63,   320,   326,   314,    65,     0,   317,     0,     8,
  -   328,   221,   322,   225,   173,     8,   174,   177,   175,   345,
  -   330,   176,   185,   341,   197,   343,   344,   345,   262,   337,
  -   348,   201,    -1,   351,   352,     1,   324,     3,     4,     5,
  -     6,     7,    -1,    -1,   216,    -1,    12,    -1,    -1,    15,
  -    -1,    17,    18,    -1,    20,    -1,    -1,    -1,    -1,    -1,
  -    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  -    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,
  -    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
  -    -1,    -1,    58,    59,    60,    61,    62,    -1,    64,    -1,
  -    66,    -1,    -1,    -1,    -1,    71,    72,    73,    74,    -1,
  -    -1,     3,     4,     5,     6,     7,     8,    -1,    84,    11,
  -    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
  -    22,    -1,    -1,    -1,    26,    27,    28,    -1,    30,    31,
  -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  -    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
  -    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,
  -    62,    -1,    64,    65,    66,    -1,    -1,    -1,    -1,    71,
  -    72,    73,    74,    -1,    -1,     3,     4,     5,     6,     7,
  -     8,    -1,    84,    11,    12,    13,    14,    15,    16,    17,
  -    18,    19,    20,    21,    22,    -1,    -1,    -1,    26,    27,
  -    28,    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,
  -    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,
  -    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  -    58,    59,    60,    61,    62,    -1,    64,    65,    66,    -1,
  -    -1,    -1,    -1,    71,    72,    73,    74,    -1,    -1,     3,
  -     4,     5,     6,     7,     8,    -1,    84,    11,    12,    13,
  -    14,    15,    16,    17,    18,    19,    20,    21,    22,    -1,
  -    -1,    -1,    26,    27,    28,    -1,    30,    31,    -1,    -1,
  -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,
  -    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,
  -    -1,    -1,    -1,    -1,    58,    59,    60,    61,    62,    -1,
  -    64,    65,    66,    -1,    -1,    -1,    -1,    71,    72,    73,
  -    74,    -1,    -1,     3,     4,     5,     6,     7,     8,    -1,
  -    84,    11,    12,    13,    14,    15,    16,    17,    18,    19,
  -    20,    21,    22,    -1,    -1,    -1,    26,    27,    28,    -1,
  -    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  -    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,
  -    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,
  -    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,    -1,
  -    -1,    71,    72,    73,    74,    -1,    -1,     3,     4,     5,
  -     6,     7,     8,    -1,    84,    11,    12,    13,    14,    15,
  -    16,    17,    18,    19,    20,    21,    22,    -1,    -1,    -1,
  -    26,    27,    28,    -1,    30,    31,    -1,    -1,    -1,    -1,
  -    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,
  -    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
  -    -1,    -1,    58,    59,    60,    61,    62,    -1,    64,    65,
  -    66,    -1,    -1,    -1,    -1,    71,    72,    73,    74,    -1,
  -    -1,     3,     4,     5,     6,     7,     8,    -1,    84,    11,
  -    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
  -    22,    -1,    -1,    -1,    26,    27,    28,    -1,    30,    31,
  -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  -    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
  -    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,
  -    62,    -1,    64,    -1,    66,    -1,    -1,    -1,    -1,    71,
  -    72,    73,    74,    -1,    -1,     3,     4,     5,     6,     7,
  -     8,    -1,    84,    11,    12,    13,    14,    15,    16,    17,
  -    18,    19,    20,    21,    22,    -1,    -1,    -1,    26,    27,
  -    28,    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,
  -    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,
  -    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  -    58,    59,    60,    61,    62,    -1,    64,    -1,    66,    -1,
  -    -1,    -1,    -1,    71,    72,    73,    74,    -1,    -1,    -1,
  -    -1,    -1,    -1,    -1,     0,    -1,    84,     3,     4,     5,
  -     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
  -    16,    17,    18,    19,    20,    21,    22,    23,    -1,    -1,
  -    26,    27,    28,    -1,    30,    31,     3,     4,     5,     6,
  -     7,    -1,    -1,    -1,    -1,    12,    13,    -1,    15,    -1,
  -    17,    18,    -1,    20,    -1,    -1,    -1,    -1,    -1,    26,
  -    -1,    -1,    58,    59,    60,    -1,    -1,    -1,    64,    65,
  -    -1,    -1,    -1,    -1,    -1,    42,    43,    73,    74,    -1,
  -    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,
  -    -1,    58,    59,    60,    61,    62,    -1,    64,    -1,    66,
  -    -1,    -1,    -1,    -1,    71,    72,    73,    74,     3,     4,
  +   170,   171,   172,   173,   174,   175,   176,   177,    63,    22,
  +    63,    42,    43,    68,   299,    68,    47,    48,    49,    50,
  +    51,    52,    53,    54,    55,    56,    57,    63,    63,    63,
  +    67,    68,    68,    68,    68,    34,    35,    36,    37,   169,
  +   170,   171,   172,    67,    68,   265,   266,   275,    62,   277,
  +    69,   279,    83,    44,    45,    46,   276,    67,    68,    68,
  +    69,    69,   271,   158,   159,    69,    68,    68,    58,    58,
  +    58,   291,    84,   293,    33,    69,    62,    64,    62,    58,
  +    58,    64,    24,    23,    69,     9,    84,    63,    84,   317,
  +    63,    63,    69,   321,   327,   315,    65,     0,   318,     0,
  +   226,   329,   222,   323,     8,   173,     8,   174,   177,   175,
  +   346,   331,   176,   185,   342,   197,   344,   345,   346,   263,
  +   338,   349,   201,   217,   352,   353,     1,   325,     3,     4,
        5,     6,     7,    -1,    -1,    -1,    -1,    12,    -1,    -1,
       15,    -1,    17,    18,    -1,    20,    -1,    -1,    -1,    -1,
       -1,    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,
       -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    58,    59,    60,    61,    62,    -1,    64,
  -    -1,    66,    67,    -1,    -1,    -1,    71,    72,    73,    74,
  -     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,
  -    -1,    -1,    15,    -1,    17,    18,    -1,    20,    -1,    -1,
  -    -1,    -1,    -1,    26,    -1,    -1,    -1,    -1,    -1,    -1,
  +    -1,    66,    -1,    -1,    -1,    -1,    71,    72,    73,    74,
  +    -1,    -1,     3,     4,     5,     6,     7,     8,    -1,    84,
  +    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
  +    21,    22,    -1,    -1,    -1,    26,    27,    28,    -1,    30,
  +    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  +    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    50,
  +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,
  +    61,    62,    -1,    64,    65,    66,    -1,    -1,    -1,    -1,
  +    71,    72,    73,    74,    -1,    -1,     3,     4,     5,     6,
  +     7,     8,    -1,    84,    11,    12,    13,    14,    15,    16,
  +    17,    18,    19,    20,    21,    22,    -1,    -1,    -1,    26,
  +    27,    28,    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,
  +    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,
  +    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,
  +    -1,    58,    59,    60,    61,    62,    -1,    64,    65,    66,
  +    -1,    -1,    -1,    -1,    71,    72,    73,    74,    -1,    -1,
  +     3,     4,     5,     6,     7,     8,    -1,    84,    11,    12,
  +    13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
  +    -1,    -1,    -1,    26,    27,    28,    -1,    30,    31,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
       43,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,    62,
  -    63,    64,    -1,    66,    -1,    -1,    -1,    -1,    71,    72,
  -    73,    74,     3,     4,     5,     6,     7,    -1,    -1,    -1,
  -    -1,    12,    -1,    -1,    15,    -1,    17,    18,    -1,    20,
  -    -1,    -1,    -1,    -1,    -1,    26,    -1,    -1,    -1,    -1,
  -    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  +    -1,    64,    65,    66,    -1,    -1,    -1,    -1,    71,    72,
  +    73,    74,    -1,    -1,     3,     4,     5,     6,     7,     8,
  +    -1,    84,    11,    12,    13,    14,    15,    16,    17,    18,
  +    19,    20,    21,    22,    -1,    -1,    -1,    26,    27,    28,
  +    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  +    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,
  +    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,
  +    59,    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,
  +    -1,    -1,    71,    72,    73,    74,    -1,    -1,     3,     4,
  +     5,     6,     7,     8,    -1,    84,    11,    12,    13,    14,
  +    15,    16,    17,    18,    19,    20,    21,    22,    -1,    -1,
  +    -1,    26,    27,    28,    -1,    30,    31,    -1,    -1,    -1,
  +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,
  +    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,
  +    -1,    -1,    -1,    58,    59,    60,    61,    62,    -1,    64,
  +    65,    66,    -1,    -1,    -1,    -1,    71,    72,    73,    74,
  +    -1,    -1,     3,     4,     5,     6,     7,     8,    -1,    84,
  +    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
  +    21,    22,    -1,    -1,    -1,    26,    27,    28,    -1,    30,
  +    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    50,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,
  -    61,    62,    -1,    64,    -1,    66,    67,    -1,    -1,    -1,
  -    71,    72,    73,    74,     3,     4,     5,     6,     7,    -1,
  -    -1,    -1,    -1,    12,    -1,    -1,    15,    -1,    17,    18,
  -    -1,    20,    -1,    -1,    -1,    -1,    -1,    26,    -1,    -1,
  +    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,    -1,
  +    71,    72,    73,    74,    -1,    -1,     3,     4,     5,     6,
  +     7,     8,    -1,    84,    11,    12,    13,    14,    15,    16,
  +    17,    18,    19,    20,    21,    22,    -1,    -1,    -1,    26,
  +    27,    28,    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,
  +    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,
  +    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,
  +    -1,    58,    59,    60,    61,    62,    -1,    64,    -1,    66,
  +    -1,    -1,    -1,    -1,    71,    72,    73,    74,    -1,    -1,
  +    -1,    -1,    -1,    -1,    -1,     0,    -1,    84,     3,     4,
  +     5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
  +    15,    16,    17,    18,    19,    20,    21,    22,    23,    -1,
  +    -1,    26,    27,    28,    -1,    30,    31,     3,     4,     5,
  +     6,     7,    -1,    -1,    -1,    -1,    12,    13,    -1,    15,
  +    -1,    17,    18,    -1,    20,    -1,    -1,    -1,    -1,    -1,
  +    26,    -1,    -1,    58,    59,    60,    -1,    -1,    -1,    64,
  +    65,    -1,    -1,    -1,    -1,    -1,    42,    43,    73,    74,
  +    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
  +    -1,    -1,    58,    59,    60,    61,    62,    -1,    64,    -1,
  +    66,    -1,    -1,    -1,    -1,    71,    72,    73,    74,     3,
  +     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,    -1,
  +    -1,    15,    -1,    17,    18,    -1,    20,    -1,    -1,    -1,
  +    -1,    -1,    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,
  +    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,
  +    -1,    -1,    -1,    -1,    58,    59,    60,    61,    62,    -1,
  +    64,    -1,    66,    67,    -1,    -1,    -1,    71,    72,    73,
  +    74,     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
  +    12,    -1,    -1,    15,    -1,    17,    18,    -1,    20,    -1,
  +    -1,    -1,    -1,    -1,    26,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  -    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,
  -    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,
  -    59,    60,    61,    62,    -1,    64,    -1,    66,    -1,    -1,
  -    -1,    -1,    71,    72,    73,    74
  +    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
  +    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,
  +    62,    63,    64,    -1,    66,    -1,    -1,    -1,    -1,    71,
  +    72,    73,    74,     3,     4,     5,     6,     7,    -1,    -1,
  +    -1,    -1,    12,    -1,    -1,    15,    -1,    17,    18,    -1,
  +    20,    -1,    -1,    -1,    -1,    -1,    26,    -1,    -1,    -1,
  +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  +    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,
  +    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,
  +    60,    61,    62,    -1,    64,    -1,    66,    67,    -1,    -1,
  +    -1,    71,    72,    73,    74,     3,     4,     5,     6,     7,
  +    -1,    -1,    -1,    -1,    12,    -1,    -1,    15,    -1,    17,
  +    18,    -1,    20,    -1,    -1,    -1,    -1,    -1,    26,    -1,
  +    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  +    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,
  +    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  +    58,    59,    60,    61,    62,    -1,    64,    -1,    66,    -1,
  +    -1,    -1,    -1,    71,    72,    73,    74
   };
   /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
   #line 3 "/usr/share/bison.simple"
  @@ -1808,7 +1808,7 @@
   case 152:
   #line 488 "grammar.y"
   { if (automatic()) {
  -                                       yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[0]);
  +                                       yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[-1]);
                                        } else
   				       YYABORT; ;
       break;}
  @@ -1859,13 +1859,13 @@
       break;}
   case 161:
   #line 519 "grammar.y"
  -{ yyval.stat = new ReturnNode(yyvsp[-1].node); ;
  +{ yyval.stat = new ReturnNode(yyvsp[-1].node); DBG(yyval.stat,yylsp[-2],yylsp[0]); ;
       break;}
   case 162:
   #line 520 "grammar.y"
  -{ if (automatic())
  -                                       yyval.stat = new ReturnNode(yyvsp[-1].node);
  -                                     else
  +{ if (automatic()) {
  +                                       yyval.stat = new ReturnNode(yyvsp[-1].node); DBG(yyval.stat,yylsp[-2],yylsp[-1]);
  +                                     } else
   				       YYABORT; ;
       break;}
   case 163:
  @@ -1921,86 +1921,90 @@
       break;}
   case 176:
   #line 568 "grammar.y"
  -{ yyval.stat = new ThrowNode(yyvsp[-1].node); ;
  +{ yyval.stat = new ThrowNode(yyvsp[-1].node); DBG(yyval.stat,yylsp[-2],yylsp[0]); ;
       break;}
   case 177:
  -#line 572 "grammar.y"
  -{ yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].cnode); ;
  +#line 569 "grammar.y"
  +{ if (automatic()) { yyval.stat = new ThrowNode(yyvsp[-1].node); DBG(yyval.stat,yylsp[-2],yylsp[-1]); } else YYABORT; ;
       break;}
   case 178:
   #line 573 "grammar.y"
  -{ yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].fnode); ;
  +{ yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].cnode); DBG(yyval.stat,yylsp[-2],yylsp[-1]); ;
       break;}
   case 179:
   #line 574 "grammar.y"
  -{ yyval.stat = new TryNode(yyvsp[-2].stat, yyvsp[-1].cnode, yyvsp[0].fnode); ;
  +{ yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].fnode); DBG(yyval.stat,yylsp[-2],yylsp[-1]); ;
       break;}
   case 180:
  -#line 578 "grammar.y"
  -{ yyval.cnode = new CatchNode(*yyvsp[-2].ident, yyvsp[0].stat); ;
  +#line 575 "grammar.y"
  +{ yyval.stat = new TryNode(yyvsp[-2].stat, yyvsp[-1].cnode, yyvsp[0].fnode); DBG(yyval.stat,yylsp[-3],yylsp[-2]); ;
       break;}
   case 181:
  -#line 582 "grammar.y"
  -{ yyval.fnode = new FinallyNode(yyvsp[0].stat); ;
  +#line 579 "grammar.y"
  +{ yyval.cnode = new CatchNode(*yyvsp[-2].ident, yyvsp[0].stat); ;
       break;}
   case 182:
  -#line 586 "grammar.y"
  -{ yyval.func = new FuncDeclNode(*yyvsp[-3].ident, yyvsp[0].body); ;
  +#line 583 "grammar.y"
  +{ yyval.fnode = new FinallyNode(yyvsp[0].stat); ;
       break;}
   case 183:
  -#line 588 "grammar.y"
  -{ yyval.func = new FuncDeclNode(*yyvsp[-4].ident, yyvsp[-2].param, yyvsp[0].body); ;
  +#line 587 "grammar.y"
  +{ yyval.func = new FuncDeclNode(*yyvsp[-3].ident, yyvsp[0].body); ;
       break;}
   case 184:
  -#line 591 "grammar.y"
  -{ yyval.node = new FuncExprNode(yyvsp[0].body); ;
  +#line 589 "grammar.y"
  +{ yyval.func = new FuncDeclNode(*yyvsp[-4].ident, yyvsp[-2].param, yyvsp[0].body); ;
       break;}
   case 185:
  -#line 593 "grammar.y"
  -{ yyval.node = new FuncExprNode(yyvsp[-2].param, yyvsp[0].body); ;
  +#line 592 "grammar.y"
  +{ yyval.node = new FuncExprNode(yyvsp[0].body); ;
       break;}
   case 186:
  -#line 598 "grammar.y"
  -{ yyval.param = new ParameterNode(*yyvsp[0].ident); ;
  +#line 594 "grammar.y"
  +{ yyval.node = new FuncExprNode(yyvsp[-2].param, yyvsp[0].body); ;
       break;}
   case 187:
   #line 599 "grammar.y"
  -{ yyval.param = new ParameterNode(yyvsp[-2].param, *yyvsp[0].ident); ;
  +{ yyval.param = new ParameterNode(*yyvsp[0].ident); ;
       break;}
   case 188:
  -#line 603 "grammar.y"
  +#line 600 "grammar.y"
  +{ yyval.param = new ParameterNode(yyvsp[-2].param, *yyvsp[0].ident); ;
  +    break;}
  +case 189:
  +#line 604 "grammar.y"
   { yyval.body = new FunctionBodyNode(0);
   	                             DBG(yyval.body, yylsp[-1], yylsp[0]);;
       break;}
  -case 189:
  -#line 605 "grammar.y"
  +case 190:
  +#line 606 "grammar.y"
   { yyval.body = new FunctionBodyNode(yyvsp[-1].srcs);
   	                             DBG(yyval.body, yylsp[-2], yylsp[0]);;
       break;}
  -case 190:
  -#line 610 "grammar.y"
  +case 191:
  +#line 611 "grammar.y"
   { yyval.prog = new ProgramNode(0);
                                        Parser::progNode = yyval.prog; ;
       break;}
  -case 191:
  -#line 612 "grammar.y"
  +case 192:
  +#line 613 "grammar.y"
   { yyval.prog = new ProgramNode(yyvsp[0].srcs);
                                        Parser::progNode = yyval.prog; ;
       break;}
  -case 192:
  -#line 617 "grammar.y"
  -{ yyval.srcs = new SourceElementsNode(yyvsp[0].stat); ;
  -    break;}
   case 193:
   #line 618 "grammar.y"
  -{ yyval.srcs = new SourceElementsNode(yyvsp[-1].srcs, yyvsp[0].stat); ;
  +{ yyval.srcs = new SourceElementsNode(yyvsp[0].stat); ;
       break;}
   case 194:
  -#line 622 "grammar.y"
  -{ yyval.stat = yyvsp[0].stat; ;
  +#line 619 "grammar.y"
  +{ yyval.srcs = new SourceElementsNode(yyvsp[-1].srcs, yyvsp[0].stat); ;
       break;}
   case 195:
   #line 623 "grammar.y"
  +{ yyval.stat = yyvsp[0].stat; ;
  +    break;}
  +case 196:
  +#line 624 "grammar.y"
   { yyval.stat = yyvsp[0].func; ;
       break;}
   }
  @@ -2225,7 +2229,7 @@
       }
     return 1;
   }
  -#line 626 "grammar.y"
  +#line 627 "grammar.y"
   
   
   int yyerror (const char * /* s */)  /* Called by yyparse on error */
  
  
  
  1.17.22.1 +10 -9     JavaScriptCore/kjs/grammar.y
  
  Index: grammar.y
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/grammar.y,v
  retrieving revision 1.17
  retrieving revision 1.17.22.1
  diff -u -r1.17 -r1.17.22.1
  --- grammar.y	18 Nov 2003 05:30:37 -0000	1.17
  +++ grammar.y	2 Aug 2005 20:39:11 -0000	1.17.22.1
  @@ -486,7 +486,7 @@
   ContinueStatement:
       CONTINUE ';'                   { $$ = new ContinueNode(); DBG($$, at 1, at 2); }
     | CONTINUE error                 { if (automatic()) {
  -                                       $$ = new ContinueNode(); DBG($$, at 1, at 2);
  +                                       $$ = new ContinueNode(); DBG($$, at 1, at 1);
                                        } else
   				       YYABORT; }
     | CONTINUE IDENT ';'             { $$ = new ContinueNode(*$2); DBG($$, at 1, at 3); }
  @@ -516,10 +516,10 @@
                                          $$ = new ReturnNode(0); DBG($$, at 1, at 1);
                                        } else
   				       YYABORT; }
  -  | RETURN Expr ';'                { $$ = new ReturnNode($2); }
  -  | RETURN Expr error              { if (automatic())
  -                                       $$ = new ReturnNode($2);
  -                                     else
  +  | RETURN Expr ';'                { $$ = new ReturnNode($2); DBG($$, at 1, at 3); }
  +  | RETURN Expr error              { if (automatic()) {
  +                                       $$ = new ReturnNode($2); DBG($$, at 1, at 2);
  +                                     } else
   				       YYABORT; }
   ;
   
  @@ -565,13 +565,14 @@
   ;
   
   ThrowStatement:
  -    THROW Expr ';'                 { $$ = new ThrowNode($2); }
  +    THROW Expr ';'                 { $$ = new ThrowNode($2); DBG($$, at 1, at 3); }
  +  | THROW Expr error               { if (automatic()) { $$ = new ThrowNode($2); DBG($$, at 1, at 2); } else YYABORT; }
   ;
   
   TryStatement:
  -    TRY Block Catch                { $$ = new TryNode($2, $3); }
  -  | TRY Block Finally              { $$ = new TryNode($2, $3); }
  -  | TRY Block Catch Finally        { $$ = new TryNode($2, $3, $4); }
  +    TRY Block Catch                { $$ = new TryNode($2, $3); DBG($$, at 1, at 2); }
  +  | TRY Block Finally              { $$ = new TryNode($2, $3); DBG($$, at 1, at 2); }
  +  | TRY Block Catch Finally        { $$ = new TryNode($2, $3, $4); DBG($$, at 1, at 2); }
   ;
   
   Catch:
  
  
  
  1.53.10.3 +2 -9      JavaScriptCore/kjs/internal.cpp
  
  Index: internal.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/internal.cpp,v
  retrieving revision 1.53.10.2
  retrieving revision 1.53.10.3
  diff -u -r1.53.10.2 -r1.53.10.3
  --- internal.cpp	22 Jul 2005 03:09:32 -0000	1.53.10.2
  +++ internal.cpp	2 Aug 2005 20:39:11 -0000	1.53.10.3
  @@ -460,7 +460,7 @@
     Lexer::curr()->doneParsing();
     ProgramNode *prog = progNode;
     progNode = 0;
  -  sid = -1;
  +//  sid = -1;
   
     if (parseError || lexError) {
       int eline = Lexer::curr()->lineNo();
  @@ -804,7 +804,7 @@
   
     // notify debugger that source has been parsed
     if (dbg) {
  -    bool cont = dbg->sourceParsed(globExec,sid,code,errLine);
  +    bool cont = dbg->sourceParsed(globExec,sid,sourceURL,code,errLine);
       if (!cont)
   #if APPLE_CHANGES
         {
  @@ -867,13 +867,6 @@
     return res;
   }
   
  -void InterpreterImp::setDebugger(Debugger *d)
  -{
  -  if (d)
  -    d->detach(m_interpreter);
  -  dbg = d;
  -}
  -
   void InterpreterImp::saveBuiltins (SavedBuiltins &builtins) const
   {
     if (!builtins._internal) {
  
  
  
  1.25.10.2 +1 -1      JavaScriptCore/kjs/internal.h
  
  Index: internal.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/internal.h,v
  retrieving revision 1.25.10.1
  retrieving revision 1.25.10.2
  diff -u -r1.25.10.1 -r1.25.10.2
  --- internal.h	22 Jul 2005 03:09:32 -0000	1.25.10.1
  +++ internal.h	2 Aug 2005 20:39:11 -0000	1.25.10.2
  @@ -274,7 +274,7 @@
       bool checkSyntax(const UString &code);
       Completion evaluate(const UString &code, const Value &thisV, const UString &sourceURL, int startingLineNumber);
       Debugger *debugger() const { return dbg; }
  -    void setDebugger(Debugger *d);
  +    void setDebugger(Debugger *d) { dbg = d; }
   
       Object builtinObject() const { return b_Object; }
       Object builtinFunction() const { return b_Function; }
  
  
  
  1.24.8.1  +0 -5      JavaScriptCore/kjs/interpreter.cpp
  
  Index: interpreter.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/interpreter.cpp,v
  retrieving revision 1.24
  retrieving revision 1.24.8.1
  diff -u -r1.24 -r1.24.8.1
  --- interpreter.cpp	12 Feb 2005 00:58:13 -0000	1.24
  +++ interpreter.cpp	2 Aug 2005 20:39:11 -0000	1.24.8.1
  @@ -140,11 +140,6 @@
     return comp;
   }
   
  -InterpreterImp *Interpreter::imp()
  -{
  -  return rep;
  -}
  -
   Object Interpreter::builtinObject() const
   {
     return rep->builtinObject();
  
  
  
  1.22.8.1  +1 -1      JavaScriptCore/kjs/interpreter.h
  
  Index: interpreter.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/interpreter.h,v
  retrieving revision 1.22
  retrieving revision 1.22.8.1
  diff -u -r1.22 -r1.22.8.1
  --- interpreter.h	12 Feb 2005 00:58:13 -0000	1.22
  +++ interpreter.h	2 Aug 2005 20:39:11 -0000	1.22.8.1
  @@ -215,7 +215,7 @@
        * Returns the implementation object associated with this interpreter.
        * Only useful for internal KJS operations.
        */
  -    InterpreterImp *imp();
  +    InterpreterImp *imp() const { return rep; }
   
       /**
        * Returns the builtin "Object" object. This is the object that was set
  
  
  
  1.52.12.3 +3 -12     JavaScriptCore/kjs/nodes.cpp
  
  Index: nodes.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/nodes.cpp,v
  retrieving revision 1.52.12.2
  retrieving revision 1.52.12.3
  diff -u -r1.52.12.2 -r1.52.12.3
  --- nodes.cpp	22 Jul 2005 03:09:33 -0000	1.52.12.2
  +++ nodes.cpp	2 Aug 2005 20:39:12 -0000	1.52.12.3
  @@ -47,25 +47,16 @@
   
   using namespace KJS;
   
  -// Disabled for now because it shows up on benchmark (0.5%).
  -#if DEBUGGER_SUPPORT
  -
   #define KJS_BREAKPOINT \
  -  if (!hitStatement(exec)) \
  +  if (Debugger::debuggersPresent > 0 && !hitStatement(exec)) \
       return Completion(Normal);
   
   #define KJS_ABORTPOINT \
  -  if (exec->dynamicInterpreter()->imp()->debugger() && \
  +  if (Debugger::debuggersPresent > 0 && \
  +      exec->dynamicInterpreter()->imp()->debugger() && \
         exec->dynamicInterpreter()->imp()->debugger()->imp()->aborted()) \
       return Completion(Normal);
   
  -#else
  -
  -#define KJS_BREAKPOINT
  -#define KJS_ABORTPOINT
  -
  -#endif
  -
   #define KJS_CHECKEXCEPTION \
     if (exec->hadException()) \
       return Completion(Throw, exec->exception()); \
  
  
  



More information about the webkit-changes mailing list