Diff for /parser3/src/main/execute.C between versions 1.13 and 1.15

version 1.13, 2001/02/21 17:53:02 version 1.15, 2001/02/22 09:14:46
Line 5 Line 5
 #include "pa_array.h"   #include "pa_array.h" 
 #include "code.h"  #include "code.h"
 #include "pa_request.h"  #include "pa_request.h"
   #include "pa_vstring.h"
   
 #include <stdio.h>  #include <stdio.h>
   
   
 char *opcode_name[]={  char *opcode_name[]={
         "STRING",          "STRING",  "VSTRING",  "CODE_ARRAY",
         "CODE_ARRAY",  
         "WITH_ROOT",    "WITH_SELF",    "WITH_READ",    "WITH_WRITE",          "WITH_ROOT",    "WITH_SELF",    "WITH_READ",    "WITH_WRITE",
         "CONSTRUCT",          "CONSTRUCT",
         "EXPRESSION_EVAL",      "MODIFY_EVAL",          "EXPRESSION_EVAL",      "MODIFY_EVAL",
         "WRITE",          "WRITE_STRING",  "WRITE_VALUE",
         "GET_ELEMENT",  "GET_ELEMENT__WRITE",          "GET_ELEMENT",  "GET_ELEMENT__WRITE_VALUE",
         "CREATE_EWPOOL",        "REDUCE_EWPOOL",          "CREATE_EWPOOL",        "REDUCE_EWPOOL",
         "CREATE_RWPOOL",        "REDUCE_RWPOOL",          "CREATE_RWPOOL",        "REDUCE_RWPOOL",
         "GET_METHOD_FRAME",          "GET_METHOD_FRAME",
Line 32  void dump(int level, const Array& ops) { Line 32  void dump(int level, const Array& ops) {
                 printf("%*s%s", level*4, "", opcode_name[code]);                  printf("%*s%s", level*4, "", opcode_name[code]);
   
                 if(code==OP_STRING) {                  if(code==OP_STRING) {
                         const String *string=static_cast<const String *>(ops.quick_get(++i));                          String *string=static_cast<String *>(ops.quick_get(++i));
                         printf(" \"%s\"", string->cstr());                          printf(" \"%s\"", string->cstr());
                 }                  }
                   if(code==OP_VSTRING) {
                           Value *value=static_cast<Value *>(ops.quick_get(++i));
                           printf(" \"%s\"", value->get_string()->cstr());
                   }
                 printf("\n");                  printf("\n");
   
                 if(code==OP_CODE_ARRAY) {                  if(code==OP_CODE_ARRAY) {
Line 67  void Request::execute(Array& ops) { Line 71  void Request::execute(Array& ops) {
                                 stack.push(wcontext);                                  stack.push(wcontext);
                                 break;                                  break;
                         }                          }
                   case OP_WITH_READ: 
                           {
                                   stack.push(rcontext);
                                   break;
                           }
                                                   
                 case OP_STRING:                  case OP_STRING:
                         {                          {
Line 75  void Request::execute(Array& ops) { Line 84  void Request::execute(Array& ops) {
                                 break;                                  break;
                         }                          }
                                                   
                   case OP_VSTRING:
                           {
                                   Value *value=static_cast<Value *>(ops.quick_get(++i));
                                   stack.push(value);
                                   break;
                           }
                           
                 case OP_CONSTRUCT:                  case OP_CONSTRUCT:
                         {                          {
                                 Value *value=static_cast<Value *>(stack.pop());                                  Value *value=static_cast<Value *>(stack.pop());
Line 84  void Request::execute(Array& ops) { Line 100  void Request::execute(Array& ops) {
                                 break;                                  break;
                         }                          }
                                                   
                 /*case OP_WRITE:                  case OP_WRITE_STRING:
                           {
                                   String *string=static_cast<String *>(stack.pop());
                                   wcontext->write(string);
                                   break;
                           }
                           
                   case OP_WRITE_VALUE:
                         {                          {
                                 Value *value=static_cast<Value *>(stack.pop());                                  Value *value=static_cast<Value *>(stack.pop());
                                 wcontext.write(value);                                  wcontext->write(value);
                                 break;                                  break;
                         }*/                          }
                                                   
                 /*case OP_GET_ELEMENT:                  case OP_GET_ELEMENT:
                         {                          {
                                 String *name=static_cast<String *>(stack.pop());                                  String *name=static_cast<String *>(stack.pop());
                                 Value *ncontext=static_cast<Value *>(stack.pop());                                  Value *ncontext=static_cast<Value *>(stack.pop());
Line 99  void Request::execute(Array& ops) { Line 122  void Request::execute(Array& ops) {
                                 // name бывает имя junction, тогда или оставляет в покое, или вычисляет в зависимости от флага АВТОВЫЧИСЛЯТЬ                                  // name бывает имя junction, тогда или оставляет в покое, или вычисляет в зависимости от флага АВТОВЫЧИСЛЯТЬ
                                 stack.push(value);                                  stack.push(value);
                                 break;                                  break;
                         }*/                          }
                                                   
                 default:                  default:
                         printf("\tTODO\n");                          printf("\tTODO\n");

Removed from v.1.13  
changed lines
  Added in v.1.15


E-mail: