2.4.2 • Published 1 year ago

@ikasoba000/parsing v2.4.2

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

parsing

Parsing is a small parser combinator.

example

import {ignore, every, token, regex} from "@ikasoba000/parsing"
const whitespace = ignore(regex(/\s+/))
const helloWorld = every(token("Hello,"), whitespace, token("world!"))

console.log(helloWorld("Hello, world!", 0)?.[0], helloWorld("hello, world!", 0)?.[0]) // [ 'hello,', 'world' ] undefined

usage

type Parser<T = string, E = never> = (src: string, index: number) => ParsingError | null | ParserResult<T, E>

token(pattern: string | RegExp): Parser

Generate a parser that matches a string or regexp.

regex(pattern: RegExp): Parser

Generate a parser that matches the regular expression.

option(parser: Parser): Parser

Generates an optional parser.

ignore(parser: Parser): IgnoreParser

If parsing succeeds, only the next index is returned.

some(...parsers: Parser[]): Parser

Generate a parser that matches any one of the parsers.

every(...parsers: Parser[]): Parser

Combine multiple parsers to produce a single parser. Even when nested, the array depth remains 1.

every(token("1"), token("2"), token("3"))("123", 0)        // [["1", "2", "3"], 3]
every(every(token("1"), token("2")), token("3"))("123", 0) // [["1", "2", "3"], 3]
// Both the top and bottom parsers have the same function.

map<T>(parser: Parser, converter: x => T): Parser<T>

it is useful for generating values from strings that can be parsed.

map(token(/[0-9]+/), x => parseInt(x))("123", 0) // {type: "normal", res: 123, index: 0, length: 3 }
1.2.0

1 year ago

1.2.1

1 year ago

2.3.0

1 year ago

2.2.1

1 year ago

2.0.3

1 year ago

2.2.0

1 year ago

2.0.2

1 year ago

2.4.1

1 year ago

2.2.3

1 year ago

2.4.0

1 year ago

2.2.2

1 year ago

2.2.5

1 year ago

2.4.2

1 year ago

2.2.4

1 year ago

2.1.0

1 year ago

2.0.1

1 year ago

2.0.0

1 year ago

1.1.1

1 year ago

1.0.2

1 year ago

1.1.0

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago

1.1.5

1 year ago

1.1.4

1 year ago

1.1.3

1 year ago

1.0.4

1 year ago

1.1.2

1 year ago

1.0.3

1 year ago

0.1.0

2 years ago