Skip to content

Commit

Permalink
split ExprParser.fs into separate files
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinbarabash committed Nov 3, 2023
1 parent 479ac21 commit 9151aaf
Show file tree
Hide file tree
Showing 12 changed files with 643 additions and 546 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ TestResults
coverage.opencover.xml
.idea
*.DotSettings.user
*.received.txt
30 changes: 15 additions & 15 deletions src/Escalier.Parser.Tests/Tests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -15,119 +15,119 @@ settings.DisableDiff()
[<Fact>]
let ParseArithmetic () =
let src = "0.1 + 2 * (3 - 4) / -5.6"
let expr = run ExprParser.expr src
let expr = run Parser.expr src
let result = $"input: %s{src}\noutput: %A{expr}"

Verifier.Verify(result, settings).ToTask() |> Async.AwaitTask

[<Fact>]
let ParseString () =
let src = """msg = "Hello,\n\t\"world!\"" """
let expr = run ExprParser.expr src
let expr = run Parser.expr src
let result = $"input: %s{src}\noutput: %A{expr}"

Verifier.Verify(result, settings).ToTask() |> Async.AwaitTask

[<Fact>]
let ParseTemplateString () =
let src = """msg = `foo ${`bar ${baz}`}`"""
let expr = run ExprParser.expr src
let expr = run Parser.expr src
let result = $"input: %s{src}\noutput: %A{expr}"

Verifier.Verify(result, settings).ToTask() |> Async.AwaitTask

[<Fact>]
let ParseFunctionCall () =
let src = "add(x, y)"
let expr = run ExprParser.expr src
let expr = run Parser.expr src
let result = $"input: %s{src}\noutput: %A{expr}"

Verifier.Verify(result, settings).ToTask() |> Async.AwaitTask

[<Fact>]
let ParseFunctionCallExtraSpaces () =
let src = "add( x , y )"
let expr = run ExprParser.expr src
let expr = run Parser.expr src
let result = $"input: %s{src}\noutput: %A{expr}"

Verifier.Verify(result, settings).ToTask() |> Async.AwaitTask

[<Fact>]
let ParseEmptyCall () =
let src = "add()"
let expr = run ExprParser.expr src
let expr = run Parser.expr src
let result = $"input: %s{src}\noutput: %A{expr}"

Verifier.Verify(result, settings).ToTask() |> Async.AwaitTask

[<Fact>]
let ParseIndexer () =
let src = "array[0]"
let expr = run ExprParser.expr src
let expr = run Parser.expr src
let result = $"input: %s{src}\noutput: %A{expr}"

Verifier.Verify(result, settings).ToTask() |> Async.AwaitTask

[<Fact>]
let ParseIndexerThenCall () =
let src = "array[0]()"
let expr = run ExprParser.expr src
let expr = run Parser.expr src
let result = $"input: %s{src}\noutput: %A{expr}"

Verifier.Verify(result, settings).ToTask() |> Async.AwaitTask

[<Fact>]
let ParseCallThenIndexer () =
let src = "foo()[0]"
let expr = run ExprParser.expr src
let expr = run Parser.expr src
let result = $"input: %s{src}\noutput: %A{expr}"

Verifier.Verify(result, settings).ToTask() |> Async.AwaitTask

[<Fact>]
let ParseFuncDef () =
let src = "fn (x, y) { x }"
let expr = run ExprParser.func src
let expr = run Parser.expr src
let result = $"input: %s{src}\noutput: %A{expr}"

Verifier.Verify(result, settings).ToTask() |> Async.AwaitTask

[<Fact>]
let ParseUnionType () =
let src = "number | string | boolean"
let expr = run ExprParser.typeAnn src
let expr = run Parser.typeAnn src
let result = $"input: %s{src}\noutput: %A{expr}"

Verifier.Verify(result, settings).ToTask() |> Async.AwaitTask

[<Fact>]
let ParseIntersectionType () =
let src = "number & string & boolean"
let expr = run ExprParser.typeAnn src
let expr = run Parser.typeAnn src
let result = $"input: %s{src}\noutput: %A{expr}"

Verifier.Verify(result, settings).ToTask() |> Async.AwaitTask

[<Fact>]
let ParseUnionAndIntersectionType () =
let src = "A & B | C & D"
let expr = run ExprParser.typeAnn src
let expr = run Parser.typeAnn src
let result = $"input: %s{src}\noutput: %A{expr}"

Verifier.Verify(result, settings).ToTask() |> Async.AwaitTask

[<Fact>]
let ParseArrayType () =
let src = "number[][]"
let expr = run ExprParser.typeAnn src
let expr = run Parser.typeAnn src
let result = $"input: %s{src}\noutput: %A{expr}"

Verifier.Verify(result, settings).ToTask() |> Async.AwaitTask

[<Fact>]
let ParseParenthesizedType () =
let src = "(number | string)[]"
let expr = run ExprParser.typeAnn src
let expr = run Parser.typeAnn src
let result = $"input: %s{src}\noutput: %A{expr}"

Verifier.Verify(result, settings).ToTask() |> Async.AwaitTask
38 changes: 22 additions & 16 deletions src/Escalier.Parser/Escalier.Parser.fsproj
Original file line number Diff line number Diff line change
@@ -1,18 +1,24 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<ItemGroup>
<Compile Include="Library.fs" />
<Compile Include="ExprParser.fs" />
<Compile Include="JsonParser.fs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Escalier.Data\Escalier.Data.fsproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="FParsec" Version="1.1.1" />
<PackageReference Include="FsToolkit.ErrorHandling" Version="4.10.0" />
</ItemGroup>
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<ItemGroup>
<Compile Include="ParserRefs.fs"/>
<Compile Include="Literals.fs"/>
<Compile Include="Expressions.fs"/>
<Compile Include="Statements.fs"/>
<Compile Include="TypeAnnotations.fs"/>
<Compile Include="Patterns.fs"/>
<Compile Include="JsonParser.fs"/>
<Compile Include="Parser.fs"/>
<Compile Include="Library.fs"/>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Escalier.Data\Escalier.Data.fsproj"/>
</ItemGroup>
<ItemGroup>
<PackageReference Include="FParsec" Version="1.1.1"/>
<PackageReference Include="FsToolkit.ErrorHandling" Version="4.10.0"/>
</ItemGroup>
</Project>
Loading

0 comments on commit 9151aaf

Please sign in to comment.