From 5762271fd0b9523d969323b189d35db8d80c61ca Mon Sep 17 00:00:00 2001 From: Oschly Date: Thu, 4 Dec 2025 00:03:08 +0100 Subject: [PATCH] Add c++ support --- def.tab.cc | 67 +++++++++++++++++++++++++++++--------------------- def.tab.hh | 2 +- def.tab.o | Bin 6608 -> 7976 bytes def.yy | 31 +++++++++++++++++------- leks | Bin 0 -> 65064 bytes lex.yy.cc | 70 ++++++++++++++++++++++++++--------------------------- lex.yy.o | Bin 35392 -> 35328 bytes z5.l | 59 ++++++++++++++++++++++++-------------------- 8 files changed, 130 insertions(+), 99 deletions(-) create mode 100755 leks diff --git a/def.tab.cc b/def.tab.cc index 051004d..78e2b66 100644 --- a/def.tab.cc +++ b/def.tab.cc @@ -88,16 +88,19 @@ /* Copy the first part of user declarations. */ #line 1 "def.yy" -#include -#include -#include +#include +#include +#include +#include + #define INFILE_ERROR 1 #define OUTFILE_ERROR 2 -extern int yylex(void); -extern void yyerror(const char *s); -extern int yylineno; -extern FILE *yyin; +extern yyFlexLexer lexer; + +void yyerror(const char *s); +int yylex(); + /* Enabling traces. */ @@ -120,13 +123,13 @@ extern FILE *yyin; #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE -#line 14 "def.yy" +#line 17 "def.yy" { char *text; int ival; } /* Line 193 of yacc.c. */ -#line 130 "def.tab.cc" +#line 133 "def.tab.cc" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -139,7 +142,7 @@ typedef union YYSTYPE /* Line 216 of yacc.c. */ -#line 143 "def.tab.cc" +#line 146 "def.tab.cc" #ifdef short # undef short @@ -426,8 +429,8 @@ static const yytype_int8 yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint8 yyrline[] = { - 0, 33, 33, 37, 38, 42, 43, 47, 52, 53, - 54, 55, 56, 57, 58 + 0, 36, 36, 40, 41, 45, 46, 50, 55, 56, + 57, 58, 59, 60, 61 }; #endif @@ -1341,63 +1344,63 @@ yyreduce: switch (yyn) { case 2: -#line 33 "def.yy" +#line 36 "def.yy" { printf("koniec\n"); ;} break; case 5: -#line 42 "def.yy" +#line 45 "def.yy" { printf("Deklaracja zmiennej\n"); ;} break; case 6: -#line 43 "def.yy" +#line 46 "def.yy" { printf("instrukcja\n"); ;} break; case 7: -#line 48 "def.yy" - { printf("Deklaracja zmiennej: %s\n", (yyvsp[(2) - (7)].text)); ;} +#line 51 "def.yy" + { printf("Deklaracja zmiennej: %s\n", (yyvsp[(2) - (7)].text)); free((yyvsp[(2) - (7)].text)); ;} break; case 8: -#line 52 "def.yy" +#line 55 "def.yy" { printf("Wyrazenie z +\n"); ;} break; case 9: -#line 53 "def.yy" +#line 56 "def.yy" { printf("Wyrazenie z -\n"); ;} break; case 10: -#line 54 "def.yy" +#line 57 "def.yy" { printf("Wyrazenie z *\n"); ;} break; case 11: -#line 55 "def.yy" +#line 58 "def.yy" { printf("Wyrazenie z /\n"); ;} break; case 12: -#line 56 "def.yy" +#line 59 "def.yy" { printf("Wyrazenie w nawiasach\n"); ;} break; case 13: -#line 57 "def.yy" +#line 60 "def.yy" { printf("Literal calkowity: %d\n", (yyvsp[(1) - (1)].ival)); ;} break; case 14: -#line 58 "def.yy" - { printf("Identyfikator: %s\n", (yyvsp[(1) - (1)].text)); ;} +#line 61 "def.yy" + { printf("Identyfikator: %s\n", (yyvsp[(1) - (1)].text)); free((yyvsp[(1) - (1)].text)); ;} break; /* Line 1267 of yacc.c. */ -#line 1401 "def.tab.cc" +#line 1404 "def.tab.cc" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -1611,9 +1614,19 @@ yyreturn: } -#line 61 "def.yy" +#line 64 "def.yy" +yyFlexLexer lexer; + +int yylex() { + return lexer.yylex(); +} + +void yyerror(const char *s) { + fprintf(stderr, "Blad: %s w linii %d\n", s, lexer.lineno()); +} + int main(int argc, char *argv[]) { yyparse(); return 0; diff --git a/def.tab.hh b/def.tab.hh index 16b43d6..b1df8c6 100644 --- a/def.tab.hh +++ b/def.tab.hh @@ -60,7 +60,7 @@ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE -#line 14 "def.yy" +#line 17 "def.yy" { char *text; int ival; diff --git a/def.tab.o b/def.tab.o index 204d516c12ff55a2b8e950ffd91a7d741b6daf7d..a84f7863dfe639a93bb711e3a0943fe0c0b9737f 100644 GIT binary patch literal 7976 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 delta 2401 zcmZ9NU1(fI6vt=wtDBf?)9q$=+hjLe*?ie%Lz8W4(2-c81Uq5^iAiZn3{tJQmb3;; zFt80q43dY$sZul#p)C@mg~ddO*n$Y6h+-dFOeJDKkO(RXwCF=Y|L4xxe%xV)-~7&; zJ2Q9h%)N_GTx*?;ga7)8S&?P3feIcsb@snnjrkkC)j{8+UDm%+E4qp7A6Tg>u{V zf`w?n=w7r}BcOTP)7rF&Rx={&F(EcFz(Z(vbN0g^RX=JyY7kS_zvnG8aqpT8n%mx^ za%-u_=ausEQlGzH%3sXoK)pO{ZUo+vpPD1v^7$|Qq8Fn^HmW*457vrP4|t=?n_Rx% z3j>L~lFB$LeNL=TOhK-SemuXt@_~JY!x9*7Vf5qPWushDo}7x67k051T)N zHL}!{l+;|vmPmPY=|JhPQvSA7S@xVX8|Ce$J=D7NZ7AT~*?By7eDsx*FJrY_vPOnu zGHZ^6Yf5swC9-BuIF_G*VQEdhU_uDpZKQ=zn z8hX=Gt%5$}UAI)rAl*p8QjLN;;Uku65Ddcyz&sjCppn4>?%*WuK*zt9Y8|Bb8i#22{83htNa#(^9RouMy2> z(SyU(`@P4>QdcbX3VVV568ky!v+OhM)9h1VJytl%@e!hVHWtg%(V54tYQnFZnFja4 z2XI(v74&`tl?LnJU6zVoA9NJ)D2T^8KwKI~F#*Td5e%Ug%N{gBxKF&}vE5J#9Jq=z zP30q0O8A=I&M04@lK;hy#X4TeUxE*50`#}A(}F`jA&Os$pQs-`$^FahAC%eo#T*CD zbHW(=7wkjq-?3}HRq-=^ zksLQv{Ekm@e({l7eCpwnYJTXEN`+GzYhK6_f25f<2cw<9z&)66gv(gZN9r@ z)8&(n>%0BphAZJmmv6Y72ETuTMPWSEE#`c6HZVT^;)&tY=I`pm=1`)_yqd_E<;31# bZYcBm=;=(m=}9Jc*!KQ5!O=D|lbrt_CKVoJ diff --git a/def.yy b/def.yy index e1f40b7..d7d45a1 100644 --- a/def.yy +++ b/def.yy @@ -1,14 +1,17 @@ %{ -#include -#include -#include +#include +#include +#include +#include + #define INFILE_ERROR 1 #define OUTFILE_ERROR 2 -extern int yylex(void); -extern void yyerror(const char *s); -extern int yylineno; -extern FILE *yyin; +extern yyFlexLexer lexer; + +void yyerror(const char *s); +int yylex(); + %} %union { @@ -45,7 +48,7 @@ statement variable_declaration : LET ID COLON INT_TYPE '=' expression SEMICOLON - { printf("Deklaracja zmiennej: %s\n", $2); } + { printf("Deklaracja zmiennej: %s\n", $2); free($2); } ; expression @@ -55,11 +58,21 @@ expression | expression '/' expression { printf("Wyrazenie z /\n"); } | '(' expression ')' { printf("Wyrazenie w nawiasach\n"); } | INT_LIT { printf("Literal calkowity: %d\n", $1); } - | ID { printf("Identyfikator: %s\n", $1); } + | ID { printf("Identyfikator: %s\n", $1); free($1); } ; %% +yyFlexLexer lexer; + +int yylex() { + return lexer.yylex(); +} + +void yyerror(const char *s) { + fprintf(stderr, "Blad: %s w linii %d\n", s, lexer.lineno()); +} + int main(int argc, char *argv[]) { yyparse(); return 0; diff --git a/leks b/leks new file mode 100755 index 0000000000000000000000000000000000000000..5b33d0eff13f03b8c6c42743cd723c75dfe3f7a0 GIT binary patch literal 65064 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 literal 0 HcmV?d00001 diff --git a/lex.yy.cc b/lex.yy.cc index 734b1a0..0cd8b84 100644 --- a/lex.yy.cc +++ b/lex.yy.cc @@ -434,9 +434,10 @@ static const flex_int32_t yy_rule_can_match_eol[18] = #define YY_RESTORE_YY_MORE_OFFSET #line 1 "z5.l" #line 2 "z5.l" -#include -#include -#include +#include +#include +#include +#include #include "def.tab.hh" #define INFILE_ERROR 1 @@ -444,10 +445,8 @@ static const flex_int32_t yy_rule_can_match_eol[18] = #define YY_DECL int yyFlexLexer::yylex() -extern int yylineno; -void yyerror(char *msg, ...); +#line 448 "lex.yy.cc" #line 449 "lex.yy.cc" -#line 450 "lex.yy.cc" #define INITIAL 0 @@ -579,7 +578,8 @@ YY_DECL } { -#line 20 "z5.l" +#line 19 "z5.l" + #line 584 "lex.yy.cc" @@ -651,98 +651,101 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP #line 21 "z5.l" -{fprintf(stdout, "LET\n"); return LET;} +{std::fprintf(stdout, "LET\n"); return LET;} YY_BREAK case 2: YY_RULE_SETUP #line 22 "z5.l" -{fprintf(stdout, "INT_TYPE\n"); return INT_TYPE;} +{std::fprintf(stdout, "INT_TYPE\n"); return INT_TYPE;} YY_BREAK case 3: YY_RULE_SETUP #line 23 "z5.l" -{fprintf(stdout, ":\n"); return COLON;} +{std::fprintf(stdout, ":\n"); return COLON;} YY_BREAK case 4: YY_RULE_SETUP #line 24 "z5.l" -{fprintf(stdout, ";\n"); return SEMICOLON;} +{std::fprintf(stdout, ";\n"); return SEMICOLON;} YY_BREAK case 5: YY_RULE_SETUP #line 25 "z5.l" -{fprintf(stdout, "+\n"); return '+';} +{std::fprintf(stdout, "+\n"); return '+';} YY_BREAK case 6: YY_RULE_SETUP #line 26 "z5.l" -{fprintf(stdout, "*\n"); return '*';} +{std::fprintf(stdout, "*\n"); return '*';} YY_BREAK case 7: YY_RULE_SETUP #line 27 "z5.l" -{fprintf(stdout, "(\n"); return '(';} +{std::fprintf(stdout, "(\n"); return '(';} YY_BREAK case 8: YY_RULE_SETUP #line 28 "z5.l" -{fprintf(stdout, ")\n"); return ')';} +{std::fprintf(stdout, ")\n"); return ')';} YY_BREAK case 9: YY_RULE_SETUP #line 29 "z5.l" -{fprintf(stdout, "/\n"); return '/';} +{std::fprintf(stdout, "/\n"); return '/';} YY_BREAK case 10: YY_RULE_SETUP #line 30 "z5.l" -{fprintf(stdout, "-\n"); return '-';} +{std::fprintf(stdout, "-\n"); return '-';} YY_BREAK case 11: YY_RULE_SETUP #line 31 "z5.l" -{fprintf(stdout, "=\n"); return '=';} +{std::fprintf(stdout, "=\n"); return '=';} YY_BREAK case 12: YY_RULE_SETUP -#line 32 "z5.l" +#line 33 "z5.l" { - fprintf(stdout, "liczba: %s\n", yytext); + std::fprintf(stdout, "liczba: %s\n", yytext); yylval.ival = atoi(yytext); return INT_LIT; } YY_BREAK case 13: YY_RULE_SETUP -#line 37 "z5.l" +#line 39 "z5.l" { - fprintf(stdout, "identyfikator: %s\n", yytext); + std::fprintf(stdout, "identyfikator: %s\n", yytext); yylval.text = strdup(yytext); return ID; } YY_BREAK case 14: YY_RULE_SETUP -#line 42 "z5.l" -{;} +#line 45 "z5.l" +{/* ignoruj białe znaki */} YY_BREAK case 15: /* rule 15 can match eol */ YY_RULE_SETUP -#line 43 "z5.l" -{yylineno++;} +#line 46 "z5.l" +{/* nowa linia */} YY_BREAK case 16: YY_RULE_SETUP -#line 44 "z5.l" -{yyerror("Blad leksykalny\n");} +#line 47 "z5.l" +{ + std::fprintf(stderr, "Blad leksykalny w linii %d\n", lineno()); + exit(1); + } YY_BREAK case 17: YY_RULE_SETUP -#line 45 "z5.l" +#line 52 "z5.l" ECHO; YY_BREAK -#line 745 "lex.yy.cc" +#line 748 "lex.yy.cc" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1714,11 +1717,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 45 "z5.l" +#line 52 "z5.l" -void yyerror(char *msg, ...) -{ - printf("%d: %s", yylineno, msg); - exit(1); -} diff --git a/lex.yy.o b/lex.yy.o index 7f86c2f51f31aac40f98db296964231804bb477c..21c373e7198557b8445004a63472dd84c00c16c0 100644 GIT binary patch delta 7864 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 diff --git a/z5.l b/z5.l index bdc1930..f92965b 100644 --- a/z5.l +++ b/z5.l @@ -1,45 +1,52 @@ %{ -#include -#include -#include +#include +#include +#include +#include #include "def.tab.hh" #define INFILE_ERROR 1 #define OUTFILE_ERROR 2 -extern int yylineno; -void yyerror(char *msg, ...); +#define YY_DECL int yyFlexLexer::yylex() + %} %option noyywrap +%option c++ +%option yylineno + %% -"let" {fprintf(stdout, "LET\n"); return LET;} -"Int" {fprintf(stdout, "INT_TYPE\n"); return INT_TYPE;} -":" {fprintf(stdout, ":\n"); return COLON;} -";" {fprintf(stdout, ";\n"); return SEMICOLON;} -\+ {fprintf(stdout, "+\n"); return '+';} -\* {fprintf(stdout, "*\n"); return '*';} -\( {fprintf(stdout, "(\n"); return '(';} -\) {fprintf(stdout, ")\n"); return ')';} -\/ {fprintf(stdout, "/\n"); return '/';} -\- {fprintf(stdout, "-\n"); return '-';} -\= {fprintf(stdout, "=\n"); return '=';} + +"let" {std::fprintf(stdout, "LET\n"); return LET;} +"Int" {std::fprintf(stdout, "INT_TYPE\n"); return INT_TYPE;} +":" {std::fprintf(stdout, ":\n"); return COLON;} +";" {std::fprintf(stdout, ";\n"); return SEMICOLON;} +\+ {std::fprintf(stdout, "+\n"); return '+';} +\* {std::fprintf(stdout, "*\n"); return '*';} +\( {std::fprintf(stdout, "(\n"); return '(';} +\) {std::fprintf(stdout, ")\n"); return ')';} +\/ {std::fprintf(stdout, "/\n"); return '/';} +\- {std::fprintf(stdout, "-\n"); return '-';} +\= {std::fprintf(stdout, "=\n"); return '=';} + [0-9]+ { - fprintf(stdout, "liczba: %s\n", yytext); + std::fprintf(stdout, "liczba: %s\n", yytext); yylval.ival = atoi(yytext); return INT_LIT; } + [A-Za-z_][A-Za-z0-9_]* { - fprintf(stdout, "identyfikator: %s\n", yytext); + std::fprintf(stdout, "identyfikator: %s\n", yytext); yylval.text = strdup(yytext); return ID; } -[ \t]+ {;} -\n {yylineno++;} -. {yyerror("Blad leksykalny\n");} + +[ \t]+ {/* ignoruj białe znaki */} +\n {/* nowa linia */} +. { + std::fprintf(stderr, "Blad leksykalny w linii %d\n", lineno()); + exit(1); + } + %% -void yyerror(char *msg, ...) -{ - printf("%d: %s", yylineno, msg); - exit(1); -}