|
12 | 12 | CaselessLiteral, Forward, Literal, OneOrMore, StringStart, StringEnd, |
13 | 13 | Suppress, Word, nums, opAssoc) |
14 | 14 |
|
15 | | -from dice.elements import Integer, Dice, Total, Mul, Div, Sub, Add |
| 15 | +from dice.elements import ( |
| 16 | + Integer, Dice, Mul, Div, Sub, Add, Total, Sort, Drop, Keep) |
16 | 17 | from dice.utilities import patch_pyparsing |
17 | 18 |
|
18 | 19 | patch_pyparsing() |
@@ -82,14 +83,18 @@ def parse_operator(expr, arity, association, action=None): |
82 | 83 |
|
83 | 84 | # An expression in dice notation |
84 | 85 | expression = StringStart() + operatorPrecedence(integer, [ |
85 | | - (Literal('d').suppress(), 2, opAssoc.LEFT, Dice.parse_binary), |
86 | | - (Literal('d').suppress(), 1, opAssoc.RIGHT, Dice.parse_unary), |
| 86 | + (CaselessLiteral('d').suppress(), 2, opAssoc.LEFT, Dice.parse_binary), |
| 87 | + (CaselessLiteral('d').suppress(), 1, opAssoc.RIGHT, Dice.parse_unary), |
87 | 88 |
|
88 | 89 | (Literal('/').suppress(), 2, opAssoc.LEFT, Div.parse), |
89 | 90 | (Literal('*').suppress(), 2, opAssoc.LEFT, Mul.parse), |
90 | 91 | (Literal('-').suppress(), 2, opAssoc.LEFT, Sub.parse), |
91 | 92 | (Literal('+').suppress(), 2, opAssoc.LEFT, Add.parse), |
92 | 93 |
|
93 | 94 | (CaselessLiteral('t').suppress(), 1, opAssoc.LEFT, Total.parse), |
| 95 | + (CaselessLiteral('s').suppress(), 1, opAssoc.LEFT, Sort.parse), |
| 96 | + |
| 97 | + (Literal('^').suppress(), 2, opAssoc.LEFT, Keep.parse), |
| 98 | + (Literal('v').suppress(), 2, opAssoc.LEFT, Drop.parse), |
94 | 99 | ]) + StringEnd() |
95 | 100 | expression.setName("expression") |
0 commit comments