-- Look out! We be programming!
-- cradle2a.ex a Euphoria compiler by A.R.S. KA9QLQ Alvin Koffman Copy right 2002
-- cradle2a.ex
include get.e -- for get character functions
include wildcard.e -- for upper()
with trace
--trace(1) -- output to screen
constant
alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ", -- Define alphas
nums = "0123456789" -- Define numerics
object Look -- Look ahead character
procedure GetChar() -- this grabs a line of characters
Look = getc(0) -- this will prosess one character at a time if looped
end procedure
function IsAlpha(object c) -- Recognize an Alpha Character
return find(upper(c),alpha)
end function
function IsDigit(object c) -- Recognize a Decimal Digit
return find(c,nums)
end function
procedure Error(sequence s) -- Report an Error
puts(1,"\n Error: " & s & ".")
end procedure
procedure Abort(sequence s) -- Report Error and Halt
atom x
Error(s) -- call to get the error
x = wait_key() -- wait so you can see results
abort(1) -- when using Windows or Linux
end procedure
procedure Expected(sequence s) -- Report What Was Expected
Abort(s & " Expected")
end procedure
function GetNum() -- Get a Number
object x -- check for error and return results
if not find(Look,nums) then Expected("Integer")
end if
x = Look
return x
end function
procedure Init() -- Initialize
GetChar() -- grab a character
end procedure
procedure Expression() -- output assembly code for numerics
puts(1, "MOVE # " & GetNum() & " D0 \n")
end procedure
-- start
puts(1, "Input a line of characters \n") -- ask for imput
Init() -- call initialison procedure
Expression() -- check for and process numbers