esruby 0.0.0 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (385) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +6 -6
  3. data/bin/esruby +9 -0
  4. data/lib/esruby.rb +8 -0
  5. data/resources/mruby/build_config.rb +0 -1
  6. data/resources/mruby/mrbgems/mruby-print/mrblib/print.rb +1 -1
  7. data/resources/project_template/app/app.rb +2 -0
  8. data/resources/project_template/config.rb +35 -0
  9. data/resources/project_template/www/index.html +17 -0
  10. metadata +6 -377
  11. data/resources/mruby/bin/mirb +0 -0
  12. data/resources/mruby/bin/mrbc +0 -0
  13. data/resources/mruby/bin/mruby +0 -0
  14. data/resources/mruby/bin/mruby-strip +0 -0
  15. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/README.md +0 -82
  16. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrbgem.rake +0 -63
  17. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrblib/regexp_pcre.rb +0 -232
  18. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrblib/string_pcre.rb +0 -333
  19. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/132html +0 -313
  20. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/AUTHORS +0 -45
  21. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CMakeLists.txt +0 -959
  22. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/COPYING +0 -5
  23. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ChangeLog +0 -4981
  24. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CheckMan +0 -67
  25. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CleanTxt +0 -113
  26. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Detrail +0 -35
  27. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/HACKING +0 -473
  28. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/INSTALL +0 -370
  29. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/LICENCE +0 -92
  30. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Makefile.am +0 -877
  31. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Makefile.in +0 -2917
  32. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NEWS +0 -611
  33. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NON-AUTOTOOLS-BUILD +0 -639
  34. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NON-UNIX-USE +0 -7
  35. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/PrepareRelease +0 -253
  36. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/README +0 -935
  37. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunGrepTest +0 -551
  38. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunTest +0 -1015
  39. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunTest.bat +0 -616
  40. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/aclocal.m4 +0 -1230
  41. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/output.0 +0 -21280
  42. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/output.1 +0 -21280
  43. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/requests +0 -273
  44. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/traces.0 +0 -2421
  45. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/traces.1 +0 -1144
  46. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/COPYING-CMAKE-SCRIPTS +0 -22
  47. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindEditline.cmake +0 -17
  48. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindPackageHandleStandardArgs.cmake +0 -58
  49. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindReadline.cmake +0 -29
  50. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/compile +0 -343
  51. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config-cmake.h.in +0 -54
  52. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.guess +0 -1552
  53. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h +0 -392
  54. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h.generic +0 -392
  55. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h.in +0 -343
  56. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.sub +0 -1804
  57. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/configure +0 -21280
  58. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/configure.ac +0 -1082
  59. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/depcomp +0 -708
  60. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/dftables.c +0 -212
  61. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/index.html +0 -180
  62. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre-config.html +0 -109
  63. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre.html +0 -204
  64. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre16.html +0 -383
  65. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_assign_jit_stack.html +0 -76
  66. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_compile.html +0 -108
  67. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_compile2.html +0 -112
  68. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_config.html +0 -91
  69. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_copy_named_substring.html +0 -65
  70. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_copy_substring.html +0 -61
  71. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_dfa_exec.html +0 -128
  72. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_exec.html +0 -110
  73. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_study.html +0 -46
  74. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_substring.html +0 -46
  75. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_substring_list.html +0 -46
  76. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_fullinfo.html +0 -108
  77. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_named_substring.html +0 -68
  78. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_stringnumber.html +0 -57
  79. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_stringtable_entries.html +0 -60
  80. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_substring.html +0 -64
  81. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_substring_list.html +0 -61
  82. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_exec.html +0 -108
  83. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_stack_alloc.html +0 -55
  84. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_stack_free.html +0 -48
  85. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_maketables.html +0 -48
  86. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_pattern_to_host_byte_order.html +0 -58
  87. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_refcount.html +0 -51
  88. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_study.html +0 -68
  89. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_utf16_to_host_byte_order.html +0 -57
  90. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_version.html +0 -46
  91. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreapi.html +0 -2786
  92. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrebuild.html +0 -517
  93. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecallout.html +0 -243
  94. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecompat.html +0 -216
  95. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecpp.html +0 -368
  96. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcredemo.html +0 -426
  97. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcregrep.html +0 -757
  98. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrejit.html +0 -458
  99. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrelimits.html +0 -86
  100. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrematching.html +0 -233
  101. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrepartial.html +0 -474
  102. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrepattern.html +0 -2953
  103. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreperform.html +0 -195
  104. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreposix.html +0 -292
  105. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreprecompile.html +0 -158
  106. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcresample.html +0 -110
  107. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrestack.html +0 -225
  108. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcresyntax.html +0 -521
  109. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcretest.html +0 -1082
  110. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreunicode.html +0 -270
  111. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/index.html.src +0 -180
  112. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre-config.1 +0 -92
  113. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre-config.txt +0 -86
  114. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre.3 +0 -202
  115. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre.txt +0 -9909
  116. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre16.3 +0 -390
  117. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre32.3 +0 -389
  118. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_assign_jit_stack.3 +0 -61
  119. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_compile.3 +0 -98
  120. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_compile2.3 +0 -106
  121. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_config.3 +0 -76
  122. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_copy_named_substring.3 +0 -59
  123. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_copy_substring.3 +0 -52
  124. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_dfa_exec.3 +0 -125
  125. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_exec.3 +0 -103
  126. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_study.3 +0 -31
  127. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_substring.3 +0 -31
  128. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_substring_list.3 +0 -31
  129. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_fullinfo.3 +0 -95
  130. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_named_substring.3 +0 -62
  131. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_stringnumber.3 +0 -45
  132. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_stringtable_entries.3 +0 -48
  133. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_substring.3 +0 -55
  134. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_substring_list.3 +0 -49
  135. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_exec.3 +0 -104
  136. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_stack_alloc.3 +0 -45
  137. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_stack_free.3 +0 -35
  138. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_maketables.3 +0 -33
  139. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_pattern_to_host_byte_order.3 +0 -46
  140. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_refcount.3 +0 -36
  141. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_study.3 +0 -56
  142. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_utf16_to_host_byte_order.3 +0 -46
  143. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_utf32_to_host_byte_order.3 +0 -46
  144. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_version.3 +0 -31
  145. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreapi.3 +0 -2823
  146. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrebuild.3 +0 -520
  147. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecallout.3 +0 -214
  148. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecompat.3 +0 -185
  149. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecpp.3 +0 -348
  150. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcregrep.1 +0 -679
  151. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcregrep.txt +0 -740
  152. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrejit.3 +0 -437
  153. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrelimits.3 +0 -67
  154. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrematching.3 +0 -206
  155. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrepartial.3 +0 -445
  156. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrepattern.3 +0 -2983
  157. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreperform.3 +0 -177
  158. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreposix.3 +0 -270
  159. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreprecompile.3 +0 -151
  160. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcresample.3 +0 -99
  161. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrestack.3 +0 -215
  162. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcresyntax.3 +0 -496
  163. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcretest.1 +0 -1079
  164. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcretest.txt +0 -1012
  165. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreunicode.3 +0 -255
  166. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/perltest.txt +0 -42
  167. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/install-sh +0 -527
  168. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre.pc.in +0 -12
  169. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre16.pc.in +0 -12
  170. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre32.pc.in +0 -12
  171. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcrecpp.pc.in +0 -12
  172. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcreposix.pc.in +0 -13
  173. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ltmain.sh +0 -9636
  174. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ax_pthread.m4 +0 -309
  175. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/libtool.m4 +0 -7844
  176. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltoptions.m4 +0 -369
  177. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltsugar.m4 +0 -123
  178. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltversion.m4 +0 -23
  179. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/lt~obsolete.m4 +0 -98
  180. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/pcre_visibility.m4 +0 -89
  181. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp.bat +0 -66
  182. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp_c.txt +0 -20
  183. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp_l.txt +0 -20
  184. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/missing +0 -331
  185. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre-config.in +0 -133
  186. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h +0 -653
  187. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h.generic +0 -653
  188. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h.in +0 -653
  189. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_byte_order.c +0 -45
  190. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_chartables.c +0 -45
  191. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_compile.c +0 -45
  192. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_config.c +0 -45
  193. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_dfa_exec.c +0 -45
  194. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_exec.c +0 -45
  195. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_fullinfo.c +0 -45
  196. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_get.c +0 -45
  197. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_globals.c +0 -45
  198. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_jit_compile.c +0 -45
  199. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_maketables.c +0 -45
  200. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_newline.c +0 -45
  201. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_ord2utf16.c +0 -90
  202. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_printint.c +0 -45
  203. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_refcount.c +0 -45
  204. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_string_utils.c +0 -45
  205. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_study.c +0 -45
  206. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_tables.c +0 -45
  207. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_ucd.c +0 -45
  208. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_utf16_utils.c +0 -130
  209. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_valid_utf16.c +0 -156
  210. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_version.c +0 -45
  211. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_xclass.c +0 -45
  212. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_byte_order.c +0 -45
  213. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_chartables.c +0 -45
  214. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_compile.c +0 -45
  215. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_config.c +0 -45
  216. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_dfa_exec.c +0 -45
  217. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_exec.c +0 -45
  218. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_fullinfo.c +0 -45
  219. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_get.c +0 -45
  220. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_globals.c +0 -45
  221. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_jit_compile.c +0 -45
  222. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_maketables.c +0 -45
  223. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_newline.c +0 -45
  224. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_ord2utf32.c +0 -82
  225. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_printint.c +0 -45
  226. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_refcount.c +0 -45
  227. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_string_utils.c +0 -45
  228. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_study.c +0 -45
  229. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_tables.c +0 -45
  230. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_ucd.c +0 -45
  231. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_utf32_utils.c +0 -141
  232. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_valid_utf32.c +0 -131
  233. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_version.c +0 -45
  234. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_xclass.c +0 -45
  235. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_byte_order.c +0 -318
  236. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_chartables.c +0 -198
  237. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_chartables.c.dist +0 -198
  238. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_compile.c +0 -8386
  239. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_config.c +0 -186
  240. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_dfa_exec.c +0 -3582
  241. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_exec.c +0 -7049
  242. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_fullinfo.c +0 -231
  243. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_get.c +0 -662
  244. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_globals.c +0 -84
  245. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_internal.h +0 -2744
  246. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_jit_compile.c +0 -8560
  247. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_jit_test.c +0 -1614
  248. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_maketables.c +0 -151
  249. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_newline.c +0 -210
  250. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_ord2utf8.c +0 -94
  251. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_printint.c +0 -766
  252. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_refcount.c +0 -92
  253. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner.cc +0 -199
  254. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner.h +0 -172
  255. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner_unittest.cc +0 -159
  256. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_string_utils.c +0 -211
  257. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece.cc +0 -43
  258. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece.h.in +0 -179
  259. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece_unittest.cc +0 -150
  260. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_study.c +0 -1562
  261. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_tables.c +0 -655
  262. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_ucd.c +0 -3298
  263. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_valid_utf8.c +0 -312
  264. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_version.c +0 -98
  265. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_xclass.c +0 -198
  266. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp.cc +0 -922
  267. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp.h +0 -710
  268. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp_internal.h +0 -71
  269. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp_unittest.cc +0 -1291
  270. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpparg.h.in +0 -174
  271. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcredemo.c +0 -406
  272. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcregexp.pas +0 -845
  273. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcregrep.c +0 -3180
  274. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcreposix.c +0 -419
  275. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcreposix.h +0 -146
  276. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcretest.c +0 -5488
  277. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/perltest.pl +0 -237
  278. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitConfig.h +0 -110
  279. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitConfigInternal.h +0 -484
  280. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitExecAllocator.c +0 -289
  281. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitLir.c +0 -1766
  282. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitLir.h +0 -985
  283. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeARM_Thumb2.c +0 -2008
  284. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeARM_v5.c +0 -2515
  285. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeMIPS_32.c +0 -404
  286. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeMIPS_common.c +0 -1881
  287. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_32.c +0 -269
  288. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_64.c +0 -421
  289. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_common.c +0 -2014
  290. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeSPARC_32.c +0 -164
  291. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeSPARC_common.c +0 -1348
  292. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_32.c +0 -547
  293. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_64.c +0 -810
  294. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_common.c +0 -2836
  295. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitUtils.c +0 -332
  296. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepbinary +0 -0
  297. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepfilelist +0 -3
  298. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput +0 -611
  299. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput3 +0 -15
  300. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput8 +0 -11
  301. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinputv +0 -4
  302. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinputx +0 -43
  303. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/greplist +0 -7
  304. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutput +0 -707
  305. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutput8 +0 -12
  306. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutputN +0 -17
  307. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/greppatN4 +0 -2
  308. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16 +0 -0
  309. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16BE-1 +0 -0
  310. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16BE-2 +0 -0
  311. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16LE-1 +0 -0
  312. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16LE-2 +0 -0
  313. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32 +0 -0
  314. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32BE-1 +0 -0
  315. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32BE-2 +0 -0
  316. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32LE-1 +0 -0
  317. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32LE-2 +0 -0
  318. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved8 +0 -0
  319. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput1 +0 -5306
  320. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput10 +0 -1337
  321. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput11 +0 -135
  322. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput12 +0 -89
  323. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput13 +0 -9
  324. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput14 +0 -329
  325. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput15 +0 -430
  326. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput16 +0 -35
  327. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput17 +0 -296
  328. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput18 +0 -296
  329. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput19 +0 -22
  330. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput2 +0 -3813
  331. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput20 +0 -19
  332. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput21 +0 -16
  333. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput22 +0 -13
  334. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput23 +0 -16
  335. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput24 +0 -77
  336. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput25 +0 -32
  337. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput26 +0 -80
  338. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput3 +0 -95
  339. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput4 +0 -624
  340. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput5 +0 -772
  341. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput6 +0 -1319
  342. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput7 +0 -672
  343. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput8 +0 -4801
  344. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput9 +0 -717
  345. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinputEBC +0 -121
  346. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput1 +0 -8798
  347. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput10 +0 -2726
  348. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-16 +0 -713
  349. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-32 +0 -713
  350. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-8 +0 -713
  351. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput12 +0 -181
  352. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput13 +0 -21
  353. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput14 +0 -476
  354. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput15 +0 -1269
  355. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput16 +0 -121
  356. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput17 +0 -505
  357. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput18-16 +0 -1022
  358. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput18-32 +0 -1019
  359. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput19 +0 -88
  360. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput2 +0 -12484
  361. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput20 +0 -27
  362. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput21-16 +0 -90
  363. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput21-32 +0 -90
  364. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput22-16 +0 -71
  365. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput22-32 +0 -71
  366. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput23 +0 -42
  367. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput24 +0 -145
  368. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput25 +0 -79
  369. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput26 +0 -148
  370. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput3 +0 -169
  371. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput4 +0 -1094
  372. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput5 +0 -1849
  373. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput6 +0 -2137
  374. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput7 +0 -1473
  375. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput8 +0 -8019
  376. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput9 +0 -1371
  377. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutputEBC +0 -182
  378. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/wintestinput3 +0 -91
  379. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/wintestoutput3 +0 -166
  380. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ucp.h +0 -197
  381. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/run_test.rb +0 -23
  382. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/src/mruby_regexp_pcre.c +0 -364
  383. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/matchdata.rb +0 -94
  384. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/regexp.rb +0 -264
  385. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/string.rb +0 -201
