mirror of https://git.sr.ht/~rabbits/uxn
makelabel detects sublabels
This commit is contained in:
parent
683eb6b859
commit
9f7391395f
|
@ -179,6 +179,8 @@ static int
|
||||||
makelabel(char *name)
|
makelabel(char *name)
|
||||||
{
|
{
|
||||||
Label *l;
|
Label *l;
|
||||||
|
if(name[0] == '&')
|
||||||
|
name = makesublabel(sublabel, p.scope, name + 1);
|
||||||
if(!slen(name)) return error_asm("Label is empty");
|
if(!slen(name)) return error_asm("Label is empty");
|
||||||
if(findlabel(name)) return error_asm("Label is duplicate");
|
if(findlabel(name)) return error_asm("Label is duplicate");
|
||||||
if(sihx(name)) return error_asm("Label is hex number");
|
if(sihx(name)) return error_asm("Label is hex number");
|
||||||
|
@ -313,7 +315,7 @@ static int
|
||||||
parse(char *w, FILE *f)
|
parse(char *w, FILE *f)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char word[0x40], subw[0x40], c;
|
char word[0x40], c;
|
||||||
Macro *m;
|
Macro *m;
|
||||||
switch(w[0]) {
|
switch(w[0]) {
|
||||||
case '(': /* comment */
|
case '(': /* comment */
|
||||||
|
@ -350,7 +352,7 @@ parse(char *w, FILE *f)
|
||||||
p.scope[i] = '\0';
|
p.scope[i] = '\0';
|
||||||
break;
|
break;
|
||||||
case '&': /* sublabel */
|
case '&': /* sublabel */
|
||||||
if(!makesublabel(subw, p.scope, w + 1) || !makelabel(subw))
|
if(!makelabel(w))
|
||||||
return error_asm("Invalid sublabel");
|
return error_asm("Invalid sublabel");
|
||||||
break;
|
break;
|
||||||
case '#': /* literals hex */
|
case '#': /* literals hex */
|
||||||
|
|
Loading…
Reference in New Issue