timepic: string support
This commit is contained in:
parent
cde69a7822
commit
a7b06e0fdd
|
@ -55,6 +55,7 @@ enum {
|
||||||
SYM = -2,
|
SYM = -2,
|
||||||
NUM = -3,
|
NUM = -3,
|
||||||
EOF = -4,
|
EOF = -4,
|
||||||
|
STR = -5,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -71,6 +72,7 @@ Tfmt(Fmt *f)
|
||||||
case SYM: return fmtprint(f, "'%s'", sname);
|
case SYM: return fmtprint(f, "'%s'", sname);
|
||||||
case NUM: return fmtprint(f, "%g", sval);
|
case NUM: return fmtprint(f, "%g", sval);
|
||||||
case EOF: return fmtprint(f, "EOF");
|
case EOF: return fmtprint(f, "EOF");
|
||||||
|
case STR: return fmtprint(f, "%#q", sname);
|
||||||
default: return fmtprint(f, "%d", n);
|
default: return fmtprint(f, "%d", n);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -210,6 +212,14 @@ lex(void)
|
||||||
*p = 0;
|
*p = 0;
|
||||||
return SYM;
|
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;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -337,6 +347,9 @@ parseval(Event *e)
|
||||||
return VH;
|
return VH;
|
||||||
e->data = smprint("%g", sval);
|
e->data = smprint("%g", sval);
|
||||||
return VMULT;
|
return VMULT;
|
||||||
|
case STR:
|
||||||
|
e->data = strdup(sname);
|
||||||
|
return VMULT;
|
||||||
default:
|
default:
|
||||||
error(lineno, "unexpected %T", t);
|
error(lineno, "unexpected %T", t);
|
||||||
return VZ;
|
return VZ;
|
||||||
|
@ -651,6 +664,9 @@ diagram(char *l)
|
||||||
else
|
else
|
||||||
signal(s->name);
|
signal(s->name);
|
||||||
break;
|
break;
|
||||||
|
case STR:
|
||||||
|
signal(sname);
|
||||||
|
break;
|
||||||
case CMD:
|
case CMD:
|
||||||
if(strcmp(sname, "TPE") == 0)
|
if(strcmp(sname, "TPE") == 0)
|
||||||
goto end;
|
goto end;
|
||||||
|
@ -714,6 +730,7 @@ main(int argc, char **argv)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
fmtinstall('T', Tfmt);
|
fmtinstall('T', Tfmt);
|
||||||
|
quotefmtinstall();
|
||||||
|
|
||||||
ARGBEGIN {
|
ARGBEGIN {
|
||||||
default: usage();
|
default: usage();
|
||||||
|
|
Loading…
Reference in a new issue