games/mix: fix incorrect line numbers
This commit is contained in:
parent
d1c0f53fcd
commit
60befe7df1
3 changed files with 37 additions and 36 deletions
2
rc/bin/g
2
rc/bin/g
|
@ -14,7 +14,7 @@ case 0
|
||||||
exit usage
|
exit usage
|
||||||
case 1
|
case 1
|
||||||
pattern=$1
|
pattern=$1
|
||||||
files=(`{ls *.[bcChlmsy] *.asm *.awk *.cc *.cgi *.cpp *.cs *.go *.goc *.java *.lx *.ms *.pl *.py *.rc *.tex *.xy >[2]/dev/null})
|
files=(`{ls *.[bcChlmsy] *.ml[iyl] *.ml *.asm *.awk *.cc *.cgi *.cpp *.cs *.go *.goc *.java *.lx *.ms *.pl *.py *.rc *.tex *.xy >[2]/dev/null})
|
||||||
case *
|
case *
|
||||||
pattern=$1
|
pattern=$1
|
||||||
shift
|
shift
|
||||||
|
|
|
@ -320,6 +320,14 @@ getr(void)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ungetr(Rune r)
|
||||||
|
{
|
||||||
|
if(r == '\n')
|
||||||
|
line--;
|
||||||
|
Bungetrune(&bin);
|
||||||
|
}
|
||||||
|
|
||||||
long
|
long
|
||||||
yylex(void)
|
yylex(void)
|
||||||
{
|
{
|
||||||
|
@ -339,22 +347,16 @@ Loop:
|
||||||
case '\t':
|
case '\t':
|
||||||
case ' ':
|
case ' ':
|
||||||
goto Loop;
|
goto Loop;
|
||||||
case '\n':
|
case '\n': case '*': case '+':
|
||||||
case '*':
|
case '-': case ':': case ',':
|
||||||
case '+':
|
case '(': case ')': case '=':
|
||||||
case '-':
|
|
||||||
case ':':
|
|
||||||
case ',':
|
|
||||||
case '(':
|
|
||||||
case ')':
|
|
||||||
case '=':
|
|
||||||
return r;
|
return r;
|
||||||
case '/':
|
case '/':
|
||||||
r = getr();
|
r = getr();
|
||||||
if(r == '/') {
|
if(r == '/')
|
||||||
return LSS;
|
return LSS;
|
||||||
} else
|
else
|
||||||
Bungetrune(&bin);
|
ungetr(r);
|
||||||
return '/';
|
return '/';
|
||||||
case '"':
|
case '"':
|
||||||
for(bp = buf; bp < buf+5; bp++) {
|
for(bp = buf; bp < buf+5; bp++) {
|
||||||
|
@ -376,23 +378,13 @@ Loop:
|
||||||
*bp++ = r;
|
*bp++ = r;
|
||||||
if(isnum && (r >= Runeself || !isdigit(r)))
|
if(isnum && (r >= Runeself || !isdigit(r)))
|
||||||
isnum = 0;
|
isnum = 0;
|
||||||
r = getr();
|
switch(r = getr()) {
|
||||||
switch(r) {
|
case Beof: case '\t': case '\n':
|
||||||
case Beof:
|
case '+': case '-': case '*':
|
||||||
case '\t':
|
case ':': case ',': case '(':
|
||||||
case '\n':
|
case ')': case '=': case ' ':
|
||||||
case '+':
|
case '/': case '#':
|
||||||
case '-':
|
ungetr(r);
|
||||||
case '*':
|
|
||||||
case ':':
|
|
||||||
case ',':
|
|
||||||
case '(':
|
|
||||||
case ')':
|
|
||||||
case '=':
|
|
||||||
case ' ':
|
|
||||||
case '/':
|
|
||||||
case '#':
|
|
||||||
Bungetrune(&bin);
|
|
||||||
*bp = '\0';
|
*bp = '\0';
|
||||||
goto End;
|
goto End;
|
||||||
}
|
}
|
||||||
|
@ -407,6 +399,18 @@ End:
|
||||||
return yylval.sym->lex;
|
return yylval.sym->lex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Sym*
|
||||||
|
getsym(char *name)
|
||||||
|
{
|
||||||
|
Sym *s;
|
||||||
|
|
||||||
|
s = emallocz(sizeof(*s) + strlen(name));
|
||||||
|
strcpy(s->nbuf, name);
|
||||||
|
s->name = s->nbuf;
|
||||||
|
s->lex = LSYMREF;
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
Sym*
|
Sym*
|
||||||
sym(char *name)
|
sym(char *name)
|
||||||
{
|
{
|
||||||
|
@ -416,11 +420,7 @@ sym(char *name)
|
||||||
s = (Sym*)avllookup(syms, &l, 0);
|
s = (Sym*)avllookup(syms, &l, 0);
|
||||||
if(s != nil)
|
if(s != nil)
|
||||||
return s;
|
return s;
|
||||||
|
s = getsym(name);
|
||||||
s = emallocz(sizeof(*s) + strlen(name));
|
|
||||||
strcpy(s->nbuf, name);
|
|
||||||
s->name = s->nbuf;
|
|
||||||
s->lex = LSYMREF;
|
|
||||||
avlinsert(syms, s);
|
avlinsert(syms, s);
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,7 @@ void yyerror(char*, ...);
|
||||||
void vmerror(char*, ...);
|
void vmerror(char*, ...);
|
||||||
void skipto(char);
|
void skipto(char);
|
||||||
Sym *sym(char*);
|
Sym *sym(char*);
|
||||||
|
Sym *getsym(char*);
|
||||||
void sinit(void);
|
void sinit(void);
|
||||||
int asmfile(char*);
|
int asmfile(char*);
|
||||||
int V(u32int, int);
|
int V(u32int, int);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue