ASTNode ActionAST::parse_cmp(ActionParser& parser) { auto current = parser.current(); if (current.type == TokenType::open_paren) { parser.next(); auto inner_expr = this->parse_or(parser); current = parser.current(); if (current.type != TokenType::close_paren) return TokenType::error; parser.next(); return inner_expr; } else { auto left_node = parse_left(parser); if (left_node.type == TokenType::error) return TokenType::error; auto op_node = parse_op(parser); if (op_node.type == TokenType::error) return TokenType::error; auto right_node = parse_right(parser); if (right_node.type == TokenType::error) return TokenType::error; op_node.add_child(left_node); op_node.add_child(right_node); return op_node; } }
int bot_parse_service(struct IRC *bot, char *server, char *command, char *me, char *channel, char *msg){ if(DEBUG){ printf("[server: %s] [command: %s] [me: %s] [channel: %s] %s\n",server,command,me,channel,msg); } // 353 is the NAMES list if(strcasecmp(command, "353") == 0){ parse_op(bot,msg); if(DEBUG){ print_op(bot); } } if(strcasecmp(command, "MODE") ==0){ if((msg[0]=='+') && (msg[1]=='o')){ // if it's not already in the oplist if(is_op(bot,&msg[3])==-1){ add_op(bot,&msg[3]); if(DEBUG){ print_op(bot); } } } else if((msg[0]=='-') && (msg[1]=='o')){ if(is_op(bot,&msg[3])!=-1){ rm_op(bot,&msg[3]); if(DEBUG){ print_op(bot); } } } } return 0; }
static void parse_ops(int argc, char **argv, int i) { enum { STATE_INIT, STATE_GOT_FILTER, STATE_GOT_OP } state = STATE_INIT; struct pci_filter filter; struct pci_dev **selected_devices = NULL; while (i < argc) { char *c = argv[i++]; if (*c == '-') { if (state != STATE_GOT_FILTER) pci_filter_init(pacc, &filter); i = parse_filter(argc, argv, i-1, &filter); state = STATE_GOT_FILTER; } else { if (state == STATE_INIT) parse_err("Filter specification expected"); if (state == STATE_GOT_FILTER) selected_devices = select_devices(&filter); if (!selected_devices[0] && !force) fprintf(stderr, "setpci: Warning: No devices selected for \"%s\".\n", c); parse_op(c, selected_devices); state = STATE_GOT_OP; } } if (state == STATE_INIT) parse_err("No operation specified"); }
static struct expr * parse_timecmp() { enum prop prop; enum op op; if (token("atime")) prop = PROP_ATIME; else if (token("ctime")) prop = PROP_CTIME; else if (token("mtime")) prop = PROP_MTIME; else if (token("date")) prop = PROP_DATE; else return parse_cmp(); op = parse_op(); if (!op) parse_error("invalid comparison at '%.15s'", pos); int64_t n; if (parse_num(&n) || parse_dur(&n)) { struct expr *e = mkexpr(op); e->a.prop = prop; e->b.num = n; return e; } return 0; }
t_parse *parse_args(char *a, char *b, char *op) { t_parse *parse; parse = (t_parse*)malloc(sizeof(t_parse)); if (*a) parse->a = ft_atoi(a); else parse->a = 0; if (*b) parse->b = ft_atoi(b); else parse->b = 0; parse->op = parse_op(op); return (parse); }
static struct expr * parse_cmp() { enum prop prop; enum op op; if (token("depth")) prop = PROP_DEPTH; else if (token("kept")) prop = PROP_KEPT; else if (token("index")) prop = PROP_INDEX; else if (token("replies")) { prop = PROP_REPLIES; need_thr = 1; } else if (token("size")) prop = PROP_SIZE; else if (token("total")) prop = PROP_TOTAL; else return parse_flag(); if (!(op = parse_op())) parse_error("invalid comparison at '%.15s'", pos); int64_t n; if (parse_num(&n)) { struct expr *e = mkexpr(op); e->a.prop = prop; e->b.num = n; return e; } else if (token("cur")) { struct expr *e = mkexpr(op); e->a.prop = prop; e->b.var = VAR_CUR; e->extra = 1; return e; } return 0; }
static void dump_inst(struct dump_info *di, const unsigned **assem, struct sh_op op, const struct sh_opcode_info *info) { struct dump_op dop; boolean not_first_arg = FALSE; uint i; assert(info->num_dst <= 1); di->indent -= info->pre_dedent; dump_indent(di->indent); di->indent += info->post_indent; dump_op(op, info->mnemonic); parse_op(di, assem, &dop, info->num_dst, info->num_src); if (info->num_dst > 0) { dump_dstreg(dop.dst, &dop.dstind, di); not_first_arg = TRUE; } for (i = 0; i < info->num_src; i++) { if (not_first_arg) { _debug_printf(", "); } else { _debug_printf(" "); } dump_srcreg(dop.src[i], &dop.srcind[i], di); not_first_arg = TRUE; } _debug_printf("\n"); }
error_code sm_parse_op(char* str, instr_operation *op) { skip_whitespace(&str); if('\0' == *str) { return INSTR_PARSING_ERROR; } *op = parse_op(*str); return SUCCESS; }