From 24c8e575f400343fe36f8b3030c12f07e5d56f14 Mon Sep 17 00:00:00 2001 From: Reda Al Sulais Date: Tue, 22 Aug 2023 20:39:19 +0300 Subject: [PATCH] docs(parser): create `packages/parser` README.md file --- packages/parser/README.md | 63 ++++++++++++++++++++++++++++++++++++ packages/parser/package.json | 2 +- 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 packages/parser/README.md diff --git a/packages/parser/README.md b/packages/parser/README.md new file mode 100644 index 000000000..89cf67903 --- /dev/null +++ b/packages/parser/README.md @@ -0,0 +1,63 @@ +

+ + +

+

+Mermaid Parser +

+ +

+Mermaid parser package +

+ +[![NPM](https://img.shields.io/npm/v/mermaid-parser)](https://www.npmjs.com/package/mermaid-parser) + +## How the package works + +The package exports a `parse` function that has two parameters: + +```ts +declare function parse( + diagramType: keyof typeof initializers, + text: string +): T; +``` + +## How does a Langium-based parser work? + +```mermaid +sequenceDiagram +actor Package +participant Module +participant TokenBuilder +participant Lexer +participant Parser +participant ValueConverter + + +Package ->> Module: Create services +Module ->> TokenBuilder: Override or/and
reorder rules +TokenBuilder ->> Lexer: Read the string and transform
it into a token stream +Lexer ->> Parser: Parse token
stream into AST +Parser ->> ValueConverter: Clean/modify tokenized
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. diff --git a/packages/parser/package.json b/packages/parser/package.json index caf30d492..68c677c8e 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -7,7 +7,7 @@ "Yokozuna59", "Sidharth Vinod (https://sidharth.dev)" ], - "homepage": "https://github.com/mermaid-js/mermaid/#readme", + "homepage": "https://github.com/mermaid-js/mermaid/tree/develop/packages/mermaid/parser/#readme", "types": "dist/src/index.d.ts", "type": "module", "exports": {