git » unicorn-sparkle-basic.git » commit 34a4e32

add < <= > >= ==

author Alan Dipert
2024-01-05 19:49:27 UTC
committer Alan Dipert
2024-01-05 19:49:27 UTC
parent 490ac39b77194334fbd4000c180e0e19b23937a4

add < <= > >= ==

ast.h +5 -0
bbasic.l +5 -1
bbasic.y +5 -1
main.c +7 -3

diff --git a/ast.h b/ast.h
index 1eb8786..3f075e0 100644
--- a/ast.h
+++ b/ast.h
@@ -8,6 +8,11 @@ enum TYPE_NODE {
   NODE_SUBTRACT,
   NODE_MULTIPLY,
   NODE_DIVIDE,
+  NODE_LT,
+  NODE_LTE,
+  NODE_GT,
+  NODE_GTE,
+  NODE_EQ,
   NODE_NUMBER_INTEGER,
   NODE_STRING,
   NODE_ID
diff --git a/bbasic.l b/bbasic.l
index 3423c5f..b8375ba 100644
--- a/bbasic.l
+++ b/bbasic.l
@@ -12,7 +12,11 @@
 "if"                return IF;
 "then"              return THEN;
 "goto"              return GOTO;
-"="                 return EQUALS;
+"<"                 return LT;
+"<="                return LTE;
+">"                 return GT;
+">="                return GTE;
+"=="                return EQ;
 [0-9]+              { yylval.num_int = atoi(yytext); return NUMBER_INTEGER; }
 [a-zA-Z][a-zA-Z0-9]* { yylval.id = strdup(yytext); return IDENTIFIER; }
 \"([^\\\"]|\\.)*\"   { yylval.str = strdup(yytext); return STRING; }
diff --git a/bbasic.y b/bbasic.y
index 7c104a8..b9123b0 100644
--- a/bbasic.y
+++ b/bbasic.y
@@ -21,7 +21,7 @@ void yyerror(const char *s) {
 %token <num_int> NUMBER_INTEGER
 %token <id> IDENTIFIER
 %token <str> STRING
-%token PRINT IF THEN GOTO EQUALS
+%token PRINT IF THEN GOTO LT LTE GT GTE EQ
 
 %type <node> expression
 
@@ -50,5 +50,9 @@ expression:
     | expression '-' expression
     | expression '*' expression
     | expression '/' expression
+    | expression LT expression
+    | expression LTE expression
+    | expression GT expression
+    | expression GTE expression
     ;
 %%
diff --git a/main.c b/main.c
index 5acd07f..6633c0f 100644
--- a/main.c
+++ b/main.c
@@ -4,7 +4,11 @@
 extern int yyparse();
 
 int main() {
-    printf("Welcome to Buckaroo Basic!\n");
-    yyparse();  // Start parsing
-    return 0;
+  printf("Welcome to Buckaroo Basic!\n");
+  while (1) {
+    if(!yyparse()) {
+      printf("It parsed :-)\n");
+    }
+  }
+  return 0;
 }