summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerman M. Bravo <german.mb@deipi.com>2013-08-14 11:03:51 -0500
committerGerman M. Bravo <german.mb@deipi.com>2013-08-16 09:56:38 -0500
commitdf0cd8c81730c40ca1ca49e26be5ea33c3ee8095 (patch)
tree09a08579265f54a23167f109878318c4db8120e8
parentc6d2a8adfbeef4fceb2b776e993140ae51217fe4 (diff)
downloadpyscss-df0cd8c81730c40ca1ca49e26be5ea33c3ee8095.tar.gz
Arguments and expression lists should be the same
-rw-r--r--scss/src/grammar/grammar.g16
-rw-r--r--scss/src/grammar/grammar.py44
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.