int f_for(ARG1) { if (mode == -1) { if (for_mode == 1) fatal_error("for: only one for allow",""); for_mode = 1; parse_loop(arg1, &for_start, &for_end, &for_step); } return 0; }
int parse_args(int ac, char **av, t_zappy_parse *zappy_parse) { int err; init_zappy_parse(zappy_parse); if ((err = parse_loop(ac, av, zappy_parse))) return (err); if ((err = check_args(zappy_parse))) return (err); return (0); }
static int parse_animation_object( osux_event *ev, char **split, unsigned size) { if (size < 8) return -OSUX_ERR_INVALID_EVENT_OBJECT; ev->object.layer = parse_layer(split[1]); ev->object.origin = parse_origin(split[2]); ev->object.filename = g_strdup(split[3]); ev->object.x = atoi(split[4]); ev->object.y = atoi(split[5]); ev->object.anim_frame_count = atoi(split[6]); ev->object.anim_frame_delay = atoi(split[7]); ev->object.anim_loop = EVENT_LOOP_FOREVER; if (size == 9) ev->object.anim_loop = parse_loop(split[8]); return 0; }
struct single *parse_single() { struct single *s; s = parse_io(); if (s != NULL) return s; s = parse_loop(); if (s != NULL) return s; s = parse_if(); if (s != NULL) return s; s = parse_assign(); if (s != NULL) return s; s = parse_gtfo(); if (s != NULL) return s; s = parse_halt(); if (s != NULL) return s; return NULL; }
/* parse a compound- or a simple-command * (pipeline and lists are done outside this) * ----------------------------------------------------------------------- */ union node *parse_command(struct parser *p, int tempflags) { enum tok_flag tok; union node *command; union node **rptr; tok = parse_gettok(p, tempflags); switch(tok) { /* T_FOR begins an iteration statement */ case T_FOR: command = parse_for(p); break; /* T_IF begins a case match statement */ case T_CASE: command = parse_case(p); break; /* T_IF begins a conditional statement */ case T_IF: command = parse_if(p); break; /* T_WHILE/T_UNTIL begin a for-loop statement */ case T_WHILE: case T_UNTIL: command = parse_loop(p); break; /* T_LP/T_BEGIN start a grouping compound */ case T_LP: case T_BEGIN: p->pushback++; command = parse_grouping(p); break; /* handle simple commands */ case T_NAME: case T_WORD: case T_REDIR: case T_ASSIGN: p->pushback++; command = parse_simple_command(p); break; /* it wasn't a compound command, return now */ default: p->pushback++; return NULL; } if(command) { /* they all can have redirections, so parse these now */ rptr = &command->ncmd.rdir; /* * in the case of a simple command there are maybe already * redirections in the list (because in a simple command they * can appear between arguments), so skip to the end of the list. */ while(*rptr) tree_next(rptr); while(parse_gettok(p, P_DEFAULT) & T_REDIR) tree_move(p->tree, rptr); } p->pushback++; return command; }