int picolGetToken(picolInterp *i, picolParser *p) { int rc; while(1) { if (!p->len) { if (p->type != PT_EOL && p->type != PT_EOF) p->type = PT_EOL; else p->type = PT_EOF; return PICOL_OK; } switch(*p->p) { case ' ': case '\t': if (p->insidequote) return picolParseString(p); else return picolParseSep(p); case '\n': case '\r': case ';': if (p->insidequote) return picolParseString(p); else return picolParseEol(p); case '[': rc = picolParseCmd(p); if(rc == PICOL_ERR) return picolErr(i,"missing close-bracket"); return rc; case '$': return picolParseVar(p); // case '#': if (p->type == PT_EOL) {picolParseComment(p);continue;} default: return picolParseString(p); } } }
int picolGetToken(struct picolParser *p) { while(1) { if (!p->len) { if (p->type != PT_EOL && p->type != PT_EOF) p->type = PT_EOL; else p->type = PT_EOF; return PICOL_OK; } switch(*p->p) { case ' ': case '\t': case '\r': if (p->insidequote) return picolParseString(p); return picolParseSep(p); case '\n': case ';': if (p->insidequote) return picolParseString(p); return picolParseEol(p); case '[': return picolParseCommand(p); case '$': return picolParseVar(p); case '#': if (p->type == PT_EOL) { picolParseComment(p); continue; } return picolParseString(p); default: return picolParseString(p); } } return PICOL_OK; /* unreached */ }