diff options
author | Steven Knight <knight@baldmt.com> | 2003-05-09 22:07:35 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2003-05-09 22:07:35 (GMT) |
commit | 8c7c96993d069298a66834db8bddb038725a6637 (patch) | |
tree | 656788d5ff27d9265809eae81a6c62dd3a82744e /src/engine/SCons/Tool/JavaCommon.py | |
parent | 3ff79698a1d206f9be1804376004777c6c7f7929 (diff) | |
download | SCons-8c7c96993d069298a66834db8bddb038725a6637.zip SCons-8c7c96993d069298a66834db8bddb038725a6637.tar.gz SCons-8c7c96993d069298a66834db8bddb038725a6637.tar.bz2 |
Java parser fix for // comments. (Charles Crain)
Diffstat (limited to 'src/engine/SCons/Tool/JavaCommon.py')
-rw-r--r-- | src/engine/SCons/Tool/JavaCommon.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/engine/SCons/Tool/JavaCommon.py b/src/engine/SCons/Tool/JavaCommon.py index 3348bc0..6b69c73 100644 --- a/src/engine/SCons/Tool/JavaCommon.py +++ b/src/engine/SCons/Tool/JavaCommon.py @@ -42,12 +42,12 @@ if java_parsing: # This is a really cool parser from Charles Crain # that finds appropriate class names in Java source. - # A regular expression that will find, in a java file, + # A regular expression that will find, in a java file: newlines; # any alphanumeric token (keyword, class name, specifier); open or # close brackets; a single-line comment "//"; the multi-line comment # begin and end tokens /* and */; single or double quotes; and # single or double quotes preceeded by a backslash. - _reToken = re.compile(r'(//[^\r\n]*|\\[\'"]|[\'"\{\}]|[A-Za-z_][\w\.]*|' + + _reToken = re.compile(r'(\n|//|\\[\'"]|[\'"\{\}]|[A-Za-z_][\w\.]*|' + r'/\*|\*/)') class OuterState: @@ -95,7 +95,7 @@ if java_parsing: def parseToken(self, token): if token[:2] == '//': - pass # ignore comment + return IgnoreState('\n', self) elif token == '/*': return IgnoreState('*/', self) elif token == '{': @@ -163,7 +163,9 @@ if java_parsing: # outer_state is always an instance of OuterState self.outer_state = outer_state def parseToken(self, token): - # the only token we get should be the name of the class. + # the next non-whitespace token should be the name of the class + if token == '\n': + return self self.outer_state.listClasses.append(token) return self.outer_state |