Lines Matching refs:lex

530 static int lex_init(struct lexer *lex, const char *in, size_t in_len)  in lex_init()  argument
535 lex->p = in; in lex_init()
536 lex->term_end = in; in lex_init()
537 lex->end = in + in_len; in lex_init()
541 static int lex_do(struct lexer *lex) in lex_do() argument
543 const char *p = lex->term_end, *end = lex->end, *term_end; in lex_do()
548 lex->p = end; in lex_do()
549 lex->term_end = end; in lex_do()
555 lex->p = p; in lex_do()
556 lex->term_end = term_end; in lex_do()
560 static int lex_eot(struct lexer *lex) in lex_eot() argument
562 return lex->p == lex->term_end; in lex_eot()
565 static int lex_peek_char(struct lexer *lex) in lex_peek_char() argument
567 return lex_eot(lex) ? -1 : *lex->p; in lex_peek_char()
570 static int lex_skip_char(struct lexer *lex) in lex_skip_char() argument
572 if (lex_eot(lex)) in lex_skip_char()
575 ++lex->p; in lex_skip_char()
579 static int lex_match(struct lexer *lex, const char *s, size_t s_len) in lex_match() argument
581 if ((size_t)(lex->term_end - lex->p) != s_len) in lex_match()
584 if (memcmp(lex->p, s, s_len)) in lex_match()
590 static void lex_get_rest(struct lexer *lex, const char **str, size_t *str_l) in lex_get_rest() argument
592 *str = lex->p; in lex_get_rest()
593 *str_l = lex->term_end - lex->p; in lex_get_rest()
596 static int lex_extract_to(struct lexer *lex, char c, in lex_extract_to() argument
599 const char *p = lex->p, *term_end = lex->term_end, *s; in lex_extract_to()
607 lex->p = ++s; in lex_extract_to()
649 static int lex_fail(struct lexer *lex, const char *msg) in lex_fail() argument
655 lex->p = lex->term_end = lex->end; in lex_fail()
682 struct lexer lex = {0}; in ossl_qlog_set_filter() local
690 if (!lex_init(&lex, filter, strlen(filter))) in ossl_qlog_set_filter()
693 while (lex_do(&lex)) { in ossl_qlog_set_filter()
694 c = lex_peek_char(&lex); in ossl_qlog_set_filter()
697 lex_skip_char(&lex); in ossl_qlog_set_filter()
699 c = lex_peek_char(&lex); in ossl_qlog_set_filter()
701 return lex_fail(&lex, "expected alphanumeric name or '*'" in ossl_qlog_set_filter()
704 return lex_fail(&lex, "expected +/- or alphanumeric name or '*'"); in ossl_qlog_set_filter()
709 if (lex_match(&lex, "*", 1)) { in ossl_qlog_set_filter()
714 if (!lex_extract_to(&lex, ':', &cat, &cat_l)) in ossl_qlog_set_filter()
715 return lex_fail(&lex, "expected ':' after category name"); in ossl_qlog_set_filter()
717 lex_get_rest(&lex, &event, &event_l); in ossl_qlog_set_filter()
719 return lex_fail(&lex, "expected alphanumeric category name or '*'"); in ossl_qlog_set_filter()
721 return lex_fail(&lex, "expected alphanumeric event name or '*'"); in ossl_qlog_set_filter()