diff --git a/packages/parser/src/language/common/common.langium b/packages/parser/src/language/common/common.langium index f1a695e49..baf933e0f 100644 --- a/packages/parser/src/language/common/common.langium +++ b/packages/parser/src/language/common/common.langium @@ -5,7 +5,11 @@ interface Common { } fragment TitleAndAccessibilities: - ((accDescr=ACC_DESCR | accTitle=ACC_TITLE | title=TITLE) NEWLINE+)+ + ((accDescr=ACC_DESCR | accTitle=ACC_TITLE | title=TITLE) EOL)+ +; + +fragment EOL returns string: + NEWLINE+ | EOF ; terminal NEWLINE: /\r?\n/; @@ -14,6 +18,6 @@ terminal ACC_TITLE: /accTitle[\t ]*:[^\n\r]*(?=%%)|accTitle[\t ]*:[^\n\r]*/; terminal TITLE: /title([\t ][^\n\r]*|)(?=%%)|title([\t ][^\n\r]*|)/; hidden terminal WHITESPACE: /[\t ]+/; -hidden terminal YAML: /---[\t ]*\r?\n[\S\s]*?---[\t ]*(?!.)/; -hidden terminal DIRECTIVE: /[\t ]*%%{[\S\s]*?}%%\s*/; +hidden terminal YAML: /---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/; +hidden terminal DIRECTIVE: /[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/; hidden terminal SINGLE_LINE_COMMENT: /[\t ]*%%[^\n\r]*/; diff --git a/packages/parser/src/language/common/index.ts b/packages/parser/src/language/common/index.ts index 2ab5ebcd4..e06a3a8eb 100644 --- a/packages/parser/src/language/common/index.ts +++ b/packages/parser/src/language/common/index.ts @@ -1,3 +1,2 @@ -export * from './lexer.js'; export * from './tokenBuilder.js'; export { MermaidValueConverter } from './valueConverter.js'; diff --git a/packages/parser/src/language/common/lexer.ts b/packages/parser/src/language/common/lexer.ts deleted file mode 100644 index e4f1272b2..000000000 --- a/packages/parser/src/language/common/lexer.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { LexerResult } from 'langium'; -import { DefaultLexer } from 'langium'; - -export class CommonLexer extends DefaultLexer { - public override tokenize(text: string): LexerResult { - return super.tokenize(text + '\n'); - } -} diff --git a/packages/parser/src/language/info/module.ts b/packages/parser/src/language/info/module.ts index 5d6b74e10..c25deb377 100644 --- a/packages/parser/src/language/info/module.ts +++ b/packages/parser/src/language/info/module.ts @@ -7,7 +7,6 @@ import type { } from 'langium'; import { EmptyFileSystem, createDefaultModule, createDefaultSharedModule, inject } from 'langium'; -import { CommonLexer } from '../common/lexer.js'; import { CommonValueConverter } from '../common/valueConverter.js'; import { InfoGeneratedModule, MermaidGeneratedSharedModule } from '../generated/module.js'; import { InfoTokenBuilder } from './tokenBuilder.js'; @@ -17,7 +16,6 @@ import { InfoTokenBuilder } from './tokenBuilder.js'; */ type InfoAddedServices = { parser: { - Lexer: CommonLexer; TokenBuilder: InfoTokenBuilder; ValueConverter: CommonValueConverter; }; @@ -34,7 +32,6 @@ export type InfoServices = LangiumServices & InfoAddedServices; */ export const InfoModule: Module = { parser: { - Lexer: (services: InfoServices) => new CommonLexer(services), TokenBuilder: () => new InfoTokenBuilder(), ValueConverter: () => new CommonValueConverter(), }, diff --git a/packages/parser/src/language/pie/module.ts b/packages/parser/src/language/pie/module.ts index f22a1e548..8777abc86 100644 --- a/packages/parser/src/language/pie/module.ts +++ b/packages/parser/src/language/pie/module.ts @@ -7,7 +7,6 @@ import type { } from 'langium'; import { EmptyFileSystem, createDefaultModule, createDefaultSharedModule, inject } from 'langium'; -import { CommonLexer } from '../common/lexer.js'; import { MermaidGeneratedSharedModule, PieGeneratedModule } from '../generated/module.js'; import { PieTokenBuilder } from './tokenBuilder.js'; import { PieValueConverter } from './valueConverter.js'; @@ -17,7 +16,6 @@ import { PieValueConverter } from './valueConverter.js'; */ type PieAddedServices = { parser: { - Lexer: CommonLexer; TokenBuilder: PieTokenBuilder; ValueConverter: PieValueConverter; }; @@ -34,7 +32,6 @@ export type PieServices = LangiumServices & PieAddedServices; */ export const PieModule: Module = { parser: { - Lexer: (services: PieServices) => new CommonLexer(services), TokenBuilder: () => new PieTokenBuilder(), ValueConverter: () => new PieValueConverter(), }, diff --git a/packages/parser/src/language/pie/pie.langium b/packages/parser/src/language/pie/pie.langium index a71e7f852..c1219722c 100644 --- a/packages/parser/src/language/pie/pie.langium +++ b/packages/parser/src/language/pie/pie.langium @@ -12,7 +12,7 @@ entry Pie: ; PieSection: - label=PIE_SECTION_LABEL ":" value=PIE_SECTION_VALUE NEWLINE+ + label=PIE_SECTION_LABEL ":" value=PIE_SECTION_VALUE EOF ; terminal PIE_SECTION_LABEL: /"[^"]+"/;