-
TRRE: Transductive Regular Expressions
-
सारांश
- यह टेक्स्ट एडिटिंग और
grep जैसे कमांड-लाइन टूल्स के लिए regular expressions का एक विस्तार है.
- यह एक prototype है, इसलिए इसे production environment में उपयोग न करें.
-
परिचय
- Regular expressions टेक्स्ट में पैटर्न खोजने के लिए एक उपयोगी टूल हैं.
- टेक्स्ट एडिटिंग के लिए ये स्वाभाविक नहीं लगे, इसलिए एक विस्तार प्रस्तावित किया गया है.
- इसे Transductive Regular Expressions या
trre कहा जाता है.
- transformations को परिभाषित करने के लिए
: चिन्ह का उपयोग किया जाता है.
a:b सबसे सरल रूप है, जो a को b से बदलता है.
- इस अवधारणा को दिखाने के लिए
trre नाम का एक कमांड-लाइन टूल बनाया गया है.
-
उदाहरण
-
बुनियादी
cat को dog में बदलना:
$ echo 'cat' | trre 'c:da:ot:g'
dog
sed की तरह स्ट्रिंग के सभी matches को replace करना:
$ echo 'Mary had a little lamb.' | trre '(lamb):(cat)'
Mary had a little cat.
- हटाना:
$ echo 'xor' | trre '(x:)or'
or
- जोड़ना:
$ echo 'or' | trre '(:x)or'
xor
-
transformations के साथ regular expressions
-
range transformation
-
generator
-
भाषा विनिर्देशन
trre को pattern-matching:pattern-generation की जोड़ी के रूप में परिभाषित किया गया है.
pattern-matching एक string या regular expression हो सकता है.
pattern-generation सामान्यतः एक string होता है, लेकिन regex भी हो सकता है.
-
यह कैसे काम करता है
trre एक विशेष automaton बनाता है जिसे finite-state transducer (FST) कहा जाता है.
- FST input-output pairs को प्रोसेस करता है.
-
design choices और खुले प्रश्न
: की associativity, precedence, implicit epsilon आदि जैसे कई निर्णय लेने की आवश्यकता है.
-
modes और greediness
trre दो modes को support करता है:
- scan mode (default): transformations को क्रम से लागू करता है.
- match mode: expression के विरुद्ध पूरी string की जांच करता है.
-
determinization
- nondeterministic automaton को deterministic automaton में बदलने की प्रक्रिया महत्वपूर्ण है.
-
performance
- NFT (nondeterministic) version
sed से थोड़ा धीमा है.
- जटिल कामों में
trre_dft (deterministic version) sed से बेहतर प्रदर्शन कर सकता है.
-
TODO
- ERE feature set को पूरा करना, पूर्ण Unicode support, efficient range handling आदि.
-
संदर्भ
- Russ Cox के लेख और Cyril Allauzen, Mehryar Mohri के शोधपत्रों से प्रेरणा ली गई है.
1 टिप्पणियां
Hacker News टिप्पणियाँ
बढ़िया, इस प्रोजेक्ट के आगे विकास की उम्मीद है
cat:dogका(cat):(dog)की बजायca(t:d)ogके रूप में व्याख्यायित होना अजीब हैXFST (Xerox Finite-State Transducer) की सिफारिश की गई
standard regular expressions के विकल्प के रूप में Rosie Pattern Language की सिफारिश की गई
1997 में finite-state transducers पर पेपर लिखने का अनुभव साझा किया गया
:कोabसे अधिक मज़बूती से bind करने की सेटिंग सही है या नहीं, यह पूछा गयाstructural substitution करते समय इसे पर्याप्त नहीं माना गया
इस दावे पर सवाल उठाया गया कि regular expressions text editing के लिए अप्राकृतिक हैं
C code की बहुत साफ-सुथरी होने के लिए प्रशंसा की गई
theory.pdfलिंक गलत है और उसे ठीक करने की ज़रूरत है*या+का उपयोग न करने की सलाह पर सवाल उठाया गयापहला उदाहरण अजीब लगा
echo 'cat' | trre 'c:da:ot:g'का परिणाम अजीब हैयह सवाल उठाया गया कि क्या उदाहरण वास्तव में प्रोग्राम के output हैं
echo 'cat dog' | trre 'c:bat|d:hog'का परिणाम अजीब है