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; }