1CALLOUTS.BUILTIN.ja 2018/03/26 2 3 4* FAIL (前進) 5 6 (*FAIL) 7 8 常に失敗する 9 10 11* MISMATCH (前進) 12 13 (*MISMATCH) 14 15 照合を中止する 16 検索は継続する 17 18 19* ERROR (前進) 20 21 (*ERROR{n::LONG}) 22 23 検索/照合を中止する 24 戻り値は引数'n'の値。(-1より小さい負の値でなければならない) 25 'n'はオプション引数で、デフォルト値はONIG_ABORT 26 27 28* MAX (前進/後退) 29 30 (*MAX{n::LONG/TAG, c::CHAR}) 31 32 成功(デフォルト)、前進または後退回数を制限する 33 'n'がTAGのときは、そのTAGのcalloutのslot 0の値が使用される 34 'c'引数の値によって、slot 0の値が変化する 35 'c'はオプション引数で、デフォルト値は'X' 36 37 例: "(?:(*COUNT[T]{X})a)*(?:(*MAX{T})c)*" 38 39 [callout data] 40 slot 0: '>': 前進回数, '<': 後退回数, 'X': 成功回数(デフォルト) 41 42 43* COUNT (前進/後退) 44 45 (*COUNT{c::CHAR}) 46 47 カウンタ 48 'c'引数の値によって、slot 0の値が変化する 49 'c'はオプション引数で、デフォルト値は'>' 50 51 [callout data] 52 slot 0: '>': 前進回数(デフォルト), '<': 後退回数, 'X': 成功回数 53 slot 1: 前進回数 54 slot 2: 後退回数 55 56 (* 成功回数 = 前進回数 - 後退回数) 57 58 ** ONIG_OPTION_FIND_LONGEST または ONIG_OPTION_FIND_NOT_EMPTY が使用されると 59 正確な動作ができなくなる 60 61 62* TOTAL_COUNT (前進/後退) 63 64 (*TOTAL_COUNT{c::CHAR}) 65 66 これはCOUNTとほとんど同じ 67 しかし、カウントが検索過程で積算される 68 'c'はオプション引数で、デフォルト値は'>' 69 70 [callout data] 71 slot 0: '>': 前進回数(デフォルト), '<': 後退回数, 'X': 成功回数 72 slot 1: 前進回数 73 slot 2: 後退回数 74 75 ** ONIG_OPTION_FIND_LONGEST または ONIG_OPTION_FIND_NOT_EMPTY が使用されると 76 正確な動作ができなくなる 77 78 79* CMP (前進) 80 81 (*CMP{x::TAG/LONG, op::STRING, y::TAG/LONG}) 82 83 xの値とyの値をop演算子で比較する 84 x, yがTAGのときにはそのcalloutのslot 0の値が参照される 85 86 op: '==', '!=', '>', '<', '>=', '<=' 87 88 例: "(?:(*MAX[TA]{7})a|(*MAX[TB]{5})b)*(*CMP{TA,>=,4})" 89 90 [callout data] 91 slot 0: op値 (src/regexec.c の中の enum OP_CMP) 92 93//END 94