Function
Static Public Summary | ||
public |
alphabet(productions: *): * |
|
public |
anyIterator(object: *): * |
|
public |
List all reasons why a given grammar is not ll(1). |
|
public |
Compiles the predictive parsing table for a grammar. |
|
public |
expandobject(object: *): * |
|
public |
async * flatten(root: *) |
|
public |
Generate FOLLOW set for any rule given the FOLLOW sets for the nonterminals. |
|
public |
from(object: *): * |
|
public |
from(grammar: *): * |
|
public |
Check if grammar is ll(1). |
|
public |
Applies a given callable to each of the child of a given children async iterable. |
|
public |
async materialize(root: *): * |
|
public |
Parse |
|
public |
Applies a given callable to each part of a given grammar rule (given as an iterable). |
|
public |
Adds an element to a set and returns true if the set has changed. |
|
public |
Adds all elements of an iterable to a set and returns true if the set has changed. |
|
public |
async transform(tree: *, match: *, ctx: *): * |
Static Private Summary | ||
private |
async _children_exhaust(children: Iterator) Exhausts the input children iterator. |
|
private |
async _children_next_lazy(eof: Object, productions: Map, table: Map, tape: Tape, expected: Object): Promise<object> Get next child of table-driven predictive lazy parsing. |
|
private |
Generates the rows of the predictive parsing table for a grammar. |
|
private |
* _expandproduction(production: *) |
|
private |
Computes the FOLLOW table for all nonterminals. |
|
private |
_parse_lazy(eof: Object, productions: Map, table: Map, rule: Array, tape: Tape, nonterminal: String, production: String): Object Table-driven predictive lazy parsing. |
Static Public
public alphabet(productions: *): * source
import alphabet from '@formal-language/grammar/src/grammar/alphabet.js'
Params:
Name | Type | Attribute | Description |
productions | * |
Return:
* |
public anyIterator(object: *): * source
import anyIterator from '@formal-language/grammar/src/util/anyIterator.js'
Params:
Name | Type | Attribute | Description |
object | * |
Return:
* |
public * audit(grammar: Grammar): IterableIterator<any> source
import audit from '@formal-language/grammar/src/ll1/audit.js'
List all reasons why a given grammar is not ll(1).
Params:
Name | Type | Attribute | Description |
grammar | Grammar |
Return:
IterableIterator<any> |
public compile(productions: Map): Map source
import compile from '@formal-language/grammar/src/ll1/compile.js'
Compiles the predictive parsing table for a grammar. Corresponds to Algorithm 4.31 in Dragon Book (2006) on page 224.
Params:
Name | Type | Attribute | Description |
productions | Map |
public expandobject(object: *): * source
import expandobject from '@formal-language/grammar/src/grammar/expandobject.js'
Params:
Name | Type | Attribute | Description |
object | * |
Return:
* |
public async * flatten(root: *) source
import flatten from '@formal-language/grammar/src/ast/flatten.js'
Params:
Name | Type | Attribute | Description |
root | * |
public follow(FOLLOW: Map, rule: Array): Set source
import follow from '@formal-language/grammar/src/ll1/follow.js'
Generate FOLLOW set for any rule given the FOLLOW sets for the nonterminals.
public from(object: *): * source
import from from '@formal-language/grammar/src/grammar/from.js'
Params:
Name | Type | Attribute | Description |
object | * |
Return:
* |
public from(grammar: *): * source
import from from '@formal-language/grammar/src/ll1/from.js'
Params:
Name | Type | Attribute | Description |
grammar | * |
Return:
* |
public is(grammar: Grammar): Boolean source
import is from '@formal-language/grammar/src/ll1/is.js'
Check if grammar is ll(1).
Params:
Name | Type | Attribute | Description |
grammar | Grammar |
public map(callable: Function, children: AsyncIterable): AsyncIterable source
import map from '@formal-language/grammar/src/ast/map.js'
Applies a given callable to each of the child of a given children async iterable.
Params:
Name | Type | Attribute | Description |
callable | Function | The callable to use. |
|
children | AsyncIterable | The input children. |
Return:
AsyncIterable |
public async materialize(root: *): * source
import materialize from '@formal-language/grammar/src/ast/materialize.js'
Params:
Name | Type | Attribute | Description |
root | * |
Return:
* |
public parse(root: *, start: *, eof: *, productions: *, table: *, tape: *): Object source
import parse from '@formal-language/grammar/src/ll1/parse.js'
Parse
Params:
Name | Type | Attribute | Description |
root | * | ||
start | * | ||
eof | * | ||
productions | * | ||
table | * | ||
tape | * |
public async * rmap(callable: Function, rule: Iterable): AsyncIterator source
import rmap from '@formal-language/grammar/src/ast/rmap.js'
Applies a given callable to each part of a given grammar rule (given as an iterable).
Params:
Name | Type | Attribute | Description |
callable | Function | The callable to use. |
|
rule | Iterable | The input grammar rule. |
Return:
AsyncIterator |
public setadd(set: Set<any>, element: any): boolean source
import setadd from '@formal-language/grammar/src/util/setadd.js'
Adds an element to a set and returns true if the set has changed.
Params:
Name | Type | Attribute | Description |
set | Set<any> | The set to add to. |
|
element | any | The element to add to the set. |
public setaddall(set: Set<any>, iterable: Iterable<any>): boolean source
import setaddall from '@formal-language/grammar/src/util/setaddall.js'
Adds all elements of an iterable to a set and returns true if the set has changed.
Params:
Name | Type | Attribute | Description |
set | Set<any> | The set to add to. |
|
iterable | Iterable<any> | The iterable of elements to add to the set. |
public async transform(tree: *, match: *, ctx: *): * source
import transform from '@formal-language/grammar/src/ast/transform.js'
Params:
Name | Type | Attribute | Description |
tree | * | ||
match | * | ||
ctx | * |
Return:
* |
Static Private
private async _children_exhaust(children: Iterator) source
import _children_exhaust from '@formal-language/grammar/src/ast/_children_exhaust.js'
Exhausts the input children iterator.
Params:
Name | Type | Attribute | Description |
children | Iterator | The input children iterator. |
private async _children_next_lazy(eof: Object, productions: Map, table: Map, tape: Tape, expected: Object): Promise<object> source
import _children_next_lazy from '@formal-language/grammar/src/ll1/_children_next_lazy.js'
Get next child of table-driven predictive lazy parsing.
private * _compile(productions: Map): Iterable source
import _compile from '@formal-language/grammar/src/ll1/_compile.js'
Generates the rows of the predictive parsing table for a grammar. Corresponds to Algorithm 4.31 in Dragon Book (2006) on page 224.
Params:
Name | Type | Attribute | Description |
productions | Map |
Return:
Iterable |
private * _expandproduction(production: *) source
import _expandproduction from '@formal-language/grammar/src/grammar/_expandproduction.js'
Params:
Name | Type | Attribute | Description |
production | * |
private _follow(FIRST: Map, productions: Map): Map source
import _follow from '@formal-language/grammar/src/ll1/_follow.js'
Computes the FOLLOW table for all nonterminals.
private _parse_lazy(eof: Object, productions: Map, table: Map, rule: Array, tape: Tape, nonterminal: String, production: String): Object source
import _parse_lazy from '@formal-language/grammar/src/ll1/_parse_lazy.js'
Table-driven predictive lazy parsing.
Params:
Name | Type | Attribute | Description |
eof | Object | The end-of-file symbol. |
|
productions | Map | The ll1 productions. |
|
table | Map | The symbol table. |
|
rule | Array | The production rule in use. |
|
tape | Tape | The tape from which to read the symbols from. |
|
nonterminal | String | The nonterminal that produced |
|
production | String | The production that corresponds to |