Parse single instruction in neutral text
This commit is contained in:
13
.config/dotnet-tools.json
Normal file
13
.config/dotnet-tools.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"version": 1,
|
||||
"isRoot": true,
|
||||
"tools": {
|
||||
"paket": {
|
||||
"version": "9.0.2",
|
||||
"commands": [
|
||||
"paket"
|
||||
],
|
||||
"rollForward": false
|
||||
}
|
||||
}
|
||||
}
|
4
.gitignore
vendored
4
.gitignore
vendored
@@ -482,3 +482,7 @@ $RECYCLE.BIN/
|
||||
|
||||
# Vim temporary swap files
|
||||
*.swp
|
||||
|
||||
# Paket
|
||||
.paket/
|
||||
packages/
|
||||
|
5
.vscode/settings.json
vendored
Normal file
5
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"FSharp.FSIExtraInteractiveParameters": [
|
||||
"--strict-indentation-"
|
||||
]
|
||||
}
|
111
ldtext/Lexer.fs
Normal file
111
ldtext/Lexer.fs
Normal file
@@ -0,0 +1,111 @@
|
||||
module Lexer
|
||||
|
||||
# 1 "Lexer.fsl"
|
||||
|
||||
open Parser
|
||||
open FSharp.Text.Lexing
|
||||
|
||||
exception SyntaxError of string
|
||||
|
||||
let lexeme (lexbuf:LexBuffer<byte>) = System.Text.Encoding.ASCII.GetString lexbuf.Lexeme
|
||||
|
||||
# 12 "Lexer.fs"
|
||||
let trans : uint16[] array =
|
||||
[|
|
||||
(* State 0 *)
|
||||
[|11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;1us;11us;11us;11us;11us;11us;11us;11us;3us;4us;11us;11us;7us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;8us;11us;11us;11us;9us;11us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;5us;11us;6us;11us;2us;11us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;2us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;11us;10us;|];
|
||||
(* State 1 *)
|
||||
[|65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;13us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
|
||||
(* State 2 *)
|
||||
[|65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;12us;65535us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;65535us;65535us;65535us;65535us;12us;65535us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
|
||||
(* State 3 *)
|
||||
[|65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
|
||||
(* State 4 *)
|
||||
[|65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
|
||||
(* State 5 *)
|
||||
[|65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
|
||||
(* State 6 *)
|
||||
[|65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
|
||||
(* State 7 *)
|
||||
[|65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
|
||||
(* State 8 *)
|
||||
[|65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
|
||||
(* State 9 *)
|
||||
[|65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
|
||||
(* State 10 *)
|
||||
[|65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
|
||||
(* State 11 *)
|
||||
[|65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
|
||||
(* State 12 *)
|
||||
[|65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;12us;65535us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;65535us;65535us;65535us;65535us;12us;65535us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;12us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
|
||||
(* State 13 *)
|
||||
[|65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;13us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|];
|
||||
|]
|
||||
let actions : uint16[] = [|65535us;0us;1us;2us;3us;4us;5us;6us;7us;8us;9us;10us;1us;0us;|]
|
||||
let _fslex_tables = FSharp.Text.Lexing.AsciiTables.Create(trans,actions)
|
||||
let rec _fslex_dummy () = _fslex_dummy()
|
||||
// Rule read
|
||||
and read lexbuf =
|
||||
match _fslex_tables.Interpret(0,lexbuf) with
|
||||
| 0 -> (
|
||||
# 16 "Lexer.fsl"
|
||||
read lexbuf
|
||||
# 53 "Lexer.fs"
|
||||
)
|
||||
| 1 -> (
|
||||
# 17 "Lexer.fsl"
|
||||
IDENTIFIER (lexeme lexbuf)
|
||||
# 58 "Lexer.fs"
|
||||
)
|
||||
| 2 -> (
|
||||
# 18 "Lexer.fsl"
|
||||
LEFT_PAREN
|
||||
# 63 "Lexer.fs"
|
||||
)
|
||||
| 3 -> (
|
||||
# 19 "Lexer.fsl"
|
||||
RIGHT_PAREN
|
||||
# 68 "Lexer.fs"
|
||||
)
|
||||
| 4 -> (
|
||||
# 20 "Lexer.fsl"
|
||||
LEFT_BRACKET
|
||||
# 73 "Lexer.fs"
|
||||
)
|
||||
| 5 -> (
|
||||
# 21 "Lexer.fsl"
|
||||
RIGHT_BRACKET
|
||||
# 78 "Lexer.fs"
|
||||
)
|
||||
| 6 -> (
|
||||
# 22 "Lexer.fsl"
|
||||
COMMA
|
||||
# 83 "Lexer.fs"
|
||||
)
|
||||
| 7 -> (
|
||||
# 23 "Lexer.fsl"
|
||||
SEMICOLON
|
||||
# 88 "Lexer.fs"
|
||||
)
|
||||
| 8 -> (
|
||||
# 24 "Lexer.fsl"
|
||||
QUESTION_MARK
|
||||
# 93 "Lexer.fs"
|
||||
)
|
||||
| 9 -> (
|
||||
# 25 "Lexer.fsl"
|
||||
EOF
|
||||
# 98 "Lexer.fs"
|
||||
)
|
||||
| 10 -> (
|
||||
# 26 "Lexer.fsl"
|
||||
raise (SyntaxError (sprintf
|
||||
"SyntaxError: Unexpected char: '%s' Line: %d Column: %d"
|
||||
(lexeme lexbuf)
|
||||
(lexbuf.StartPos.Line + 1)
|
||||
lexbuf.StartPos.Column))
|
||||
# 107 "Lexer.fs"
|
||||
)
|
||||
| _ -> failwith "read"
|
||||
|
||||
# 3000000 "Lexer.fs"
|
5
ldtext/Lexer.fsi
Normal file
5
ldtext/Lexer.fsi
Normal file
@@ -0,0 +1,5 @@
|
||||
module Lexer
|
||||
|
||||
open Parser
|
||||
open FSharp.Text.Lexing/// Rule read
|
||||
val read: lexbuf: LexBuffer<char> -> token
|
30
ldtext/Lexer.fsl
Normal file
30
ldtext/Lexer.fsl
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
open Parser
|
||||
open FSharp.Text.Lexing
|
||||
|
||||
exception SyntaxError of string
|
||||
|
||||
let lexeme (lexbuf:LexBuffer<byte>) = System.Text.Encoding.ASCII.GetString lexbuf.Lexeme
|
||||
}
|
||||
|
||||
// It's not necessary to name regexes like this, but it might
|
||||
// make the rule(s) clearer.
|
||||
let ident = ['_' 'a'-'z' 'A'-'Z' ]['_' 'a'-'z' 'A'-'Z' '.' '0'-'9']*
|
||||
|
||||
rule read =
|
||||
parse
|
||||
| ' '+ { read lexbuf }
|
||||
| ident { IDENTIFIER (lexeme lexbuf) }
|
||||
| '(' { LEFT_PAREN }
|
||||
| ')' { RIGHT_PAREN }
|
||||
| '[' { LEFT_BRACKET }
|
||||
| ']' { RIGHT_BRACKET }
|
||||
| ',' { COMMA }
|
||||
| ';' { SEMICOLON }
|
||||
| '?' { QUESTION_MARK }
|
||||
| eof { EOF }
|
||||
| _ { raise (SyntaxError (sprintf
|
||||
"SyntaxError: Unexpected char: '%s' Line: %d Column: %d"
|
||||
(lexeme lexbuf)
|
||||
(lexbuf.StartPos.Line + 1)
|
||||
lexbuf.StartPos.Column))}
|
@@ -3,3 +3,5 @@
|
||||
module Say =
|
||||
let hello name =
|
||||
printfn "Hello %s" name
|
||||
|
||||
|
||||
|
222
ldtext/Parser.fs
Normal file
222
ldtext/Parser.fs
Normal file
@@ -0,0 +1,222 @@
|
||||
// Implementation file for parser generated by fsyacc
|
||||
module Parser
|
||||
#nowarn "64";; // turn off warnings that type variables used in production annotations are instantiated to concrete type
|
||||
open FSharp.Text.Lexing
|
||||
open FSharp.Text.Parsing.ParseHelpers
|
||||
# 1 "Parser.fsy"
|
||||
|
||||
open LDText.Ast
|
||||
open FSharp.Text.Lexing
|
||||
|
||||
# 11 "Parser.fs"
|
||||
// This type is the type of tokens accepted by the parser
|
||||
type token =
|
||||
| EOF
|
||||
| QUESTION_MARK
|
||||
| SEMICOLON
|
||||
| COMMA
|
||||
| RIGHT_BRACKET
|
||||
| LEFT_BRACKET
|
||||
| RIGHT_PAREN
|
||||
| LEFT_PAREN
|
||||
| IDENTIFIER of (string)
|
||||
// This type is used to give symbolic names to token indexes, useful for error messages
|
||||
type tokenId =
|
||||
| TOKEN_EOF
|
||||
| TOKEN_QUESTION_MARK
|
||||
| TOKEN_SEMICOLON
|
||||
| TOKEN_COMMA
|
||||
| TOKEN_RIGHT_BRACKET
|
||||
| TOKEN_LEFT_BRACKET
|
||||
| TOKEN_RIGHT_PAREN
|
||||
| TOKEN_LEFT_PAREN
|
||||
| TOKEN_IDENTIFIER
|
||||
| TOKEN_end_of_input
|
||||
| TOKEN_error
|
||||
// This type is used to give symbolic names to token indexes, useful for error messages
|
||||
type nonTerminalId =
|
||||
| NONTERM__startinstr
|
||||
| NONTERM_instr
|
||||
| NONTERM_operands
|
||||
| NONTERM_operand
|
||||
|
||||
// This function maps tokens to integer indexes
|
||||
let tagOfToken (t:token) =
|
||||
match t with
|
||||
| EOF -> 0
|
||||
| QUESTION_MARK -> 1
|
||||
| SEMICOLON -> 2
|
||||
| COMMA -> 3
|
||||
| RIGHT_BRACKET -> 4
|
||||
| LEFT_BRACKET -> 5
|
||||
| RIGHT_PAREN -> 6
|
||||
| LEFT_PAREN -> 7
|
||||
| IDENTIFIER _ -> 8
|
||||
|
||||
// This function maps integer indexes to symbolic token ids
|
||||
let tokenTagToTokenId (tokenIdx:int) =
|
||||
match tokenIdx with
|
||||
| 0 -> TOKEN_EOF
|
||||
| 1 -> TOKEN_QUESTION_MARK
|
||||
| 2 -> TOKEN_SEMICOLON
|
||||
| 3 -> TOKEN_COMMA
|
||||
| 4 -> TOKEN_RIGHT_BRACKET
|
||||
| 5 -> TOKEN_LEFT_BRACKET
|
||||
| 6 -> TOKEN_RIGHT_PAREN
|
||||
| 7 -> TOKEN_LEFT_PAREN
|
||||
| 8 -> TOKEN_IDENTIFIER
|
||||
| 11 -> TOKEN_end_of_input
|
||||
| 9 -> TOKEN_error
|
||||
| _ -> failwith "tokenTagToTokenId: bad token"
|
||||
|
||||
/// This function maps production indexes returned in syntax errors to strings representing the non terminal that would be produced by that production
|
||||
let prodIdxToNonTerminal (prodIdx:int) =
|
||||
match prodIdx with
|
||||
| 0 -> NONTERM__startinstr
|
||||
| 1 -> NONTERM_instr
|
||||
| 2 -> NONTERM_operands
|
||||
| 3 -> NONTERM_operands
|
||||
| 4 -> NONTERM_operands
|
||||
| 5 -> NONTERM_operand
|
||||
| 6 -> NONTERM_operand
|
||||
| _ -> failwith "prodIdxToNonTerminal: bad production index"
|
||||
|
||||
let _fsyacc_endOfInputTag = 11
|
||||
let _fsyacc_tagOfErrorTerminal = 9
|
||||
|
||||
// This function gets the name of a token as a string
|
||||
let token_to_string (t:token) =
|
||||
match t with
|
||||
| EOF -> "EOF"
|
||||
| QUESTION_MARK -> "QUESTION_MARK"
|
||||
| SEMICOLON -> "SEMICOLON"
|
||||
| COMMA -> "COMMA"
|
||||
| RIGHT_BRACKET -> "RIGHT_BRACKET"
|
||||
| LEFT_BRACKET -> "LEFT_BRACKET"
|
||||
| RIGHT_PAREN -> "RIGHT_PAREN"
|
||||
| LEFT_PAREN -> "LEFT_PAREN"
|
||||
| IDENTIFIER _ -> "IDENTIFIER"
|
||||
|
||||
// This function gets the data carried by a token as an object
|
||||
let _fsyacc_dataOfToken (t:token) =
|
||||
match t with
|
||||
| EOF -> (null : System.Object)
|
||||
| QUESTION_MARK -> (null : System.Object)
|
||||
| SEMICOLON -> (null : System.Object)
|
||||
| COMMA -> (null : System.Object)
|
||||
| RIGHT_BRACKET -> (null : System.Object)
|
||||
| LEFT_BRACKET -> (null : System.Object)
|
||||
| RIGHT_PAREN -> (null : System.Object)
|
||||
| LEFT_PAREN -> (null : System.Object)
|
||||
| IDENTIFIER _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x
|
||||
let _fsyacc_gotos = [| 0us;65535us;1us;65535us;0us;1us;2us;65535us;3us;4us;7us;8us;2us;65535us;3us;6us;7us;6us;|]
|
||||
let _fsyacc_sparseGotoTableRowOffsets = [|0us;1us;3us;6us;|]
|
||||
let _fsyacc_stateToProdIdxsTableElements = [| 1us;0us;1us;0us;1us;1us;1us;1us;1us;1us;1us;1us;2us;3us;4us;1us;3us;1us;3us;1us;5us;1us;6us;|]
|
||||
let _fsyacc_stateToProdIdxsTableRowOffsets = [|0us;2us;4us;6us;8us;10us;12us;15us;17us;19us;21us;|]
|
||||
let _fsyacc_action_rows = 11
|
||||
let _fsyacc_actionTableElements = [|1us;32768us;8us;2us;0us;49152us;1us;32768us;7us;3us;2us;16386us;1us;10us;8us;9us;1us;32768us;6us;5us;0us;16385us;1us;16388us;3us;7us;2us;16386us;1us;10us;8us;9us;0us;16387us;0us;16389us;0us;16390us;|]
|
||||
let _fsyacc_actionTableRowOffsets = [|0us;2us;3us;5us;8us;10us;11us;13us;16us;17us;18us;|]
|
||||
let _fsyacc_reductionSymbolCounts = [|1us;4us;0us;3us;1us;1us;1us;|]
|
||||
let _fsyacc_productionToNonTerminalTable = [|0us;1us;2us;2us;2us;3us;3us;|]
|
||||
let _fsyacc_immediateActions = [|65535us;49152us;65535us;65535us;65535us;16385us;65535us;65535us;16387us;16389us;16390us;|]
|
||||
let _fsyacc_reductions = lazy [|
|
||||
# 123 "Parser.fs"
|
||||
(fun (parseState : FSharp.Text.Parsing.IParseState) ->
|
||||
let _1 = parseState.GetInput(1) :?> Instr in
|
||||
Microsoft.FSharp.Core.Operators.box
|
||||
(
|
||||
(
|
||||
raise (FSharp.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1))
|
||||
)
|
||||
: 'gentype__startinstr));
|
||||
# 132 "Parser.fs"
|
||||
(fun (parseState : FSharp.Text.Parsing.IParseState) ->
|
||||
let _1 = parseState.GetInput(1) :?> string in
|
||||
let _3 = parseState.GetInput(3) :?> 'gentype_operands in
|
||||
Microsoft.FSharp.Core.Operators.box
|
||||
(
|
||||
(
|
||||
# 29 "Parser.fsy"
|
||||
{ Op = _1; Args = _3 }
|
||||
)
|
||||
# 29 "Parser.fsy"
|
||||
: Instr));
|
||||
# 144 "Parser.fs"
|
||||
(fun (parseState : FSharp.Text.Parsing.IParseState) ->
|
||||
Microsoft.FSharp.Core.Operators.box
|
||||
(
|
||||
(
|
||||
# 32 "Parser.fsy"
|
||||
[]
|
||||
)
|
||||
# 32 "Parser.fsy"
|
||||
: 'gentype_operands));
|
||||
# 154 "Parser.fs"
|
||||
(fun (parseState : FSharp.Text.Parsing.IParseState) ->
|
||||
let _1 = parseState.GetInput(1) :?> 'gentype_operand in
|
||||
let _3 = parseState.GetInput(3) :?> 'gentype_operands in
|
||||
Microsoft.FSharp.Core.Operators.box
|
||||
(
|
||||
(
|
||||
# 33 "Parser.fsy"
|
||||
_1 :: _3
|
||||
)
|
||||
# 33 "Parser.fsy"
|
||||
: 'gentype_operands));
|
||||
# 166 "Parser.fs"
|
||||
(fun (parseState : FSharp.Text.Parsing.IParseState) ->
|
||||
let _1 = parseState.GetInput(1) :?> 'gentype_operand in
|
||||
Microsoft.FSharp.Core.Operators.box
|
||||
(
|
||||
(
|
||||
# 34 "Parser.fsy"
|
||||
[ _1 ]
|
||||
)
|
||||
# 34 "Parser.fsy"
|
||||
: 'gentype_operands));
|
||||
# 177 "Parser.fs"
|
||||
(fun (parseState : FSharp.Text.Parsing.IParseState) ->
|
||||
let _1 = parseState.GetInput(1) :?> string in
|
||||
Microsoft.FSharp.Core.Operators.box
|
||||
(
|
||||
(
|
||||
# 37 "Parser.fsy"
|
||||
OperandTag _1
|
||||
)
|
||||
# 37 "Parser.fsy"
|
||||
: 'gentype_operand));
|
||||
# 188 "Parser.fs"
|
||||
(fun (parseState : FSharp.Text.Parsing.IParseState) ->
|
||||
Microsoft.FSharp.Core.Operators.box
|
||||
(
|
||||
(
|
||||
# 38 "Parser.fsy"
|
||||
OperandHole
|
||||
)
|
||||
# 38 "Parser.fsy"
|
||||
: 'gentype_operand));
|
||||
|]
|
||||
# 199 "Parser.fs"
|
||||
let tables : FSharp.Text.Parsing.Tables<_> =
|
||||
{ reductions = _fsyacc_reductions.Value;
|
||||
endOfInputTag = _fsyacc_endOfInputTag;
|
||||
tagOfToken = tagOfToken;
|
||||
dataOfToken = _fsyacc_dataOfToken;
|
||||
actionTableElements = _fsyacc_actionTableElements;
|
||||
actionTableRowOffsets = _fsyacc_actionTableRowOffsets;
|
||||
stateToProdIdxsTableElements = _fsyacc_stateToProdIdxsTableElements;
|
||||
stateToProdIdxsTableRowOffsets = _fsyacc_stateToProdIdxsTableRowOffsets;
|
||||
reductionSymbolCounts = _fsyacc_reductionSymbolCounts;
|
||||
immediateActions = _fsyacc_immediateActions;
|
||||
gotos = _fsyacc_gotos;
|
||||
sparseGotoTableRowOffsets = _fsyacc_sparseGotoTableRowOffsets;
|
||||
tagOfErrorTerminal = _fsyacc_tagOfErrorTerminal;
|
||||
parseError = (fun (ctxt:FSharp.Text.Parsing.ParseErrorContext<_>) ->
|
||||
match parse_error_rich with
|
||||
| Some f -> f ctxt
|
||||
| None -> parse_error ctxt.Message);
|
||||
numTerminals = 12;
|
||||
productionToNonTerminalTable = _fsyacc_productionToNonTerminalTable }
|
||||
let engine lexer lexbuf startState = tables.Interpret(lexer, lexbuf, startState)
|
||||
let instr lexer lexbuf : Instr =
|
||||
engine lexer lexbuf 0 :?> _
|
41
ldtext/Parser.fsi
Normal file
41
ldtext/Parser.fsi
Normal file
@@ -0,0 +1,41 @@
|
||||
// Signature file for parser generated by fsyacc
|
||||
module Parser
|
||||
type token =
|
||||
| EOF
|
||||
| QUESTION_MARK
|
||||
| SEMICOLON
|
||||
| COMMA
|
||||
| RIGHT_BRACKET
|
||||
| LEFT_BRACKET
|
||||
| RIGHT_PAREN
|
||||
| LEFT_PAREN
|
||||
| IDENTIFIER of (string)
|
||||
type tokenId =
|
||||
| TOKEN_EOF
|
||||
| TOKEN_QUESTION_MARK
|
||||
| TOKEN_SEMICOLON
|
||||
| TOKEN_COMMA
|
||||
| TOKEN_RIGHT_BRACKET
|
||||
| TOKEN_LEFT_BRACKET
|
||||
| TOKEN_RIGHT_PAREN
|
||||
| TOKEN_LEFT_PAREN
|
||||
| TOKEN_IDENTIFIER
|
||||
| TOKEN_end_of_input
|
||||
| TOKEN_error
|
||||
type nonTerminalId =
|
||||
| NONTERM__startinstr
|
||||
| NONTERM_instr
|
||||
| NONTERM_operands
|
||||
| NONTERM_operand
|
||||
/// This function maps tokens to integer indexes
|
||||
val tagOfToken: token -> int
|
||||
|
||||
/// This function maps integer indexes to symbolic token ids
|
||||
val tokenTagToTokenId: int -> tokenId
|
||||
|
||||
/// This function maps production indexes returned in syntax errors to strings representing the non terminal that would be produced by that production
|
||||
val prodIdxToNonTerminal: int -> nonTerminalId
|
||||
|
||||
/// This function gets the name of a token as a string
|
||||
val token_to_string: token -> string
|
||||
val instr : (FSharp.Text.Lexing.LexBuffer<'cty> -> token) -> FSharp.Text.Lexing.LexBuffer<'cty> -> (Instr)
|
@@ -1,10 +1,10 @@
|
||||
%{
|
||||
open LDText.Ast
|
||||
// helper functions
|
||||
open FSharp.Text.Lexing
|
||||
%}
|
||||
|
||||
// start token
|
||||
%start start
|
||||
%start instr
|
||||
|
||||
// tokens, used by lexer
|
||||
%token <string> IDENTIFIER
|
||||
@@ -18,19 +18,20 @@ open LDText.Ast
|
||||
%token EOF
|
||||
|
||||
// return type of parser, marked by start token
|
||||
%type <Rung option> rung
|
||||
%type <Instr> instr
|
||||
|
||||
%%
|
||||
|
||||
start:
|
||||
| instr EOF { $1 }
|
||||
//rung:
|
||||
// | instr EOF { $1 }
|
||||
|
||||
instr:
|
||||
| IDENTIFIER LEFT_PAREN operands RIGHT_PAREN { StepInstr { Op = $1; Args = [ $3 ] } }
|
||||
| IDENTIFIER LEFT_PAREN operands RIGHT_PAREN { { Op = $1; Args = $3 } }
|
||||
|
||||
operands:
|
||||
| { }
|
||||
| operand operands { $1; $2 }
|
||||
| { [] }
|
||||
| operand COMMA operands { $1 :: $3 }
|
||||
| operand { [ $1 ] }
|
||||
|
||||
operand:
|
||||
| IDENTIFIER { OperandTag $1 }
|
||||
|
@@ -1,20 +1,24 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup><Compile Include="LDText.fs" />
|
||||
<ItemGroup>
|
||||
<Compile Include="LDText.fs" />
|
||||
<FsLex Include="Lexer.fsl">
|
||||
<OtherFlags>--module Lexer</OtherFlags>
|
||||
</FsLex>
|
||||
<FsYacc Include="Parser.fsy">
|
||||
<OtherFlags>--module Parser</OtherFlags>
|
||||
</FsYacc>
|
||||
<Compile Include="Parser.fs">
|
||||
<OtherFlags>--strict-indentation-</OtherFlags>
|
||||
</Compile>
|
||||
<Compile Include="Lexer.fs">
|
||||
<OtherFlags>--strict-indentation-</OtherFlags>
|
||||
</Compile>
|
||||
<Compile Include="Library.fs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="FsLexYacc" Version="11.3.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<Import Project=".paket\Paket.Restore.targets" />
|
||||
</Project>
|
5
ldtext/paket.dependencies
Normal file
5
ldtext/paket.dependencies
Normal file
@@ -0,0 +1,5 @@
|
||||
generate_load_scripts: true
|
||||
source https://api.nuget.org/v3/index.json
|
||||
|
||||
nuget FSharp.Core
|
||||
nuget FsLexYacc 11.3.0
|
8
ldtext/paket.lock
Normal file
8
ldtext/paket.lock
Normal file
@@ -0,0 +1,8 @@
|
||||
NUGET
|
||||
remote: https://api.nuget.org/v3/index.json
|
||||
FSharp.Core (9.0.303)
|
||||
FsLexYacc (11.3)
|
||||
FSharp.Core (>= 4.6.2) - restriction: >= netstandard2.0
|
||||
FsLexYacc.Runtime (>= 11.3) - restriction: >= netstandard2.0
|
||||
FsLexYacc.Runtime (11.3) - restriction: >= netstandard2.0
|
||||
FSharp.Core (>= 4.6.2) - restriction: >= netstandard2.0
|
2
ldtext/paket.references
Normal file
2
ldtext/paket.references
Normal file
@@ -0,0 +1,2 @@
|
||||
FsLexYacc
|
||||
FSharp.Core
|
11
ldtext/test.fsx
Normal file
11
ldtext/test.fsx
Normal file
@@ -0,0 +1,11 @@
|
||||
#load ".paket/load/net9.0/main.group.fsx"
|
||||
#load "LDText.fs"
|
||||
#load "Parser.fs"
|
||||
#load "Lexer.fs"
|
||||
|
||||
let parse (s:string) =
|
||||
s |> System.Text.Encoding.ASCII.GetBytes |> FSharp.Text.Lexing.LexBuffer<byte>.FromBytes |> Parser.instr(Lexer.read)
|
||||
|
||||
parse "abc()"
|
||||
parse "abc(def)"
|
||||
// parse "abc(def,ghi)"
|
Reference in New Issue
Block a user