⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bmh.idel

📁 idel虚拟机源码
💻 IDEL
字号:
\ Boyer-Moore-Horspool string matchingstring: pattern "right"bss-data: buffer 32768def 0 1 main  pattern.addr pattern.size bmh-init  buffer  buffer reading buffer -  500  spin  u. '\n' emit  0 ;def 3 1 spin  1 -   { addr u times --    addr u 0 count-matches    times if      { count -- } addr u times spin    then } ;def 3 1 count-matches  { addr u count --     addr u bmh-search 1 +    { index --      index 0 = if        count      else        addr index +  u index -  count 1 +  count-matches      then } } ;def 1 1 reading  absorb { addr c --            c 0 < if             addr           else             c addr c!             addr 1 + reading           then } ;#include "../tests/udot.idel"#define alphabet 256#define notfound  -1ints: M    0  ;intsints: Pat  0  ;intsbss-data: skip-table 1024          \ 4*alphabetdef 2 0 bmh-init  { pat u --    skip-table alphabet u fill    pat Pat !    u 1 -  M !    pat  0  u 1 -  init-loop } ;def 3 0 init-loop  { pat j m --    j m u< if      m j -  skip-table  pat j + c@ 2 << + !      pat  j 1 +  m  init-loop    then } ;def 2 1 bmh-search  { dat u --    M @ 0 < if      0    else      dat  u 1 -  M @  outer    then } ;def 3 1 outer  { dat n i --    n i < if      notfound    else      dat  n  i  M @  i  inner    then } ;def 5 1 inner  { dat n k j i --    dat k + c@  Pat @ j + c@  = if      j 0 = if        k      else        dat  n  k 1 -  j 1 -  i  inner      then    else      dat  n  dat i + c@ 2 << skip-table + @ i +  outer    then } ;def 3 0 fill  { addr u x --    u if      x addr !      addr 4 +  u 1 -  x  fill    then } ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -