#load ".paket/load/net9.0/main.group.fsx" #load "LDText.fs" #load "Parser.fs" #load "Lexer.fs" let mutable failed = false let parse (s:string) = let lexbuf = s |> System.Text.Encoding.ASCII.GetBytes |> FSharp.Text.Lexing.LexBuffer.FromBytes let msg = try sprintf "%A" <| Parser.rung Lexer.read lexbuf with e -> let pos = lexbuf.EndPos let lastToken = System.Text.Encoding.ASCII.GetString lexbuf.Lexeme failed <- true sprintf "Parse failed at %d, last token = %A" pos.AbsoluteOffset lastToken printf "%A -> %s\n" s msg parse "abc();" parse "abc(def);" parse "abc(def,ghi);" parse "abc(def,ghi) a(b) ;" if failed then exit 1 else exit 0