From 1d44cc0e6e0db408a6b21d8b5c730377fe21e65d Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 30 Aug 2011 16:07:27 -0400 Subject: [PATCH] parser returns None if an error is seen --- parser/Parser.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/parser/Parser.py b/parser/Parser.py index 9f0fd1e..3255a89 100644 --- a/parser/Parser.py +++ b/parser/Parser.py @@ -9,10 +9,14 @@ class Parser(object): self.lexer = Lexer() self.tokens = self.lexer.tokens self.parser = yacc.yacc(module = self, outputdir = 'parser') + self.saw_error = False def p_unit(self, p): 'unit : unit_items' - p[0] = UnitNode([p[1]]) + if self.saw_error: + p[0] = None + else: + p[0] = UnitNode([p[1]]) def p_unit_items(self, p): 'unit_items : unit_item unit_items' @@ -42,5 +46,8 @@ class Parser(object): 'empty :' p[0] = Node() + def p_error(self, p): + self.saw_error = True + def parse(self): return self.parser.parse(self.input, lexer = self.lexer)