下面的一個簡短範例展示了與sed
等正規表示式方法相比,comby 如何簡化匹配和重寫。
brew install comby
bash <(curl -sL get-comby.netlify.app)
其他 Linux 發行版:PCRE 函式庫在 Ubuntu 二進位檔案中動態連結。對於 Arch Linux 等其他發行版,需要進行修復: sudo ln -s /usr/lib/libpcre.so /usr/lib/libpcre.so.3
。在 Fedora 上,使用sudo ln -s /usr/lib64/libpcre.so /usr/lib64/libpcre.so.3
。或者,考慮從原始碼建置。
bash <(curl -sL get.comby.dev)
docker pull comby/comby
在stdin
上使用 docker 運行:
docker run -a stdin -a stdout -a stderr -i comby/comby ' (:[emoji] hi) ' ' bye :[emoji] ' lisp -stdin <<< ' ( hi) '
有時,是的。但通常,小的更改和重構會因嵌套表達式、註釋或字串而變得複雜。考慮以下類似 C 的程式碼片段。假設挑戰是將兩個if
條件重寫為值1
。你能寫一個正規表示式來符合兩個 if 條件表達式的內容,並且只符合這兩個嗎?請隨時在 Twitter 上與 @rvtond 分享您的模式。
if ( fgets ( line , 128 , file_pointer ) == Null ) // 1) if (...) returns 0
return 0 ;
...
if ( scanf ( "%d) %d" , & x , & y ) == 2 ) // 2) if (scanf("%d) %d", &x, &y) == 2) returns 0
return 0 ;
為了將它們與comby相匹配,您需要編寫的只是if (:[condition])
,並指定一個標誌來表示語言類似於C語言。替換為if (1)
。請參閱現場範例。
安裝opam。 TL;DR do sh <(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh)
如果您沒有安裝 OCaml,請執行此命令(它會引導 OCaml 編譯器):
opam init
opam switch create 4.11.0 4.11.0
運行eval $(opam env)
安裝作業系統相依性:
Linux: sudo apt-get install autoconf libpcre3-dev pkg-config zlib1g-dev m4 libgmp-dev libev4 libsqlite3-dev
Mac: brew install pkg-config gmp pcre libev
然後安裝庫相依性:
git clone https://github.com/comby-tools/comby
cd comby
opam install . --deps-only
make
make test
PATH
上安裝comby
make install