يوضح المثال القصير أدناه كيف يقوم comby بتبسيط المطابقة وإعادة الكتابة مقارنة بأساليب regex مثل sed
.
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
. في فيدورا، استخدم sudo ln -s /usr/lib64/libpcre.so /usr/lib64/libpcre.so.3
. وبدلاً من ذلك، فكر في البناء من المصدر.
bash <(curl -sL get.comby.dev)
docker pull comby/comby
التشغيل مع عامل الإرساء على stdin
:
docker run -a stdin -a stdout -a stderr -i comby/comby ' (:[emoji] hi) ' ' bye :[emoji] ' lisp -stdin <<< ' ( hi) '
في بعض الأحيان، نعم. ولكن في كثير من الأحيان، تكون التغييرات الصغيرة وإعادة البناء معقدة بسبب التعبيرات أو التعليقات أو السلاسل المتداخلة. خذ بعين الاعتبار المقتطف التالي الذي يشبه C. لنفترض أن التحدي يكمن في إعادة كتابة شرطي if
إلى القيمة 1
. هل يمكنك كتابة تعبير عادي يطابق محتوى تعبيري if الشرطيين فقط؟ لا تتردد في مشاركة النمط الخاص بك معrvtond على Twitter.
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)
. انظر المثال الحي.
قم بتثبيت أوبام. 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
ماك: brew install pkg-config gmp pcre libev
ثم قم بتثبيت تبعيات المكتبة:
git clone https://github.com/comby-tools/comby
cd comby
opam install . --deps-only
make
make test
comby
على PATH
الخاص بك عن طريق التشغيل make install