Esempio n. 1
0
void Parser::parse_head(ptr<Token> token) {
    switch (token->type()) {
    case TOKEN_SEGMENT:
        parse_seg(token);
        break;
    case TOKEN_OPTION:
        prase_option();
        break;
    default:
        log_expect(token->loc(), "segment or option");
        break;
    }
}
Esempio n. 2
0
VALUE ext_parse_accept_value(VALUE _, volatile VALUE str) {
  if (str == Qnil) {
    return rb_ary_new();
  }

  str = trim_space_and_truncate(str);
  const char* s = RSTRING_PTR(str);
  long len = RSTRING_LEN(str);
  volatile VALUE out = rb_ary_new();
  qarray_len = 0;
  while (len > 0) {
    long seg_len = find_seg(s, len);
    if (seg_len == 0) {
      break;
    }
    parse_seg(s, seg_len, out);
    s += seg_len + 1;
    len -= seg_len + 1;
  }
  return out;
}