Skip to content

Commit 31b7642

Browse files
Added Program Argument Parsing
Reworked all command line argument parsing to use new parser from external JAR. Also added said JAR. Added all expected command line arguments and corresponding code to parse them. Includes test file parsing.
1 parent 1da3d1e commit 31b7642

13 files changed

+765
-141
lines changed
25.1 KB
Binary file not shown.

Starting_Point.java

Lines changed: 332 additions & 141 deletions
Large diffs are not rendered by default.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
--verbose --error_log --input "testing/Test Input/" --output "testing/Test Output/"

testing/Test Output/5 Card Poker Test 2021-8-1_2118.outlexerrors

Whitespace-only changes.

testing/Test Output/5 Card Poker Test 2021-8-1_2118.outlextokens

Lines changed: 189 additions & 0 deletions
Large diffs are not rendered by default.

testing/Test Output/Remaining Scenario Errors 2021-8-1_2118.outlexerrors

Whitespace-only changes.
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
[Lexeme TYPE: DECK_START, LEXEME: deck list:, line number: 1]
2+
[Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 2]
3+
[Lexeme TYPE: ID, LEXEME: First, line number: 3][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 3]
4+
[Lexeme TYPE: ID, LEXEME: Second, line number: 4][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 4]
5+
[Lexeme TYPE: ID, LEXEME: Third, line number: 5][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 5]
6+
[Lexeme TYPE: ID, LEXEME: Forth, line number: 6][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 6]
7+
[Lexeme TYPE: ID, LEXEME: Fifth, line number: 7][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 7]
8+
[Lexeme TYPE: ID, LEXEME: 6th, line number: 8][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 8]
9+
[Lexeme TYPE: ID, LEXEME: 7th, line number: 9][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 9]
10+
[Lexeme TYPE: ID, LEXEME: Ash Blossom & Joyous Spring, line number: 10][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 10]
11+
[Lexeme TYPE: ID, LEXEME: First, line number: 11][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 11]
12+
[Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 12]
13+
14+
[Lexeme TYPE: LINE_COMMENT, LEXEME: //Some other variations exist for errors, but am not specifically noting them in error files., line number: 14]
15+
[Lexeme TYPE: PROBABILITY_START, LEXEME: scenarios:, line number: 15]
16+
[Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 16]
17+
[Lexeme TYPE: ID, LEXEME: Duplicate, line number: 17][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 17] [Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 17][Lexeme TYPE: TREE_START, LEXEME: scenario, line number: 17][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 17] [Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 17][Lexeme TYPE: CONDITION_CARD_START, LEXEME: [, line number: 17][Lexeme TYPE: ID, LEXEME: 7th, line number: 17][Lexeme TYPE: CONDITION_CARD_END, LEXEME: ], line number: 17][Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 17][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 17][Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 17]
18+
19+
[Lexeme TYPE: ID, LEXEME: Duplicate, line number: 19][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 19] [Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 19][Lexeme TYPE: TREE_START, LEXEME: scenario, line number: 19][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 19] [Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 19][Lexeme TYPE: CONDITION_CARD_START, LEXEME: [, line number: 19][Lexeme TYPE: ID, LEXEME: 6th, line number: 19][Lexeme TYPE: CONDITION_CARD_END, LEXEME: ], line number: 19][Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 19][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 19][Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 19] [Lexeme TYPE: LINE_COMMENT, LEXEME: //repeated name error, line number: 19]
20+
21+
[Lexeme TYPE: LINE_COMMENT, LEXEME: //Other variations of missing stuff with binary operators is not specifically tested for but is invalid., line number: 21]
22+
[Lexeme TYPE: ID, LEXEME: Binary Operand Missing, line number: 22][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 22] [Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 22][Lexeme TYPE: TREE_START, LEXEME: scenario, line number: 22][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 22] [Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 22][Lexeme TYPE: CONDITION_CARD_START, LEXEME: [, line number: 22][Lexeme TYPE: ID, LEXEME: A, line number: 22][Lexeme TYPE: CONDITION_CARD_END, LEXEME: ], line number: 22] [Lexeme TYPE: XOR, LEXEME: XOR, line number: 22][Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 22][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 22][Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 22] [Lexeme TYPE: LINE_COMMENT, LEXEME: //missing operand error, line number: 22]
23+
24+
[Lexeme TYPE: ID, LEXEME: Undefined reference, line number: 24][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 24] [Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 24][Lexeme TYPE: TREE_START, LEXEME: scenario, line number: 24][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 24] [Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 24][Lexeme TYPE: CONDITION_SCENARIO_START, LEXEME: <, line number: 24][Lexeme TYPE: ID, LEXEME: Does Not Exist, line number: 24][Lexeme TYPE: CONDITION_SCENARIO_END, LEXEME: >, line number: 24][Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 24][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 24][Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 24][Lexeme TYPE: LINE_COMMENT, LEXEME: //undefined referenced scenario, line number: 24]
25+
26+
[Lexeme TYPE: ID, LEXEME: Empty Scenario Error, line number: 26][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 26] [Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 26][Lexeme TYPE: TREE_START, LEXEME: scenario, line number: 26][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 26] [Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 26][Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 26][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 26][Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 26] [Lexeme TYPE: LINE_COMMENT, LEXEME: //empty scenario error, line number: 26]
27+
28+
[Lexeme TYPE: ID, LEXEME: Display Error 1, line number: 28][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 28] [Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 28][Lexeme TYPE: TREE_START, LEXEME: scenario, line number: 28][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 28] [Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 28][Lexeme TYPE: CONDITION_CARD_START, LEXEME: [, line number: 28][Lexeme TYPE: ID, LEXEME: Forth, line number: 28][Lexeme TYPE: CONDITION_CARD_END, LEXEME: ], line number: 28][Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 28][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 28] [Lexeme TYPE: DISPLAY_START, LEXEME: display, line number: 28][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 28][Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 28][Lexeme TYPE: LINE_COMMENT, LEXEME: //invalid display value, line number: 28]
29+
30+
[Lexeme TYPE: ID, LEXEME: Display Error 2, line number: 30][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 30] [Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 30][Lexeme TYPE: TREE_START, LEXEME: scenario, line number: 30][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 30] [Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 30][Lexeme TYPE: CONDITION_SCENARIO_START, LEXEME: <, line number: 30][Lexeme TYPE: ID, LEXEME: Duplicate, line number: 30][Lexeme TYPE: CONDITION_SCENARIO_END, LEXEME: >, line number: 30][Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 30][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 30] [Lexeme TYPE: DISPLAY_START, LEXEME: display, line number: 30][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 30] [Lexeme TYPE: ID, LEXEME: invalid_value, line number: 30][Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 30][Lexeme TYPE: LINE_COMMENT, LEXEME: //invalid display value, line number: 30]
31+
[Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 31]
32+
33+
[Lexeme TYPE: BLOCK_COMMENT, LEXEME: /*
34+
Other:
35+
Line Comment, yes
36+
Block Comment, yes
37+
Block Comment error, no
38+
39+
Deck List properties:
40+
Duplicate Card, yes
41+
Invalid Card, no
42+
No Deck Error, no
43+
44+
Scenario List Properties:
45+
No Scenario Defined Error, no
46+
Invalid Name, no
47+
Repeated Name Error, yes
48+
Binary Operator, yes
49+
Binary Operand Missing, yes
50+
Reference Scenario, yes
51+
Undefined Referenced Scenario Error, yes
52+
Empty scenario, yes
53+
Has Display, yes
54+
Invalid Display, yes
55+
Unary Operator, no
56+
Multiple Unary, no
57+
Nesting of Expressions, no
58+
*/, line number: 33]

testing/Test Output/Simple Correct Deck 2021-8-1_2118.outlexerrors

Whitespace-only changes.
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
[Lexeme TYPE: DECK_START, LEXEME: deck list:, line number: 1]
2+
[Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 2]
3+
[Lexeme TYPE: ID, LEXEME: First, line number: 3][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 3]
4+
[Lexeme TYPE: ID, LEXEME: Second, line number: 4][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 4]
5+
[Lexeme TYPE: ID, LEXEME: Third, line number: 5][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 5]
6+
[Lexeme TYPE: ID, LEXEME: Forth, line number: 6][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 6]
7+
[Lexeme TYPE: ID, LEXEME: Fifth, line number: 7][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 7]
8+
[Lexeme TYPE: ID, LEXEME: 6th, line number: 8][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 8]
9+
[Lexeme TYPE: ID, LEXEME: 7th, line number: 9][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 9]
10+
[Lexeme TYPE: ID, LEXEME: Ash Blossom & Joyous Spring, line number: 10][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 10]
11+
[Lexeme TYPE: ID, LEXEME: First, line number: 11][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 11]
12+
[Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 12]
13+
14+
[Lexeme TYPE: PROBABILITY_START, LEXEME: scenarios:, line number: 14]
15+
[Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 15]
16+
[Lexeme TYPE: ID, LEXEME: Contains "First" Card, line number: 16][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 16]
17+
[Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 17]
18+
[Lexeme TYPE: TREE_START, LEXEME: scenario, line number: 18][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 18]
19+
[Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 19]
20+
[Lexeme TYPE: CONDITION_CARD_START, LEXEME: [, line number: 20][Lexeme TYPE: ID, LEXEME: First, line number: 20][Lexeme TYPE: CONDITION_CARD_END, LEXEME: ], line number: 20]
21+
[Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 21][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 21]
22+
[Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 22]
23+
[Lexeme TYPE: ID, LEXEME: Contains "Second" Card, line number: 23][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 23]
24+
[Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 24]
25+
[Lexeme TYPE: TREE_START, LEXEME: scenario, line number: 25][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 25]
26+
[Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 26]
27+
[Lexeme TYPE: CONDITION_CARD_START, LEXEME: [, line number: 27][Lexeme TYPE: ID, LEXEME: Second, line number: 27][Lexeme TYPE: CONDITION_CARD_END, LEXEME: ], line number: 27]
28+
[Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 28][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 28]
29+
[Lexeme TYPE: DISPLAY_START, LEXEME: display, line number: 29][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 29] [Lexeme TYPE: ID, LEXEME: false, line number: 29][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 29]
30+
[Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 30]
31+
[Lexeme TYPE: ID, LEXEME: Contains Ash Blossom & Joyous Spring, line number: 31][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 31]
32+
[Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 32]
33+
[Lexeme TYPE: TREE_START, LEXEME: scenario, line number: 33][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 33]
34+
[Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 34]
35+
[Lexeme TYPE: CONDITION_CARD_START, LEXEME: [, line number: 35][Lexeme TYPE: ID, LEXEME: Ash Blossom & Joyous Spring, line number: 35][Lexeme TYPE: CONDITION_CARD_END, LEXEME: ], line number: 35]
36+
[Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 36][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 36]
37+
[Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 37]
38+
39+
[Lexeme TYPE: LINE_COMMENT, LEXEME: //should be the highest, line number: 39]
40+
[Lexeme TYPE: ID, LEXEME: First | Ash, line number: 40][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 40]
41+
[Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 41]
42+
[Lexeme TYPE: TREE_START, LEXEME: scenario, line number: 42][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 42]
43+
[Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 43]
44+
[Lexeme TYPE: CONDITION_SCENARIO_START, LEXEME: <, line number: 44][Lexeme TYPE: ID, LEXEME: Contains "First" Card, line number: 44][Lexeme TYPE: CONDITION_SCENARIO_END, LEXEME: >, line number: 44] [Lexeme TYPE: OR, LEXEME: OR, line number: 44] [Lexeme TYPE: CONDITION_SCENARIO_START, LEXEME: <, line number: 44][Lexeme TYPE: ID, LEXEME: Contains Ash Blossom & Joyous Spring, line number: 44][Lexeme TYPE: CONDITION_SCENARIO_END, LEXEME: >, line number: 44]
45+
[Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 45][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 45]
46+
[Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 46]
47+
48+
[Lexeme TYPE: LINE_COMMENT, LEXEME: //should be the lowest, line number: 48]
49+
[Lexeme TYPE: ID, LEXEME: First & Ash, line number: 49][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 49]
50+
[Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 50]
51+
[Lexeme TYPE: TREE_START, LEXEME: scenario, line number: 51][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 51]
52+
[Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 52]
53+
[Lexeme TYPE: CONDITION_SCENARIO_START, LEXEME: <, line number: 53][Lexeme TYPE: ID, LEXEME: Contains "First" Card, line number: 53][Lexeme TYPE: CONDITION_SCENARIO_END, LEXEME: >, line number: 53] [Lexeme TYPE: AND, LEXEME: AND, line number: 53] [Lexeme TYPE: CONDITION_SCENARIO_START, LEXEME: <, line number: 53][Lexeme TYPE: ID, LEXEME: Contains Ash Blossom & Joyous Spring, line number: 53][Lexeme TYPE: CONDITION_SCENARIO_END, LEXEME: >, line number: 53]
54+
[Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 54][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 54]
55+
[Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 55]
56+
[Lexeme TYPE: LINE_COMMENT, LEXEME: //should be the same as First & Ash, line number: 56]
57+
[Lexeme TYPE: ID, LEXEME: First AND Ash, line number: 57][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 57][Lexeme TYPE: LINE_COMMENT, LEXEME: //legal name, line number: 57]
58+
[Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 58]
59+
[Lexeme TYPE: TREE_START, LEXEME: scenario, line number: 59][Lexeme TYPE: ASSIGN, LEXEME: =, line number: 59]
60+
[Lexeme TYPE: SENTINEL_START, LEXEME: {, line number: 60]
61+
[Lexeme TYPE: CONDITION_EXPR_START, LEXEME: (, line number: 61][Lexeme TYPE: CONDITION_CARD_START, LEXEME: [, line number: 61][Lexeme TYPE: ID, LEXEME: First, line number: 61][Lexeme TYPE: CONDITION_CARD_END, LEXEME: ], line number: 61][Lexeme TYPE: CONDITION_EXPR_END, LEXEME: ), line number: 61] [Lexeme TYPE: AND, LEXEME: AND, line number: 61] [Lexeme TYPE: NOT, LEXEME: NOT, line number: 61] [Lexeme TYPE: NOT, LEXEME: NOT, line number: 61] [Lexeme TYPE: CONDITION_CARD_START, LEXEME: [, line number: 61][Lexeme TYPE: ID, LEXEME: Ash Blossom & Joyous Spring, line number: 61][Lexeme TYPE: CONDITION_CARD_END, LEXEME: ], line number: 61]
62+
[Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 62][Lexeme TYPE: SEMI_COLON, LEXEME: ;, line number: 62]
63+
[Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 63]
64+
[Lexeme TYPE: SENTINEL_END, LEXEME: }, line number: 64]
65+
[Lexeme TYPE: BLOCK_COMMENT, LEXEME: /*
66+
Other:
67+
Line Comment, yes
68+
Block Comment, yes
69+
Block Comment error, no
70+
71+
Deck List properties:
72+
Duplicate Card, yes
73+
Invalid Card, no
74+
No Deck Error, no
75+
76+
Scenario List Properties:
77+
No Scenario Defined Error, no
78+
Invalid Name, no
79+
Repeated Name Error, no
80+
Binary Operator, yes
81+
Binary Operand Missing, no
82+
Reference Scenario, yes
83+
Undefined Referenced Scenario Error, no
84+
Empty scenario, no
85+
Has Display, yes
86+
Invalid Display, no
87+
Unary Operator, yes
88+
Multiple Unary, yes
89+
Nesting of Expressions, yes
90+
*/, line number: 65]

testing/Test Output/Simple Deck With Errors Test 2021-8-1_2118.outlexerrors

Whitespace-only changes.

0 commit comments

Comments
 (0)