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; } }
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; }