Skip to content

Commit 7766e22

Browse files
Gabriel T. Harris 4Gabriel T. Harris 4
authored andcommitted
Finalized Grammar
Moved grammar to its own file. And placed it into the proper place.
1 parent cffe840 commit 7766e22

File tree

2 files changed

+60
-41
lines changed

2 files changed

+60
-41
lines changed

Notes.txt

Lines changed: 2 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -27,46 +27,7 @@ Later Versions:
2727
-example, when a hand includes a draw card, apply draw to look at more cards for evaluations
2828

2929
-provide more options for writing configuration file?
30+
-allow some regex for stating cards?
31+
3032
-additional options for command line arguments?
3133
-maybe put in the planned (yet to be written) command line argument parser
32-
33-
34-
Configuration file grammar:
35-
//lowercase for literal, capital for production rule.
36-
START -> DECK PROBABILITY .
37-
38-
DECK -> DECK_START open_brace DECK_LIST close_brace.
39-
DECK_START -> deck_list: .
40-
DECK_LIST -> CARD MORE_CARDS .
41-
MORE_CARDS -> CARD MORE_CARDS | .
42-
CARD -> NAME ; .
43-
NAME -> name .
44-
45-
PROBABILITY -> PROBABILITY_START open_brace SCENARIO_LIST close_brace .
46-
PROBABILITY_START -> scenarios: .
47-
48-
SCENARIO_LIST -> SCENARIO MORE_SCENARIOS .
49-
MORE_SCENARIOS -> SCENARIO MORE_SCENARIOS | .
50-
51-
SCENARIO -> SCENARIO_NAME open_brace TREE DISPLAY close_brace .
52-
SCENARIO_NAME -> NAME equals .
53-
54-
TREE -> TREE_START open_brace EXPR close_brace .
55-
TREE_START -> scenario equals .
56-
57-
EXPR -> UNARY_EXPR BINARY_EXPR .
58-
PRIMARY_EXPR -> open_bracket NAME close_bracket
59-
|less_than NAME greater_than
60-
|open_parenthesis EXPR close_parenthesis .
61-
62-
UNARY_EXPR -> UNARY_OPERATOR UNARY_EXPR | PRIMARY_EXPR .
63-
UNARY_OPERATOR -> not .
64-
65-
BINARY_EXPR -> BINARY_OPERATOR UNARY_EXPR BINARY_EXPR | .
66-
BINARY_OPERATOR -> and | or | xor .
67-
68-
DISPLAY -> DISPLAY_START DISPLAY_VALUE ; | .
69-
DISPLAY_START -> display equals .
70-
DISPLAY_VALUE -> true | false .
71-
72-
https://smlweb.cpsc.ucalgary.ca/vital-stats.php?grammar=START+-%3E+DECK+PROBABILITY+.%0D%0A%0D%0ADECK+-%3E+DECK_START+open_brace+DECK_LIST+close_brace.%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+NAME+%3B+.%0D%0ANAME+-%3E+name+.%0D%0A%0D%0APROBABILITY+-%3E+PROBABILITY_START+open_brace+SCENARIO_LIST+close_brace+.%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+open_brace+TREE+DISPLAY+close_brace+.%0D%0ASCENARIO_NAME+-%3E+NAME+equals+.%0D%0A%0D%0ATREE+-%3E+TREE_START+open_brace+EXPR+close_brace+.%0D%0ATREE_START+-%3E+scenario+equals+.%0D%0A%0D%0AEXPR+-%3E+UNARY_EXPR+BINARY_EXPR+.%0D%0APRIMARY_EXPR+-%3E+open_bracket+NAME+close_bracket+%0D%0A+++++++++++++++%7Cless_than+NAME+greater_than+%0D%0A+++++++++++++++%7Copen_parenthesis+EXPR+close_parenthesis+.%0D%0A%0D%0AUNARY_EXPR+-%3E+UNARY_OPERATOR+UNARY_EXPR+%7C+PRIMARY_EXPR+.%0D%0AUNARY_OPERATOR+-%3E+not+.%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+.

parser/Grammar notes.txt

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
Configuration file grammar:
2+
//regex which replace litteral values used are represented by the following:
3+
deck_list: deck list:
4+
card_name: [^;\]]+ //include CONDITION_CARD_END
5+
scenarios: scenarios:
6+
scenario_name: [^=>]+ //include CONDITION_SCENARIO_END
7+
display: display
8+
Upper case: and, or, xor, true, false.
9+
single symbol are exactly the same.
10+
11+
//lowercase for literal, capital for production rule.
12+
START -> DECK PROBABILITY .
13+
14+
DECK -> DECK_START SENTINEL_START DECK_LIST SENTINEL_END.
15+
DECK_START -> deck_list: .
16+
DECK_LIST -> CARD MORE_CARDS .
17+
MORE_CARDS -> CARD MORE_CARDS | .
18+
CARD -> CARD_NAME ; .
19+
CARD_NAME -> card_name .
20+
21+
PROBABILITY -> PROBABILITY_START SENTINEL_START SCENARIO_LIST SENTINEL_END .
22+
PROBABILITY_START -> scenarios: .
23+
24+
SCENARIO_LIST -> SCENARIO MORE_SCENARIOS .
25+
MORE_SCENARIOS -> SCENARIO MORE_SCENARIOS | .
26+
27+
SCENARIO -> SCENARIO_NAME equals SENTINEL_START TREE DISPLAY SENTINEL_END .
28+
SCENARIO_NAME -> scenario_name .
29+
30+
TREE -> TREE_START SENTINEL_START EXPR SENTINEL_END ; .
31+
TREE_START -> scenario equals .
32+
33+
EXPR -> UNARY_EXPR BINARY_EXPR .
34+
35+
UNARY_EXPR -> UNARY_OPERATOR UNARY_EXPR | PRIMARY_EXPR .
36+
UNARY_OPERATOR -> not .
37+
38+
PRIMARY_EXPR -> CONDITION_CARD_START CARD_NAME CONDITION_CARD_END
39+
|CONDITION_SCENARIO_START SCENARIO_NAME CONDITION_SCENARIO_END
40+
|CONDITION_EXPR_START EXPR CONDITION_EXPR_END .
41+
CONDITION_CARD_START -> [ .
42+
CONDITION_CARD_END -> ] .
43+
CONDITION_SCENARIO_START -> < .
44+
CONDITION_SCENARIO_END -> > .
45+
CONDITION_EXPR_START -> ( .
46+
CONDITION_EXPR_END -> ) .
47+
48+
BINARY_EXPR -> BINARY_OPERATOR UNARY_EXPR BINARY_EXPR | .
49+
BINARY_OPERATOR -> and | or | xor .
50+
51+
DISPLAY -> DISPLAY_START DISPLAY_VALUE ; | .
52+
DISPLAY_START -> display equals .
53+
DISPLAY_VALUE -> true | false .
54+
55+
SENTINEL_START -> {.
56+
SENTINEL_END -> } .
57+
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+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

Comments
 (0)