From 1140b5b1409724ac33b217d066aa900b630f3215 Mon Sep 17 00:00:00 2001 From: cannoli-fruit Date: Sun, 26 Jul 2026 23:20:39 -0400 Subject: [PATCH] Implemented drop directive and fibonacci program --- flagpole/src/main.c | 5 +++++ flagpole/tests/fib.fp | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 flagpole/tests/fib.fp diff --git a/flagpole/src/main.c b/flagpole/src/main.c index 4f489ad..07d0599 100644 --- a/flagpole/src/main.c +++ b/flagpole/src/main.c @@ -87,6 +87,7 @@ static inline bool isKW(Lz_SB *sb) { || SBeq(sb, "st8") || SBeq(sb, "dup") || SBeq(sb, "swap") + || SBeq(sb, "drop") || SBeq(sb, "while") || SBeq(sb, "do") || SBeq(sb, "if") @@ -261,6 +262,10 @@ codegen: printf(" pushstack 119\n"); break; } + if (SBeq(&tokenAccumulator, "drop")) { + printf(" popstack 118\n"); + break; + } if (SBeq(&tokenAccumulator, "while")) { lz_da_append(labelStack, counter); commentStack(&labelStack); diff --git a/flagpole/tests/fib.fp b/flagpole/tests/fib.fp new file mode 100644 index 0000000..221a4b2 --- /dev/null +++ b/flagpole/tests/fib.fp @@ -0,0 +1,21 @@ +$inc fvmstd.fp + +proc fib + if dup 0 == then + drop 0 return + endif + if dup 1 == then + drop 1 return + endif + + dup + 1 u- :fib + swap + 2 u- :fib + u+ +endproc + +proc main + "Idx: " :puts :getuint + :fib :putuint +endproc