diff options
author | German M. Bravo <german.mb@deipi.com> | 2013-08-14 11:03:51 -0500 |
---|---|---|
committer | German M. Bravo <german.mb@deipi.com> | 2013-08-16 09:56:38 -0500 |
commit | df0cd8c81730c40ca1ca49e26be5ea33c3ee8095 (patch) | |
tree | 09a08579265f54a23167f109878318c4db8120e8 | |
parent | c6d2a8adfbeef4fceb2b776e993140ae51217fe4 (diff) | |
download | pyscss-df0cd8c81730c40ca1ca49e26be5ea33c3ee8095.tar.gz |
Arguments and expression lists should be the same
-rw-r--r-- | scss/src/grammar/grammar.g | 16 | ||||
-rw-r--r-- | scss/src/grammar/grammar.py | 44 |
2 files changed, 22 insertions, 38 deletions
diff --git a/scss/src/grammar/grammar.g b/scss/src/grammar/grammar.g index 00c55f3..e1d9b8e 100644 --- a/scss/src/grammar/grammar.g +++ b/scss/src/grammar/grammar.g @@ -81,7 +81,7 @@ parser SassExpression: | BANG_IMPORTANT {{ return Literal(String(BANG_IMPORTANT, quotes=None)) }} | FNCT {{ v = ArgspecLiteral([]) }} LPAR [ - argspec {{ v = argspec }} + expr_lst {{ v = expr_lst }} ] RPAR {{ return CallOp(FNCT, v) }} | NUM [ UNITS {{ return Literal(NumberValue(float(NUM), unit=UNITS.lower())) }} @@ -91,13 +91,13 @@ parser SassExpression: | COLOR {{ return Literal(ColorValue(ParserValue(COLOR))) }} | VAR {{ return Variable(VAR) }} - rule argspec: argspec_item {{ v = [argspec_item] }} + rule expr_lst: expr_item {{ v = [expr_item] }} ( COMMA - argspec_item {{ v.append(argspec_item) }} - )* {{ return ArgspecLiteral(v) }} + expr_item {{ v.append(expr_item) }} + )* {{ return ListLiteral(v) if len(v) > 1 else v[0] }} - rule argspec_item: {{ var = None }} + rule expr_item: {{ var = None }} [ VAR [ ":" {{ var = VAR }} @@ -105,12 +105,6 @@ parser SassExpression: ] expr_slst {{ return (var, expr_slst) }} - rule expr_lst: expr_slst {{ v = [expr_slst] }} - ( - COMMA - expr_slst {{ v.append(expr_slst) }} - )* {{ return ListLiteral(v) if len(v) > 1 else v[0] }} - rule expr_slst: expr {{ v = [expr] }} ( expr {{ v.append(expr) }} diff --git a/scss/src/grammar/grammar.py b/scss/src/grammar/grammar.py index 4435465..48aec53 100644 --- a/scss/src/grammar/grammar.py +++ b/scss/src/grammar/grammar.py @@ -181,8 +181,8 @@ class SassExpression(Parser): v = ArgspecLiteral([]) LPAR = self._scan('LPAR') if self._peek(self.atom_rsts) != 'RPAR': - argspec = self.argspec() - v = argspec + expr_lst = self.expr_lst() + v = expr_lst RPAR = self._scan('RPAR') return CallOp(FNCT, v) elif _token_ == 'NUM': @@ -204,35 +204,26 @@ class SassExpression(Parser): VAR = self._scan('VAR') return Variable(VAR) - def argspec(self): - argspec_item = self.argspec_item() - v = [argspec_item] - while self._peek(self.argspec_rsts) == 'COMMA': + def expr_lst(self): + expr_item = self.expr_item() + v = [expr_item] + while self._peek(self.expr_lst_rsts) == 'COMMA': COMMA = self._scan('COMMA') - argspec_item = self.argspec_item() - v.append(argspec_item) - return ArgspecLiteral(v) + expr_item = self.expr_item() + v.append(expr_item) + return ListLiteral(v) if len(v) > 1 else v[0] - def argspec_item(self): + def expr_item(self): var = None - if self._peek(self.argspec_item_rsts) == 'VAR': + if self._peek(self.expr_item_rsts) == 'VAR': VAR = self._scan('VAR') - if self._peek(self.argspec_item_rsts_) == '":"': + if self._peek(self.expr_item_rsts_) == '":"': self._scan('":"') var = VAR else: self._rewind() expr_slst = self.expr_slst() return (var, expr_slst) - def expr_lst(self): - expr_slst = self.expr_slst() - v = [expr_slst] - while self._peek(self.expr_lst_rsts) == 'COMMA': - COMMA = self._scan('COMMA') - expr_slst = self.expr_slst() - v.append(expr_slst) - return ListLiteral(v) if len(v) > 1 else v[0] - def expr_slst(self): expr = self.expr() v = [expr] @@ -246,19 +237,18 @@ class SassExpression(Parser): atom_rsts = set(['LPAR', 'BANG_IMPORTANT', 'COLOR', 'QSTR', 'SIGN', 'NOT', 'ADD', 'NUM', 'FNCT', 'STR', 'VAR', 'RPAR', 'ID']) u_expr_chks = set(['LPAR', 'COLOR', 'QSTR', 'NUM', 'FNCT', 'STR', 'VAR', 'BANG_IMPORTANT', 'ID']) m_expr_rsts = set(['LPAR', 'SUB', 'QSTR', 'RPAR', 'MUL', 'DIV', 'BANG_IMPORTANT', 'LE', 'COLOR', 'NE', 'LT', 'NUM', 'COMMA', 'GT', 'END', 'SIGN', 'GE', 'FNCT', 'STR', 'VAR', 'EQ', 'ID', 'AND', 'ADD', 'NOT', 'OR']) - argspec_item_rsts_ = set(['LPAR', 'COLOR', 'QSTR', 'SIGN', 'VAR', 'ADD', 'NUM', '":"', 'STR', 'NOT', 'BANG_IMPORTANT', 'ID', 'FNCT']) expr_lst_rsts = set(['END', 'COMMA', 'RPAR']) - argspec_rsts = set(['COMMA', 'RPAR']) - and_expr_rsts = set(['AND', 'LPAR', 'BANG_IMPORTANT', 'END', 'COLOR', 'QSTR', 'SIGN', 'VAR', 'ADD', 'NUM', 'COMMA', 'FNCT', 'STR', 'NOT', 'ID', 'RPAR', 'OR']) + and_expr_rsts = set(['AND', 'LPAR', 'RPAR', 'END', 'COLOR', 'QSTR', 'SIGN', 'VAR', 'ADD', 'NUM', 'COMMA', 'FNCT', 'STR', 'NOT', 'ID', 'BANG_IMPORTANT', 'OR']) u_expr_rsts = set(['LPAR', 'COLOR', 'QSTR', 'SIGN', 'ADD', 'NUM', 'FNCT', 'STR', 'VAR', 'BANG_IMPORTANT', 'ID']) - expr_rsts = set(['LPAR', 'BANG_IMPORTANT', 'END', 'COLOR', 'QSTR', 'RPAR', 'VAR', 'ADD', 'NUM', 'COMMA', 'FNCT', 'STR', 'NOT', 'ID', 'SIGN', 'OR']) + expr_rsts = set(['LPAR', 'RPAR', 'END', 'COLOR', 'QSTR', 'SIGN', 'VAR', 'ADD', 'NUM', 'COMMA', 'FNCT', 'STR', 'NOT', 'ID', 'BANG_IMPORTANT', 'OR']) + expr_item_rsts = set(['LPAR', 'COLOR', 'QSTR', 'SIGN', 'NOT', 'ADD', 'NUM', 'FNCT', 'STR', 'VAR', 'BANG_IMPORTANT', 'ID']) not_expr_rsts = set(['LPAR', 'COLOR', 'QSTR', 'SIGN', 'VAR', 'ADD', 'NUM', 'FNCT', 'STR', 'NOT', 'BANG_IMPORTANT', 'ID']) - argspec_item_rsts = set(['LPAR', 'COLOR', 'QSTR', 'SIGN', 'NOT', 'ADD', 'NUM', 'FNCT', 'STR', 'VAR', 'BANG_IMPORTANT', 'ID']) atom_rsts_ = set(['LPAR', 'SUB', 'QSTR', 'RPAR', 'VAR', 'MUL', 'DIV', 'BANG_IMPORTANT', 'LE', 'COLOR', 'NE', 'LT', 'NUM', 'COMMA', 'GT', 'END', 'SIGN', 'GE', 'FNCT', 'STR', 'UNITS', 'EQ', 'ID', 'AND', 'ADD', 'NOT', 'OR']) comparison_chks = set(['GT', 'GE', 'NE', 'LT', 'LE', 'EQ']) a_expr_chks = set(['ADD', 'SUB']) a_expr_rsts = set(['LPAR', 'SUB', 'QSTR', 'RPAR', 'BANG_IMPORTANT', 'LE', 'COLOR', 'NE', 'LT', 'NUM', 'COMMA', 'GT', 'END', 'SIGN', 'GE', 'FNCT', 'STR', 'VAR', 'EQ', 'ID', 'AND', 'ADD', 'NOT', 'OR']) - expr_slst_rsts = set(['LPAR', 'BANG_IMPORTANT', 'END', 'COLOR', 'QSTR', 'RPAR', 'VAR', 'ADD', 'NUM', 'COMMA', 'FNCT', 'STR', 'NOT', 'SIGN', 'ID']) + expr_item_rsts_ = set(['LPAR', 'COLOR', 'QSTR', 'SIGN', 'VAR', 'ADD', 'NUM', '":"', 'STR', 'NOT', 'BANG_IMPORTANT', 'ID', 'FNCT']) + expr_slst_rsts = set(['LPAR', 'RPAR', 'END', 'COLOR', 'QSTR', 'SIGN', 'VAR', 'ADD', 'NUM', 'COMMA', 'FNCT', 'STR', 'NOT', 'BANG_IMPORTANT', 'ID']) ### Grammar ends. |