@@ -88,6 +88,9 @@ def __repr__(self):
8888 return '<Structure {name} +compiled>'
8989"""
9090
91+ COMMENT_REGEX_START = r'(\n?[ ]*\/\/[^\n]*\n)*[ ]*(?P<commentBlock>/\*[^*]*\*+(?:[^/*][^*]*\*+)*/)?[ \t\r\n]*'
92+ COMMENT_REGEX_END = r'[ ]*(?P<commentBlockAfter>\/\*(\*(?!\/)|[^*])*\*\/)?(\n?[ ]*\/\/[^\n]*\n*)*'
93+
9194
9295class Error (Exception ):
9396 pass
@@ -333,7 +336,7 @@ def _constants(self, data):
333336
334337 def _enums (self , data ):
335338 r = re .finditer (
336- r'(?P<commentBlock>\/\*(\*(?!\/)|[^*])*\*\/)?[ \t\r\n]* enum\s+(?P<name>[^\s:{]+)\s*(:\s*(?P<type>[^\s]+)\s*)?\{(?P<values>[^}]+)\}\s*;' ,
339+ COMMENT_REGEX_START + r' enum\s+(?P<name>[^\s:{]+)\s*(:\s*(?P<type>[^\s]+)\s*)?\{(?P<values>[^}]+)\}\s*;'+ COMMENT_REGEX_END ,
337340 data ,
338341 )
339342 for t in r :
@@ -356,7 +359,7 @@ def _parse_fields_enums(self, s):
356359 values = {}
357360 valuesDetails = {}
358361 fields = re .finditer (
359- r'(\n?[ ]*\/\/[^\n]*\n)*[ ]*(?P<commentBlock>\/\/[^\n]*$|\/(?!\\)\*[\s\S]*?\*(?!\\)\/)?[ \t\r\n]*(?P< value>[ ]*[ a-zA-z][^\n,\ /]*),?[ ]*(?P<commentBlockAfter>\/\*(\*(?!\/)|[^*])*\*\/)?(\n?[ ]*\/\/[^\n]*\n*)*' ,
362+ COMMENT_REGEX_START + r'(?P< value>[a-zA-z][^\n,/]*),?' + COMMENT_REGEX_END ,
360363 s ,
361364 )
362365
@@ -383,7 +386,7 @@ def _parse_fields_enums(self, s):
383386 def _structs (self , data ):
384387 compiler = Compiler (self .cstruct )
385388 r = re .finditer (
386- r'(?P<commentBlock>\/\*(\*(?!\/)|[^*])*\*\/)?[ \t\r\n]*( #(?P<flags>(?:compile))\s+)?((?P<typedef>typedef)\s+)?(?P<type>[^\s]+)\s+(__attribute__\(\([^)]+\)\)\s*)?(?P<name>[^\s]+)?(?P<fields>\s*\{(\s*//[^\n]*|/\*[^*]*\*/|[^}])+\}(?P<defs>\s+[^;\n]+)?)?\s*;' ,
389+ COMMENT_REGEX_START + r'(#(?P<flags>(?:compile))\s+)?((?P<typedef>typedef)\s+)?(?P<type>[^\s]+)\s+(__attribute__\(\([^)]+\)\)\s*)?(?P<name>[^\s]+)?(?P<fields>\s*\{(\s*//[^\n]*|/\*[^*]*\*/|[^}])+\}(?P<defs>\s+[^;\n]+)?)?\s*;' + COMMENT_REGEX_END ,
387390 data ,
388391 )
389392 for t in r :
@@ -417,7 +420,7 @@ def _structs(self, data):
417420
418421 def _parse_fields_struct (self , s ):
419422 fields = re .finditer (
420- r'(\n?[ ]*\/\/[^\n]*\n)*[ ]*(?P<commentBlock>\/\*(\*(?!\/)|[^*])*\*\/)?[ \t\r\n]*(?P< type>[^\s]+)\s+(?P<name>[^\s\[:]+)(\s*:\s*(?P<bits>\d+))?(\[(?P<count>[^;\n]*)\])?;[ ]*(?P<commentBlockAfter>\/\*(\*(?!\/)|[^*])*\*\/)?(\n?[ ]*\/\/[^\n]*\n*)*' ,
423+ COMMENT_REGEX_START + r'(?P< type>[^\s]+)\s+(?P<name>[^\s\[:]+)(\s*:\s*(?P<bits>\d+))?(\[(?P<count>[^;\n]*)\])?;' + COMMENT_REGEX_END ,
421424 s ,
422425 )
423426 r = []
0 commit comments