diff options
Diffstat (limited to 'pycparser/c_parser.py')
-rw-r--r-- | pycparser/c_parser.py | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/pycparser/c_parser.py b/pycparser/c_parser.py index 640a759..c9782e0 100644 --- a/pycparser/c_parser.py +++ b/pycparser/c_parser.py @@ -580,6 +580,12 @@ class CParser(PLYParser): else: p[0] = c_ast.Pragma("", self._token_coord(p, 1)) + def p_pppragma_directive_list(self, p): + """ pppragma_directive_list : pppragma_directive + | pppragma_directive_list pppragma_directive + """ + p[0] = [p[1]] if len(p) == 2 else p[1] + [p[2]] + # In function definitions, the declarator can be followed by # a declaration list, for old "K&R style" function definitios. def p_function_definition_1(self, p): @@ -671,12 +677,12 @@ class CParser(PLYParser): # sum += 1; # } def p_pragmacomp_or_statement(self, p): - """ pragmacomp_or_statement : pppragma_directive statement + """ pragmacomp_or_statement : pppragma_directive_list statement | statement """ - if isinstance(p[1], c_ast.Pragma) and len(p) == 3: + if len(p) == 3: p[0] = c_ast.Compound( - block_items=[p[1], p[2]], + block_items=p[1]+[p[2]], coord=self._token_coord(p, 1)) else: p[0] = p[1] |