26 lines
733 B
Plaintext
26 lines
733 B
Plaintext
#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<byte>.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 |