Bug 17435 - WebIDL: Bug in definition of whitespace terminal?
Summary: WebIDL: Bug in definition of whitespace terminal?
Alias: None
Product: WebAppsWG
Classification: Unclassified
Component: WebIDL (show other bugs)
Version: unspecified
Hardware: PC All
: P2 normal
Target Milestone: ---
Assignee: Cameron McCormack
QA Contact: public-webapps-bugzilla
Depends on:
Reported: 2012-06-07 10:40 UTC by Wolfgang Keller
Modified: 2012-06-22 06:31 UTC (History)
2 users (show)

See Also:


Note You need to log in before you can comment on or make changes to this bug.
Description Wolfgang Keller 2012-06-07 10:40:49 UTC
In the definition of the terminals in section "A. IDL grammar" you'll find the following definition of the whitespace terminal:

whitespace = [\t\n\r ]+|[\t\n\r ]*((//.*|/\*.*?\*/)[\t\n\r ]*)+

Let's look at its part specific to block comments ("/* ... */"):


What does this regular expression look for (see the referenced document http://search.cpan.org/dist/perl/pod/perlre.pod for details):

a string '/*'
followed by 0 or more "any character (except newline)", not greedily (the latter one follows by using '*?' instead of '*')
followed by the string '*/'.

What consequence does this have? The answer is that block comments can't contain newline characters between the block comment delimiters - I don't believe this is what you intend.

Thus I believe, the regular expression has to be fixed. I propose the following fix, but better check it thrice for correctness:

We change the part


Thus the complete definition of the whitespace terminal changes to
whitespace = [\t\n\r ]+|[\t\n\r ]*((//.*|/\*[.\n]*?\*/)[\t\n\r ]*)+
Comment 1 Cameron McCormack 2012-06-22 06:31:58 UTC
You are right, although this needs to be written as (.|\n) rather than [.\n].  Fixed now: