new backquote syntax
This commit is contained in:
parent
c8661ffad4
commit
6c7ed6b0e6
1 changed files with 30 additions and 0 deletions
|
|
@ -341,6 +341,33 @@ eatnl(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
bqsymbol(void)
|
||||||
|
{
|
||||||
|
int c;
|
||||||
|
char *p;
|
||||||
|
Lsym *s;
|
||||||
|
|
||||||
|
symbol[0] = 0;
|
||||||
|
p = symbol;
|
||||||
|
while((c = lexc()) != '`'){
|
||||||
|
if(c == Eof)
|
||||||
|
error("eof in backquote");
|
||||||
|
if(c == '\n')
|
||||||
|
error("newline in backquote");
|
||||||
|
*p++ = c;
|
||||||
|
}
|
||||||
|
if(p >= symbol+sizeof symbol)
|
||||||
|
sysfatal("overflow in bqsymbol");
|
||||||
|
*p = 0;
|
||||||
|
|
||||||
|
s = look(symbol);
|
||||||
|
if(s == 0)
|
||||||
|
s = enter(symbol, Tid);
|
||||||
|
yylval.sym = s;
|
||||||
|
return s->lexval;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
yylex(void)
|
yylex(void)
|
||||||
{
|
{
|
||||||
|
|
@ -360,6 +387,9 @@ loop:
|
||||||
}
|
}
|
||||||
return Eof;
|
return Eof;
|
||||||
|
|
||||||
|
case '`':
|
||||||
|
return bqsymbol();
|
||||||
|
|
||||||
case '"':
|
case '"':
|
||||||
eatstring();
|
eatstring();
|
||||||
return Tstring;
|
return Tstring;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue