![]() |
VOOZH | about |
dotnet add package Fabulous.AST --version 1.10.0
NuGet\Install-Package Fabulous.AST -Version 1.10.0
<PackageReference Include="Fabulous.AST" Version="1.10.0" />
<PackageVersion Include="Fabulous.AST" Version="1.10.0" />Directory.Packages.props
<PackageReference Include="Fabulous.AST" />Project file
paket add Fabulous.AST --version 1.10.0
#r "nuget: Fabulous.AST, 1.10.0"
#:package Fabulous.AST@1.10.0
#addin nuget:?package=Fabulous.AST&version=1.10.0Install as a Cake Addin
#tool nuget:?package=Fabulous.AST&version=1.10.0Install as a Cake Tool
👁 build
👁 NuGet version
👁 NuGet downloads
Welcome to Fabulous.AST, an Abstract Syntax Tree (AST) Domain Specific Language (DSL) for F#.
Fabulous.AST leverages Fantomas to generate F# code from AST. This allows you to create F# code that adheres to the Fantomas style guide while providing a simple and expressive way to represent code as a tree of nodes. This approach simplifies programmatic code manipulation and analysis.
Install Fabulous.AST via NuGet:
dotnet add package Fabulous.AST
Let's compare AST creation using Fantomas directly and Fabulous.AST:
open Fantomas.Core
open Fantomas.Core.SyntaxOak
open Fantomas.FCS.Text
Oak(
[],
[ ModuleOrNamespaceNode(
None,
[ BindingNode(
None,
None,
MultipleTextsNode([ SingleTextNode("let", Range.Zero) ], Range.Zero),
false,
None,
None,
Choice1Of2(IdentListNode([ IdentifierOrDot.Ident(SingleTextNode("x", Range.Zero)) ], Range.Zero)),
None,
[],
None,
SingleTextNode("=", Range.Zero),
Expr.Constant(Constant.FromText(SingleTextNode("12", Range.Zero))),
Range.Zero
)
|> ModuleDecl.TopLevelBinding ],
Range.Zero
) ],
Range.Zero
)
|> CodeFormatter.FormatOakAsync
|> Async.RunSynchronously
|> printfn "%s"
open Fantomas.Core
open Fabulous.AST
open type Fabulous.AST.Ast
Oak() {
AnonymousModule() {
Value("x", "12")
}
}
|> Gen.mkOak
|> Gen.run
Both examples produce the following F# code:
let x = 12
As you can see, Fabulous.AST significantly simplifies the process of creating ASTs for F# code.
For comprehensive information about Fabulous.AST, visit our documentation site.
Additional resources:
Show your support for Fabulous.AST:
We welcome contributions to Fabulous.AST!
main branch and follow our .Fabulous.AST is released under the .
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 was computed. net5.0-windows net5.0-windows was computed. net6.0 net6.0 was computed. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 was computed. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 netcoreapp3.0 was computed. netcoreapp3.1 netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 netstandard2.1 is compatible. |
| MonoAndroid | monoandroid monoandroid was computed. |
| MonoMac | monomac monomac was computed. |
| MonoTouch | monotouch monotouch was computed. |
| Tizen | tizen60 tizen60 was computed. |
| Xamarin.iOS | xamarinios xamarinios was computed. |
| Xamarin.Mac | xamarinmac xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos xamarinwatchos was computed. |
Showing the top 4 NuGet packages that depend on Fabulous.AST:
| Package | Downloads |
|---|---|
|
MigLib
Package Description |
|
|
MigrateLib
Declarative migrations for SQLite |
|
|
FSharp.Grpc.Tools
Package Description |
|
|
Fabulous.AST.Json
Fabulous.AST.Json, a JSON type generator for Fabulous.AST |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.0.0-pre08 | 144 | 6/2/2026 |
| 2.0.0-pre07 | 100 | 5/30/2026 |
| 2.0.0-pre06 | 2,453 | 1/9/2026 |
| 2.0.0-pre05 | 267 | 12/19/2025 |
| 2.0.0-pre04 | 291 | 12/15/2025 |
| 2.0.0-pre03 | 211 | 12/13/2025 |
| 2.0.0-pre02 | 154 | 12/12/2025 |
| 2.0.0-pre01 | 162 | 12/12/2025 |
| 1.10.0 | 2,550 | 1/9/2026 |
| 1.9.0 | 1,045 | 12/12/2025 |
| 1.8.0 | 197 | 12/6/2025 |
| 1.7.0 | 718 | 12/3/2025 |
| 1.6.0 | 681 | 6/7/2025 |
| 1.5.0 | 228 | 5/10/2025 |
| 1.4.0 | 328 | 4/4/2025 |
| 1.3.0 | 296 | 3/16/2025 |
| 1.2.0 | 743 | 3/5/2025 |
| 1.1.0 | 262 | 1/12/2025 |
| 1.0.0 | 278 | 12/15/2024 |
| 1.0.0-pre17 | 210 | 10/6/2024 |
### Added
- Auto-escape let-binding names with backticks when needed for Value and Use string overloads (#170)