summaryrefslogtreecommitdiff
path: root/pycparser/c_parser.py
diff options
context:
space:
mode:
Diffstat (limited to 'pycparser/c_parser.py')
-rw-r--r--pycparser/c_parser.py12
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]