|
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 |
5 | 4 | scenarios: scenarios: |
6 | | -scenario_name: [^=>]+ //include CONDITION_SCENARIO_END |
7 | 5 | display: display |
8 | 6 | Upper case: not, and, or, xor |
9 | 7 | Lower case: true, false |
10 | 8 | single symbol are exactly the same. |
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. |
| 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 + "]+" |
14 | 11 |
|
15 | 12 | //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. |
17 | 13 | START -> DECK PROBABILITY . |
18 | 14 |
|
19 | 15 | DECK -> DECK_START SENTINEL_START DECK_LIST SENTINEL_END. |
20 | 16 | DECK_START -> deck list: . |
21 | 17 | DECK_LIST -> CARD MORE_CARDS . |
22 | 18 | MORE_CARDS -> CARD MORE_CARDS | . |
23 | 19 | CARD -> CARD_NAME ; . |
24 | | -CARD_NAME -> card_name . |
| 20 | +CARD_NAME -> id . |
25 | 21 |
|
26 | 22 | PROBABILITY -> PROBABILITY_START SENTINEL_START SCENARIO_LIST SENTINEL_END . |
27 | 23 | PROBABILITY_START -> scenarios: . |
28 | 24 |
|
29 | 25 | SCENARIO_LIST -> SCENARIO MORE_SCENARIOS . |
30 | 26 | MORE_SCENARIOS -> SCENARIO MORE_SCENARIOS | . |
31 | 27 |
|
32 | | -SCENARIO -> SCENARIO_NAME = SENTINEL_START TREE DISPLAY SENTINEL_END . |
33 | | -SCENARIO_NAME -> scenario_name . |
| 28 | +SCENARIO -> SCENARIO_NAME assign SENTINEL_START TREE DISPLAY SENTINEL_END . |
| 29 | +SCENARIO_NAME -> id . |
34 | 30 |
|
35 | | -TREE -> TREE_START = SENTINEL_START EXPR SENTINEL_END ; . |
| 31 | +TREE -> TREE_START assign SENTINEL_START EXPR SENTINEL_END ; . |
36 | 32 | TREE_START -> scenario . |
37 | 33 |
|
38 | 34 | EXPR -> UNARY_EXPR BINARY_EXPR . |
39 | 35 |
|
40 | 36 | UNARY_EXPR -> UNARY_OPERATOR UNARY_EXPR | PRIMARY_EXPR . |
41 | 37 | UNARY_OPERATOR -> not . |
42 | 38 |
|
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 -> ) . |
| 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 . |
52 | 47 |
|
53 | 48 | BINARY_EXPR -> BINARY_OPERATOR UNARY_EXPR BINARY_EXPR | . |
54 | 49 | BINARY_OPERATOR -> and | or | xor . |
55 | 50 |
|
56 | | -DISPLAY -> DISPLAY_START = DISPLAY_VALUE ; | . |
| 51 | +DISPLAY -> DISPLAY_START assign DISPLAY_VALUE ; | . |
57 | 52 | DISPLAY_START -> display . |
58 | 53 | DISPLAY_VALUE -> true | false . |
59 | 54 |
|
60 | | -SENTINEL_START -> { . |
61 | | -SENTINEL_END -> } . |
| 55 | +SENTINEL_START -> open_brace . |
| 56 | +SENTINEL_END -> close_brace . |
62 | 57 |
|
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+. |
| 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+. |
0 commit comments