Diff for /parser3/src/main/compile.tab.C between versions 1.26 and 1.34

version 1.26, 2001/11/05 11:46:26 version 1.34, 2002/01/31 17:03:27
Line 36 Line 36
         Parser: compiler(lexical parser and grammar).          Parser: compiler(lexical parser and grammar).
   
         Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)          Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
         Author: Alexander Petrosyan <paf@design.ru> (http://paf.design.ru)          Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
   
         $Id$          $Id$
 */  */
Line 210  static const short yyrline[] = { 0, Line 210  static const short yyrline[] = { 0,
    236,   237,   237,   237,   241,   245,   246,   246,   247,   248,     236,   237,   237,   237,   241,   245,   246,   246,   247,   248,
    250,   251,   266,   267,   267,   271,   275,   277,   278,   279,     250,   251,   266,   267,   267,   271,   275,   277,   278,   279,
    294,   299,   301,   303,   304,   306,   312,   318,   324,   326,     294,   299,   301,   303,   304,   306,   312,   318,   324,   326,
    327,   329,   335,   336,   336,   340,   344,   345,   346,   360,     327,   329,   335,   336,   336,   340,   344,   348,   352,   366,
    362,   362,   363,   365,   366,   368,   369,   370,   371,   373,     368,   368,   369,   371,   372,   374,   375,   376,   377,   379,
    375,   377,   379,   381,   383,   387,   391,   395,   397,   398,     381,   383,   385,   387,   389,   393,   397,   401,   403,   404,
    400,   407,   407,   409,   409,   410,   411,   416,   421,   423,     406,   413,   413,   415,   415,   416,   417,   425,   432,   434,
    425,   426,   427,   429,   433,   441,   447,   452,   452,   453,     436,   437,   438,   440,   444,   452,   458,   463,   463,   464,
    458,   460,   462,   466,   478,   482,   484,   485,   486,   487,     469,   471,   473,   477,   489,   493,   495,   496,   497,   498,
    488,   490,   491,   492,   493,   494,   495,   496,   497,   499,     499,   501,   502,   503,   504,   505,   506,   507,   508,   510,
    500,   501,   502,   503,   504,   505,   506,   507,   508,   509,     511,   512,   513,   514,   515,   516,   517,   518,   519,   520,
    510,   511,   512,   513,   514,   515,   516,   517,   518,   519,     521,   522,   523,   524,   525,   526,   527,   528,   529,   530,
    520,   521,   522,   523,   526,   535,   540,   541     531,   532,   533,   534,   537,   546,   551,   552
 };  };
 #endif  #endif
   
Line 1260  case 66: Line 1260  case 66:
     break;}      break;}
 case 67:  case 67:
 #line 344 "compile.y"  #line 344 "compile.y"
 { PC.object_constructor_allowed=true ;  { 
                                           PC.object_constructor_allowed=true; 
                                           push_OCA(PC, true);
                           ;
     break;}      break;}
 case 68:  case 68:
 #line 345 "compile.y"  #line 348 "compile.y"
 { PC.object_constructor_allowed=false ;  {
                                   PC.object_constructor_allowed=false;
                                   pop_OCA(PC);
                           ;
     break;}      break;}
 case 69:  case 69:
 #line 346 "compile.y"  #line 352 "compile.y"
 { /* ^field.$method{vasya} */  { /* ^field.$method{vasya} */
         yyval=yyvsp[-3]; /* with_xxx,diving code; stack: context,method_junction */          yyval=yyvsp[-3]; /* with_xxx,diving code; stack: context,method_junction */
         O(yyval, OP_GET_METHOD_FRAME); /* stack: context,method_frame */          O(yyval, OP_GET_METHOD_FRAME); /* stack: context,method_frame */
Line 1283  case 69: Line 1289  case 69:
 ;  ;
     break;}      break;}
 case 72:  case 72:
 #line 362 "compile.y"  #line 368 "compile.y"
 { yyval=yyvsp[-1]; P(yyval, yyvsp[0]) ;  { yyval=yyvsp[-1]; P(yyval, yyvsp[0]) ;
     break;}      break;}
 case 76:  case 76:
 #line 368 "compile.y"  #line 374 "compile.y"
 {yyval=yyvsp[-1];  {yyval=yyvsp[-1];
     break;}      break;}
 case 77:  case 77:
 #line 369 "compile.y"  #line 375 "compile.y"
 {yyval=yyvsp[-1];  {yyval=yyvsp[-1];
     break;}      break;}
 case 78:  case 78:
 #line 370 "compile.y"  #line 376 "compile.y"
 {yyval=yyvsp[-1];  {yyval=yyvsp[-1];
     break;}      break;}
 case 80:  case 80:
 #line 373 "compile.y"  #line 379 "compile.y"
 { yyval=yyvsp[-2]; P(yyval, yyvsp[0]) ;  { yyval=yyvsp[-2]; P(yyval, yyvsp[0]) ;
     break;}      break;}
 case 82:  case 82:
 #line 377 "compile.y"  #line 383 "compile.y"
 { yyval=yyvsp[-2]; P(yyval, yyvsp[0]) ;  { yyval=yyvsp[-2]; P(yyval, yyvsp[0]) ;
     break;}      break;}
 case 84:  case 84:
 #line 381 "compile.y"  #line 387 "compile.y"
 { yyval=yyvsp[-2]; P(yyval, yyvsp[0]) ;  { yyval=yyvsp[-2]; P(yyval, yyvsp[0]) ;
     break;}      break;}
 case 85:  case 85:
 #line 383 "compile.y"  #line 389 "compile.y"
 {  {
         yyval=yyvsp[0];          yyval=yyvsp[0];
         O(yyval, OP_STORE_PARAM);          O(yyval, OP_STORE_PARAM);
 ;  ;
     break;}      break;}
 case 86:  case 86:
 #line 387 "compile.y"  #line 393 "compile.y"
 {  {
         yyval=N(POOL);           yyval=N(POOL); 
         PEA(yyval, yyvsp[0]);          PEA(yyval, yyvsp[0]);
 ;  ;
     break;}      break;}
 case 87:  case 87:
 #line 391 "compile.y"  #line 397 "compile.y"
 {  {
         yyval=N(POOL);           yyval=N(POOL); 
         PCA(yyval, yyvsp[0]);          PCA(yyval, yyvsp[0]);
 ;  ;
     break;}      break;}
 case 91:  case 91:
 #line 400 "compile.y"  #line 406 "compile.y"
 {  {
         yyval=yyvsp[0];          yyval=yyvsp[0];
         O(yyval, OP_WRITE_EXPR_RESULT);          O(yyval, OP_WRITE_EXPR_RESULT);
 ;  ;
     break;}      break;}
 case 93:  case 93:
 #line 407 "compile.y"  #line 413 "compile.y"
 { yyval=yyvsp[-1]; P(yyval, yyvsp[0]) ;  { yyval=yyvsp[-1]; P(yyval, yyvsp[0]) ;
     break;}      break;}
 case 95:  case 95:
 #line 409 "compile.y"  #line 415 "compile.y"
 { yyval=yyvsp[-1]; P(yyval, yyvsp[0]) ;  { yyval=yyvsp[-1]; P(yyval, yyvsp[0]) ;
     break;}      break;}
 case 97:  case 97:
 #line 411 "compile.y"  #line 417 "compile.y"
 {  {
           // we know that name_advance1 not called from ^xxx context
           // so we'll not check for operator call possibility as we do in name_advance2
   
         /* stack: context */          /* stack: context */
         yyval=yyvsp[0]; /* stack: context,name */          yyval=yyvsp[0]; /* stack: context,name */
         O(yyval, OP_GET_ELEMENT); /* name=pop; context=pop; stack: context.get_element(name) */          O(yyval, OP_GET_ELEMENT); /* name=pop; context=pop; stack: context.get_element(name) */
 ;  ;
     break;}      break;}
 case 98:  case 98:
 #line 416 "compile.y"  #line 425 "compile.y"
 {  {
         /* stack: context */          /* stack: context */
         yyval=yyvsp[0]; /* stack: context,name */          yyval=yyvsp[0]; /* stack: context,name */
         O(yyval, OP_GET_ELEMENT); /* name=pop; context=pop; stack: context.get_element(name) */          O(yyval, PC.operator_call_allowed?OP_GET_ELEMENT_OR_OPERATOR:OP_GET_ELEMENT); /* name=pop; context=pop; stack: context.get_element(name) */
           // only ^FIRST.part.allowed.to.be.an.operator
           PC.operator_call_allowed=false; 
 ;  ;
     break;}      break;}
 case 104:  case 104:
 #line 429 "compile.y"  #line 440 "compile.y"
 {  {
         yyval=yyvsp[0];          yyval=yyvsp[0];
         O(yyval, OP_GET_ELEMENT);          O(yyval, OP_GET_ELEMENT);
 ;  ;
     break;}      break;}
 case 105:  case 105:
 #line 433 "compile.y"  #line 444 "compile.y"
 {  {
         yyval=N(POOL);           yyval=N(POOL); 
         O(yyval, OP_CREATE_EWPOOL);          O(yyval, OP_CREATE_EWPOOL);
Line 1381  case 105: Line 1392  case 105:
 ;  ;
     break;}      break;}
 case 106:  case 106:
 #line 441 "compile.y"  #line 452 "compile.y"
 {  {
         yyval=N(POOL);           yyval=N(POOL); 
         O(yyval, OP_CREATE_EWPOOL);          O(yyval, OP_CREATE_EWPOOL);
Line 1390  case 106: Line 1401  case 106:
 ;  ;
     break;}      break;}
 case 107:  case 107:
 #line 447 "compile.y"  #line 458 "compile.y"
 {  {
         yyval=N(POOL);           yyval=N(POOL); 
         O(yyval, OP_WITH_READ);          O(yyval, OP_WITH_READ);
Line 1398  case 107: Line 1409  case 107:
 ;  ;
     break;}      break;}
 case 109:  case 109:
 #line 452 "compile.y"  #line 463 "compile.y"
 { yyval=yyvsp[-1]; P(yyval, yyvsp[0]) ;  { yyval=yyvsp[-1]; P(yyval, yyvsp[0]) ;
     break;}      break;}
 case 110:  case 110:
 #line 453 "compile.y"  #line 464 "compile.y"
 {  {
         yyval=yyvsp[0];          yyval=yyvsp[0];
         O(yyval, OP_GET_ELEMENT__WRITE);          O(yyval, OP_GET_ELEMENT__WRITE);
 ;  ;
     break;}      break;}
 case 113:  case 113:
 #line 462 "compile.y"  #line 473 "compile.y"
 {  {
         yyval=yyvsp[-1]; // stack: class name string          yyval=yyvsp[-1]; // stack: class name string
         O(yyval, OP_GET_CLASS);          O(yyval, OP_GET_CLASS);
 ;  ;
     break;}      break;}
 case 114:  case 114:
 #line 466 "compile.y"  #line 477 "compile.y"
 {  {
         yyval=yyvsp[-1];          yyval=yyvsp[-1];
         if(!PC.object_constructor_allowed) {          if(!PC.object_constructor_allowed) {
Line 1427  case 114: Line 1438  case 114:
 ;  ;
     break;}      break;}
 case 115:  case 115:
 #line 478 "compile.y"  #line 489 "compile.y"
 {  {
         if((yyval=yyvsp[0])->size()==2) // only one string literal in there?          if((yyval=yyvsp[0])->size()==2) // only one string literal in there?
                 change_string_literal_to_double_literal(yyval); // make that string literal Double                  change_string_literal_to_double_literal(yyval); // make that string literal Double
 ;  ;
     break;}      break;}
 case 119:  case 119:
 #line 486 "compile.y"  #line 497 "compile.y"
 { yyval = yyvsp[-1]; ;  { yyval = yyvsp[-1]; ;
     break;}      break;}
 case 120:  case 120:
 #line 487 "compile.y"  #line 498 "compile.y"
 { yyval = yyvsp[-1]; ;  { yyval = yyvsp[-1]; ;
     break;}      break;}
 case 121:  case 121:
 #line 488 "compile.y"  #line 499 "compile.y"
 { yyval = yyvsp[-1]; ;  { yyval = yyvsp[-1]; ;
     break;}      break;}
 case 122:  case 122:
 #line 490 "compile.y"  #line 501 "compile.y"
 { yyval=yyvsp[0];  O(yyval, OP_NEG) ;  { yyval=yyvsp[0];  O(yyval, OP_NEG) ;
     break;}      break;}
 case 123:  case 123:
 #line 491 "compile.y"  #line 502 "compile.y"
 { yyval=yyvsp[0] ;  { yyval=yyvsp[0] ;
     break;}      break;}
 case 124:  case 124:
 #line 492 "compile.y"  #line 503 "compile.y"
 { yyval=yyvsp[0];        O(yyval, OP_INV) ;  { yyval=yyvsp[0];        O(yyval, OP_INV) ;
     break;}      break;}
 case 125:  case 125:
 #line 493 "compile.y"  #line 504 "compile.y"
 { yyval=yyvsp[0];  O(yyval, OP_NOT) ;  { yyval=yyvsp[0];  O(yyval, OP_NOT) ;
     break;}      break;}
 case 126:  case 126:
 #line 494 "compile.y"  #line 505 "compile.y"
 { yyval=yyvsp[0];  O(yyval, OP_DEF) ;  { yyval=yyvsp[0];  O(yyval, OP_DEF) ;
     break;}      break;}
 case 127:  case 127:
 #line 495 "compile.y"  #line 506 "compile.y"
 { yyval=yyvsp[0];  O(yyval, OP_IN) ;  { yyval=yyvsp[0];  O(yyval, OP_IN) ;
     break;}      break;}
 case 128:  case 128:
 #line 496 "compile.y"  #line 507 "compile.y"
 { yyval=yyvsp[0];  O(yyval, OP_FEXISTS) ;  { yyval=yyvsp[0];  O(yyval, OP_FEXISTS) ;
     break;}      break;}
 case 129:  case 129:
 #line 497 "compile.y"  #line 508 "compile.y"
 { yyval=yyvsp[0];  O(yyval, OP_DEXISTS) ;  { yyval=yyvsp[0];  O(yyval, OP_DEXISTS) ;
     break;}      break;}
 case 130:  case 130:
 #line 499 "compile.y"  #line 510 "compile.y"
 {       yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_SUB) ;  {       yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_SUB) ;
     break;}      break;}
 case 131:  case 131:
 #line 500 "compile.y"  #line 511 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_ADD) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_ADD) ;
     break;}      break;}
 case 132:  case 132:
 #line 501 "compile.y"  #line 512 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_MUL) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_MUL) ;
     break;}      break;}
 case 133:  case 133:
 #line 502 "compile.y"  #line 513 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_DIV) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_DIV) ;
     break;}      break;}
 case 134:  case 134:
 #line 503 "compile.y"  #line 514 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_MOD) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_MOD) ;
     break;}      break;}
 case 135:  case 135:
 #line 504 "compile.y"  #line 515 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_INTDIV) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_INTDIV) ;
     break;}      break;}
 case 136:  case 136:
 #line 505 "compile.y"  #line 516 "compile.y"
 { yyval=yyvsp[-2];      P(yyval, yyvsp[0]);  O(yyval, OP_BIN_AND) ;  { yyval=yyvsp[-2];      P(yyval, yyvsp[0]);  O(yyval, OP_BIN_AND) ;
     break;}      break;}
 case 137:  case 137:
 #line 506 "compile.y"  #line 517 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_BIN_OR) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_BIN_OR) ;
     break;}      break;}
 case 138:  case 138:
 #line 507 "compile.y"  #line 518 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_BIN_XOR) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_BIN_XOR) ;
     break;}      break;}
 case 139:  case 139:
 #line 508 "compile.y"  #line 519 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_LOG_AND) ;  { yyval=yyvsp[-2];  PNC(yyval, yyvsp[0]);  O(yyval, OP_LOG_AND) ;
     break;}      break;}
 case 140:  case 140:
 #line 509 "compile.y"  #line 520 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_LOG_OR) ;  { yyval=yyvsp[-2];  PNC(yyval, yyvsp[0]);  O(yyval, OP_LOG_OR) ;
     break;}      break;}
 case 141:  case 141:
 #line 510 "compile.y"  #line 521 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_LOG_XOR) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_LOG_XOR) ;
     break;}      break;}
 case 142:  case 142:
 #line 511 "compile.y"  #line 522 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_NUM_LT) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_NUM_LT) ;
     break;}      break;}
 case 143:  case 143:
 #line 512 "compile.y"  #line 523 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_NUM_GT) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_NUM_GT) ;
     break;}      break;}
 case 144:  case 144:
 #line 513 "compile.y"  #line 524 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_NUM_LE) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_NUM_LE) ;
     break;}      break;}
 case 145:  case 145:
 #line 514 "compile.y"  #line 525 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_NUM_GE) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_NUM_GE) ;
     break;}      break;}
 case 146:  case 146:
 #line 515 "compile.y"  #line 526 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_NUM_EQ) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_NUM_EQ) ;
     break;}      break;}
 case 147:  case 147:
 #line 516 "compile.y"  #line 527 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_NUM_NE) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_NUM_NE) ;
     break;}      break;}
 case 148:  case 148:
 #line 517 "compile.y"  #line 528 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_STR_LT) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_STR_LT) ;
     break;}      break;}
 case 149:  case 149:
 #line 518 "compile.y"  #line 529 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_STR_GT) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_STR_GT) ;
     break;}      break;}
 case 150:  case 150:
 #line 519 "compile.y"  #line 530 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_STR_LE) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_STR_LE) ;
     break;}      break;}
 case 151:  case 151:
 #line 520 "compile.y"  #line 531 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_STR_GE) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_STR_GE) ;
     break;}      break;}
 case 152:  case 152:
 #line 521 "compile.y"  #line 532 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_STR_EQ) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_STR_EQ) ;
     break;}      break;}
 case 153:  case 153:
 #line 522 "compile.y"  #line 533 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_STR_NE) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_STR_NE) ;
     break;}      break;}
 case 154:  case 154:
 #line 523 "compile.y"  #line 534 "compile.y"
 { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_IS) ;  { yyval=yyvsp[-2];  P(yyval, yyvsp[0]);  O(yyval, OP_IS) ;
     break;}      break;}
 case 155:  case 155:
 #line 526 "compile.y"  #line 537 "compile.y"
 {  {
         yyval=N(POOL);          yyval=N(POOL);
         O(yyval, OP_CREATE_SWPOOL); /* stack: empty write context */          O(yyval, OP_CREATE_SWPOOL); /* stack: empty write context */
Line 1587  case 155: Line 1598  case 155:
 ;  ;
     break;}      break;}
 case 156:  case 156:
 #line 535 "compile.y"  #line 546 "compile.y"
 {  {
         // optimized from OP_STRING+OP_WRITE_VALUE to OP_STRING__WRITE          // optimized from OP_STRING+OP_WRITE_VALUE to OP_STRING__WRITE
         change_string_literal_to_write_string_literal(yyval=yyvsp[0])          change_string_literal_to_write_string_literal(yyval=yyvsp[0])
 ;  ;
     break;}      break;}
 case 157:  case 157:
 #line 540 "compile.y"  #line 551 "compile.y"
 { yyval=VL(NEW VVoid(POOL)) ;  { yyval=VL(NEW VVoid(POOL)) ;
     break;}      break;}
 case 158:  case 158:
 #line 541 "compile.y"  #line 552 "compile.y"
 { yyval=N(POOL) ;  { yyval=N(POOL) ;
     break;}      break;}
 }  }
