initial commit
This commit is contained in:
commit
4dcefea895
|
@ -0,0 +1,257 @@
|
|||
(* FSKalc, a simple calculator implemented as a tree-walker interpreter *)
|
||||
|
||||
open FParsec
|
||||
open System
|
||||
|
||||
(* Lexer *)
|
||||
|
||||
let manyCharsBetween popen pclose pchar = popen >>? manyCharsTill pchar pclose
|
||||
let anyStringBetween popen pclose = manyCharsBetween popen pclose anyChar
|
||||
|
||||
let pcomment: Parser<unit, unit> = (skipString "(*" |> anyStringBetween <| skipString "*)") |>> ignore
|
||||
//let pwhitespace: Parser<unit, unit> = (pcomment <|> spaces) |> many1 |>> ignore
|
||||
let pwhitespace = spaces
|
||||
|
||||
let pnumber: Parser<double, unit> = pfloat .>> pwhitespace
|
||||
let pidentifier: Parser<string, unit> =
|
||||
let isIdentChar c = isLetter c || c = '_'
|
||||
|
||||
many1SatisfyL isIdentChar "identifier" .>> pwhitespace
|
||||
|
||||
type Symbol =
|
||||
| Caret
|
||||
| Minus
|
||||
| Plus
|
||||
| Slash
|
||||
| Star
|
||||
| SlashSlash
|
||||
| Percent
|
||||
|
||||
let pleftparen = skipString "(" .>> pwhitespace
|
||||
let prightparen = skipString ")" .>> pwhitespace
|
||||
let pequal = skipString "=" .>> pwhitespace
|
||||
let ppower = stringReturn "^" <| Caret .>> pwhitespace
|
||||
let pminus = stringReturn "-" <| Minus .>> pwhitespace
|
||||
let pplus = stringReturn "+" <| Plus .>> pwhitespace
|
||||
let pstar = stringReturn "*" <| Star .>> pwhitespace
|
||||
let pslashslash = skipString "/" >>? (stringReturn "/" <| SlashSlash .>> pwhitespace)
|
||||
let pslash = stringReturn "/" <| Slash .>> pwhitespace
|
||||
let ppercent = stringReturn "%" <| Percent .>> pwhitespace
|
||||
|
||||
|
||||
(* Parser
|
||||
|
||||
- expressions prefixed by 'e'
|
||||
- statements prefixed by 's'
|
||||
|
||||
*)
|
||||
|
||||
// EXPRESSIONS
|
||||
|
||||
type Expression =
|
||||
| Number of double
|
||||
| VarGet of string
|
||||
| Grouping of Expression list
|
||||
| Power of Expression * List<Expression>
|
||||
| Negate of Expression
|
||||
| Factor of Expression * List<Symbol * Expression>
|
||||
| Term of Expression * List<Symbol * Expression>
|
||||
|
||||
let expr, exprref = createParserForwardedToRef()
|
||||
|
||||
// literals and function call
|
||||
|
||||
let enumber = pnumber |>> Number
|
||||
let evarget = pidentifier |>> VarGet
|
||||
|
||||
// parentheses
|
||||
|
||||
let egrouping = pleftparen >>. (many1 expr) .>> prightparen |>> Grouping
|
||||
|
||||
let primary = enumber <|> evarget <|> egrouping
|
||||
|
||||
// power
|
||||
|
||||
let epower = choice [
|
||||
primary .>>.? many1 (ppower >>. primary) |>> Power
|
||||
primary
|
||||
]
|
||||
|
||||
// unary
|
||||
|
||||
let enegate = choice [
|
||||
pminus >>? epower |>> Negate
|
||||
epower
|
||||
]
|
||||
|
||||
// factor
|
||||
|
||||
let pfactorop = pstar <|> pslashslash <|> pslash <|> ppercent
|
||||
|
||||
|
||||
let efactor = choice [
|
||||
enegate .>>.? many1 (pfactorop .>>. enegate) |>> Factor
|
||||
enegate
|
||||
]
|
||||
|
||||
|
||||
let ptermop = pplus <|> pminus
|
||||
|
||||
let eterm = choice [
|
||||
efactor .>>.? many1 (ptermop .>>. efactor) |>> Term
|
||||
efactor
|
||||
]
|
||||
|
||||
do exprref := eterm
|
||||
|
||||
// STATEMENTS
|
||||
|
||||
type Statement =
|
||||
| ExprStatement of Expression
|
||||
| VarSet of string * Expression
|
||||
| FuncDef of string * List<string> * Expression
|
||||
|
||||
let sexprstmt = expr |>> ExprStatement
|
||||
|
||||
let sfuncdef = pidentifier .>>.? ((many1 pidentifier) .>>. (pequal >>. expr)) |>> (fun (a, (b, c)) -> FuncDef (a, b, c))
|
||||
|
||||
let svarset = pidentifier .>>.? (pequal >>. expr) |>> VarSet
|
||||
|
||||
let stmt = choice [
|
||||
sfuncdef // first, so it falls through if multiple args not provided
|
||||
svarset // second so it falls through if no =
|
||||
sexprstmt
|
||||
]
|
||||
|
||||
// REPL oriented => only 1 statement at once
|
||||
let program = pwhitespace >>. stmt
|
||||
|
||||
type Value =
|
||||
| Number of double
|
||||
| Native of string
|
||||
| Function of List<string> * Expression
|
||||
| Fail of string
|
||||
|
||||
|
||||
|
||||
// Store global variables
|
||||
let mutable globals: Collections.Generic.Dictionary<string, Value> = new Collections.Generic.Dictionary<string, Value>()
|
||||
|
||||
// Native/builtin functions
|
||||
|
||||
globals["sin"] <- Native "sin"
|
||||
globals["cos"] <- Native "cos"
|
||||
globals["tan"] <- Native "tan"
|
||||
|
||||
globals["arccos"] <- Native "arccos"
|
||||
globals["arcsin"] <- Native "arcsin"
|
||||
globals["arctan"] <- Native "arctan"
|
||||
|
||||
globals["sqrt"] <- Native "sqrt"
|
||||
globals["log"] <- Native "log"
|
||||
globals["ln"] <- Native "ln"
|
||||
globals["exp"] <- Native "exp"
|
||||
|
||||
|
||||
// native values
|
||||
|
||||
globals["pi"] <- Number Math.PI
|
||||
globals["tau"] <- Number Math.Tau
|
||||
globals["e"] <- Number Math.E
|
||||
globals["inf"] <- Number infinity
|
||||
globals["nan"] <- Number nan
|
||||
globals["ans"] <- Number 0
|
||||
|
||||
|
||||
// exec
|
||||
|
||||
let varGet key =
|
||||
let suc, value = globals.TryGetValue(key)
|
||||
match suc with
|
||||
| true -> value
|
||||
| false -> $"Attempt to get the value of undefined global variable {key}." |> Fail
|
||||
|
||||
let applyOp op left right =
|
||||
match op, left, right with
|
||||
| Plus, Number x, Number y -> Number (x + y)
|
||||
| Minus, Number x, Number y -> Number (x - y)
|
||||
| Star, Number x, Number y -> Number (x * y)
|
||||
| Slash, Number x, Number y -> Number (x / y)
|
||||
| Percent, Number x, Number y -> Number (x % y)
|
||||
| SlashSlash, Number x, Number y -> Number (floor x / y)
|
||||
| Caret, Number x, Number y -> Number (x ** y)
|
||||
| _ -> Fail $"Invalid operation {op} on {left} and {right}."
|
||||
|
||||
let negate value =
|
||||
match value with
|
||||
| Number x -> Number -x
|
||||
| _ -> Fail $"Attempt to negate invalid type {value}."
|
||||
|
||||
let rec execExpr expr =
|
||||
match expr with
|
||||
| Expression.Number num -> Number num
|
||||
| VarGet key -> varGet key
|
||||
| Factor (left, rights)
|
||||
| Term (left, rights) ->
|
||||
// left associative ops
|
||||
let mutable res = execExpr left
|
||||
for (op, right) in rights do
|
||||
res <- execExpr right |> applyOp op res
|
||||
res
|
||||
| Negate expr -> negate <| execExpr expr
|
||||
| Power (left, rights) ->
|
||||
// right associative ops
|
||||
// parser only creates a power node if rights contains at least 1 element
|
||||
let mutable res = execExpr rights[rights.Length - 1]
|
||||
let mutable x = rights.Length - 2
|
||||
while x > 0 do
|
||||
res <- applyOp Caret (execExpr rights[x]) res
|
||||
x <- x - 1
|
||||
applyOp Caret (execExpr left) res
|
||||
| Grouping exprs ->
|
||||
match exprs.Length with
|
||||
| 1 -> execExpr exprs.Head
|
||||
| 0 -> Fail "() is an invalid expression"
|
||||
| _ ->
|
||||
let func = exprs.Head |> execExpr
|
||||
let args = exprs.Tail |> List.map execExpr
|
||||
|
||||
match func with
|
||||
| Function (parameters, f) ->
|
||||
// function call
|
||||
let argLen = args.Length
|
||||
let paramLen = parameters.Length
|
||||
if paramLen <> argLen then
|
||||
Fail $"Invalid number of arguments, expected {paramLen}, got {argLen}"
|
||||
else
|
||||
List.iter2 (fun k v -> globals[k] <- v) parameters args
|
||||
execExpr f
|
||||
| Native n ->
|
||||
// native call TODO
|
||||
func
|
||||
| _ -> Fail $"Attempt to call an invalid type {func}"
|
||||
|
||||
let printValue value =
|
||||
match value with
|
||||
| Number x -> printfn "%A" x
|
||||
| _ -> printfn "%A" value
|
||||
|
||||
let execStmt stmt =
|
||||
match stmt with
|
||||
| ExprStatement expr ->
|
||||
let res = execExpr expr
|
||||
globals["ans"] <- res
|
||||
printValue res
|
||||
| VarSet (name, expr) ->
|
||||
let res = execExpr expr
|
||||
globals[name] <- res
|
||||
printValue res
|
||||
| FuncDef (name, parameters, expr) -> globals[name] <- Function (parameters, expr)
|
||||
|
||||
printfn "FSKalc"
|
||||
while true do
|
||||
let source = Console.ReadLine ()
|
||||
match run program source with
|
||||
| Success(result, _, _) ->
|
||||
execStmt result
|
||||
| Failure(errorMsg, _, _) -> printfn "Parser error: %s" errorMsg
|
|
@ -0,0 +1,112 @@
|
|||
# Reference
|
||||
|
||||
The following is an informal overview of FSKalc's capabilties.
|
||||
|
||||
## Expressions
|
||||
|
||||
### Number literal
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
8.5
|
||||
```
|
||||
|
||||
### Variable read
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
a
|
||||
```
|
||||
|
||||
Will print an error message if variable is undefined. The `ans` variable implicitly refers to the result of the last expression statement.
|
||||
|
||||
### Parentheses for precedence
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
(5+6)*7
|
||||
```
|
||||
|
||||
Parentheses increase precedence.
|
||||
|
||||
### Parentheses for function calls
|
||||
|
||||
Parentheses can also represent function calls, if they contain more than one element (separated by a space).
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
(sin 50)
|
||||
```
|
||||
|
||||
### Arithmetic operators
|
||||
|
||||
The following operators are valid, in decreasing precedence:
|
||||
|
||||
- `^` power; right associative
|
||||
- `-` unary negation; note that multiple negations next to eachother are invalid!
|
||||
- factor precedence:
|
||||
- `*` multiplication; left associative
|
||||
- `/` division; left associative
|
||||
- `//` integer (flooring) division; left associative
|
||||
- `%` modulo; left associative
|
||||
- term precedence:
|
||||
- `+` addition; left associative
|
||||
- `-` subtraction; left associative
|
||||
|
||||
## Statements
|
||||
|
||||
Statements are the top level construct. Every line in an FSKalc program has to be a statement.
|
||||
|
||||
### Expression statement
|
||||
|
||||
Any valid expression is also a valid statement. The result of expression statements is printed to the screen, and also assigned to the variable names `ans`.
|
||||
|
||||
### Variable assignments
|
||||
|
||||
Variable assignments have the following syntax:
|
||||
|
||||
```
|
||||
identifier = expression
|
||||
```
|
||||
|
||||
Where the identifier is a string of characters containing only letters and underscores.
|
||||
|
||||
Existing variables or functions can be overwritten by new variables/functions.
|
||||
|
||||
### Function declaration
|
||||
|
||||
Function declaration has the following syntax, demonstrated by an example below.
|
||||
|
||||
```
|
||||
double x = x * 2
|
||||
```
|
||||
|
||||
Warning! as there are no scopes in FSKalc, passing
|
||||
arguments to functions will modify the global scope.
|
||||
|
||||
## Builtins
|
||||
|
||||
### Builtin Constants
|
||||
|
||||
- pi
|
||||
- tau (pi * 2)
|
||||
- e (euler's number)
|
||||
- inf (infinity)
|
||||
- nan (not a number)
|
||||
|
||||
### Builtin Functions
|
||||
|
||||
- sin, cos, tan - they take 1 argument, in radians
|
||||
- arcsin, arccos, arctan - they take 1 argument, they return in radians
|
||||
- sqrt - returns square root, optional second argument is the power, default of 2
|
||||
- log - logarithm, optional second argument is the base, default of 10
|
||||
- ln - natural logarithm
|
||||
- exp - returns e to the power of the argument
|
||||
|
||||
## Comments
|
||||
|
||||
Comments can be inside matching `(*`, `*)` parentheses.
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,105 @@
|
|||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v6.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v6.0": {
|
||||
"fskalc/1.0.0": {
|
||||
"dependencies": {
|
||||
"FParsec": "1.1.1",
|
||||
"FSharp.Core": "6.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"fskalc.dll": {}
|
||||
}
|
||||
},
|
||||
"FParsec/1.1.1": {
|
||||
"dependencies": {
|
||||
"FSharp.Core": "6.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/FParsec.dll": {
|
||||
"assemblyVersion": "1.1.1.0",
|
||||
"fileVersion": "1.1.1.0"
|
||||
},
|
||||
"lib/netstandard2.0/FParsecCS.dll": {
|
||||
"assemblyVersion": "1.1.1.0",
|
||||
"fileVersion": "1.1.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"FSharp.Core/6.0.1": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.1/FSharp.Core.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.121.52202"
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
"lib/netstandard2.1/cs/FSharp.Core.resources.dll": {
|
||||
"locale": "cs"
|
||||
},
|
||||
"lib/netstandard2.1/de/FSharp.Core.resources.dll": {
|
||||
"locale": "de"
|
||||
},
|
||||
"lib/netstandard2.1/es/FSharp.Core.resources.dll": {
|
||||
"locale": "es"
|
||||
},
|
||||
"lib/netstandard2.1/fr/FSharp.Core.resources.dll": {
|
||||
"locale": "fr"
|
||||
},
|
||||
"lib/netstandard2.1/it/FSharp.Core.resources.dll": {
|
||||
"locale": "it"
|
||||
},
|
||||
"lib/netstandard2.1/ja/FSharp.Core.resources.dll": {
|
||||
"locale": "ja"
|
||||
},
|
||||
"lib/netstandard2.1/ko/FSharp.Core.resources.dll": {
|
||||
"locale": "ko"
|
||||
},
|
||||
"lib/netstandard2.1/pl/FSharp.Core.resources.dll": {
|
||||
"locale": "pl"
|
||||
},
|
||||
"lib/netstandard2.1/pt-BR/FSharp.Core.resources.dll": {
|
||||
"locale": "pt-BR"
|
||||
},
|
||||
"lib/netstandard2.1/ru/FSharp.Core.resources.dll": {
|
||||
"locale": "ru"
|
||||
},
|
||||
"lib/netstandard2.1/tr/FSharp.Core.resources.dll": {
|
||||
"locale": "tr"
|
||||
},
|
||||
"lib/netstandard2.1/zh-Hans/FSharp.Core.resources.dll": {
|
||||
"locale": "zh-Hans"
|
||||
},
|
||||
"lib/netstandard2.1/zh-Hant/FSharp.Core.resources.dll": {
|
||||
"locale": "zh-Hant"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"fskalc/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"FParsec/1.1.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Wdjf/gCNLEwd+0nUCDh9jAIIcKGwfhRramySTnTcVVgNC6i4Vp5aJklUJJfvFkEZMYNZEDGcI8pCa36/TmwmSg==",
|
||||
"path": "fparsec/1.1.1",
|
||||
"hashPath": "fparsec.1.1.1.nupkg.sha512"
|
||||
},
|
||||
"FSharp.Core/6.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-VrFAiW8dEEekk+0aqlbvMNZzDvYXmgWZwAt68AUBqaWK8RnoEVUNglj66bZzhs4/U63q0EfXlhcEKnH1sTYLjw==",
|
||||
"path": "fsharp.core/6.0.1",
|
||||
"hashPath": "fsharp.core.6.0.1.nupkg.sha512"
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"runtimeOptions": {
|
||||
"tfm": "net6.0",
|
||||
"framework": {
|
||||
"name": "Microsoft.NETCore.App",
|
||||
"version": "6.0.0"
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,16 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="Program.fs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="FParsec" Version="1.1.1" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -0,0 +1,3 @@
|
|||
namespace Microsoft.BuildSettings
|
||||
[<System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName="")>]
|
||||
do ()
|
Binary file not shown.
|
@ -0,0 +1,17 @@
|
|||
// <auto-generated>
|
||||
// Generated by the FSharp WriteCodeFragment class.
|
||||
// </auto-generated>
|
||||
namespace FSharp
|
||||
|
||||
open System
|
||||
open System.Reflection
|
||||
|
||||
|
||||
[<assembly: System.Reflection.AssemblyCompanyAttribute("fskalc")>]
|
||||
[<assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")>]
|
||||
[<assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")>]
|
||||
[<assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")>]
|
||||
[<assembly: System.Reflection.AssemblyProductAttribute("fskalc")>]
|
||||
[<assembly: System.Reflection.AssemblyTitleAttribute("fskalc")>]
|
||||
[<assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")>]
|
||||
do()
|
|
@ -0,0 +1 @@
|
|||
719d6f669f60db5bd4161506767f868cd97c08d5
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
9c3606c6ecc21eb075ffee173f98574fdcf82504
|
|
@ -0,0 +1,28 @@
|
|||
/home/user/Projects/fskalc/bin/Debug/net6.0/fskalc
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/fskalc.deps.json
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/fskalc.runtimeconfig.json
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/fskalc.dll
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/fskalc.pdb
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/FParsec.dll
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/FParsecCS.dll
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/FSharp.Core.dll
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/cs/FSharp.Core.resources.dll
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/de/FSharp.Core.resources.dll
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/es/FSharp.Core.resources.dll
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/fr/FSharp.Core.resources.dll
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/it/FSharp.Core.resources.dll
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/ja/FSharp.Core.resources.dll
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/ko/FSharp.Core.resources.dll
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/pl/FSharp.Core.resources.dll
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/pt-BR/FSharp.Core.resources.dll
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/ru/FSharp.Core.resources.dll
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/tr/FSharp.Core.resources.dll
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/zh-Hans/FSharp.Core.resources.dll
|
||||
/home/user/Projects/fskalc/bin/Debug/net6.0/zh-Hant/FSharp.Core.resources.dll
|
||||
/home/user/Projects/fskalc/obj/Debug/net6.0/fskalc.fsproj.AssemblyReference.cache
|
||||
/home/user/Projects/fskalc/obj/Debug/net6.0/fskalc.AssemblyInfoInputs.cache
|
||||
/home/user/Projects/fskalc/obj/Debug/net6.0/fskalc.AssemblyInfo.fs
|
||||
/home/user/Projects/fskalc/obj/Debug/net6.0/fskalc.fsproj.CopyComplete
|
||||
/home/user/Projects/fskalc/obj/Debug/net6.0/fskalc.dll
|
||||
/home/user/Projects/fskalc/obj/Debug/net6.0/fskalc.pdb
|
||||
/home/user/Projects/fskalc/obj/Debug/net6.0/fskalc.genruntimeconfig.cache
|
|
@ -0,0 +1 @@
|
|||
7cbcffe61caa53aa4f0b958aa92747135212da88
|
Binary file not shown.
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,68 @@
|
|||
{
|
||||
"format": 1,
|
||||
"restore": {
|
||||
"/home/user/Projects/fskalc/fskalc.fsproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"/home/user/Projects/fskalc/fskalc.fsproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "/home/user/Projects/fskalc/fskalc.fsproj",
|
||||
"projectName": "fskalc",
|
||||
"projectPath": "/home/user/Projects/fskalc/fskalc.fsproj",
|
||||
"packagesPath": "/home/user/.nuget/packages/",
|
||||
"outputPath": "/home/user/Projects/fskalc/obj/",
|
||||
"projectStyle": "PackageReference",
|
||||
"configFilePaths": [
|
||||
"/home/user/.nuget/NuGet/NuGet.Config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net6.0"
|
||||
],
|
||||
"sources": {
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net6.0": {
|
||||
"targetAlias": "net6.0",
|
||||
"projectReferences": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net6.0": {
|
||||
"targetAlias": "net6.0",
|
||||
"dependencies": {
|
||||
"FParsec": {
|
||||
"target": "Package",
|
||||
"version": "[1.1.1, )",
|
||||
"generatePathProperty": true
|
||||
},
|
||||
"FSharp.Core": {
|
||||
"include": "Runtime, Compile, Build, Native, Analyzers, BuildTransitive",
|
||||
"target": "Package",
|
||||
"version": "[6.0.1, )",
|
||||
"generatePathProperty": true
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "/usr/lib64/dotnet/sdk/6.0.112/RuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/user/.nuget/packages/</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/user/.nuget/packages/</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.0.3</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="/home/user/.nuget/packages/" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<PkgFSharp_Core Condition=" '$(PkgFSharp_Core)' == '' ">/home/user/.nuget/packages/fsharp.core/6.0.1</PkgFSharp_Core>
|
||||
<PkgFParsec Condition=" '$(PkgFParsec)' == '' ">/home/user/.nuget/packages/fparsec/1.1.1</PkgFParsec>
|
||||
</PropertyGroup>
|
||||
</Project>
|
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
|
|
@ -0,0 +1,216 @@
|
|||
{
|
||||
"version": 3,
|
||||
"targets": {
|
||||
"net6.0": {
|
||||
"FParsec/1.1.1": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"FSharp.Core": "4.3.4"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.0/FParsec.dll": {},
|
||||
"lib/netstandard2.0/FParsecCS.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/FParsec.dll": {},
|
||||
"lib/netstandard2.0/FParsecCS.dll": {}
|
||||
}
|
||||
},
|
||||
"FSharp.Core/6.0.1": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/netstandard2.1/FSharp.Core.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.1/FSharp.Core.dll": {}
|
||||
},
|
||||
"resource": {
|
||||
"lib/netstandard2.1/cs/FSharp.Core.resources.dll": {
|
||||
"locale": "cs"
|
||||
},
|
||||
"lib/netstandard2.1/de/FSharp.Core.resources.dll": {
|
||||
"locale": "de"
|
||||
},
|
||||
"lib/netstandard2.1/es/FSharp.Core.resources.dll": {
|
||||
"locale": "es"
|
||||
},
|
||||
"lib/netstandard2.1/fr/FSharp.Core.resources.dll": {
|
||||
"locale": "fr"
|
||||
},
|
||||
"lib/netstandard2.1/it/FSharp.Core.resources.dll": {
|
||||
"locale": "it"
|
||||
},
|
||||
"lib/netstandard2.1/ja/FSharp.Core.resources.dll": {
|
||||
"locale": "ja"
|
||||
},
|
||||
"lib/netstandard2.1/ko/FSharp.Core.resources.dll": {
|
||||
"locale": "ko"
|
||||
},
|
||||
"lib/netstandard2.1/pl/FSharp.Core.resources.dll": {
|
||||
"locale": "pl"
|
||||
},
|
||||
"lib/netstandard2.1/pt-BR/FSharp.Core.resources.dll": {
|
||||
"locale": "pt-BR"
|
||||
},
|
||||
"lib/netstandard2.1/ru/FSharp.Core.resources.dll": {
|
||||
"locale": "ru"
|
||||
},
|
||||
"lib/netstandard2.1/tr/FSharp.Core.resources.dll": {
|
||||
"locale": "tr"
|
||||
},
|
||||
"lib/netstandard2.1/zh-Hans/FSharp.Core.resources.dll": {
|
||||
"locale": "zh-Hans"
|
||||
},
|
||||
"lib/netstandard2.1/zh-Hant/FSharp.Core.resources.dll": {
|
||||
"locale": "zh-Hant"
|
||||
}
|
||||
},
|
||||
"contentFiles": {
|
||||
"contentFiles/any/any/_._": {
|
||||
"buildAction": "None",
|
||||
"codeLanguage": "any",
|
||||
"copyToOutput": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"FParsec/1.1.1": {
|
||||
"sha512": "Wdjf/gCNLEwd+0nUCDh9jAIIcKGwfhRramySTnTcVVgNC6i4Vp5aJklUJJfvFkEZMYNZEDGcI8pCa36/TmwmSg==",
|
||||
"type": "package",
|
||||
"path": "fparsec/1.1.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"fparsec.1.1.1.nupkg.sha512",
|
||||
"fparsec.nuspec",
|
||||
"lib/net45/FParsec.dll",
|
||||
"lib/net45/FParsec.pdb",
|
||||
"lib/net45/FParsec.xml",
|
||||
"lib/net45/FParsecCS.dll",
|
||||
"lib/net45/FParsecCS.pdb",
|
||||
"lib/net45/FParsecCS.xml",
|
||||
"lib/netstandard2.0/FParsec.dll",
|
||||
"lib/netstandard2.0/FParsec.pdb",
|
||||
"lib/netstandard2.0/FParsec.xml",
|
||||
"lib/netstandard2.0/FParsecCS.dll",
|
||||
"lib/netstandard2.0/FParsecCS.pdb",
|
||||
"lib/netstandard2.0/FParsecCS.xml"
|
||||
]
|
||||
},
|
||||
"FSharp.Core/6.0.1": {
|
||||
"sha512": "VrFAiW8dEEekk+0aqlbvMNZzDvYXmgWZwAt68AUBqaWK8RnoEVUNglj66bZzhs4/U63q0EfXlhcEKnH1sTYLjw==",
|
||||
"type": "package",
|
||||
"path": "fsharp.core/6.0.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"contentFiles/any/netstandard2.0/FSharp.Core.xml",
|
||||
"contentFiles/any/netstandard2.1/FSharp.Core.xml",
|
||||
"fsharp.core.6.0.1.nupkg.sha512",
|
||||
"fsharp.core.nuspec",
|
||||
"lib/netstandard2.0/FSharp.Core.dll",
|
||||
"lib/netstandard2.0/FSharp.Core.xml",
|
||||
"lib/netstandard2.0/cs/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.0/de/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.0/es/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.0/fr/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.0/it/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.0/ja/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.0/ko/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.0/pl/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.0/pt-BR/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.0/ru/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.0/tr/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.0/zh-Hans/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.0/zh-Hant/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.1/FSharp.Core.dll",
|
||||
"lib/netstandard2.1/FSharp.Core.xml",
|
||||
"lib/netstandard2.1/cs/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.1/de/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.1/es/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.1/fr/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.1/it/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.1/ja/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.1/ko/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.1/pl/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.1/pt-BR/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.1/ru/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.1/tr/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.1/zh-Hans/FSharp.Core.resources.dll",
|
||||
"lib/netstandard2.1/zh-Hant/FSharp.Core.resources.dll"
|
||||
]
|
||||
}
|
||||
},
|
||||
"projectFileDependencyGroups": {
|
||||
"net6.0": [
|
||||
"FParsec >= 1.1.1",
|
||||
"FSharp.Core >= 6.0.1"
|
||||
]
|
||||
},
|
||||
"packageFolders": {
|
||||
"/home/user/.nuget/packages/": {}
|
||||
},
|
||||
"project": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "/home/user/Projects/fskalc/fskalc.fsproj",
|
||||
"projectName": "fskalc",
|
||||
"projectPath": "/home/user/Projects/fskalc/fskalc.fsproj",
|
||||
"packagesPath": "/home/user/.nuget/packages/",
|
||||
"outputPath": "/home/user/Projects/fskalc/obj/",
|
||||
"projectStyle": "PackageReference",
|
||||
"configFilePaths": [
|
||||
"/home/user/.nuget/NuGet/NuGet.Config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net6.0"
|
||||
],
|
||||
"sources": {
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net6.0": {
|
||||
"targetAlias": "net6.0",
|
||||
"projectReferences": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net6.0": {
|
||||
"targetAlias": "net6.0",
|
||||
"dependencies": {
|
||||
"FParsec": {
|
||||
"target": "Package",
|
||||
"version": "[1.1.1, )",
|
||||
"generatePathProperty": true
|
||||
},
|
||||
"FSharp.Core": {
|
||||
"include": "Runtime, Compile, Build, Native, Analyzers, BuildTransitive",
|
||||
"target": "Package",
|
||||
"version": "[6.0.1, )",
|
||||
"generatePathProperty": true
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "/usr/lib64/dotnet/sdk/6.0.112/RuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "4l6UOxegYd/AlKKZN0Nx+31mbNgIst/DZ7BPmEeZ9Mfqz6IZiojaowabHcwu4rLvqV6huq2OUDHkfYqnreIcDA==",
|
||||
"success": true,
|
||||
"projectFilePath": "/home/user/Projects/fskalc/fskalc.fsproj",
|
||||
"expectedPackageFiles": [
|
||||
"/home/user/.nuget/packages/fparsec/1.1.1/fparsec.1.1.1.nupkg.sha512",
|
||||
"/home/user/.nuget/packages/fsharp.core/6.0.1/fsharp.core.6.0.1.nupkg.sha512"
|
||||
],
|
||||
"logs": []
|
||||
}
|
Loading…
Reference in New Issue