Author: leo
Date: Mon Oct 10 01:17:43 2005
New Revision: 9427

Modified:
   trunk/imcc/imcc.l
   trunk/imcc/imclexer.c
   trunk/imcc/t/syn/const.t
Log:
adjust line count in heredocs; test

Modified: trunk/imcc/imcc.l
==============================================================================
--- trunk/imcc/imcc.l   (original)
+++ trunk/imcc/imcc.l   Mon Oct 10 01:17:43 2005
@@ -435,6 +435,7 @@ SP              [ ]
     }
 
 <*>"<<"{STRINGCONSTANT}{EOL} {
+        ++line;
         /* Save the string we want to mark the end of the heredoc and snip
            off newline and quote. */
         heredoc_end = str_dup(yytext + 3);
@@ -446,13 +447,14 @@ SP              [ ]
         /* Start slurping up the heredoc. */
         heredoc_content = mem_sys_allocate(2);
         strcpy(heredoc_content, "\"");
-        prev_state = YYSTATE; 
+        prev_state = YYSTATE;
         BEGIN(heredoc);
     }
 
 <heredoc>{EOL} {
         /* Newline in the heredoc. Realloc and cat on. */
-        heredoc_content = mem_sys_realloc(heredoc_content, 
+        ++line;
+        heredoc_content = mem_sys_realloc(heredoc_content,
                                           strlen(heredoc_content) +
                                           strlen(yytext) + 2);
         strcpy(heredoc_content + strlen(heredoc_content), yytext);
@@ -472,7 +474,7 @@ SP              [ ]
         else
         {
             /* Part of the heredoc. Realloc and cat the line on. */
-            heredoc_content = mem_sys_realloc(heredoc_content, 
+            heredoc_content = mem_sys_realloc(heredoc_content,
                                               strlen(heredoc_content) +
                                               strlen(yytext) + 2);
             strcpy(heredoc_content + strlen(heredoc_content), yytext);

Modified: trunk/imcc/imclexer.c
==============================================================================
--- trunk/imcc/imclexer.c       (original)
+++ trunk/imcc/imclexer.c       Mon Oct 10 01:17:43 2005
@@ -1,4 +1,4 @@
-#line 2 "imcc\\imclexer.c"
+#line 2 "imcc/imclexer.c"
 /* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
@@ -2278,9 +2278,9 @@ static char *yy_last_accepting_cpos;
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
-#line 1 "imcc\\imcc.l"
+#line 1 "imcc/imcc.l"
 #define INITIAL 0
-#line 2 "imcc\\imcc.l"
+#line 2 "imcc/imcc.l"
 /*
  * imcc.l
  *
@@ -2380,7 +2380,7 @@ static char *heredoc_content;
 
 #define heredoc 9
 
-#line 2384 "imcc\\imclexer.c"
+#line 2384 "imcc/imclexer.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -2534,7 +2534,7 @@ YY_DECL
        register char *yy_cp, *yy_bp;
        register int yy_act;
 
-#line 119 "imcc\\imcc.l"
+#line 119 "imcc/imcc.l"
 
         /* for emacs "*/
         if (expect_pasm == 1 && !in_pod) {
@@ -2551,7 +2551,7 @@ YY_DECL
             return 0;
         }
 
-#line 2555 "imcc\\imclexer.c"
+#line 2555 "imcc/imclexer.c"
 
        if ( yy_init )
                {
@@ -2637,7 +2637,7 @@ do_action:        /* This label is used only to
 
 case 1:
 YY_RULE_SETUP
-#line 135 "imcc\\imcc.l"
+#line 135 "imcc/imcc.l"
 { prev_state = YYSTATE; BEGIN(cmt2);
                        valp->t = atoi(yytext+6);
                        return LINECOMMENT;
@@ -2645,7 +2645,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 139 "imcc\\imcc.l"
+#line 139 "imcc/imcc.l"
 { BEGIN(cmt3);
                       valp->s = str_dup(yytext);
                       return FILECOMMENT;
@@ -2653,22 +2653,22 @@ YY_RULE_SETUP
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 143 "imcc\\imcc.l"
+#line 143 "imcc/imcc.l"
 { BEGIN(cmt4); }
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 145 "imcc\\imcc.l"
+#line 145 "imcc/imcc.l"
 { prev_state = YYSTATE; BEGIN(cmt2); }
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 146 "imcc\\imcc.l"
+#line 146 "imcc/imcc.l"
 { prev_state = YYSTATE; BEGIN(cmt1); }
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 147 "imcc\\imcc.l"
+#line 147 "imcc/imcc.l"
 {
                        valp->t = atoi(yytext);
                        BEGIN(cmt4);
@@ -2677,12 +2677,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 152 "imcc\\imcc.l"
+#line 152 "imcc/imcc.l"
 { BEGIN(prev_state) ; line++; }
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 154 "imcc\\imcc.l"
+#line 154 "imcc/imcc.l"
 {
         if (expect_pasm == 2)
          BEGIN(INITIAL);
@@ -2693,12 +2693,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 162 "imcc\\imcc.l"
+#line 162 "imcc/imcc.l"
 { prev_state = YYSTATE; BEGIN(cmt5); }
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 163 "imcc\\imcc.l"
+#line 163 "imcc/imcc.l"
 {
         if (expect_pasm == 2)
          BEGIN(INITIAL);
@@ -2711,7 +2711,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 173 "imcc\\imcc.l"
+#line 173 "imcc/imcc.l"
 {
        BEGIN(emit);
        return(EMIT);
@@ -2719,7 +2719,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 178 "imcc\\imcc.l"
+#line 178 "imcc/imcc.l"
 {
        BEGIN(INITIAL);
        return EOM;
@@ -2727,7 +2727,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 183 "imcc\\imcc.l"
+#line 183 "imcc/imcc.l"
 {
        valp->s = str_dup(yytext);
        return REG;
@@ -2735,525 +2735,525 @@ YY_RULE_SETUP
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 188 "imcc\\imcc.l"
+#line 188 "imcc/imcc.l"
 { in_pod = 1; yy_push_state(pod); }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 189 "imcc\\imcc.l"
+#line 189 "imcc/imcc.l"
 { in_pod = 0; yy_pop_state(); ++line; }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 190 "imcc\\imcc.l"
+#line 190 "imcc/imcc.l"
 { /*ignore*/ }
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 191 "imcc\\imcc.l"
+#line 191 "imcc/imcc.l"
 { ++line; }
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 193 "imcc\\imcc.l"
+#line 193 "imcc/imcc.l"
 return(LOCAL);
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 194 "imcc\\imcc.l"
+#line 194 "imcc/imcc.l"
 return(ARG);
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 195 "imcc\\imcc.l"
+#line 195 "imcc/imcc.l"
 return(SUB);
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 196 "imcc\\imcc.l"
+#line 196 "imcc/imcc.l"
 return(ESUB);
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 197 "imcc\\imcc.l"
+#line 197 "imcc/imcc.l"
 return(PCC_BEGIN);
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 198 "imcc\\imcc.l"
+#line 198 "imcc/imcc.l"
 return(PCC_END);
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 199 "imcc\\imcc.l"
+#line 199 "imcc/imcc.l"
 return(PCC_CALL);
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 200 "imcc\\imcc.l"
+#line 200 "imcc/imcc.l"
 return(NCI_CALL);
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 201 "imcc\\imcc.l"
+#line 201 "imcc/imcc.l"
 return(METH_CALL);
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 202 "imcc\\imcc.l"
+#line 202 "imcc/imcc.l"
 return(INVOCANT);
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 203 "imcc\\imcc.l"
+#line 203 "imcc/imcc.l"
 return(PCC_SUB);
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 204 "imcc\\imcc.l"
+#line 204 "imcc/imcc.l"
 return(PCC_BEGIN_RETURN);
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 205 "imcc\\imcc.l"
+#line 205 "imcc/imcc.l"
 return(PCC_END_RETURN);
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 206 "imcc\\imcc.l"
+#line 206 "imcc/imcc.l"
 return(PCC_BEGIN_YIELD);
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 207 "imcc\\imcc.l"
+#line 207 "imcc/imcc.l"
 return(PCC_END_YIELD);
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 209 "imcc\\imcc.l"
+#line 209 "imcc/imcc.l"
 return(METHOD); /* old compat cruft -
                                   the canonical colon names are below */
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 211 "imcc\\imcc.l"
+#line 211 "imcc/imcc.l"
 return(MULTI);
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 212 "imcc\\imcc.l"
+#line 212 "imcc/imcc.l"
 return(MAIN);
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 213 "imcc\\imcc.l"
+#line 213 "imcc/imcc.l"
 return(LOAD);
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 214 "imcc\\imcc.l"
+#line 214 "imcc/imcc.l"
 return(IMMEDIATE);
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 215 "imcc\\imcc.l"
+#line 215 "imcc/imcc.l"
 return(POSTCOMP);
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 216 "imcc\\imcc.l"
+#line 216 "imcc/imcc.l"
 return(ANON);
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 218 "imcc\\imcc.l"
+#line 218 "imcc/imcc.l"
 return(METHOD);
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 219 "imcc\\imcc.l"
+#line 219 "imcc/imcc.l"
 return(MULTI);
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 220 "imcc\\imcc.l"
+#line 220 "imcc/imcc.l"
 return(MAIN);
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 221 "imcc\\imcc.l"
+#line 221 "imcc/imcc.l"
 return(LOAD);
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 222 "imcc\\imcc.l"
+#line 222 "imcc/imcc.l"
 return(IMMEDIATE);
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 223 "imcc\\imcc.l"
+#line 223 "imcc/imcc.l"
 return(POSTCOMP);
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 224 "imcc\\imcc.l"
+#line 224 "imcc/imcc.l"
 return(ANON);
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 226 "imcc\\imcc.l"
+#line 226 "imcc/imcc.l"
 return(RESULT);
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 227 "imcc\\imcc.l"
+#line 227 "imcc/imcc.l"
 return(YIELDT);
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 228 "imcc\\imcc.l"
+#line 228 "imcc/imcc.l"
 return(RETURN);
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 230 "imcc\\imcc.l"
+#line 230 "imcc/imcc.l"
 return(ADV_FLAT);
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 231 "imcc\\imcc.l"
+#line 231 "imcc/imcc.l"
 return(ADV_SLURPY);
        YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 232 "imcc\\imcc.l"
+#line 232 "imcc/imcc.l"
 return(ADV_OPTIONAL);
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 233 "imcc\\imcc.l"
+#line 233 "imcc/imcc.l"
 return(ADV_OPT_FLAG);
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 235 "imcc\\imcc.l"
+#line 235 "imcc/imcc.l"
 return(CLASS);
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 236 "imcc\\imcc.l"
+#line 236 "imcc/imcc.l"
 return(ENDCLASS);
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 237 "imcc\\imcc.l"
+#line 237 "imcc/imcc.l"
 return(NAMESPACE);
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 238 "imcc\\imcc.l"
+#line 238 "imcc/imcc.l"
 return(HLL);
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 239 "imcc\\imcc.l"
+#line 239 "imcc/imcc.l"
 return(ENDNAMESPACE);
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 240 "imcc\\imcc.l"
+#line 240 "imcc/imcc.l"
 return(FIELD);
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 241 "imcc\\imcc.l"
+#line 241 "imcc/imcc.l"
 return(DOT_METHOD);
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 242 "imcc\\imcc.l"
+#line 242 "imcc/imcc.l"
 return(LOCAL);
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 243 "imcc\\imcc.l"
+#line 243 "imcc/imcc.l"
 return(GLOBAL);
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 244 "imcc\\imcc.l"
+#line 244 "imcc/imcc.l"
 return(CONST);
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 245 "imcc\\imcc.l"
+#line 245 "imcc/imcc.l"
 return(GLOBAL_CONST);
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 246 "imcc\\imcc.l"
+#line 246 "imcc/imcc.l"
 return(PARAM);
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 247 "imcc\\imcc.l"
+#line 247 "imcc/imcc.l"
 return(PRAGMA);
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 248 "imcc\\imcc.l"
+#line 248 "imcc/imcc.l"
 return(FASTCALL);
        YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 249 "imcc\\imcc.l"
+#line 249 "imcc/imcc.l"
 return(N_OPERATORS);
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 250 "imcc\\imcc.l"
+#line 250 "imcc/imcc.l"
 return(GOTO);
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 251 "imcc\\imcc.l"
+#line 251 "imcc/imcc.l"
 return(IF);
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 252 "imcc\\imcc.l"
+#line 252 "imcc/imcc.l"
 return(UNLESS);
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 253 "imcc\\imcc.l"
+#line 253 "imcc/imcc.l"
 return(INTV);
        YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 254 "imcc\\imcc.l"
+#line 254 "imcc/imcc.l"
 return(FLOATV);
        YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 255 "imcc\\imcc.l"
+#line 255 "imcc/imcc.l"
 return(FLOATV);
        YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 256 "imcc\\imcc.l"
+#line 256 "imcc/imcc.l"
 return(NEW);
        YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 257 "imcc\\imcc.l"
+#line 257 "imcc/imcc.l"
 return(NEWCLOSURE);
        YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 258 "imcc\\imcc.l"
+#line 258 "imcc/imcc.l"
 return(NEWCONT);
        YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 259 "imcc\\imcc.l"
+#line 259 "imcc/imcc.l"
 return(NEWCOR);
        YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 260 "imcc\\imcc.l"
+#line 260 "imcc/imcc.l"
 return(NEWSUB);
        YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 261 "imcc\\imcc.l"
+#line 261 "imcc/imcc.l"
 return(ADDR);
        YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 262 "imcc\\imcc.l"
+#line 262 "imcc/imcc.l"
 return(GLOBALOP);
        YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 263 "imcc\\imcc.l"
+#line 263 "imcc/imcc.l"
 return(OBJECTV);
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 264 "imcc\\imcc.l"
+#line 264 "imcc/imcc.l"
 return(PMCV);
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 265 "imcc\\imcc.l"
+#line 265 "imcc/imcc.l"
 return(STRINGV);
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 266 "imcc\\imcc.l"
+#line 266 "imcc/imcc.l"
 return(SHIFT_LEFT);
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 267 "imcc\\imcc.l"
+#line 267 "imcc/imcc.l"
 return(SHIFT_RIGHT);
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 268 "imcc\\imcc.l"
+#line 268 "imcc/imcc.l"
 return(SHIFT_RIGHT_U);
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 269 "imcc\\imcc.l"
+#line 269 "imcc/imcc.l"
 return(LOG_AND);
        YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 270 "imcc\\imcc.l"
+#line 270 "imcc/imcc.l"
 return(LOG_OR);
        YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 271 "imcc\\imcc.l"
+#line 271 "imcc/imcc.l"
 return(LOG_XOR);
        YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 272 "imcc\\imcc.l"
+#line 272 "imcc/imcc.l"
 return(RELOP_LT);
        YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 273 "imcc\\imcc.l"
+#line 273 "imcc/imcc.l"
 return(RELOP_LTE);
        YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 274 "imcc\\imcc.l"
+#line 274 "imcc/imcc.l"
 return(RELOP_GT);
        YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 275 "imcc\\imcc.l"
+#line 275 "imcc/imcc.l"
 return(RELOP_GTE);
        YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 276 "imcc\\imcc.l"
+#line 276 "imcc/imcc.l"
 return(RELOP_EQ);
        YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 277 "imcc\\imcc.l"
+#line 277 "imcc/imcc.l"
 return(RELOP_NE);
        YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 278 "imcc\\imcc.l"
+#line 278 "imcc/imcc.l"
 return(POW);
        YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 279 "imcc\\imcc.l"
+#line 279 "imcc/imcc.l"
 return(POINTY);
        YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 280 "imcc\\imcc.l"
+#line 280 "imcc/imcc.l"
 return(CONCAT);
        YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 281 "imcc\\imcc.l"
+#line 281 "imcc/imcc.l"
 return(DOT);
        YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 282 "imcc\\imcc.l"
+#line 282 "imcc/imcc.l"
 return(DOTDOT);
        YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 283 "imcc\\imcc.l"
+#line 283 "imcc/imcc.l"
 return(PLUS_ASSIGN);
        YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 284 "imcc\\imcc.l"
+#line 284 "imcc/imcc.l"
 return(MINUS_ASSIGN);
        YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 285 "imcc\\imcc.l"
+#line 285 "imcc/imcc.l"
 return(MUL_ASSIGN);
        YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 286 "imcc\\imcc.l"
+#line 286 "imcc/imcc.l"
 return(DIV_ASSIGN);
        YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 287 "imcc\\imcc.l"
+#line 287 "imcc/imcc.l"
 return(MOD_ASSIGN);
        YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 288 "imcc\\imcc.l"
+#line 288 "imcc/imcc.l"
 return(FDIV);
        YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 289 "imcc\\imcc.l"
+#line 289 "imcc/imcc.l"
 return(FDIV_ASSIGN);
        YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 290 "imcc\\imcc.l"
+#line 290 "imcc/imcc.l"
 return(BAND_ASSIGN);
        YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 291 "imcc\\imcc.l"
+#line 291 "imcc/imcc.l"
 return(BOR_ASSIGN);
        YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 292 "imcc\\imcc.l"
+#line 292 "imcc/imcc.l"
 return(BXOR_ASSIGN);
        YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 293 "imcc\\imcc.l"
+#line 293 "imcc/imcc.l"
 return(SHR_ASSIGN);
        YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 294 "imcc\\imcc.l"
+#line 294 "imcc/imcc.l"
 return(SHL_ASSIGN);
        YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 295 "imcc\\imcc.l"
+#line 295 "imcc/imcc.l"
 return(SHR_U_ASSIGN);
        YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 296 "imcc\\imcc.l"
+#line 296 "imcc/imcc.l"
 return(CONCAT_ASSIGN);
        YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 298 "imcc\\imcc.l"
+#line 298 "imcc/imcc.l"
 {
         return read_macro(valp, interp);
     }
        YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 302 "imcc\\imcc.l"
+#line 302 "imcc/imcc.l"
 {
         int c;
        char *name;
@@ -3284,7 +3284,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 330 "imcc\\imcc.l"
+#line 330 "imcc/imcc.l"
 {
         int c;
 
@@ -3297,7 +3297,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 340 "imcc\\imcc.l"
+#line 340 "imcc/imcc.l"
 {
         char *label;
 
@@ -3318,7 +3318,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 358 "imcc\\imcc.l"
+#line 358 "imcc/imcc.l"
 {
         char *label;
 
@@ -3340,12 +3340,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 377 "imcc\\imcc.l"
+#line 377 "imcc/imcc.l"
 return(COMMA);
        YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 379 "imcc\\imcc.l"
+#line 379 "imcc/imcc.l"
 {
        YYCHOP();  /* trim last ':' */
        DUP_AND_RET(valp,LABEL);
@@ -3353,7 +3353,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 384 "imcc\\imcc.l"
+#line 384 "imcc/imcc.l"
 {
         int type = pmc_type(interp, string_from_cstring(interp, yytext+1, 0));
 
@@ -3371,7 +3371,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 399 "imcc\\imcc.l"
+#line 399 "imcc/imcc.l"
 {
        if (!is_def) {
                SymReg *r = find_sym(interp, yytext);
@@ -3396,27 +3396,27 @@ YY_RULE_SETUP
        YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 421 "imcc\\imcc.l"
+#line 421 "imcc/imcc.l"
 DUP_AND_RET(valp, FLOATC);
        YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 422 "imcc\\imcc.l"
+#line 422 "imcc/imcc.l"
 DUP_AND_RET(valp, INTC);
        YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 423 "imcc\\imcc.l"
+#line 423 "imcc/imcc.l"
 DUP_AND_RET(valp, INTC);
        YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 424 "imcc\\imcc.l"
+#line 424 "imcc/imcc.l"
 DUP_AND_RET(valp, INTC);
        YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 426 "imcc\\imcc.l"
+#line 426 "imcc/imcc.l"
 {
        valp->s = str_dup(yytext);
         valp->s[strlen(valp->s) - 1] = '\0'; /* trailing 'L' */
@@ -3425,7 +3425,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 130:
 YY_RULE_SETUP
-#line 432 "imcc\\imcc.l"
+#line 432 "imcc/imcc.l"
 {
        valp->s = str_dup(yytext);
         return(STRINGC); /* XXX delete quotes, -> emit, pbc */
@@ -3433,8 +3433,9 @@ YY_RULE_SETUP
        YY_BREAK
 case 131:
 YY_RULE_SETUP
-#line 437 "imcc\\imcc.l"
+#line 437 "imcc/imcc.l"
 {
+        ++line;
         /* Save the string we want to mark the end of the heredoc and snip
            off newline and quote. */
         heredoc_end = str_dup(yytext + 3);
@@ -3446,16 +3447,17 @@ YY_RULE_SETUP
         /* Start slurping up the heredoc. */
         heredoc_content = mem_sys_allocate(2);
         strcpy(heredoc_content, "\"");
-        prev_state = YYSTATE; 
+        prev_state = YYSTATE;
         BEGIN(heredoc);
     }
        YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 453 "imcc\\imcc.l"
+#line 454 "imcc/imcc.l"
 {
         /* Newline in the heredoc. Realloc and cat on. */
-        heredoc_content = mem_sys_realloc(heredoc_content, 
+        ++line;
+        heredoc_content = mem_sys_realloc(heredoc_content,
                                           strlen(heredoc_content) +
                                           strlen(yytext) + 2);
         strcpy(heredoc_content + strlen(heredoc_content), yytext);
@@ -3463,7 +3465,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 461 "imcc\\imcc.l"
+#line 463 "imcc/imcc.l"
 {
         /* Are we at the end of the heredoc? */
         if (strcmp(heredoc_end, yytext) == 0)
@@ -3478,7 +3480,7 @@ YY_RULE_SETUP
         else
         {
             /* Part of the heredoc. Realloc and cat the line on. */
-            heredoc_content = mem_sys_realloc(heredoc_content, 
+            heredoc_content = mem_sys_realloc(heredoc_content,
                                               strlen(heredoc_content) +
                                               strlen(yytext) + 2);
             strcpy(heredoc_content + strlen(heredoc_content), yytext);
@@ -3487,7 +3489,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 134:
 YY_RULE_SETUP
-#line 482 "imcc\\imcc.l"
+#line 484 "imcc/imcc.l"
 {
        valp->s = str_dup(yytext);    /* charset:"..." */
         /* this is actually not unicode but a string with a charset */
@@ -3496,7 +3498,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 488 "imcc\\imcc.l"
+#line 490 "imcc/imcc.l"
 {
         valp->s = str_dup(yytext); /* XXX delete quotes, -> emit, pbc */
         return(STRINGC);
@@ -3504,39 +3506,39 @@ YY_RULE_SETUP
        YY_BREAK
 case 136:
 YY_RULE_SETUP
-#line 493 "imcc\\imcc.l"
+#line 495 "imcc/imcc.l"
 DUP_AND_RET(valp, IREG);
        YY_BREAK
 case 137:
 YY_RULE_SETUP
-#line 494 "imcc\\imcc.l"
+#line 496 "imcc/imcc.l"
 DUP_AND_RET(valp, NREG);
        YY_BREAK
 case 138:
 YY_RULE_SETUP
-#line 495 "imcc\\imcc.l"
+#line 497 "imcc/imcc.l"
 DUP_AND_RET(valp, SREG);
        YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 496 "imcc\\imcc.l"
+#line 498 "imcc/imcc.l"
 DUP_AND_RET(valp, PREG);
        YY_BREAK
 case 140:
 YY_RULE_SETUP
-#line 498 "imcc\\imcc.l"
+#line 500 "imcc/imcc.l"
 /* skip */;
        YY_BREAK
 case 141:
 YY_RULE_SETUP
-#line 500 "imcc\\imcc.l"
+#line 502 "imcc/imcc.l"
 {
         /* catch all except for state macro */
         return yytext[0];
     }
        YY_BREAK
 case YY_STATE_EOF(emit):
-#line 505 "imcc\\imcc.l"
+#line 507 "imcc/imcc.l"
 {
         BEGIN (INITIAL);
         if (frames->s.pasm_file) {
@@ -3547,17 +3549,17 @@ case YY_STATE_EOF(emit):
     }
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 514 "imcc\\imcc.l"
+#line 516 "imcc/imcc.l"
 yyterminate();
        YY_BREAK
 case 142:
 YY_RULE_SETUP
-#line 516 "imcc\\imcc.l"
+#line 518 "imcc/imcc.l"
 DUP_AND_RET(valp, ENDM);
        YY_BREAK
 case 143:
 YY_RULE_SETUP
-#line 518 "imcc\\imcc.l"
+#line 520 "imcc/imcc.l"
 {
         line++;
         DUP_AND_RET(valp, '\n');
@@ -3565,12 +3567,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 523 "imcc\\imcc.l"
+#line 525 "imcc/imcc.l"
 return LABEL;
        YY_BREAK
 case 145:
 YY_RULE_SETUP
-#line 524 "imcc\\imcc.l"
+#line 526 "imcc/imcc.l"
 {
         char *label;
        char *name = macros[num_macros].name;
@@ -3592,7 +3594,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 146:
 YY_RULE_SETUP
-#line 543 "imcc\\imcc.l"
+#line 545 "imcc/imcc.l"
 {
         char *label;
        char *name = macros[num_macros].name;
@@ -3609,39 +3611,39 @@ YY_RULE_SETUP
        YY_BREAK
 case 147:
 YY_RULE_SETUP
-#line 557 "imcc\\imcc.l"
+#line 559 "imcc/imcc.l"
 /* skip leading ws */;
        YY_BREAK
 case 148:
 YY_RULE_SETUP
-#line 558 "imcc\\imcc.l"
+#line 560 "imcc/imcc.l"
 DUP_AND_RET(valp, ' ');
        YY_BREAK
 case 149:
 YY_RULE_SETUP
-#line 559 "imcc\\imcc.l"
+#line 561 "imcc/imcc.l"
 DUP_AND_RET(valp, IDENTIFIER);
        YY_BREAK
 case 150:
 YY_RULE_SETUP
-#line 560 "imcc\\imcc.l"
+#line 562 "imcc/imcc.l"
 DUP_AND_RET(valp, MACRO);
        YY_BREAK
 case 151:
 YY_RULE_SETUP
-#line 561 "imcc\\imcc.l"
+#line 563 "imcc/imcc.l"
 DUP_AND_RET(valp, yytext[0]);
        YY_BREAK
 case YY_STATE_EOF(macro):
-#line 562 "imcc\\imcc.l"
+#line 564 "imcc/imcc.l"
 yyterminate();
        YY_BREAK
 case 152:
 YY_RULE_SETUP
-#line 564 "imcc\\imcc.l"
+#line 566 "imcc/imcc.l"
 ECHO;
        YY_BREAK
-#line 3645 "imcc\\imclexer.c"
+#line 3647 "imcc/imclexer.c"
 case YY_STATE_EOF(pod):
 case YY_STATE_EOF(cmt1):
 case YY_STATE_EOF(cmt2):
@@ -4535,7 +4537,7 @@ int main()
        return 0;
        }
 #endif
-#line 564 "imcc\\imcc.l"
+#line 566 "imcc/imcc.l"
 
 
 #ifdef yywrap

Modified: trunk/imcc/t/syn/const.t
==============================================================================
--- trunk/imcc/t/syn/const.t    (original)
+++ trunk/imcc/t/syn/const.t    Mon Oct 10 01:17:43 2005
@@ -421,7 +421,23 @@ CODE
 The line above is empty.
 OUT
 
+pir_output_like(<<'CODE', <<'OUT', "PIR heredoc: line numbers");
+.sub main :main
+    .local string s
+    .local pmc nil
+    bounds 1   # force line nums
+    s = <<"EOT"
+line 1
+line 2
+line 3
+line 4
+EOT
+    print nil  # force err
+.end
+CODE
+/^Null PMC.*:11\)$/s
+OUT
 
 
 ## remember to change the number of tests!
-BEGIN { plan tests => 22; }
+BEGIN { plan tests => 23; }

Reply via email to