Files
mermaid/packages/parser
Sidharth Vinod ca2eca58c9 Merge branch 'develop' into sidv/packet-release
* develop: (266 commits)
  chore: update E2E timings
  docs: Update changeset
  fix: Add useful error message to test
  chore: Add treemap example
  chore: Add treemap example
  chore: Add peerDependency to @mermaid-js/examples
  Version Packages
  docs: Update changeset
  update in changeset
  updated validaor and tests to use treemap
  Updated parser to use treemap
  chore: Fail build in CI on type errors
  fix text going outside node
  Version Packages
  Updated phpbb url  to support 403 in lychee
  Updated lychee for working url phpbb.com
  resolve PR comment
  resolve PR comments
  chore: update E2E timings
  add changeset
  ...
2025-07-10 00:38:41 +05:30
..
2025-07-07 15:21:07 +00:00
2025-05-12 18:30:06 +02:00
2025-07-07 15:21:07 +00:00

Mermaid Parser

Mermaid parser package

NPM

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.