aboutsummaryrefslogtreecommitdiff
path: root/works/life/compile-principle-experiment/3/syn.y
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-02-28 23:13:39 +0800
committerYuqian Yang <crupest@crupest.life>2025-02-28 23:13:39 +0800
commitdc1f0c4c0096013799416664894c5194dc7e1f52 (patch)
tree2f5d235f778cd720f4c39ec3e56b77ba6d99f375 /works/life/compile-principle-experiment/3/syn.y
parent7299d424d90b1effb6db69e3476ddd5af72eeba4 (diff)
downloadcrupest-dc1f0c4c0096013799416664894c5194dc7e1f52.tar.gz
crupest-dc1f0c4c0096013799416664894c5194dc7e1f52.tar.bz2
crupest-dc1f0c4c0096013799416664894c5194dc7e1f52.zip
chore(store): move everything to store.
Diffstat (limited to 'works/life/compile-principle-experiment/3/syn.y')
-rw-r--r--works/life/compile-principle-experiment/3/syn.y42
1 files changed, 0 insertions, 42 deletions
diff --git a/works/life/compile-principle-experiment/3/syn.y b/works/life/compile-principle-experiment/3/syn.y
deleted file mode 100644
index 80abb17..0000000
--- a/works/life/compile-principle-experiment/3/syn.y
+++ /dev/null
@@ -1,42 +0,0 @@
-%{
-#include "main.h"
-#include <stdio.h>
-%}
-%union {
- double val; /* actual value */
- Symbol *sym; /* symbol table pointer */
-}
-%token <val> NUMBER
-%token <sym> VAR BLTIN UNDEF
-%type <val> expr asgn
-%right '='
-%left '+' '-'
-%left '*' '/'
-%left UNARYMINUS
-%right '^' /* exponentiation */
-%%
-list: /* nothing */
- | list '\n'
- | list asgn '\n'
- | list expr '\n' { printf("\t%.8g\n", $2); }
- | list error '\n' { yyerrok; }
- ;
-asgn: VAR '=' expr { $$=$1->value.val=$3; $1->type = VAR; }
- ;
-expr: NUMBER
- | VAR { if ($1->type == UNDEF)
- execerror("undefined variable", $1->name);
- $$ = $1->value.val; }
- | BLTIN '(' expr ')' { $$ = (*($1->value.ptr))($3); }
- | expr '+' expr { $$ = $1 + $3; }
- | expr '-' expr { $$ = $1 - $3; }
- | expr '*' expr { $$ = $1 * $3; }
- | expr '/' expr {
- if ($3 == 0.0)
- execerror("division by zero", "");
- $$ = $1 / $3; }
- | expr '^' expr { $$ = Pow($1, $3); }
- | '(' expr ')' { $$ = $2; }
- | '-' expr %prec UNARYMINUS { $$ = -$2; }
- ;
-%%