Re: Bigloo Regexp: m/ /ms (now: Regular Parsing)
Laurent Bloch <[email protected]>
| Newsgroups | gmane.lisp.scheme.bigloo |
|---|---|
| Message-ID | <[email protected]> |
Le 2015-04-22 08:44, [email protected] a écrit : >> Well, I wrote a little grammar (see attachment), but I don't see any >> way to pass the pattern as an argument to the grammar, is it possible? > You cannot as REGULAR-GRAMMARs are compiled. If you need to compute new > grammars at runtime, you will have to use eval :-(. For instance, you > can use something such as: (define (mk-regular-grammar pattern) (eval `(regular-grammar () (,pattern "blabla")))) > Although not recommended in general, this solution will deliver decent > performance in your case. As the system we try to emulate is a Python library, the performance should be comparable. > The other solution would be to use pregexp (your first intuition) but > as pregexp requires a string, you will have to read the whole file in > memory first, which means that this solution will only work for toy > examples. > As a side note, if your pattern is basic regular expression only made > of sequences of characters, then you might prefer using KPM and mmap. KMP, I suppose? We need Regexps more complex than just strings. But I am curious about the way Perl manages multi-lines queries, we would do the same. Cheers. -- Laurent Bloch - http://www.laurentbloch.org/ - [email protected]