Line 1823  yyerrhandle: Line 1834  yyerrhandle:
     }      }
   return 1;    return 1;
 }  }
 #line 543 "compile.y"  #line 554 "compile.y"
   
 #endif  #endif
   
Line 1844  yyerrhandle: Line 1855  yyerrhandle:
 */  */
   
 static int yylex(YYSTYPE *lvalp, void *pc) {  static int yylex(YYSTYPE *lvalp, void *pc) {
         #define lexical_brackets_nestage PC.brackets_nestages[PC.sp]          #define lexical_brackets_nestage PC.brackets_nestages[PC.ls_sp]
         #define RC {result=c; goto break2; }          #define RC {result=c; goto break2; }
   
     register int c;      register int c;
Line 1871  static int yylex(YYSTYPE *lvalp, void *p Line 1882  static int yylex(YYSTYPE *lvalp, void *p
                         PC.col++;                          PC.col++;
   
                 if(c=='@' && PC.col==0+1) {                  if(c=='@' && PC.col==0+1) {
                           if(PC.ls==LS_DEF_SPECIAL_BODY) {
                                   // @SPECIAL
                                   // ...
                                   // @<here = 
                                   pop_LS(PC); // exiting from LS_DEF_SPECIAL_BODY state
                           } // continuing checks
                         if(PC.ls==LS_USER) {                          if(PC.ls==LS_USER) {
                                 push_LS(PC, LS_DEF_NAME);                                  push_LS(PC, LS_DEF_NAME);
                                 RC;                                  RC;
                         } else // @ in first column inside some code                          } else // @ in first column inside some code [when could that be?]
                                 result=BAD_METHOD_DECL_START;                                  result=BAD_METHOD_DECL_START;
                         goto break2;                          goto break2;
                 } else if(c=='^')                  } else if(c=='^')
Line 1954  default: Line 1971  default:
                         }                          }
                         // fall into COMMENT lexical state [wait for \n]                          // fall into COMMENT lexical state [wait for \n]
                         push_LS(PC, LS_COMMENT);                          push_LS(PC, LS_COMMENT);
                           continue;
                 }                  }
                 switch(PC.ls) {                  switch(PC.ls) {
   
Line 2071  default: Line 2089  default:
                         break;                          break;
   
                 case LS_DEF_SPECIAL_BODY:                  case LS_DEF_SPECIAL_BODY:
                         //                          @todo in case                          if(c=='\n')
                         // ################  
                         // @next-method  
                         // we are here with c=='@'  
                         // which is wrong, and need action  
                         if(c=='\n') {  
                                 switch(*PC.source) {  
                                 case '@': case 0: // end of special_code  
                                         pop_LS(PC);  
                                         break;  
                                 }  
                                 RC;                                  RC;
                         }  
                         break;                          break;
   
                 // (EXPRESSION)                  // (EXPRESSION)

Removed from v.1.26  
changed lines
  Added in v.1.34


E-mail: