Worked on report

This commit is contained in:
Kyler Olsen 2025-12-06 22:21:31 -07:00
parent 4c9aa78dc8
commit 494639d805
2 changed files with 13 additions and 18 deletions

View File

@ -2,7 +2,9 @@
*Kyler Olsen*
*October-December 2025*
*Snow College*
*SE 3250 Survey of Languages Final Project*
*SE 3250*
*Survey of Languages*
*Final Project*
Language Code Name:
YREA **SLS** (*Stack Language Specification*)
@ -17,8 +19,6 @@ Language Implementation Repository (Mirror on GitHub) (Private):
Assignment Page (Private):
[snow.instructure.com](https://snow.instructure.com/courses/1154808/assignments/16233203)
## Problem and Interest
In 1986, Hewlett-Packard released their HP-18C and HP-24C calculators, which
introduced their new RPL operating system and programming language. The language
was based on LISP and Forth (a stack-oriented language). RPL, aka Reverse Polish
@ -41,14 +41,18 @@ follows the pattern in RPL, everything is on the stack. One of my goals with
this language is also to have it able to run on an embedded system, such as my
own custom calculator.
## Languages
**C** was my selected language. It was an excellent choice for my project as it
is well suited for systems programming. It is a low level, yet powerful
language. While string utilities are not as robust as most modern languages, I
still feel like it was an excellent choice. Other major interpreted languages
also use C to implement their interpreters, such as Lua and Python.
I did use structs and unions heavily which we learned about when we looked at C.
With them I was able to use polymorphism in defining tokens and data types.
I am able to successfully compile and run this implementation on a Raspberry Pi
Pico with a RP2040 microcontroller.
**Rust** was the first language I tackled porting my project to. I am not as
familiar with Rust as I am Python, so thats why I wanted to get going on this
port first. I avoided using external libraries with C as they can be famously
@ -57,6 +61,10 @@ basically non-existent. It is also memory safe with its barrow checker. With it
being another systems programming language, and these modern features, I feel
like it is just as good of a choice of a language for my project.
In the past I have often fought with the barrow checker but with this project,
either my experience, memory mindfulness in my original port, or the extensive
AI help, I had no fights with the barrow checker this time.
The special feature for the Rust port is being able to export and import the
interpreter state in the repl using `#save <filename>` and `#load <filename>`.
@ -70,14 +78,6 @@ goal of portability to embedded systems.
The special feature for the Python port is the SLS Calculator App.
## Lessons
## Struggles
In the past I have often fought with the barrow checker but with this project,
either my experience, memory mindfulness in my original port, or the extensive
AI help, I had no fights with the barrow checker this time.
---
https://en.wikipedia.org/wiki/HP_48_series

View File

@ -1,5 +0,0 @@
def test_import_package():
import sls
assert hasattr(sls, "__version__")
assert isinstance(sls.__version__, str)