[GoLUG] [parse] Line-izer preprocessor
David Billsbrough
kc4zvw at earthlink.net
Sun Nov 19 14:38:22 EST 2023
Original Message:
Once upon a time, Steve Litt <slitt at tro.....com> wrote:
> Hi all,
> In my opinion, in today's world of gigabytes of RAM, there's no reason
> why operations shouldn't be done in-memory. Therefore, to make Lexical
> Analysis *much* easier, I made a preprocessor to change every space and
> every newline to printable strings, so the entire program could be done
> in one line. I did very little "helpful" stuff such as condensing
> multiple spaces into one or inserting "blankline" symbols. The only
> "helpful" stuff I did are:
{--- Trimmed ---}
> Hope you all like it.
SteveT,
While this is very 'borrowed' code from this previously mentioned tutorial:
https://ruslanspivak.com/lsbasi-part6/
I tried adding another token (^) to act as a 'Square' function and it sort of works but the syntax is *very* wrong mathematically!
But the code does parse (lex) with the grammar of 'expr', 'term', and 'factor'.and then interprets to do simple math from a string input to 'stdin'.
Check out: https://github.com/kc4zvw/simplecalc/blob/main/calc6.py
-=-=-=-
Script started on Sun Nov 19 17:03:44 2023
~kc4zvw: calc6.py
Simple Calculator (integers only) - version 6 (beta)
type ^D to exit program
calc> 4 + 2 * 3 - 6 / 2
7.0
calc> 2 + 2
4
calc> ^6
36
calc> 1 + 2 + 3
6
calc> ^36
1296
calc> ^D <--- (that's really a control-D)
Finished.
~kc4zvw: echo "Did it, dude\!"
Did it, dude!
Script done on Sun Nov 19 17:05:17 2023
-=-=-=-
References:
My basics notes so far on this topic: https://www.billsbrough.org/wiki/index.php?title=Basic_Compiler_Studies
GitHub archive of simple_calc: https://github.com/kc4zvw/simplecalc/tree/main
regards,
David
-- David Billsbrough (KC4ZVW)
QTH: Chuluota, FL -- grid: EL98kp
More information about the GoLUG
mailing list