Example #1
0
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;
    }
}
Example #2
0
File: bot.c Project: tbhCiro/bot
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;
}
Example #3
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");
}
Example #4
0
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;
}
Example #5
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);
}
Example #6
0
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");
}
Example #8
0
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;
}