diff options
1 files changed, 15 insertions, 6 deletions
| -rw-r--r-- | Year 2/Implementation of Programming Languages/Homework 02/codefold.y | 21 |
diff --git a/Year 2/Implementation of Programming Languages/Homework 02/codefold.y b/Year 2/Implementation of Programming Languages/Homework 02/codefold.y index 980f684..b3cf152 100644 --- a/Year 2/Implementation of Programming Languages/Homework 02/codefold.y +++ b/Year 2/Implementation of Programming Languages/Homework 02/codefold.y @@ -15,16 +15,16 @@ char* concatperm2(char *first, char *second); char* concatperm3(char *first, char *second, char *third); %} -%token LBRACKET RBRACKET OTHER NEWLINE SPACE TAB +%token LBRACKET RBRACKET OTHER +%token NEWLINE SPACE TAB +%token STR NUM COMMENT PARAMETER_TYPE KEYWORD CONSTANT +%token SPECIAL_FORM FUNCTION MACRO VARIABLE %define api.value.type {char*} %% start: - | NEWLINE start { printf("\n"); } - | SPACE start { printf(" "); } - | TAB start { printf("\t"); } | stlist start { printf("%s", $1); free($1); } | terminal start { printf("%s", $1); free($1); } @@ -40,8 +40,17 @@ list: terminal | list stlist { $$ = concatperm2($1, $2); } ; -terminal: OTHER - /* | terminal OTHER { $$ = concatperm2($1, span("test", $2)); free($2); } */ +terminal: STR { $$ = span("string", $1); free($1); } + | NUM { $$ = span("number", $1); free($1); } + | COMMENT { $$ = span("comment", $1); free($1); } + | PARAMETER_TYPE { $$ = span("parameter-type", $1); free($1); } + | KEYWORD { $$ = span("keyword", $1); free($1); } + | CONSTANT { $$ = span("constant", $1); free($1); } + | SPECIAL_FORM { $$ = span("special-operator", $1); free($1); } + | FUNCTION { $$ = span("function", $1); free($1); } + | MACRO { $$ = span("macro", $1); free($1); } + | VARIABLE { $$ = span("variable", $1); free($1); } + | OTHER { $$ = span("", $1); free($1); } ; %% |
