Обсуждение: A bug in scan.l
There is a rule like this in scan.l<br /><br />uescapefail ("-"|[uU][eE][sS][cC][aA][pP][eE]{whitespace}*"-"|[uU][eE][sS][cC][aA][pP][eE]{whitespace}*{quote}[^']|[uU][eE][sS][cC][aA][pP][eE]{whitespace}*{quote}|[uU][eE][sS][cC][aA][pP][eE]{whitespace}*|[uU][eE][sS][cC][aA][pP]|[uU][eE][sS][cC][aA]|[uU][eE][sS][cC]|[uU][eE][sS]|[uU][eE]|[uU])<br /><br/><br />I think this should be corrected to <br /><br /><br />uescapefail ("-"|[uU][eE][sS][cC][aA][pP][eE]{space}*"-"|[uU][eE][sS][cC][aA][pP][eE]{space}*{quote}[^']|[uU][eE][sS][cC][aA][pP][eE]{space}*{quote}|[uU][eE][sS][cC][aA][pP][eE]{space}*|[uU][eE][sS][cC][aA][pP]|[uU][eE][sS][cC][aA]|[uU][eE][sS][cC]|[uU][eE][sS]|[uU][eE]|[uU])<br /><br/><br />I have replaced whitespace with space. This has to be done because whitespace allows comments. This would causeconflict between some of the alternatives. I found this, while trying to make this rule work with LL(1). Just thought,it might be useful.<br /><br />Thanks,<br />Gokul.<br />
Gokulakannan Somasundaram <gokul007@gmail.com> writes: > I have replaced whitespace with space. This has to be done because > whitespace allows comments. This would cause conflict between some of the > alternatives. I found this, while trying to make this rule work with LL(1). Um, if it's ambiguous, why doesn't flex complain? regards, tom lane
Well, i am at a very beginner level with Flex. I could see how flex works with it even if it is a ambiguity. Since it matchesthe rule with the maximum text and we don't allow a new line character in the rule, it works fine. Even in LL(1),it works fine, but throws warnings. So i just thought of suggesting to remove the ambiguity.<br /> But do we need toallow comments as part of unicode escapes?<br /><br />Thanks,<br />Gokul.<br /><br /><div class="gmail_quote">On Wed, Sep2, 2009 at 8:37 AM, Tom Lane <span dir="ltr"><<a href="mailto:tgl@sss.pgh.pa.us">tgl@sss.pgh.pa.us</a>></span> wrote:<br/><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left:1ex;"><div class="im">Gokulakannan Somasundaram <<a href="mailto:gokul007@gmail.com">gokul007@gmail.com</a>>writes:<br /> > I have replaced whitespace with space. Thishas to be done because<br /> > whitespace allows comments. This would cause conflict between some of the<br /> >alternatives. I found this, while trying to make this rule work with LL(1).<br /><br /></div>Um, if it's ambiguous, whydoesn't flex complain?<br /><br /> regards, tom lane<br /></blockquote></div><br />
Gokulakannan Somasundaram <gokul007@gmail.com> writes: > Well, i am at a very beginner level with Flex. I could see how flex works > with it even if it is a ambiguity. Since it matches the rule with the > maximum text and we don't allow a new line character in the rule, it works > fine. Even in LL(1), it works fine, but throws warnings. So i just thought > of suggesting to remove the ambiguity. Well, that whole rule is only there for implementation-specific reasons --- a flex scanner is faster if it doesn't need to back up. You might be best off to just remove the anti-backup rules in the LL translation. > But do we need to allow comments as part of unicode escapes? If they're like normal strings, yes. regression=# select 'this is' -- comment regression-# ' one string'; ?column? --------------------this is one string (1 row) Don't blame us, blame the SQL committee. This was not one of their better ideas IMO. regards, tom lane