下面的一个简短示例展示了与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