diff --git a/bashlex/parser.py b/bashlex/parser.py index ddf59066..45814095 100644 --- a/bashlex/parser.py +++ b/bashlex/parser.py @@ -598,7 +598,10 @@ def parse(s, strictmode=True, expansionlimit=None, convertpos=False): command substitutions found during word expansion. ''' p = _parser(s, strictmode=strictmode, expansionlimit=expansionlimit) - parts = [p.parse()] + tree = p.parse() + if not tree: + return [] + parts = [tree] class endfinder(ast.nodevisitor): def __init__(self): diff --git a/tests/test-parser.py b/tests/test-parser.py index 3a6ce180..ab210028 100644 --- a/tests/test-parser.py +++ b/tests/test-parser.py @@ -111,6 +111,11 @@ def assertASTsEquals(self, s, expectedlist, **parserargs): msg = 'ASTs not equal for %r\n\nresult:\n\n%s\n\n!=\n\nexpected:\n\n%s' % (s, result.dump(), expected.dump()) self.assertEquals(result, expected, msg) + def test_comment(self): + s = '# comment' + results = parse(s) + self.assertEquals(results, [], 'expected empty tree for comment') + def test_command(self): s = 'a b c' self.assertASTEquals(s,