From 6db1a2cdd3b96731f2e092d55d8c2136eabc52d0 Mon Sep 17 00:00:00 2001
From: Julian T <julian@jtle.dk>
Date: Tue, 11 Feb 2020 12:24:56 +0100
Subject: Rename and cleanup

---
 sem3/osc/mm11/regn2/regn.y | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)
 create mode 100644 sem3/osc/mm11/regn2/regn.y

(limited to 'sem3/osc/mm11/regn2/regn.y')

diff --git a/sem3/osc/mm11/regn2/regn.y b/sem3/osc/mm11/regn2/regn.y
new file mode 100644
index 0000000..eac24c8
--- /dev/null
+++ b/sem3/osc/mm11/regn2/regn.y
@@ -0,0 +1,46 @@
+%{
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+%}
+
+%union {
+	double          dval;
+}
+
+%token <dval> TAL
+%token LOG EXP SQRT
+
+%left '-' '+'
+%left LOG EXP SQRT
+%left '*' '/'
+%right UMINUS
+
+%type <dval> expression
+
+%%
+
+statement_list: statement '\n'
+	  | statement_list statement '\n' ;
+
+statement:  expression					{printf("out \n");};
+
+expression: expression '+' expression   {printf("sum \n");}
+	  | expression '-' expression		{printf("sub \n");}
+	  | expression '*' expression		{printf("mul \n");}
+	  | expression '/' expression		{if ($3 == 0.0) 
+                                           yyerror("divide dy zero");
+                                         else printf("div \n");}
+	  | '-' expression %prec UMINUS		{printf("neg \n");}
+	  | '(' expression ')'				{;}
+	  | LOG expression					{printf("log \n");}
+	  | EXP expression					{printf("exp \n");}
+	  | SQRT expression					{printf("sqrt \n");}
+          | TAL                         {printf("load %f \n", $$);};
+%%
+
+int main()
+{ 
+  yyparse(); 
+}
+
-- 
cgit v1.2.3