Re: StringBuilder Extension: IsQuotedBy
Peter Obiefuna <[email protected]> Fri, 15 Feb 2008 10:49:18 -0700
| Newsgroups | gmane.comp.windows.devel.dotnet.clr |
|---|---|
| Message-ID | <[email protected]> |
>> But I expect a Regex >> implementation to create a unique FSM from every input signature. > > P > > I don't understand your last sentence. The FSM is constructed for the > regex, not for the sentence to be matched. > By input signature, I mean the signature of the machine to be created (ie: the expression or regex). > Also, I don't see how this is relevant to why one wouldn't "still" > hand-write a DFA. > > -- Barry The point is that a finite state machine is a DFA and is generated by every Regex engine implementation from the first input tape (ie: the regex) and then moves over the second tape (input string to evaluate it. The input string passes if the machine gets to a finish state and there will be many of them in most real cases). I don't agree that whipping up a new custom parser is guaranteed to do the job faster until we see some real theoretical analysis or empirical data. I also don't buy the claim that it's as trivial a task as to require 1 hour of a developer's time (not to mention testing time). Of course, the dragon book has a 100-line lexer (I hope we all remember that enticing chapter). I hope you now see the relevance Barry. I probably didn't make the connection clear the first time. P -------------------------------------------------- From: "Barry Kelly" <[email protected]> Sent: Friday, February 15, 2008 10:05 AM To: <[email protected]> Subject: Re: [DOTNET-CLR] StringBuilder Extension: IsQuotedBy > Peter Obiefuna <[email protected]> wrote: > >> > Any single given regex terminates in a single state, "matched". A >> > tokenizer has multiple ending states, one for each token. This is the >> > key difference between most third-party regex libraries and the >> > requirements of people writing parsers for well-defined languages. >> > >> > -- Barry >> >> I would expect a regex implementation to construct a FSM from it's >> expression string. Meaning that a "single given regex" could terminate in >> multiple states, each of which is a "matched" state. > > Yes; but most third-party regex implementations don't distinguish > between matched states in the API, so in effect, all the matched states > are the same state. You'd need to extend a regex language to distinguish > between them. > > In other words, for some regex R: > > R ::= 'a' | 'b' | 'c' . > > We'd usually construct: > > s0 - start state > s0 -'a'-> s1 > s0 -'b'-> s1 > s0 -'c'-> s1 > s1 - finish state > > ... and have slight difficulty in finding out which of a, b, or c we > saw. > >> If it keeps hitting a >> matched state until the input buffer is finished, then, the string >> 'qualifies'. That, in my mind, is the difference between a state engine >> and >> a collation engine like strcomp (never mind that you can illustrate FSM >> graphically by pointing to a final dot on paper). But I expect a Regex >> implementation to create a unique FSM from every input signature. > > I don't understand your last sentence. The FSM is constructed for the > regex, not for the sentence to be matched. > > Also, I don't see how this is relevant to why one wouldn't "still" > hand-write a DFA. > > -- Barry > > -- > http://barrkel.blogspot.com/ > > =================================== > This list is hosted by DevelopMentor® http://www.develop.com > > View archives and manage your subscription(s) at > http://discuss.develop.com > =================================== This list is hosted by DevelopMentor® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com