Worked on report
This commit is contained in:
parent
4c9aa78dc8
commit
494639d805
26
REPORT.md
26
REPORT.md
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
def test_import_package():
|
||||
import sls
|
||||
|
||||
assert hasattr(sls, "__version__")
|
||||
assert isinstance(sls.__version__, str)
|
||||
Loading…
Reference in New Issue