|
1 | 1 | Configuration file grammar: |
2 | 2 | //regex which replace literal values used are represented by the following: |
3 | 3 | deck_list: deck list: |
| 4 | +card_name: [^;\]]+ //include CONDITION_CARD_END |
4 | 5 | scenarios: scenarios: |
| 6 | +scenario_name: [^=>]+ //include CONDITION_SCENARIO_END |
5 | 7 | display: display |
6 | 8 | Upper case: not, and, or, xor |
7 | 9 | Lower case: true, false |
8 | 10 | single symbol are exactly the same. |
9 | | -id: "[^;=\n" + SENTINEL_START + SENTINEL_END + CONDITION_CARD_START + CONDITION_CARD_END + |
10 | | - CONDITION_SCENARIO_START + CONDITION_SCENARIO_END + CONDITION_EXPR_START + CONDITION_EXPR_END + "]+" |
| 11 | + |
| 12 | +Merge card_name and scenario_name and not allowing any already reserved special characters into unified ID regex for tokenizer. |
| 13 | +Thus ID: [^;=<>\(\)\{\}]+ and grammar will defer to ID in places it used to use them. |
11 | 14 |
|
12 | 15 | //lower case for literal, capital for production rule. |
| 16 | +//Note grammar does not have the unification resulting in ID, though is coded with that change. |
13 | 17 | START -> DECK PROBABILITY . |
14 | 18 |
|
15 | 19 | DECK -> DECK_START SENTINEL_START DECK_LIST SENTINEL_END. |
16 | 20 | DECK_START -> deck list: . |
17 | 21 | DECK_LIST -> CARD MORE_CARDS . |
18 | 22 | MORE_CARDS -> CARD MORE_CARDS | . |
19 | 23 | CARD -> CARD_NAME ; . |
20 | | -CARD_NAME -> id . |
| 24 | +CARD_NAME -> card_name . |
21 | 25 |
|
22 | 26 | PROBABILITY -> PROBABILITY_START SENTINEL_START SCENARIO_LIST SENTINEL_END . |
23 | 27 | PROBABILITY_START -> scenarios: . |
24 | 28 |
|
25 | 29 | SCENARIO_LIST -> SCENARIO MORE_SCENARIOS . |
26 | 30 | MORE_SCENARIOS -> SCENARIO MORE_SCENARIOS | . |
27 | 31 |
|
28 | | -SCENARIO -> SCENARIO_NAME assign SENTINEL_START TREE DISPLAY SENTINEL_END . |
29 | | -SCENARIO_NAME -> id . |
| 32 | +SCENARIO -> SCENARIO_NAME = SENTINEL_START TREE DISPLAY SENTINEL_END . |
| 33 | +SCENARIO_NAME -> scenario_name . |
30 | 34 |
|
31 | | -TREE -> TREE_START assign SENTINEL_START EXPR SENTINEL_END ; . |
| 35 | +TREE -> TREE_START = SENTINEL_START EXPR SENTINEL_END ; . |
32 | 36 | TREE_START -> scenario . |
33 | 37 |
|
34 | 38 | EXPR -> UNARY_EXPR BINARY_EXPR . |
35 | 39 |
|
36 | 40 | UNARY_EXPR -> UNARY_OPERATOR UNARY_EXPR | PRIMARY_EXPR . |
37 | 41 | UNARY_OPERATOR -> not . |
38 | 42 |
|
39 | | -PRIMARY_EXPR -> CONDITION_CARD_START CARD_NAME CONDITION_CARD_END | CONDITION_SCENARIO_START SCENARIO_NAME CONDITION_SCENARIO_END | CONDITION_EXPR_START EXPR CONDITION_EXPR_END . |
40 | | - |
41 | | -CONDITION_CARD_START -> open_bracket . |
42 | | -CONDITION_CARD_END -> close_bracket . |
43 | | -CONDITION_SCENARIO_START -> less_then . |
44 | | -CONDITION_SCENARIO_END -> greater_then . |
45 | | -CONDITION_EXPR_START -> open_parenthesis . |
46 | | -CONDITION_EXPR_END -> close_parenthesis . |
| 43 | +PRIMARY_EXPR -> CONDITION_CARD_START CARD_NAME CONDITION_CARD_END |
| 44 | + |CONDITION_SCENARIO_START SCENARIO_NAME CONDITION_SCENARIO_END |
| 45 | + |CONDITION_EXPR_START EXPR CONDITION_EXPR_END . |
| 46 | +CONDITION_CARD_START -> [ . |
| 47 | +CONDITION_CARD_END -> ] . |
| 48 | +CONDITION_SCENARIO_START -> < . |
| 49 | +CONDITION_SCENARIO_END -> > . |
| 50 | +CONDITION_EXPR_START -> ( . |
| 51 | +CONDITION_EXPR_END -> ) . |
47 | 52 |
|
48 | 53 | BINARY_EXPR -> BINARY_OPERATOR UNARY_EXPR BINARY_EXPR | . |
49 | 54 | BINARY_OPERATOR -> and | or | xor . |
50 | 55 |
|
51 | | -DISPLAY -> DISPLAY_START assign DISPLAY_VALUE ; | . |
| 56 | +DISPLAY -> DISPLAY_START = DISPLAY_VALUE ; | . |
52 | 57 | DISPLAY_START -> display . |
53 | 58 | DISPLAY_VALUE -> true | false . |
54 | 59 |
|
55 | | -SENTINEL_START -> open_brace . |
56 | | -SENTINEL_END -> close_brace . |
| 60 | +SENTINEL_START -> { . |
| 61 | +SENTINEL_END -> } . |
57 | 62 |
|
58 | | -https://smlweb.cpsc.ucalgary.ca/vital-stats.php?grammar=START+-%3E+DECK+PROBABILITY+.%0D%0A%0D%0ADECK+-%3E+DECK_START+SENTINEL_START+DECK_LIST+SENTINEL_END.%0D%0ADECK_START+-%3E+deck+list%3A+.%0D%0ADECK_LIST+-%3E+CARD+MORE_CARDS+.%0D%0AMORE_CARDS+-%3E+CARD+MORE_CARDS+%7C+.%0D%0ACARD+-%3E+CARD_NAME+%3B+.%0D%0ACARD_NAME+-%3E+id+.%0D%0A%0D%0APROBABILITY+-%3E+PROBABILITY_START+SENTINEL_START+SCENARIO_LIST+SENTINEL_END+.%0D%0APROBABILITY_START+-%3E+scenarios%3A+.%0D%0A%0D%0ASCENARIO_LIST+-%3E+SCENARIO+MORE_SCENARIOS+.%0D%0AMORE_SCENARIOS+-%3E+SCENARIO+MORE_SCENARIOS+%7C+.%0D%0A%0D%0ASCENARIO+-%3E+SCENARIO_NAME+assign+SENTINEL_START+TREE+DISPLAY+SENTINEL_END+.%0D%0ASCENARIO_NAME+-%3E+id+.%0D%0A%0D%0ATREE+-%3E+TREE_START+assign+SENTINEL_START+EXPR+SENTINEL_END+%3B+.%0D%0ATREE_START+-%3E+scenario+.%0D%0A%0D%0AEXPR+-%3E+UNARY_EXPR+BINARY_EXPR+.%0D%0A%0D%0AUNARY_EXPR+-%3E+UNARY_OPERATOR+UNARY_EXPR+%7C+PRIMARY_EXPR+.%0D%0AUNARY_OPERATOR+-%3E+not+.%0D%0A%0D%0APRIMARY_EXPR+-%3E+CONDITION_CARD_START+CARD_NAME+CONDITION_CARD_END+%7C+CONDITION_SCENARIO_START+SCENARIO_NAME+CONDITION_SCENARIO_END+%7C+CONDITION_EXPR_START+EXPR+CONDITION_EXPR_END+.%0D%0A%0D%0ACONDITION_CARD_START+-%3E+open_bracket+.%0D%0ACONDITION_CARD_END+-%3E+close_bracket+.%0D%0ACONDITION_SCENARIO_START+-%3E+less_then+.%0D%0ACONDITION_SCENARIO_END+-%3E+greater_then+.%0D%0ACONDITION_EXPR_START+-%3E+open_parenthesis+.%0D%0ACONDITION_EXPR_END+-%3E+close_parenthesis+.%0D%0A%0D%0ABINARY_EXPR+-%3E+BINARY_OPERATOR+UNARY_EXPR+BINARY_EXPR+%7C+.%0D%0ABINARY_OPERATOR+-%3E+and+%7C+or+%7C+xor+.%0D%0A%0D%0ADISPLAY+-%3E+DISPLAY_START+assign+DISPLAY_VALUE+%3B+%7C+.%0D%0ADISPLAY_START+-%3E+display+.%0D%0ADISPLAY_VALUE+-%3E+true+%7C+false+.%0D%0A%0D%0ASENTINEL_START+-%3E+open_brace+.%0D%0ASENTINEL_END+-%3E+close_brace+. |
| 63 | +https://smlweb.cpsc.ucalgary.ca/vital-stats.php?grammar=START+-%3E+DECK+PROBABILITY+.%0D%0A%0D%0ADECK+-%3E+DECK_START+SENTINEL_START+DECK_LIST+SENTINEL_END.%0D%0ADECK_START+-%3E+deck_list%3A+.%0D%0ADECK_LIST+-%3E+CARD+MORE_CARDS+.%0D%0AMORE_CARDS+-%3E+CARD+MORE_CARDS+%7C+.%0D%0ACARD+-%3E+CARD_NAME+%3B+.%0D%0ACARD_NAME+-%3E+card_name+.%0D%0A%0D%0APROBABILITY+-%3E+PROBABILITY_START+SENTINEL_START+SCENARIO_LIST+SENTINEL_END+.%0D%0APROBABILITY_START+-%3E+scenarios%3A+.%0D%0A%0D%0ASCENARIO_LIST+-%3E+SCENARIO+MORE_SCENARIOS+.%0D%0AMORE_SCENARIOS+-%3E+SCENARIO+MORE_SCENARIOS+%7C+.%0D%0A%0D%0ASCENARIO+-%3E+SCENARIO_NAME+equals+SENTINEL_START+TREE+DISPLAY+SENTINEL_END+.%0D%0ASCENARIO_NAME+-%3E+scenario_name+.%0D%0A%0D%0ATREE+-%3E+TREE_START+SENTINEL_START+EXPR+SENTINEL_END+%3B+.%0D%0ATREE_START+-%3E+scenario+equals+.%0D%0A%0D%0AEXPR+-%3E+UNARY_EXPR+BINARY_EXPR+.%0D%0A%0D%0AUNARY_EXPR+-%3E+UNARY_OPERATOR+UNARY_EXPR+%7C+PRIMARY_EXPR+.%0D%0AUNARY_OPERATOR+-%3E+not+.%0D%0A%0D%0APRIMARY_EXPR+-%3E+CONDITION_CARD_START+CARD_NAME+CONDITION_CARD_END+%0D%0A+++++++++++++++%7CCONDITION_SCENARIO_START+SCENARIO_NAME+CONDITION_SCENARIO_END+%0D%0A+++++++++++++++%7CCONDITION_EXPR_START+EXPR+CONDITION_EXPR_END+.%0D%0ACONDITION_CARD_START+-%3E+open_bracket+.%0D%0ACONDITION_CARD_END+-%3E+close_bracket+.%0D%0ACONDITION_SCENARIO_START+-%3E+less_than+.%0D%0ACONDITION_SCENARIO_END+-%3E+greater_than+.%0D%0ACONDITION_EXPR_START+-%3E+open_parenthesis+.%0D%0ACONDITION_EXPR_END+-%3E+close_parenthesis+.%0D%0A%0D%0ABINARY_EXPR+-%3E+BINARY_OPERATOR+UNARY_EXPR+BINARY_EXPR+%7C+.%0D%0ABINARY_OPERATOR+-%3E+and+%7C+or+%7C+xor+.%0D%0A%0D%0ADISPLAY+-%3E+DISPLAY_START+DISPLAY_VALUE+%3B+%7C+.%0D%0ADISPLAY_START+-%3E+display+equals+.%0D%0ADISPLAY_VALUE+-%3E+true+%7C+false+.%0D%0A%0D%0ASENTINEL_START+-%3E+open_brace.%0D%0ASENTINEL_END+-%3E+close_brace+. |
0 commit comments