Skip to content

Commit 3a3d00d

Browse files
Clean Up
Made none functional changes to correct/update a few things.
1 parent 0162e6f commit 3a3d00d

13 files changed

+41
-43
lines changed

Notes.txt

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Configuration File:
44
-throw away none main deck parts
55
-maybe read a ydk file instead of in same file.
66
-declare scenarios
7-
-state which to display at the end
7+
-state which to display at the end, which also states which should be evaluated on its on
88

99
Structure:
1010

@@ -14,20 +14,21 @@ Structure:
1414
-short circuit operator evaluation
1515
-node per operator
1616
-node per single match as leaf
17-
-TODO: figure out duplicates and overlap of sub-scenarios.
17+
-cards are used, thereby preventing a card from being matched by multiple conditions.
1818

1919
Parser:
2020

21-
-Like a compiler going over expressions.
22-
-Table driven?
21+
-Like a compiler going over expressions (context free grammar).
22+
-Table driven, LL(1)
2323

2424
Later Versions:
2525

2626
-add special ability to cards
2727
-example, when a hand includes a draw card, apply draw to look at more cards for evaluations
28+
-draw, example Pot of Greed
29+
-excavate, Pot of Duality
30+
-draw then discard, Graceful Charity
31+
-other such as Pot of Desires
2832

2933
-provide more options for writing configuration file?
3034
-allow some regex for stating cards?
31-
32-
-additional options for command line arguments?
33-
-maybe put in the planned (yet to be written) command line argument parser

parser/Grammar notes.txt

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,58 @@
11
Configuration file grammar:
22
//regex which replace literal values used are represented by the following:
33
deck_list: deck list:
4-
card_name: [^;\]]+ //include CONDITION_CARD_END
54
scenarios: scenarios:
6-
scenario_name: [^=>]+ //include CONDITION_SCENARIO_END
75
display: display
86
Upper case: not, and, or, xor
97
Lower case: true, false
108
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 + "]+"
1411

1512
//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.
1713
START -> DECK PROBABILITY .
1814

1915
DECK -> DECK_START SENTINEL_START DECK_LIST SENTINEL_END.
2016
DECK_START -> deck list: .
2117
DECK_LIST -> CARD MORE_CARDS .
2218
MORE_CARDS -> CARD MORE_CARDS | .
2319
CARD -> CARD_NAME ; .
24-
CARD_NAME -> card_name .
20+
CARD_NAME -> id .
2521

2622
PROBABILITY -> PROBABILITY_START SENTINEL_START SCENARIO_LIST SENTINEL_END .
2723
PROBABILITY_START -> scenarios: .
2824

2925
SCENARIO_LIST -> SCENARIO MORE_SCENARIOS .
3026
MORE_SCENARIOS -> SCENARIO MORE_SCENARIOS | .
3127

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 .
3430

35-
TREE -> TREE_START = SENTINEL_START EXPR SENTINEL_END ; .
31+
TREE -> TREE_START assign SENTINEL_START EXPR SENTINEL_END ; .
3632
TREE_START -> scenario .
3733

3834
EXPR -> UNARY_EXPR BINARY_EXPR .
3935

4036
UNARY_EXPR -> UNARY_OPERATOR UNARY_EXPR | PRIMARY_EXPR .
4137
UNARY_OPERATOR -> not .
4238

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 .
5247

5348
BINARY_EXPR -> BINARY_OPERATOR UNARY_EXPR BINARY_EXPR | .
5449
BINARY_OPERATOR -> and | or | xor .
5550

56-
DISPLAY -> DISPLAY_START = DISPLAY_VALUE ; | .
51+
DISPLAY -> DISPLAY_START assign DISPLAY_VALUE ; | .
5752
DISPLAY_START -> display .
5853
DISPLAY_VALUE -> true | false .
5954

60-
SENTINEL_START -> { .
61-
SENTINEL_END -> } .
55+
SENTINEL_START -> open_brace .
56+
SENTINEL_END -> close_brace .
6257

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+.

structure/And_Operator_Node.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
<b>
77
Purpose: And operator<br>
88
Programmer: Gabriel Toban Harris, Alexander Herman Oxorn <br>
9-
Date: 2021-07-24
109
</b>
1110
*/
1211

structure/Base_Node.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
*/
1010

1111
//TODO: add toString() methods with some reference to outputting as dot file format.
12-
//TODO: figure out edge cases in evaluation for both duplication (maybe paint) and overlap (maybe attempt condition evaluation in different combinations).
1312
public abstract class Base_Node<T> implements Evaluable<T>
1413
{
1514
/**

structure/Binary_Operator_Node.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
</b>
99
*/
1010

11-
//TODO: consider converting to at least 2
1211
public abstract class Binary_Operator_Node<T> extends Base_Node<T>
1312
{
1413
/**

structure/Deck_Card.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
<b>
55
Purpose: To be used as the representation of cards in a deck.<br>
66
Programmer: Gabriel Toban Harris, Alexander Herman Oxorn <br>
7-
Date: 2021-07-25
87
</b>
98
*/
109

structure/Evaluable.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
<b>
1010
Purpose: Requirement to be a node for evaluation purposes.<br>
1111
Programmer: Gabriel Toban Harris, Alexander Herman Oxorn <br>
12-
Date: 2021-07-24
1312
</b>
1413
*/
1514

structure/Leaf_Node.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
<b>
77
Purpose: Also will be used as the leaf node of the tree structure.<br>
88
Programmer: Gabriel Toban Harris, Alexander Herman Oxorn <br>
9-
Date: 2021-07-23
109
</b>
1110
*/
1211

structure/Not_Operator_Node.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
<b>
77
Purpose: Not Operator<br>
88
Programmer: Gabriel Toban Harris, Alexander Herman Oxorn <br>
9-
Date: 2021-07-24
109
</b>
1110
*/
1211

structure/Or_Operator_Node.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
<b>
77
Purpose: Or operator<br>
88
Programmer: Gabriel Toban Harris, Alexander Herman Oxorn <br>
9-
Date: 2021-07-24
109
</b>
1110
*/
1211

0 commit comments

Comments
 (0)