@@ -1,206 +0,0 @@
1
- .TH PCREMATCHING 3 "08 January 2012" "PCRE 8.30"
2
- .SH NAME
3
- PCRE - Perl-compatible regular expressions
4
- .SH "PCRE MATCHING ALGORITHMS"
5
- .rs
6
- .sp
7
- This document describes the two different algorithms that are available in PCRE
8
- for matching a compiled regular expression against a given subject string. The
9
- "standard" algorithm is the one provided by the \fBpcre_exec()\fP,
10
- \fBpcre16_exec()\fP and \fBpcre32_exec()\fP functions. These work in the same
11
- as as Perl's matching function, and provide a Perl-compatible matching operation.
12
- The just-in-time (JIT) optimization that is described in the
13
- .\" HREF
14
- \fBpcrejit\fP
15
- .\"
16
- documentation is compatible with these functions.
17
- .P
18
- An alternative algorithm is provided by the \fBpcre_dfa_exec()\fP,
19
- \fBpcre16_dfa_exec()\fP and \fBpcre32_dfa_exec()\fP functions; they operate in
20
- a different way, and are not Perl-compatible. This alternative has advantages
21
- and disadvantages compared with the standard algorithm, and these are described
22
- below.
23
- .P
24
- When there is only one possible way in which a given subject string can match a
25
- pattern, the two algorithms give the same answer. A difference arises, however,
26
- when there are multiple possibilities. For example, if the pattern
27
- .sp
28
- ^<.*>
29
- .sp
30
- is matched against the string
31
- .sp
32
- <something> <something else> <something further>
33
- .sp
34
- there are three possible answers. The standard algorithm finds only one of
35
- them, whereas the alternative algorithm finds all three.
36
- .
37
- .
38
- .SH "REGULAR EXPRESSIONS AS TREES"
39
- .rs
40
- .sp
41
- The set of strings that are matched by a regular expression can be represented
42
- as a tree structure. An unlimited repetition in the pattern makes the tree of
43
- infinite size, but it is still a tree. Matching the pattern to a given subject
44
- string (from a given starting point) can be thought of as a search of the tree.
45
- There are two ways to search a tree: depth-first and breadth-first, and these
46
- correspond to the two matching algorithms provided by PCRE.
47
- .
48
- .
49
- .SH "THE STANDARD MATCHING ALGORITHM"
50
- .rs
51
- .sp
52
- In the terminology of Jeffrey Friedl's book "Mastering Regular
53
- Expressions", the standard algorithm is an "NFA algorithm". It conducts a
54
- depth-first search of the pattern tree. That is, it proceeds along a single
55
- path through the tree, checking that the subject matches what is required. When
56
- there is a mismatch, the algorithm tries any alternatives at the current point,
57
- and if they all fail, it backs up to the previous branch point in the tree, and
58
- tries the next alternative branch at that level. This often involves backing up
59
- (moving to the left) in the subject string as well. The order in which
60
- repetition branches are tried is controlled by the greedy or ungreedy nature of
61
- the quantifier.
62
- .P
63
- If a leaf node is reached, a matching string has been found, and at that point
64
- the algorithm stops. Thus, if there is more than one possible match, this
65
- algorithm returns the first one that it finds. Whether this is the shortest,
66
- the longest, or some intermediate length depends on the way the greedy and
67
- ungreedy repetition quantifiers are specified in the pattern.
68
- .P
69
- Because it ends up with a single path through the tree, it is relatively
70
- straightforward for this algorithm to keep track of the substrings that are
71
- matched by portions of the pattern in parentheses. This provides support for
72
- capturing parentheses and back references.
73
- .
74
- .
75
- .SH "THE ALTERNATIVE MATCHING ALGORITHM"
76
- .rs
77
- .sp
78
- This algorithm conducts a breadth-first search of the tree. Starting from the
79
- first matching point in the subject, it scans the subject string from left to
80
- right, once, character by character, and as it does this, it remembers all the
81
- paths through the tree that represent valid matches. In Friedl's terminology,
82
- this is a kind of "DFA algorithm", though it is not implemented as a
83
- traditional finite state machine (it keeps multiple states active
84
- simultaneously).
85
- .P
86
- Although the general principle of this matching algorithm is that it scans the
87
- subject string only once, without backtracking, there is one exception: when a
88
- lookaround assertion is encountered, the characters following or preceding the
89
- current point have to be independently inspected.
90
- .P
91
- The scan continues until either the end of the subject is reached, or there are
92
- no more unterminated paths. At this point, terminated paths represent the
93
- different matching possibilities (if there are none, the match has failed).
94
- Thus, if there is more than one possible match, this algorithm finds all of
95
- them, and in particular, it finds the longest. The matches are returned in
96
- decreasing order of length. There is an option to stop the algorithm after the
97
- first match (which is necessarily the shortest) is found.
98
- .P
99
- Note that all the matches that are found start at the same point in the
100
- subject. If the pattern
101
- .sp
102
- cat(er(pillar)?)?
103
- .sp
104
- is matched against the string "the caterpillar catchment", the result will be
105
- the three strings "caterpillar", "cater", and "cat" that start at the fifth
106
- character of the subject. The algorithm does not automatically move on to find
107
- matches that start at later positions.
108
- .P
109
- There are a number of features of PCRE regular expressions that are not
110
- supported by the alternative matching algorithm. They are as follows:
111
- .P
112
- 1. Because the algorithm finds all possible matches, the greedy or ungreedy
113
- nature of repetition quantifiers is not relevant. Greedy and ungreedy
114
- quantifiers are treated in exactly the same way. However, possessive
115
- quantifiers can make a difference when what follows could also match what is
116
- quantified, for example in a pattern like this:
117
- .sp
118
- ^a++\ew!
119
- .sp
120
- This pattern matches "aaab!" but not "aaa!", which would be matched by a
121
- non-possessive quantifier. Similarly, if an atomic group is present, it is
122
- matched as if it were a standalone pattern at the current point, and the
123
- longest match is then "locked in" for the rest of the overall pattern.
124
- .P
125
- 2. When dealing with multiple paths through the tree simultaneously, it is not
126
- straightforward to keep track of captured substrings for the different matching
127
- possibilities, and PCRE's implementation of this algorithm does not attempt to
128
- do this. This means that no captured substrings are available.
129
- .P
130
- 3. Because no substrings are captured, back references within the pattern are
131
- not supported, and cause errors if encountered.
132
- .P
133
- 4. For the same reason, conditional expressions that use a backreference as the
134
- condition or test for a specific group recursion are not supported.
135
- .P
136
- 5. Because many paths through the tree may be active, the \eK escape sequence,
137
- which resets the start of the match when encountered (but may be on some paths
138
- and not on others), is not supported. It causes an error if encountered.
139
- .P
140
- 6. Callouts are supported, but the value of the \fIcapture_top\fP field is
141
- always 1, and the value of the \fIcapture_last\fP field is always -1.
142
- .P
143
- 7. The \eC escape sequence, which (in the standard algorithm) always matches a
144
- single data unit, even in UTF-8, UTF-16 or UTF-32 modes, is not supported in
145
- these modes, because the alternative algorithm moves through the subject string
146
- one character (not data unit) at a time, for all active paths through the tree.
147
- .P
148
- 8. Except for (*FAIL), the backtracking control verbs such as (*PRUNE) are not
149
- supported. (*FAIL) is supported, and behaves like a failing negative assertion.
150
- .
151
- .
152
- .SH "ADVANTAGES OF THE ALTERNATIVE ALGORITHM"
153
- .rs
154
- .sp
155
- Using the alternative matching algorithm provides the following advantages:
156
- .P
157
- 1. All possible matches (at a single point in the subject) are automatically
158
- found, and in particular, the longest match is found. To find more than one
159
- match using the standard algorithm, you have to do kludgy things with
160
- callouts.
161
- .P
162
- 2. Because the alternative algorithm scans the subject string just once, and
163
- never needs to backtrack (except for lookbehinds), it is possible to pass very
164
- long subject strings to the matching function in several pieces, checking for
165
- partial matching each time. Although it is possible to do multi-segment
166
- matching using the standard algorithm by retaining partially matched
167
- substrings, it is more complicated. The
168
- .\" HREF
169
- \fBpcrepartial\fP
170
- .\"
171
- documentation gives details of partial matching and discusses multi-segment
172
- matching.
173
- .
174
- .
175
- .SH "DISADVANTAGES OF THE ALTERNATIVE ALGORITHM"
176
- .rs
177
- .sp
178
- The alternative algorithm suffers from a number of disadvantages:
179
- .P
180
- 1. It is substantially slower than the standard algorithm. This is partly
181
- because it has to search for all possible matches, but is also because it is
182
- less susceptible to optimization.
183
- .P
184
- 2. Capturing parentheses and back references are not supported.
185
- .P
186
- 3. Although atomic groups are supported, their use does not provide the
187
- performance advantage that it does for the standard algorithm.
188
- .
189
- .
190
- .SH AUTHOR
191
- .rs
192
- .sp
193
- .nf
194
- Philip Hazel
195
- University Computing Service
196
- Cambridge CB2 3QH, England.
197
- .fi
198
- .
199
- .
200
- .SH REVISION
201
- .rs
202
- .sp
203
- .nf
204
- Last updated: 08 January 2012
205
- Copyright (c) 1997-2012 University of Cambridge.
206
- .fi
@@ -1,445 +0,0 @@
1
- .TH PCREPARTIAL 3 "24 June 2012" "PCRE 8.31"
2
- .SH NAME
3
- PCRE - Perl-compatible regular expressions
4
- .SH "PARTIAL MATCHING IN PCRE"
5
- .rs
6
- .sp
7
- In normal use of PCRE, if the subject string that is passed to a matching
8
- function matches as far as it goes, but is too short to match the entire
9
- pattern, PCRE_ERROR_NOMATCH is returned. There are circumstances where it might
10
- be helpful to distinguish this case from other cases in which there is no
11
- match.
12
- .P
13
- Consider, for example, an application where a human is required to type in data
14
- for a field with specific formatting requirements. An example might be a date
15
- in the form \fIddmmmyy\fP, defined by this pattern:
16
- .sp
17
- ^\ed?\ed(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\ed\ed$
18
- .sp
19
- If the application sees the user's keystrokes one by one, and can check that
20
- what has been typed so far is potentially valid, it is able to raise an error
21
- as soon as a mistake is made, by beeping and not reflecting the character that
22
- has been typed, for example. This immediate feedback is likely to be a better
23
- user interface than a check that is delayed until the entire string has been
24
- entered. Partial matching can also be useful when the subject string is very
25
- long and is not all available at once.
26
- .P
27
- PCRE supports partial matching by means of the PCRE_PARTIAL_SOFT and
28
- PCRE_PARTIAL_HARD options, which can be set when calling any of the matching
29
- functions. For backwards compatibility, PCRE_PARTIAL is a synonym for
30
- PCRE_PARTIAL_SOFT. The essential difference between the two options is whether
31
- or not a partial match is preferred to an alternative complete match, though
32
- the details differ between the two types of matching function. If both options
33
- are set, PCRE_PARTIAL_HARD takes precedence.
34
- .P
35
- If you want to use partial matching with just-in-time optimized code, you must
36
- call \fBpcre_study()\fP, \fBpcre16_study()\fP or \fBpcre32_study()\fP with one
37
- or both of these options:
38
- .sp
39
- PCRE_STUDY_JIT_PARTIAL_SOFT_COMPILE
40
- PCRE_STUDY_JIT_PARTIAL_HARD_COMPILE
41
- .sp
42
- PCRE_STUDY_JIT_COMPILE should also be set if you are going to run non-partial
43
- matches on the same pattern. If the appropriate JIT study mode has not been set
44
- for a match, the interpretive matching code is used.
45
- .P
46
- Setting a partial matching option disables two of PCRE's standard
47
- optimizations. PCRE remembers the last literal data unit in a pattern, and
48
- abandons matching immediately if it is not present in the subject string. This
49
- optimization cannot be used for a subject string that might match only
50
- partially. If the pattern was studied, PCRE knows the minimum length of a
51
- matching string, and does not bother to run the matching function on shorter
52
- strings. This optimization is also disabled for partial matching.
53
- .
54
- .
55
- .SH "PARTIAL MATCHING USING pcre_exec() OR pcre[16|32]_exec()"
56
- .rs
57
- .sp
58
- A partial match occurs during a call to \fBpcre_exec()\fP or
59
- \fBpcre[16|32]_exec()\fP when the end of the subject string is reached successfully,
60
- but matching cannot continue because more characters are needed. However, at
61
- least one character in the subject must have been inspected. This character
62
- need not form part of the final matched string; lookbehind assertions and the
63
- \eK escape sequence provide ways of inspecting characters before the start of a
64
- matched substring. The requirement for inspecting at least one character exists
65
- because an empty string can always be matched; without such a restriction there
66
- would always be a partial match of an empty string at the end of the subject.
67
- .P
68
- If there are at least two slots in the offsets vector when a partial match is
69
- returned, the first slot is set to the offset of the earliest character that
70
- was inspected. For convenience, the second offset points to the end of the
71
- subject so that a substring can easily be identified.
72
- .P
73
- For the majority of patterns, the first offset identifies the start of the
74
- partially matched string. However, for patterns that contain lookbehind
75
- assertions, or \eK, or begin with \eb or \eB, earlier characters have been
76
- inspected while carrying out the match. For example:
77
- .sp
78
- /(?<=abc)123/
79
- .sp
80
- This pattern matches "123", but only if it is preceded by "abc". If the subject
81
- string is "xyzabc12", the offsets after a partial match are for the substring
82
- "abc12", because all these characters are needed if another match is tried
83
- with extra characters added to the subject.
84
- .P
85
- What happens when a partial match is identified depends on which of the two
86
- partial matching options are set.
87
- .
88
- .
89
- .SS "PCRE_PARTIAL_SOFT WITH pcre_exec() OR pcre[16|32]_exec()"
90
- .rs
91
- .sp
92
- If PCRE_PARTIAL_SOFT is set when \fBpcre_exec()\fP or \fBpcre[16|32]_exec()\fP
93
- identifies a partial match, the partial match is remembered, but matching
94
- continues as normal, and other alternatives in the pattern are tried. If no
95
- complete match can be found, PCRE_ERROR_PARTIAL is returned instead of
96
- PCRE_ERROR_NOMATCH.
97
- .P
98
- This option is "soft" because it prefers a complete match over a partial match.
99
- All the various matching items in a pattern behave as if the subject string is
100
- potentially complete. For example, \ez, \eZ, and $ match at the end of the
101
- subject, as normal, and for \eb and \eB the end of the subject is treated as a
102
- non-alphanumeric.
103
- .P
104
- If there is more than one partial match, the first one that was found provides
105
- the data that is returned. Consider this pattern:
106
- .sp
107
- /123\ew+X|dogY/
108
- .sp
109
- If this is matched against the subject string "abc123dog", both
110
- alternatives fail to match, but the end of the subject is reached during
111
- matching, so PCRE_ERROR_PARTIAL is returned. The offsets are set to 3 and 9,
112
- identifying "123dog" as the first partial match that was found. (In this
113
- example, there are two partial matches, because "dog" on its own partially
114
- matches the second alternative.)
115
- .
116
- .
117
- .SS "PCRE_PARTIAL_HARD WITH pcre_exec() OR pcre[16|32]_exec()"
118
- .rs
119
- .sp
120
- If PCRE_PARTIAL_HARD is set for \fBpcre_exec()\fP or \fBpcre[16|32]_exec()\fP,
121
- PCRE_ERROR_PARTIAL is returned as soon as a partial match is found, without
122
- continuing to search for possible complete matches. This option is "hard"
123
- because it prefers an earlier partial match over a later complete match. For
124
- this reason, the assumption is made that the end of the supplied subject string
125
- may not be the true end of the available data, and so, if \ez, \eZ, \eb, \eB,
126
- or $ are encountered at the end of the subject, the result is
127
- PCRE_ERROR_PARTIAL, provided that at least one character in the subject has
128
- been inspected.
129
- .P
130
- Setting PCRE_PARTIAL_HARD also affects the way UTF-8 and UTF-16
131
- subject strings are checked for validity. Normally, an invalid sequence
132
- causes the error PCRE_ERROR_BADUTF8 or PCRE_ERROR_BADUTF16. However, in the
133
- special case of a truncated character at the end of the subject,
134
- PCRE_ERROR_SHORTUTF8 or PCRE_ERROR_SHORTUTF16 is returned when
135
- PCRE_PARTIAL_HARD is set.
136
- .
137
- .
138
- .SS "Comparing hard and soft partial matching"
139
- .rs
140
- .sp
141
- The difference between the two partial matching options can be illustrated by a
142
- pattern such as:
143
- .sp
144
- /dog(sbody)?/
145
- .sp
146
- This matches either "dog" or "dogsbody", greedily (that is, it prefers the
147
- longer string if possible). If it is matched against the string "dog" with
148
- PCRE_PARTIAL_SOFT, it yields a complete match for "dog". However, if
149
- PCRE_PARTIAL_HARD is set, the result is PCRE_ERROR_PARTIAL. On the other hand,
150
- if the pattern is made ungreedy the result is different:
151
- .sp
152
- /dog(sbody)??/
153
- .sp
154
- In this case the result is always a complete match because that is found first,
155
- and matching never continues after finding a complete match. It might be easier
156
- to follow this explanation by thinking of the two patterns like this:
157
- .sp
158
- /dog(sbody)?/ is the same as /dogsbody|dog/
159
- /dog(sbody)??/ is the same as /dog|dogsbody/
160
- .sp
161
- The second pattern will never match "dogsbody", because it will always find the
162
- shorter match first.
163
- .
164
- .
165
- .SH "PARTIAL MATCHING USING pcre_dfa_exec() OR pcre[16|32]_dfa_exec()"
166
- .rs
167
- .sp
168
- The DFA functions move along the subject string character by character, without
169
- backtracking, searching for all possible matches simultaneously. If the end of
170
- the subject is reached before the end of the pattern, there is the possibility
171
- of a partial match, again provided that at least one character has been
172
- inspected.
173
- .P
174
- When PCRE_PARTIAL_SOFT is set, PCRE_ERROR_PARTIAL is returned only if there
175
- have been no complete matches. Otherwise, the complete matches are returned.
176
- However, if PCRE_PARTIAL_HARD is set, a partial match takes precedence over any
177
- complete matches. The portion of the string that was inspected when the longest
178
- partial match was found is set as the first matching string, provided there are
179
- at least two slots in the offsets vector.
180
- .P
181
- Because the DFA functions always search for all possible matches, and there is
182
- no difference between greedy and ungreedy repetition, their behaviour is
183
- different from the standard functions when PCRE_PARTIAL_HARD is set. Consider
184
- the string "dog" matched against the ungreedy pattern shown above:
185
- .sp
186
- /dog(sbody)??/
187
- .sp
188
- Whereas the standard functions stop as soon as they find the complete match for
189
- "dog", the DFA functions also find the partial match for "dogsbody", and so
190
- return that when PCRE_PARTIAL_HARD is set.
191
- .
192
- .
193
- .SH "PARTIAL MATCHING AND WORD BOUNDARIES"
194
- .rs
195
- .sp
196
- If a pattern ends with one of sequences \eb or \eB, which test for word
197
- boundaries, partial matching with PCRE_PARTIAL_SOFT can give counter-intuitive
198
- results. Consider this pattern:
199
- .sp
200
- /\ebcat\eb/
201
- .sp
202
- This matches "cat", provided there is a word boundary at either end. If the
203
- subject string is "the cat", the comparison of the final "t" with a following
204
- character cannot take place, so a partial match is found. However, normal
205
- matching carries on, and \eb matches at the end of the subject when the last
206
- character is a letter, so a complete match is found. The result, therefore, is
207
- \fInot\fP PCRE_ERROR_PARTIAL. Using PCRE_PARTIAL_HARD in this case does yield
208
- PCRE_ERROR_PARTIAL, because then the partial match takes precedence.
209
- .
210
- .
211
- .SH "FORMERLY RESTRICTED PATTERNS"
212
- .rs
213
- .sp
214
- For releases of PCRE prior to 8.00, because of the way certain internal
215
- optimizations were implemented in the \fBpcre_exec()\fP function, the
216
- PCRE_PARTIAL option (predecessor of PCRE_PARTIAL_SOFT) could not be used with
217
- all patterns. From release 8.00 onwards, the restrictions no longer apply, and
218
- partial matching with can be requested for any pattern.
219
- .P
220
- Items that were formerly restricted were repeated single characters and
221
- repeated metasequences. If PCRE_PARTIAL was set for a pattern that did not
222
- conform to the restrictions, \fBpcre_exec()\fP returned the error code
223
- PCRE_ERROR_BADPARTIAL (-13). This error code is no longer in use. The
224
- PCRE_INFO_OKPARTIAL call to \fBpcre_fullinfo()\fP to find out if a compiled
225
- pattern can be used for partial matching now always returns 1.
226
- .
227
- .
228
- .SH "EXAMPLE OF PARTIAL MATCHING USING PCRETEST"
229
- .rs
230
- .sp
231
- If the escape sequence \eP is present in a \fBpcretest\fP data line, the
232
- PCRE_PARTIAL_SOFT option is used for the match. Here is a run of \fBpcretest\fP
233
- that uses the date example quoted above:
234
- .sp
235
- re> /^\ed?\ed(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\ed\ed$/
236
- data> 25jun04\eP
237
- 0: 25jun04
238
- 1: jun
239
- data> 25dec3\eP
240
- Partial match: 23dec3
241
- data> 3ju\eP
242
- Partial match: 3ju
243
- data> 3juj\eP
244
- No match
245
- data> j\eP
246
- No match
247
- .sp
248
- The first data string is matched completely, so \fBpcretest\fP shows the
249
- matched substrings. The remaining four strings do not match the complete
250
- pattern, but the first two are partial matches. Similar output is obtained
251
- if DFA matching is used.
252
- .P
253
- If the escape sequence \eP is present more than once in a \fBpcretest\fP data
254
- line, the PCRE_PARTIAL_HARD option is set for the match.
255
- .
256
- .
257
- .SH "MULTI-SEGMENT MATCHING WITH pcre_dfa_exec() OR pcre[16|32]_dfa_exec()"
258
- .rs
259
- .sp
260
- When a partial match has been found using a DFA matching function, it is
261
- possible to continue the match by providing additional subject data and calling
262
- the function again with the same compiled regular expression, this time setting
263
- the PCRE_DFA_RESTART option. You must pass the same working space as before,
264
- because this is where details of the previous partial match are stored. Here is
265
- an example using \fBpcretest\fP, using the \eR escape sequence to set the
266
- PCRE_DFA_RESTART option (\eD specifies the use of the DFA matching function):
267
- .sp
268
- re> /^\ed?\ed(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\ed\ed$/
269
- data> 23ja\eP\eD
270
- Partial match: 23ja
271
- data> n05\eR\eD
272
- 0: n05
273
- .sp
274
- The first call has "23ja" as the subject, and requests partial matching; the
275
- second call has "n05" as the subject for the continued (restarted) match.
276
- Notice that when the match is complete, only the last part is shown; PCRE does
277
- not retain the previously partially-matched string. It is up to the calling
278
- program to do that if it needs to.
279
- .P
280
- You can set the PCRE_PARTIAL_SOFT or PCRE_PARTIAL_HARD options with
281
- PCRE_DFA_RESTART to continue partial matching over multiple segments. This
282
- facility can be used to pass very long subject strings to the DFA matching
283
- functions.
284
- .
285
- .
286
- .SH "MULTI-SEGMENT MATCHING WITH pcre_exec() OR pcre[16|32]_exec()"
287
- .rs
288
- .sp
289
- From release 8.00, the standard matching functions can also be used to do
290
- multi-segment matching. Unlike the DFA functions, it is not possible to
291
- restart the previous match with a new segment of data. Instead, new data must
292
- be added to the previous subject string, and the entire match re-run, starting
293
- from the point where the partial match occurred. Earlier data can be discarded.
294
- .P
295
- It is best to use PCRE_PARTIAL_HARD in this situation, because it does not
296
- treat the end of a segment as the end of the subject when matching \ez, \eZ,
297
- \eb, \eB, and $. Consider an unanchored pattern that matches dates:
298
- .sp
299
- re> /\ed?\ed(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\ed\ed/
300
- data> The date is 23ja\eP\eP
301
- Partial match: 23ja
302
- .sp
303
- At this stage, an application could discard the text preceding "23ja", add on
304
- text from the next segment, and call the matching function again. Unlike the
305
- DFA matching functions, the entire matching string must always be available,
306
- and the complete matching process occurs for each call, so more memory and more
307
- processing time is needed.
308
- .P
309
- \fBNote:\fP If the pattern contains lookbehind assertions, or \eK, or starts
310
- with \eb or \eB, the string that is returned for a partial match includes
311
- characters that precede the partially matched string itself, because these must
312
- be retained when adding on more characters for a subsequent matching attempt.
313
- However, in some cases you may need to retain even earlier characters, as
314
- discussed in the next section.
315
- .
316
- .
317
- .SH "ISSUES WITH MULTI-SEGMENT MATCHING"
318
- .rs
319
- .sp
320
- Certain types of pattern may give problems with multi-segment matching,
321
- whichever matching function is used.
322
- .P
323
- 1. If the pattern contains a test for the beginning of a line, you need to pass
324
- the PCRE_NOTBOL option when the subject string for any call does start at the
325
- beginning of a line. There is also a PCRE_NOTEOL option, but in practice when
326
- doing multi-segment matching you should be using PCRE_PARTIAL_HARD, which
327
- includes the effect of PCRE_NOTEOL.
328
- .P
329
- 2. Lookbehind assertions that have already been obeyed are catered for in the
330
- offsets that are returned for a partial match. However a lookbehind assertion
331
- later in the pattern could require even earlier characters to be inspected. You
332
- can handle this case by using the PCRE_INFO_MAXLOOKBEHIND option of the
333
- \fBpcre_fullinfo()\fP or \fBpcre[16|32]_fullinfo()\fP functions to obtain the length
334
- of the largest lookbehind in the pattern. This length is given in characters,
335
- not bytes. If you always retain at least that many characters before the
336
- partially matched string, all should be well. (Of course, near the start of the
337
- subject, fewer characters may be present; in that case all characters should be
338
- retained.)
339
- .P
340
- 3. Because a partial match must always contain at least one character, what
341
- might be considered a partial match of an empty string actually gives a "no
342
- match" result. For example:
343
- .sp
344
- re> /c(?<=abc)x/
345
- data> ab\eP
346
- No match
347
- .sp
348
- If the next segment begins "cx", a match should be found, but this will only
349
- happen if characters from the previous segment are retained. For this reason, a
350
- "no match" result should be interpreted as "partial match of an empty string"
351
- when the pattern contains lookbehinds.
352
- .P
353
- 4. Matching a subject string that is split into multiple segments may not
354
- always produce exactly the same result as matching over one single long string,
355
- especially when PCRE_PARTIAL_SOFT is used. The section "Partial Matching and
356
- Word Boundaries" above describes an issue that arises if the pattern ends with
357
- \eb or \eB. Another kind of difference may occur when there are multiple
358
- matching possibilities, because (for PCRE_PARTIAL_SOFT) a partial match result
359
- is given only when there are no completed matches. This means that as soon as
360
- the shortest match has been found, continuation to a new subject segment is no
361
- longer possible. Consider again this \fBpcretest\fP example:
362
- .sp
363
- re> /dog(sbody)?/
364
- data> dogsb\eP
365
- 0: dog
366
- data> do\eP\eD
367
- Partial match: do
368
- data> gsb\eR\eP\eD
369
- 0: g
370
- data> dogsbody\eD
371
- 0: dogsbody
372
- 1: dog
373
- .sp
374
- The first data line passes the string "dogsb" to a standard matching function,
375
- setting the PCRE_PARTIAL_SOFT option. Although the string is a partial match
376
- for "dogsbody", the result is not PCRE_ERROR_PARTIAL, because the shorter
377
- string "dog" is a complete match. Similarly, when the subject is presented to
378
- a DFA matching function in several parts ("do" and "gsb" being the first two)
379
- the match stops when "dog" has been found, and it is not possible to continue.
380
- On the other hand, if "dogsbody" is presented as a single string, a DFA
381
- matching function finds both matches.
382
- .P
383
- Because of these problems, it is best to use PCRE_PARTIAL_HARD when matching
384
- multi-segment data. The example above then behaves differently:
385
- .sp
386
- re> /dog(sbody)?/
387
- data> dogsb\eP\eP
388
- Partial match: dogsb
389
- data> do\eP\eD
390
- Partial match: do
391
- data> gsb\eR\eP\eP\eD
392
- Partial match: gsb
393
- .sp
394
- 5. Patterns that contain alternatives at the top level which do not all start
395
- with the same pattern item may not work as expected when PCRE_DFA_RESTART is
396
- used. For example, consider this pattern:
397
- .sp
398
- 1234|3789
399
- .sp
400
- If the first part of the subject is "ABC123", a partial match of the first
401
- alternative is found at offset 3. There is no partial match for the second
402
- alternative, because such a match does not start at the same point in the
403
- subject string. Attempting to continue with the string "7890" does not yield a
404
- match because only those alternatives that match at one point in the subject
405
- are remembered. The problem arises because the start of the second alternative
406
- matches within the first alternative. There is no problem with anchored
407
- patterns or patterns such as:
408
- .sp
409
- 1234|ABCD
410
- .sp
411
- where no string can be a partial match for both alternatives. This is not a
412
- problem if a standard matching function is used, because the entire match has
413
- to be rerun each time:
414
- .sp
415
- re> /1234|3789/
416
- data> ABC123\eP\eP
417
- Partial match: 123
418
- data> 1237890
419
- 0: 3789
420
- .sp
421
- Of course, instead of using PCRE_DFA_RESTART, the same technique of re-running
422
- the entire match can also be used with the DFA matching functions. Another
423
- possibility is to work with two buffers. If a partial match at offset \fIn\fP
424
- in the first buffer is followed by "no match" when PCRE_DFA_RESTART is used on
425
- the second buffer, you can then try a new match starting at offset \fIn+1\fP in
426
- the first buffer.
427
- .
428
- .
429
- .SH AUTHOR
430
- .rs
431
- .sp
432
- .nf
433
- Philip Hazel
434
- University Computing Service
435
- Cambridge CB2 3QH, England.
436
- .fi
437
- .
438
- .
439
- .SH REVISION
440
- .rs
441
- .sp
442
- .nf
443
- Last updated: 24 June 2012
444
- Copyright (c) 1997-2012 University of Cambridge.
445
- .fi