mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-10-05 23:29:37 +02:00

* next: (70 commits) chore: Add comment for `yy`. chore: Increase heap size when building chore: increase `test-util.ts` converage by returning `undefined` chore: add `vitest` imports to `test-util.ts` chore: run `pnpm lint:fix` create `noErrorsOrAlternatives` parser helper function chore: export `InfoModule` from `infoModule.ts` docs: Fix link Update docs fix(pie): align slices and legend orders Mermaid version v10.4.0 unique batches every time, if not repeated tests end up in the same batch Added missed .md Increase JS heap More tests for redirects + prettier Fixed redirects inside vitepress, extended tests chore: Explain redirect.ts clearly docs: Fix npmjs link chore: Update editor.bash to build latest version chore: Build after clone ...
Mermaid Parser
Mermaid parser package
How the package works
The package exports a parse
function that has two parameters:
declare function parse<T extends DiagramAST>(
diagramType: keyof typeof initializers,
text: string
): T;
How does a Langium-based parser work?
sequenceDiagram
actor Package
participant Module
participant TokenBuilder
participant Lexer
participant Parser
participant ValueConverter
Package ->> Module: Create services
Module ->> TokenBuilder: Override or/and<br>reorder rules
TokenBuilder ->> Lexer: Read the string and transform<br>it into a token stream
Lexer ->> Parser: Parse token<br>stream into AST
Parser ->> ValueConverter: Clean/modify tokenized<br>rules returned value
ValueConverter -->> Package: Return AST
-
When to override
TokenBuilder
?- To override keyword rules.
- To override terminal rules that need a custom function.
- To manually reorder the list of rules.
-
When to override
Lexer
?- To modify input before tokenizing.
- To insert/modify tokens that cannot or have not been parsed.
-
When to override
LangiumParser
?- To insert or modify attributes that can't be parsed.
-
When to override
ValueConverter
?- To modify the returned value from the parser.