I've happened upon one of my old projects, and was wondering if you guys could help me figure out what it should be doing, what it's doing now, and why it's doing it, here's the info I've gathered.
This is the Heiarchy;
main input -- stringValue, value is 5+1/7-3 ZeroScript -- Folder cradle -- the main Script, enabled, 181 lines cradle.BKP -- Emptier version of above, disabled, 78 lines OS -- ModuleScript
OS has the following functions; Write(s) -- Prints a string WriteLn(s) -- Exactly the same as above Halt() -- Prints "Halt" In(x,t) -- checks if item x is in table t OS has the following tables; Alphas -- All capital letters Digits -- 1-0 D -- {nil,nil,nil,nil,nil,nil,nil,nil} S -- empty table the module returns Write, WriteLn, Halt, In, Alphas, Digits, 'ready', D, S in that order This is the Output; start 1 ready 2 ZerOS DEBUG MODE DEBUG; 5 DEBUG; 5
This is the 'cradle' script
print("start")
DEBUG = true -- set to false to disable debug printing
input = script.Parent.Parent.input -- fake input
print("1")
-- Necessary Functions
OS = require(script.Parent.OS)
print(OS[7])
D = OS[8]
SP = OS[9]
print('2')
Write = OS[1]
WriteLn = OS[2]
Halt = OS[3]
In = OS[4]
rd = 0
function Read()
rd = rd + 1
local re = string.sub(input.Value,rd,rd)
PrintD(re)
return re
end
function SP_push(x)
PrintD(x)
table.insert(SP, x)
end
function SP_pop()
local rt = SP[-1]
PrintD(rt)
table.remove(SP)
return rt
end
-- Debug Function
function PrintD(s)
if DEBUG == true then
if s ~= nil then
WriteLn("DEBUG; "..s)
else
WriteLn("DEBUG MODE")
end
end
end
-- Necessary Tables
Alphas = OS[5]
Digits = OS[6]
-- Compiler
local TAB = " " -- Tab
local Look = "" -- lookup a char
local function GetChar() -- get Look
Look = Read()
end
local function Error(s) -- Write an error
warn("Error: "..s..".")
end
local function Abort(s) -- Abort the program
Error(s)
Halt()
end
local function Expected(s) -- Write a "Char Expected" Error
Abort(s.. " Expected")
end
local function Match(x) -- Match Characters
if Look == x then GetChar() else
Expected('"'..x..'"')
end
end
local function IsAlpha(c) -- Check if a character is an Alpha Letter
return In(string.upper(c),Alphas)
end
local function IsDigit(c) -- Check if a character is a Digit
return In(c,Digits)
end
local function GetName() -- Get a Name
if not IsAlpha(Look) then Expected('Name') end
PrintD(string.upper(Look))
return string.upper(Look)
end
local function GetNum() -- Get a Number
if not IsDigit(Look) then Expected('Integer') end
PrintD(Look)
return Look
end
local function Emit(s) -- Print a String
Write(TAB..s)
end
local function EmitLn(s) -- Print a String on a new line
Emit(s)
WriteLn()
end
--local function Term() -- Term
-- --Look = '7'
-- D[1] = GetNum()
--end
local function Factor()
D[1] = GetNum()
end
local function Multiply()
Match('*')
Factor()
EmitLn(SP_pop() * D[1])
end
local function Divide()
Match('/')
Factor()
D[2] = SP_pop
EmitLn(D[2]/D[1])
end
local function Term()
Factor()
while Look == '*' or Look == '?' do
SP_push(D[1]) D[1] = nil
if Look == '*' then
Multiply()
elseif Look == '/' then
Divide()
else Expected("Mulop") end
end
end
local function Add() -- add
Match('+')
Term()
EmitLn(SP_pop() + D[1])
end
local function Subtract() -- subtract
Match('-')
Term()
EmitLn(SP_pop()-D[1])
end
local function Expression() -- Expressions
Term()
while Look == '+' or Look == '-' do
SP_push(D[1]) D[1] = nil
if Look == '+' then
Add()
elseif Look == '-' then
Subtract()
else Expected("Addop") end
end
end
local function Init() -- Initiate
GetChar()
end
local function begin() -- Start Function
WriteLn("ZerOS")
PrintD()
Init()
Expression()
end
begin() -- Run
this is the cradle.BKP script
-- Necessary Functions
OS = require(script.Parent.OS)
Write = OS[1]
WriteLn = OS[2]
Halt = OS[3]
In = OS[4]
-- Necessary Tables
Alphas = OS[5]
Digits = OS[6]
-- Compiler
local TAB = " " -- Tab
local Look = "r" -- lookup a char
local function GetChar() -- get Look
return Look
end
local function Error(s) -- Write an error
WriteLn("Error: "..s..".")
end
local function Abort(s) -- Abort the program
Error(s)
Halt()
end
local function Expected(s) -- Write a "Char Expected" Error
Abort(s.. " Expected")
end
local function Match(x) -- Match Characters
if Look == x then GetChar() else
Expected('"'..x..'"')
end
end
local function IsAlpha(c) -- Check if a character is an Alpha Letter
return In(string.upper(c),Alphas)
end
local function IsDigit(c) -- Check if a character is a Digit
return In(c,Digits)
end
local function GetName() -- Get a Name
if not IsAlpha(Look) then Expected('Name') end
return string.upper(Look)
end
local function GetNum() -- Get a Number
if not IsDigit(Look) then Expected('Integer') end
return Look
end
local function Emit(s) -- Print a String
Write(TAB..s)
end
local function EmitLn(s) -- Print a String on a new line
Emit(s)
WriteLn()
end
local function Init()
GetChar()
end
local function begin()
Init()
WriteLn("ZerOS")
end
begin()
I think it's supposed to read the input, and output something, but I'm not entirely sure what I was trying to do.
