123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- Grammar
- ----
- Statement = DiceExpression | Command | Statement StatementDelimiter Statement | Statement EOL | EOL
- Command = 'quit' | 'clear'
- DiceExpression = Rep Rolls | Rolls | Rep Threshold | Threshold
- Rep = Number RepOperator
- Threshold = Rolls ThresholdOperator Number
- Rolls = Rolls AdditiveOperator Roll | Roll
- Roll = Number SingleDieOutcome | SingleDieOutcome | Number
- SingleDieOutcome = DiceOperator Number | DiceOperator Number Modifiers
- Modifiers = Explode | Keep | Explode Keep
- Explode = ExplodeOperator Number
- Keep = KeepOperator Number
- AdditiveOperator = '+' | '-'
- DiceOperator = 'd' | 'D'
- RepOperator = 'x' | 'X'
- ExplodeOperator = '!'
- ThresholdOperator = 't' | 'T' | '>'
- KeepOperator = 'k' | 'K'
- StatementDelimiter = ';'
- Valid state transitions
- ----
- INITIAL STATE TOKEN RECEIVED RESULTING STATE
- ------------------------------------------------------------------------
- start Number decide_reps_or_rolls
- start DiceOperator want_number_of_sides
- start AdditiveOperator want_roll
- start Command check_end
- start StatementDelimiter start
- start EOL finish
- decide_reps_or_rolls RepOperator want_roll
- decide_reps_or_rolls DiceOperator want_number_of_sides
- decide_reps_or_rolls AdditiveOperator want_roll
- decide_reps_or_rolls ThresholdOperator want_threshold
- decide_reps_or_rolls StatementDelimiter start
- decide_reps_or_rolls EOL finish
- want_number_of_sides Number check_modifiers_or_more_rolls
- want_roll Number check_dice_operator
- want_roll DiceOperator want_number_of_sides
- want_roll AdditiveOperator check_number_of_dice
- check_dice_operator DiceOperator want_number_of_sides
- check_dice_operator AdditiveOperator want_roll
- check_dice_operator ThresholdOperator want_threshold
- check_dice_operator StatementDelimiter start
- check_dice_operator EOL finish
- check_modifiers_or_more_rolls ExplodeOperator check_modifiers_or_more_rolls
- check_modifiers_or_more_rolls KeepOperator want_keep_number
- check_modifiers_or_more_rolls ThresholdOperator want_threshold
- check_modifiers_or_more_rolls AdditiveOperator want_roll
- check_modifiers_or_more_rolls StatementDelimiter start
- check_modifiers_or_more_rolls EOL finish
- check_more_rolls ThresholdOperator want_threshold
- check_more_rolls AdditiveOperator want_roll
- check_more_rolls StatementDelimiter start
- check_more_rolls EOL finish
- check_number_of_dice Number check_dice_operator
- check_number_of_dice DiceOperator want_number_of_sides
- want_threshold Number check_end
- want_keep_number Number check_more_rolls
- check_end StatementDelimiter start
- check_end EOL finish
|