Files
IPS_W-assignments/W2/calculator/Calculator.fsx
NikolajDanger ba22cff91f stehau
2022-05-15 12:54:29 +02:00

28 lines
724 B
Plaintext

open System.Text
open FSharp.Text.Lexing
open FSharp.Text.Parsing
(* Both lex and parse a program. *)
let parse (s : string) =
Parser.Prog Lexer.Token
<| LexBuffer<_>.FromBytes (Encoding.UTF8.GetBytes s)
(* Continually evaluate user expressions. *)
let loop () =
let mutable running = true
while running do
printf "Input an expression: "
try
let program = System.Console.ReadLine()
if program = "exit"
then
running <- false
else
printfn "Parse result: %A" (parse program)
with
| Failure msg -> printfn "%s" msg
| :? System.ArgumentNullException ->
running <- false
loop ()