Ejemplo n.º 1
0
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);
        }
    }
}
Ejemplo n.º 2
0
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 */
}