Έχουν δημοσιευτεί Κυριακή, 17 Φεβρουαρίου 2008 3:44 μμ από το μέλος PALLADIN

RegularExpression<T>

Στο 12o Dotnetzone event, παρουσίασα μια βιβλιοθήκη για pattern matching με regular expressions... To διαφορετικό είναι ότι δεν περιορίζεται μονο σε character streams, αλλα κάνει match <T> streams, όπου το <T> οτιδήποτε (polymorphic type value).

Ένα κλασικό παράδειγμα είναι να κάνω pattern matching σε ένα bitstream που μου έρχεται από διαφορα files...
Stream: 1110101111110000111111000111
pattern: 1110(0|1)0111
Result: 1110101111110000111111000111
ή να βρω κάποιο συγκεκριμένο pattern στα δεκαδικά ψηφία του π (3.14159265358979323846264338327950288419716939937510...)

Κάποια παραδείγματα χρήσης

var pattern = true.Seq(true).Seq(false);
var matchPattern = pattern.Match(new[] { true, true, true, false});

var pattern = 1.Seq(2).Seq(3.Alt(4));
var matchPattern = pattern.Match(new[] { 1, 2, 3, 5});

var pattern = '1'.Seq('2').Seq('3'.Plus()).Seq('4');
var matchPattern = pattern.Match("12333345");

Κάποιες βασικές ιδέες που χρησιμοποίησα στην υλοποίηση
1. Internal DSL for patterns
2. parser combinators for patterns and execution
3. Infinite Lists (Wizard book-Streams)

Όσοι φίλοι μελετήσουν τον κώδικα, θα δουν πως μπορούμε να κάνουμε higher order functional programming με την C# 3.0 και να δομήσουμε τον κώδικα (και την σκέψη μας) με έναν αρκετά διαφορετικό τρόπο...purity + unit tests == zero debugging time

Share


Ενημέρωση για Σχόλια

Αν θα θέλατε να λαμβάνετε ένα e-mail όταν γίνονται ανανεώσεις στο περιεχόμενο αυτής της δημοσίευσης, παρακαλούμε γίνετε συνδρομητής εδώ

Παραμείνετε ενήμεροι στα τελευταία σχόλια με την χρήση του αγαπημένου σας RSS Aggregator και συνδρομή στη Τροφοδοσία RSS με σχόλια

Σχόλια:

 

kingherc έγραψε:

Καλά πρέπει να ήταν υπέροχη η παρουσίαση σου. Δυστυχώς την έχασα γιατί δεν ήξερα ότι έκανες παρουσίαση, ούτε ήξερα για το dotnetzone event!

:-(

Hopefully την επόμενη φορά!

Φεβρουαρίου 17, 2008 9:03 μμ
 

cap έγραψε:

@kingherc: Στην κεντρική σελίδα του dotnetzone.gr υπάρχει ημερολόγιο εκδηλώσεων με το δικό του rss feed - μπορείς να εγγραφείς εκεί και να ενημερώνεσαι για τα νέα events.

Φεβρουαρίου 21, 2008 2:14 μμ
 

Aggelos Biboudis έγραψε:

Ήταν πολύ δυνατή, πράγματι

Φεβρουαρίου 23, 2008 2:08 πμ

Ποιά είναι η άποψή σας για την παραπάνω δημοσίευση;

(απαιτούμενο)
απαιτούμενο
προαιρετικό
απαιτούμενο
ÅéóÜãåôå ôïí êùäéêü:
CAPTCHA Image