timepic: string support

This commit is contained in:
aiju 2015-09-29 20:49:28 +02:00
parent cde69a7822
commit a7b06e0fdd

View file

@ -55,6 +55,7 @@ enum {
SYM = -2,
NUM = -3,
EOF = -4,
STR = -5,
};
static int
@ -71,6 +72,7 @@ Tfmt(Fmt *f)
case SYM: return fmtprint(f, "'%s'", sname);
case NUM: return fmtprint(f, "%g", sval);
case EOF: return fmtprint(f, "EOF");
case STR: return fmtprint(f, "%#q", sname);
default: return fmtprint(f, "%d", n);
}
}
@ -210,6 +212,14 @@ lex(void)
*p = 0;
return SYM;
}
if(c == '\''){
for(p = sname; c = Bgetc(bp), c != '\'' || Bgetc(bp) == '\''; )
if(p < sname + sizeof(sname) - 1)
*p++ = c;
Bungetc(bp);
*p = 0;
return STR;
}
return c;
}
@ -337,6 +347,9 @@ parseval(Event *e)
return VH;
e->data = smprint("%g", sval);
return VMULT;
case STR:
e->data = strdup(sname);
return VMULT;
default:
error(lineno, "unexpected %T", t);
return VZ;
@ -651,6 +664,9 @@ diagram(char *l)
else
signal(s->name);
break;
case STR:
signal(sname);
break;
case CMD:
if(strcmp(sname, "TPE") == 0)
goto end;
@ -714,6 +730,7 @@ main(int argc, char **argv)
int i;
fmtinstall('T', Tfmt);
quotefmtinstall();
ARGBEGIN {
default: usage();