diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-12-01 06:59:17 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-12-01 06:59:17 -0800 |
commit | 40b56cf6878999799fff36b7f8d719de8d196d58 (patch) | |
tree | f3115f9863dff5410f8e36be4f93f7863e226645 /regex.c | |
parent | 4dec6b260812d1a30095aa24837730b50a661c17 (diff) | |
download | txr-40b56cf6878999799fff36b7f8d719de8d196d58.tar.gz txr-40b56cf6878999799fff36b7f8d719de8d196d58.tar.bz2 txr-40b56cf6878999799fff36b7f8d719de8d196d58.zip |
Adding functions fr^$, fr^, fr$ and frr.
* regex.c (regex_range_full_fun, regex_range_left_fun,
regex_range_right_fun, regex_range_search_fun): New functions.
(regex_init): Register fr^$, fr^, fr$ and frr intrinsics.
* txr.1: Documented.
Diffstat (limited to 'regex.c')
-rw-r--r-- | regex.c | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -2928,6 +2928,30 @@ val regex_range_all(val regex, val arg1, val arg2, val arg3) } } +val regex_range_full_fun(val regex, val pos) +{ + return curry_123_3(func_n3(regex_range_full), + regex, default_arg(pos, zero)); +} + +val regex_range_left_fun(val regex, val pos) +{ + return curry_123_3(func_n3(regex_range_left), + regex, default_arg(pos, zero)); +} + +val regex_range_right_fun(val regex, val end) +{ + if (null_or_missing_p(end)) + return curry_123_2(func_n3(regex_range_right), regex, end); + return curry_123_3(func_n3(regex_range_left), regex, end); +} + +val regex_range_search_fun(val regex, val start, val from_end) +{ + return curry_1234_1(func_n4(range_regex), regex, start, from_end); +} + val read_until_match(val regex, val stream_in, val include_match_in) { regex_machine_t regm; @@ -3116,6 +3140,10 @@ void regex_init(void) reg_fun(intern(lit("r$"), user_package), func_n3o(regex_range_right, 2)); reg_fun(intern(lit("rr"), user_package), func_n4o(regex_range_search, 2)); reg_fun(intern(lit("rra"), user_package), func_n4o(regex_range_all, 2)); + reg_fun(intern(lit("fr^$"), user_package), func_n2o(regex_range_full_fun, 1)); + reg_fun(intern(lit("fr^"), user_package), func_n2o(regex_range_left_fun, 1)); + reg_fun(intern(lit("fr$"), user_package), func_n2o(regex_range_right_fun, 1)); + reg_fun(intern(lit("frr"), user_package), func_n3o(regex_range_search_fun, 1)); init_special_char_sets(); } |