From 203965d0fa55cedbb9af6249c7c2aee4d54ed983 Mon Sep 17 00:00:00 2001 From: gilch Date: Wed, 2 Aug 2017 15:53:46 -0600 Subject: [PATCH] add #_ discard syntax --- hy/lex/lexer.py | 1 + hy/lex/parser.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/hy/lex/lexer.py b/hy/lex/lexer.py index b73c284..cb021a0 100755 --- a/hy/lex/lexer.py +++ b/hy/lex/lexer.py @@ -25,6 +25,7 @@ lg.add('QUOTE', r'\'%s' % end_quote) lg.add('QUASIQUOTE', r'`%s' % end_quote) lg.add('UNQUOTESPLICE', r'~@%s' % end_quote) lg.add('UNQUOTE', r'~%s' % end_quote) +lg.add('DISCARD', r'#_') lg.add('HASHSTARS', r'#\*+') lg.add('HASHOTHER', r'#%s' % identifier) diff --git a/hy/lex/parser.py b/hy/lex/parser.py index 0c73652..efac562 100755 --- a/hy/lex/parser.py +++ b/hy/lex/parser.py @@ -153,6 +153,17 @@ def list_contents_single(p): return [p[0]] +@pg.production("list_contents : DISCARD term discarded_list_contents") +def list_contents_empty(p): + return [] + + +@pg.production("discarded_list_contents : DISCARD term discarded_list_contents") +@pg.production("discarded_list_contents :") +def discarded_list_contents(p): + pass + + @pg.production("term : identifier") @pg.production("term : paren") @pg.production("term : dict") @@ -163,6 +174,11 @@ def term(p): return p[0] +@pg.production("term : DISCARD term term") +def term_discard(p): + return p[2] + + @pg.production("term : QUOTE term") @set_quote_boundaries def term_quote(p):