-/*----- Test field types --------------------------------------------------*
- *
- * Really lazy parser. Sorry.
- */
-
-static void skipws(const char **p)
-{
- while (isspace((unsigned char)**p)) (*p)++;
-}
-
-static void ckchar(const char **p, int ch)
-{ skipws(p); if (**p == ch) (*p)++; }
-
-static void ckend(const char **p)
-{
- skipws(p);
- if (**p) {
- fprintf(stderr, "syntax error: junk at end of line\n");
- abort();
- }
-}
-
-static int ckstring(const char **p, const char **s)
-{
- int i;
- size_t n;
-
- skipws(p);
- for (i = 0; s[i]; i++) {
- n = strlen(s[i]);
- if (strncmp(*p, s[i], n) == 0 && !isalnum((unsigned char)(*p)[n])) {
- *p += n;
- return (i);
- }
- }
- fprintf(stderr, "syntax error: couldn't recognize keyword\n");
- abort();
-}
-
-static mp *getmp(const char **p)
-{
- char *q;
- mp *m;
- skipws(p);
- m = mp_readstring(MP_NEW, *p, &q, 0);
- if (!m || isalnum((unsigned char)*q)) {
- fprintf(stderr, "syntax error: bad number\n");
- abort();
- }
- *p = q;
- return (m);
-}