make all tests pass

This commit is contained in:
Riley Smith 2024-11-20 23:28:17 -08:00
parent 5ee9afbcc1
commit 14a7bd68c9
No known key found for this signature in database
GPG Key ID: 5D27A014FD4A29C8
3 changed files with 29 additions and 28 deletions

View File

@ -8,7 +8,7 @@ on:
jobs: jobs:
build: build:
runs-on: ubuntu runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
# setup build-essentials & flex & bison # setup build-essentials & flex & bison

View File

@ -66,6 +66,8 @@ COMP-3 { return TOKEN_COMPUTATION_LEVEL_3; }
{NAME} { return TOKEN_IDENT; } {NAME} { return TOKEN_IDENT; }
{DIGIT} { return TOKEN_INTEGER; } {DIGIT} { return TOKEN_INTEGER; }
<<EOF>> { return TOKEN_EOF; }
\. { return TOKEN_DOT; } \. { return TOKEN_DOT; }
%% %%
int yywrap() { return 1; } int yywrap() { return 1; }

View File

@ -31,7 +31,7 @@ UTEST(scanner, hello) {
{TOKEN_KEYWORD_DIVISION, "DIVISION"}, {TOKEN_KEYWORD_DIVISION, "DIVISION"},
{TOKEN_DOT, "."}, {TOKEN_DOT, "."},
{TOKEN_DISPLAY, "DISPLAY"}, {TOKEN_DISPLAY, "DISPLAY"},
{TOKEN_STRING, "'Hello World!'"}, {TOKEN_STRING, "Hello World!"},
{TOKEN_STOP, "STOP"}, {TOKEN_STOP, "STOP"},
{TOKEN_RUN, "RUN"}, {TOKEN_RUN, "RUN"},
{TOKEN_DOT, "."}, {TOKEN_DOT, "."},
@ -178,7 +178,7 @@ UTEST(scanner, quadratic) {
{TOKEN_KEYWORD_DIVISION, "DIVISION"}, {TOKEN_KEYWORD_DIVISION, "DIVISION"},
{TOKEN_DOT, "."}, {TOKEN_DOT, "."},
{TOKEN_DISPLAY, "DISPLAY"}, {TOKEN_DISPLAY, "DISPLAY"},
{TOKEN_STRING, "\"EQUATION: (1x^2) + 5x + 6 = 0\""}, {TOKEN_STRING, "EQUATION: (1x^2) + 5x + 6 = 0"},
{TOKEN_KEYWORD_COMPUTE, "COMPUTE"}, {TOKEN_KEYWORD_COMPUTE, "COMPUTE"},
{TOKEN_IDENT, "discriminant"}, {TOKEN_IDENT, "discriminant"},
{TOKEN_EQUAL, "="}, {TOKEN_EQUAL, "="},
@ -246,14 +246,14 @@ UTEST(scanner, quadratic) {
{TOKEN_RIGHT_PARENTHESIS, ")"}, {TOKEN_RIGHT_PARENTHESIS, ")"},
{TOKEN_DISPLAY, "DISPLAY"}, {TOKEN_DISPLAY, "DISPLAY"},
{TOKEN_STRING, "\"The equation has two distinct real roots: \""}, {TOKEN_STRING, "The equation has two distinct real roots: "},
{TOKEN_DISPLAY, "DISPLAY"}, {TOKEN_DISPLAY, "DISPLAY"},
{TOKEN_STRING, "\"Root 1: \""}, {TOKEN_STRING, "Root 1: "},
{TOKEN_IDENT, "root1"}, {TOKEN_IDENT, "root1"},
{TOKEN_DISPLAY, "DISPLAY"}, {TOKEN_DISPLAY, "DISPLAY"},
{TOKEN_STRING, "\"Root 2: \""}, {TOKEN_STRING, "Root 2: "},
{TOKEN_IDENT, "root2"}, {TOKEN_IDENT, "root2"},
// {TOKEN_EOF, ""}, // {TOKEN_EOF, ""},
@ -278,17 +278,17 @@ UTEST(scanner, quadratic) {
{TOKEN_DISPLAY, "DISPLAY"}, {TOKEN_DISPLAY, "DISPLAY"},
{TOKEN_STRING, "\"The equation has one real root: \""}, {TOKEN_STRING, "The equation has one real root: "},
{TOKEN_DISPLAY, "DISPLAY"}, {TOKEN_DISPLAY, "DISPLAY"},
{TOKEN_STRING, "\"Root: \""}, {TOKEN_STRING, "Root: "},
{TOKEN_IDENT, "root1"}, {TOKEN_IDENT, "root1"},
{TOKEN_ELSE, "ELSE"}, {TOKEN_ELSE, "ELSE"},
{TOKEN_DISPLAY, "DISPLAY"}, {TOKEN_DISPLAY, "DISPLAY"},
{TOKEN_STRING, "\"The equation has no real roots.\""}, {TOKEN_STRING, "The equation has no real roots."},
{TOKEN_END_IF, "END-IF"}, {TOKEN_END_IF, "END-IF"},
// {TOKEN_EOF, ""}, // {TOKEN_EOF, ""},
@ -335,9 +335,9 @@ UTEST(scanner, sorting) {
{TOKEN_INTEGER, "10"}, {TOKEN_INTEGER, "10"},
{TOKEN_IDENT, "WS-SORT-ROW"}, {TOKEN_IDENT, "WS-SORT-ROW"},
{TOKEN_PICTURE, "PIC"}, {TOKEN_PICTURE, "PIC"},
{TOKEN_ALPHANUMERIC, "X"}, {TOKEN_SIGNED_NUMERIC, "S9"},
{TOKEN_LEFT_PARENTHESIS, "("}, {TOKEN_LEFT_PARENTHESIS, "("},
{TOKEN_INTEGER, "10"}, {TOKEN_INTEGER, "4"},
{TOKEN_RIGHT_PARENTHESIS, ")"}, {TOKEN_RIGHT_PARENTHESIS, ")"},
{TOKEN_KEYWORD_OCCURS, "OCCURS"}, {TOKEN_KEYWORD_OCCURS, "OCCURS"},
{TOKEN_INTEGER, "100"}, {TOKEN_INTEGER, "100"},
@ -345,9 +345,9 @@ UTEST(scanner, sorting) {
{TOKEN_INTEGER, "05"}, {TOKEN_INTEGER, "05"},
{TOKEN_IDENT, "WS-TEMP-ROW"}, {TOKEN_IDENT, "WS-TEMP-ROW"},
{TOKEN_PICTURE, "PIC"}, {TOKEN_PICTURE, "PIC"},
{TOKEN_ALPHANUMERIC, "X"}, {TOKEN_SIGNED_NUMERIC, "S9"},
{TOKEN_LEFT_PARENTHESIS, "("}, {TOKEN_LEFT_PARENTHESIS, "("},
{TOKEN_INTEGER, "10"}, {TOKEN_INTEGER, "4"},
{TOKEN_RIGHT_PARENTHESIS, ")"}, {TOKEN_RIGHT_PARENTHESIS, ")"},
{TOKEN_DOT, "."}, {TOKEN_DOT, "."},
{TOKEN_INTEGER, "05"}, {TOKEN_INTEGER, "05"},
@ -401,35 +401,35 @@ UTEST(scanner, sorting) {
{TOKEN_KEYWORD_DIVISION, "DIVISION"}, {TOKEN_KEYWORD_DIVISION, "DIVISION"},
{TOKEN_DOT, "."}, {TOKEN_DOT, "."},
{TOKEN_MOVE, "MOVE"}, {TOKEN_MOVE, "MOVE"},
{TOKEN_STRING, "\"30\""}, {TOKEN_INTEGER, "30"},
{TOKEN_KEYWORD_TO, "TO"}, {TOKEN_KEYWORD_TO, "TO"},
{TOKEN_IDENT, "WS-SORT-ROW"}, {TOKEN_IDENT, "WS-SORT-ROW"},
{TOKEN_LEFT_PARENTHESIS, "("}, {TOKEN_LEFT_PARENTHESIS, "("},
{TOKEN_INTEGER, "1"}, {TOKEN_INTEGER, "1"},
{TOKEN_RIGHT_PARENTHESIS, ")"}, {TOKEN_RIGHT_PARENTHESIS, ")"},
{TOKEN_MOVE, "MOVE"}, {TOKEN_MOVE, "MOVE"},
{TOKEN_STRING, "\"10\""}, {TOKEN_INTEGER, "10"},
{TOKEN_KEYWORD_TO, "TO"}, {TOKEN_KEYWORD_TO, "TO"},
{TOKEN_IDENT, "WS-SORT-ROW"}, {TOKEN_IDENT, "WS-SORT-ROW"},
{TOKEN_LEFT_PARENTHESIS, "("}, {TOKEN_LEFT_PARENTHESIS, "("},
{TOKEN_INTEGER, "2"}, {TOKEN_INTEGER, "2"},
{TOKEN_RIGHT_PARENTHESIS, ")"}, {TOKEN_RIGHT_PARENTHESIS, ")"},
{TOKEN_MOVE, "MOVE"}, {TOKEN_MOVE, "MOVE"},
{TOKEN_STRING, "\"50\""}, {TOKEN_INTEGER, "50"},
{TOKEN_KEYWORD_TO, "TO"}, {TOKEN_KEYWORD_TO, "TO"},
{TOKEN_IDENT, "WS-SORT-ROW"}, {TOKEN_IDENT, "WS-SORT-ROW"},
{TOKEN_LEFT_PARENTHESIS, "("}, {TOKEN_LEFT_PARENTHESIS, "("},
{TOKEN_INTEGER, "3"}, {TOKEN_INTEGER, "3"},
{TOKEN_RIGHT_PARENTHESIS, ")"}, {TOKEN_RIGHT_PARENTHESIS, ")"},
{TOKEN_MOVE, "MOVE"}, {TOKEN_MOVE, "MOVE"},
{TOKEN_STRING, "\"20\""}, {TOKEN_INTEGER, "20"},
{TOKEN_KEYWORD_TO, "TO"}, {TOKEN_KEYWORD_TO, "TO"},
{TOKEN_IDENT, "WS-SORT-ROW"}, {TOKEN_IDENT, "WS-SORT-ROW"},
{TOKEN_LEFT_PARENTHESIS, "("}, {TOKEN_LEFT_PARENTHESIS, "("},
{TOKEN_INTEGER, "4"}, {TOKEN_INTEGER, "4"},
{TOKEN_RIGHT_PARENTHESIS, ")"}, {TOKEN_RIGHT_PARENTHESIS, ")"},
{TOKEN_MOVE, "MOVE"}, {TOKEN_MOVE, "MOVE"},
{TOKEN_STRING, "\"40\""}, {TOKEN_INTEGER, "40"},
{TOKEN_KEYWORD_TO, "TO"}, {TOKEN_KEYWORD_TO, "TO"},
{TOKEN_IDENT, "WS-SORT-ROW"}, {TOKEN_IDENT, "WS-SORT-ROW"},
{TOKEN_LEFT_PARENTHESIS, "("}, {TOKEN_LEFT_PARENTHESIS, "("},
@ -440,9 +440,9 @@ UTEST(scanner, sorting) {
{TOKEN_KEYWORD_TO, "TO"}, {TOKEN_KEYWORD_TO, "TO"},
{TOKEN_IDENT, "WS-SORT-MAX"}, {TOKEN_IDENT, "WS-SORT-MAX"},
{TOKEN_DISPLAY, "DISPLAY"}, {TOKEN_DISPLAY, "DISPLAY"},
{TOKEN_STRING, "\"Original Array Contents:\""}, {TOKEN_STRING, "Original Array Contents:"},
{TOKEN_DISPLAY, "DISPLAY"}, {TOKEN_DISPLAY, "DISPLAY"},
{TOKEN_STRING, "\"---------------------\""}, {TOKEN_STRING, "---------------------"},
{TOKEN_PERFORM, "PERFORM"}, {TOKEN_PERFORM, "PERFORM"},
{TOKEN_VARYING, "VARYING"}, {TOKEN_VARYING, "VARYING"},
{TOKEN_IDENT, "WS-INDEX"}, {TOKEN_IDENT, "WS-INDEX"},
@ -455,16 +455,16 @@ UTEST(scanner, sorting) {
{TOKEN_GREATER_THAN, ">"}, {TOKEN_GREATER_THAN, ">"},
{TOKEN_IDENT, "WS-SORT-MAX"}, {TOKEN_IDENT, "WS-SORT-MAX"},
{TOKEN_DISPLAY, "DISPLAY"}, {TOKEN_DISPLAY, "DISPLAY"},
{TOKEN_STRING, "\"Element \""}, {TOKEN_STRING, "Element "},
{TOKEN_IDENT, "WS-INDEX"}, {TOKEN_IDENT, "WS-INDEX"},
{TOKEN_STRING, "\": \""}, {TOKEN_STRING, ": "},
{TOKEN_IDENT, "WS-SORT-ROW"}, {TOKEN_IDENT, "WS-SORT-ROW"},
{TOKEN_LEFT_PARENTHESIS, "("}, {TOKEN_LEFT_PARENTHESIS, "("},
{TOKEN_IDENT, "WS-INDEX"}, {TOKEN_IDENT, "WS-INDEX"},
{TOKEN_RIGHT_PARENTHESIS, ")"}, {TOKEN_RIGHT_PARENTHESIS, ")"},
{TOKEN_END_PERFORM, "END-PERFORM"}, {TOKEN_END_PERFORM, "END-PERFORM"},
{TOKEN_DISPLAY, "DISPLAY"}, {TOKEN_DISPLAY, "DISPLAY"},
{TOKEN_SPACE, "SPACE"}, {TOKEN_STRING, ""},
{TOKEN_PERFORM, "PERFORM"}, {TOKEN_PERFORM, "PERFORM"},
{TOKEN_VARYING, "VARYING"}, {TOKEN_VARYING, "VARYING"},
{TOKEN_IDENT, "WS-I"}, {TOKEN_IDENT, "WS-I"},
@ -535,9 +535,9 @@ UTEST(scanner, sorting) {
{TOKEN_END_PERFORM, "END-PERFORM"}, {TOKEN_END_PERFORM, "END-PERFORM"},
{TOKEN_END_PERFORM, "END-PERFORM"}, {TOKEN_END_PERFORM, "END-PERFORM"},
{TOKEN_DISPLAY, "DISPLAY"}, {TOKEN_DISPLAY, "DISPLAY"},
{TOKEN_STRING, "\"Sorted Array Contents:\""}, {TOKEN_STRING, "Sorted Array Contents:"},
{TOKEN_DISPLAY, "DISPLAY"}, {TOKEN_DISPLAY, "DISPLAY"},
{TOKEN_STRING, "\"--------------------\""}, {TOKEN_STRING, "--------------------"},
{TOKEN_PERFORM, "PERFORM"}, {TOKEN_PERFORM, "PERFORM"},
{TOKEN_VARYING, "VARYING"}, {TOKEN_VARYING, "VARYING"},
{TOKEN_IDENT, "WS-INDEX"}, {TOKEN_IDENT, "WS-INDEX"},
@ -550,15 +550,14 @@ UTEST(scanner, sorting) {
{TOKEN_GREATER_THAN, ">"}, {TOKEN_GREATER_THAN, ">"},
{TOKEN_IDENT, "WS-SORT-MAX"}, {TOKEN_IDENT, "WS-SORT-MAX"},
{TOKEN_DISPLAY, "DISPLAY"}, {TOKEN_DISPLAY, "DISPLAY"},
{TOKEN_STRING, "\"Element \""}, {TOKEN_STRING, "Element "},
{TOKEN_IDENT, "WS-INDEX"}, {TOKEN_IDENT, "WS-INDEX"},
{TOKEN_STRING, "\": \""}, {TOKEN_STRING, ": "},
{TOKEN_IDENT, "WS-SORT-ROW"}, {TOKEN_IDENT, "WS-SORT-ROW"},
{TOKEN_LEFT_PARENTHESIS, "("}, {TOKEN_LEFT_PARENTHESIS, "("},
{TOKEN_IDENT, "WS-INDEX"}, {TOKEN_IDENT, "WS-INDEX"},
{TOKEN_RIGHT_PARENTHESIS, ")"}, {TOKEN_RIGHT_PARENTHESIS, ")"},
{TOKEN_END_PERFORM, "END-PERFORM"}, {TOKEN_END_PERFORM, "END-PERFORM"},
{TOKEN_DOT, "."},
{TOKEN_STOP, "STOP"}, {TOKEN_STOP, "STOP"},
{TOKEN_RUN, "RUN"}, {TOKEN_RUN, "RUN"},
{TOKEN_DOT, "."}, {TOKEN_DOT, "."},