Fable
所属分类:collect
开发工具:F#
文件大小:0KB
下载次数:0
上传日期:2022-12-09 14:37:44
上 传 者:
sh-1993
说明: Parsimmon解析器组合器库的寓言绑定,
(Fable binding for the Parsimmon parser combinator library,)
文件列表:
.paket/ (0, 2022-02-05)
.paket/Paket.Restore.targets (32044, 2022-02-05)
.paket/paket.exe (64296, 2022-02-05)
.paket/paket.targets (3855, 2022-02-05)
.travis.yml (533, 2022-02-05)
.vscode/ (0, 2022-02-05)
.vscode/tasks.json (1277, 2022-02-05)
Fable.Parsimmon.Tests/ (0, 2022-02-05)
Fable.Parsimmon.Tests/Fable.Parsimmon.Tests.fsproj (405, 2022-02-05)
Fable.Parsimmon.Tests/Parsimmon.Tests.fs (16408, 2022-02-05)
Fable.Parsimmon.Tests/QUnit.fs (7116, 2022-02-05)
Fable.Parsimmon.Tests/paket.references (23, 2022-02-05)
Fable.Parsimmon.sln (2025, 2022-02-05)
Fable.Parsimmon/ (0, 2022-02-05)
Fable.Parsimmon/Fable.Parsimmon.fsproj (961, 2022-02-05)
Fable.Parsimmon/Parsimmon.fs (9691, 2022-02-05)
Fable.Parsimmon/Parsimmon.js (30123, 2022-02-05)
Fable.Parsimmon/paket.references (22, 2022-02-05)
LICENSE (1066, 2022-02-05)
Nuget.Config (355, 2022-02-05)
build.cmd (194, 2022-02-05)
build.fsx (2471, 2022-02-05)
build.sh (603, 2022-02-05)
package.json (560, 2022-02-05)
paket.dependencies (221, 2022-02-05)
paket.lock (48982, 2022-02-05)
public/ (0, 2022-02-05)
public/favicon-16x16.png (514, 2022-02-05)
public/favicon-32x32.png (1010, 2022-02-05)
public/index.html (710, 2022-02-05)
webpack.config.js (1135, 2022-02-05)
yarn.lock (215053, 2022-02-05)
# Fable.Parsimmon [![Build Status](https://travis-ci.org/Zaid-Ajaj/Fable.Parsimmon.svg?branch=master)](https://travis-ci.org/Zaid-Ajaj/Fable.Parsimmon)
[Fable](http://fable.io/) binding and helpers for the [Parsimmon](https://github.com/jneen/parsimmon) parser combinator library.
### Nuget Packages
| Fable version | Package |
| ------------- | ------------- |
| 2.0 | [![Nuget](https://img.shields.io/nuget/v/Fable.Parsimmon.svg?maxAge=0&colorB=brightgreen)](https://www.nuget.org/packages/Fable.Parsimmon) |
# Installation
You can install the library from Nuget using Paket:
```
paket add nuget Fable.Parsimmon --project path/to/YourProject.fsproj
```
It includes the javascript dependency [(this file)](https://github.com/Zaid-Ajaj/Fable.Parsimmon/blob/master/Fable.Parsimmon/Parsimmon.js) in the Nuget package so there no need to install anything else using `npm`
Make sure the references are added to your paket files
```
// paket.dependencies (solution-wide dependencies)
nuget Fable.Parsimmon
// paket.refernces (project-specific dependencies)
Fable.Parsimmon
```
To understand how to use it, refer to the project `Fable.Parsimmon.Tests` where most of the combinators are tested, for example:
```fs
open Fable.Parsimmon
QUnit.test "Parsing list of numbers works" <| fun test ->
let comma = Parsimmon.str ","
let commaSeperatedNumbers =
Parsimmon.digit
|> Parsimmon.many
|> Parsimmon.concat
|> Parsimmon.map int
|> Parsimmon.seperateBy comma
let leftBracket = Parsimmon.str "["
let rightBracket = Parsimmon.str "]"
commaSeperatedNumbers
|> Parsimmon.between leftBracket rightBracket
|> Parsimmon.parse "[5,10,15,20,25]"
|> function
| Some [| 5; 10; 15; 20; 25 |] -> test.pass()
| otherwise -> test.fail()
```
Recursive parsers as values such as [this one](https://github.com/jneen/parsimmon/blob/master/API.md#parsimmonlazyfn) are also supported:
```fs
QUnit.test "Parsimmon.ofLazy works" <| fun test ->
let rec lazyValue = Parsimmon.ofLazy <| fun () ->
[ Parsimmon.str "X"
Parsimmon.str "("
|> Parsimmon.chain lazyValue
|> Parsimmon.skip (Parsimmon.str ")") ]
|> Parsimmon.choose
["X"; "(X)"; "((X))"]
|> List.map (fun token -> Parsimmon.parse token lazyValue)
|> function
| [ Some "X"; Some "X"; Some "X" ] -> test.pass()
| otherwise -> test.fail()
```
近期下载者:
相关文件:
收藏者: