Esempio n. 1
0
int picolParseVar(picolParser *p) {
    int parened = 0;
    p->start = ++p->p; p->len--; /* skip the $ */
    if (*p->p == '{') {
        picolParseBrace(p);
        p->type = PT_VAR;
        return PICOL_OK;
    }
    if(COLONED(p->p)) {p->p += 2; p->len -= 2;}
    /*  while(isalnum(*p->p) || strchr("()_",*p->p)) { p->p++; p->len--; }*/
#if 1
    while(myisalnum(*p->p) || *p->p == '_' || *p->p=='('||*p->p==')') {
        if(*p->p=='(') parened = 1;
        p->p++; p->len--;
    }
    if(!parened && *(p->p-1)==')') {p->p--; p->len++;}
#endif
    if (p->start == p->p) { /* It's just a single char string "$" */
        picolParseString(p);
        p->start--; p->len++; /* back to the $ sign */
        p->type = PT_VAR;
        return PICOL_OK;
    } else RETURN_PARSED(PT_VAR);
}
Esempio n. 2
0
static char *next_word(char *p, char *end)
{
	while (p < end && !myisalnum(p)) p = next_char(p);
	while (p < end && myisalnum(p)) p = next_char(p);
	return p;
}
Esempio n. 3
0
static char *prev_word(char *p, char *start)
{
	while (p > start && !myisalnum(prev_char(p, start))) p = prev_char(p, start);
	while (p > start && myisalnum(prev_char(p, start))) p = prev_char(p, start);
	return p;
}