From 7e3df8f4004d27ea83f4b2158d5b48484c16b564 Mon Sep 17 00:00:00 2001 From: serr Date: Tue, 1 Apr 2025 20:46:39 +0300 Subject: [PATCH] LT,GT added --- analyzers/c_analyzer/c_analyzer.l | 2 ++ analyzers/c_analyzer/c_analyzer.y | 4 +++- code.txt | 5 +++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/analyzers/c_analyzer/c_analyzer.l b/analyzers/c_analyzer/c_analyzer.l index dd7f961..2f728a0 100644 --- a/analyzers/c_analyzer/c_analyzer.l +++ b/analyzers/c_analyzer/c_analyzer.l @@ -28,6 +28,8 @@ void yyerror(const char *s) { "&&" { return AND; } "||" { return OR; } "!" { return NOT; } +"<" { return LT; } +">" { return GT; } "return" { return RET; } "print" { return PRINT; } diff --git a/analyzers/c_analyzer/c_analyzer.y b/analyzers/c_analyzer/c_analyzer.y index b8cff1b..14a0c05 100644 --- a/analyzers/c_analyzer/c_analyzer.y +++ b/analyzers/c_analyzer/c_analyzer.y @@ -16,7 +16,7 @@ bool debug = false; // debug mode } %token IDENTIFIER NUMBER -%token LBRACE RBRACE LPAREN RPAREN SEMICOLON ASSIGN PLUS MINUS MULT DIV MOD RET PRINT WHILE DO IF ELSE AND OR NOT +%token LBRACE RBRACE LPAREN RPAREN SEMICOLON ASSIGN PLUS MINUS MULT DIV MOD RET PRINT WHILE DO IF ELSE AND OR NOT LT GT %token FUNC COMMA %type expr program statement block func_decl param_list params @@ -105,6 +105,8 @@ expr: | LPAREN { if (debug) printf("LPAREN\n") } expr RPAREN { if (debug) printf("RPAREN\n") } // выражения вида (expr) | expr OR { if (debug) printf("OR\n") } expr | expr AND { if (debug) printf("AND\n") } expr + | expr LT { if (debug) printf("LT\n") } expr + | expr GT { if (debug) printf("GT\n") } expr | NOT { if (debug) printf("NOT\n") } expr | IDENTIFIER { if (debug) printf("IDENTIFIER(%s)\n", $1); free($1); } | NUMBER { if (debug) printf("NUMBER(%s)\n", $1); free($1); } diff --git a/code.txt b/code.txt index cbbe4f8..3c276fe 100644 --- a/code.txt +++ b/code.txt @@ -1,4 +1,5 @@ func FUNC_1(a, b, c) { + x = x + 1; a = a + 1; } @@ -6,8 +7,8 @@ func FUNC_1(a, b, c) { func FUNC_2() { do { x = x + 1; - } while(!x); - + } while(x < 5); + x = 5; }