Summary Files Commits Branches @commit @diff @stats
path: root / Year 2 / Implementation of Programming Languages / Homework 02 / codefold.y
diff options
context:
space:
mode:
Commit387ec42070ea17cd57658d3386b0529ca9be1782 (patch)
Author
 Syndamia <kamen@syndamia.com>
2022-11-16 21:56:36 +0200
Committer
 Syndamia <kamen@syndamia.com>
2022-11-16 21:56:36 +0200
Filesb908a2c0f087e0cf41ca4ab9e982fae2b96e055a /Year 2/Implementation of Programming Languages/Homework 02/codefold.y
uni-projects-387ec42070ea17cd57658d3386b0529ca9be1782.tar
uni-projects-387ec42070ea17cd57658d3386b0529ca9be1782.tar.gz
uni-projects-387ec42070ea17cd57658d3386b0529ca9be1782.zip
Parent9b9cac4c0037b3c397842143f85c08e13d2bc91e (diff)
[IPL/HW02] Added tokens for all types of parsed data
1 files changed, 15 insertions, 6 deletions
-rw-r--r--Year 2/Implementation of Programming Languages/Homework 02/codefold.y21
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); }
;
%%