Skip to content

Commit

Permalink
Split grammar parts from the main export
Browse files Browse the repository at this point in the history
  • Loading branch information
msujew committed Nov 26, 2023
1 parent 5b203d2 commit 2af8796
Show file tree
Hide file tree
Showing 86 changed files with 559 additions and 475 deletions.
4 changes: 2 additions & 2 deletions packages/langium-cli/src/generate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import type { AstNode, Grammar, LangiumDocument, Mutable } from 'langium';
import type { LangiumConfig, LangiumLanguageConfig} from './package.js';
import { URI } from 'langium';
import { loadConfig } from './package.js';
import { copyAstNode, createLangiumGrammarServices, getDocument, GrammarAST, linkContentToContainer } from 'langium';
import { resolveImport, resolveTransitiveImports } from 'langium/internal';
import { copyAstNode, getDocument, GrammarAST, linkContentToContainer } from 'langium';
import { createLangiumGrammarServices, resolveImport, resolveTransitiveImports } from 'langium/grammar';
import { NodeFileSystem } from 'langium/node';
import { generateAst } from './generator/ast-generator.js';
import { serializeGrammar } from './generator/grammar-serializer.js';
Expand Down
4 changes: 2 additions & 2 deletions packages/langium-cli/src/generator/ast-generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
******************************************************************************/
import type { Grammar, LangiumServices } from 'langium';
import { type Generated, expandToNode, joinToNode, toString } from 'langium/generate';
import type { AstTypes, Property } from 'langium/types';
import type { AstTypes, Property } from 'langium/grammar';
import type { LangiumConfig } from '../package.js';
import { streamAllContents, MultiMap, GrammarAST } from 'langium';
import { collectAst, collectTypeHierarchy, findReferenceTypes, hasArrayType, isAstType, hasBooleanType, mergeTypesAndInterfaces } from 'langium/types';
import { collectAst, collectTypeHierarchy, findReferenceTypes, hasArrayType, isAstType, hasBooleanType, mergeTypesAndInterfaces } from 'langium/grammar';
import { collectTerminalRegexps, generatedHeader } from './util.js';

export function generateAst(services: LangiumServices, grammars: Grammar[], config: LangiumConfig): string {
Expand Down
2 changes: 1 addition & 1 deletion packages/langium-cli/src/generator/grammar-serializer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export function serializeGrammar(services: LangiumServices, grammars: Grammar[],
).appendTemplateIf(!!config.langiumInternal)`
import type { Grammar } from './ast${config.importExtension}';
import { loadGrammarFromJson } from '../../utils/grammar-util${config.importExtension}';
import { loadGrammarFromJson } from '../../utils/grammar-loader${config.importExtension}';
`.appendTemplateIf(!config.langiumInternal)`
import type { Grammar } from 'langium';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@
* terms of the MIT License, which is available in the project root.
******************************************************************************/

import { type Grammar, getTerminalParts, isCommentTerminal, escapeRegExp, GrammarAST, isWhitespaceRegExp } from 'langium';
import { type Grammar, getTerminalParts, isCommentTerminal, escapeRegExp, GrammarAST, isWhitespaceRegExp, terminalRegex } from 'langium';
import { type Generated, expandToNode, joinToNode, toString } from 'langium/generate';
import { terminalRegex } from 'langium/internal';
import type { LangiumLanguageConfig } from '../../package.js';
import { collectKeywords } from '../util.js';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@
* This program and the accompanying materials are made available under the
* terms of the MIT License, which is available in the project root.
******************************************************************************/
import { GrammarAST, escapeRegExp, isCommentTerminal, type Grammar } from 'langium';
import { terminalRegex, GrammarAST, escapeRegExp, isCommentTerminal, type Grammar } from 'langium';
import { expandToNode, joinToNode, toString, type Generated } from 'langium/generate';
import { terminalRegex } from 'langium/internal';
import _ from 'lodash';
import type { LangiumLanguageConfig } from '../../package.js';
import { collectKeywords } from '../util.js';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
* terms of the MIT License, which is available in the project root.
******************************************************************************/
import type { Grammar } from 'langium';
import { escapeRegExp, getCaseInsensitivePattern, getTerminalParts, GrammarAST, isCommentTerminal, stream } from 'langium';
import { terminalRegex } from 'langium/internal';
import { escapeRegExp, getCaseInsensitivePattern, getTerminalParts, GrammarAST, isCommentTerminal, stream, terminalRegex } from 'langium';
import type { LangiumLanguageConfig } from '../../package.js';
import { collectKeywords } from '../util.js';

Expand Down
3 changes: 1 addition & 2 deletions packages/langium-cli/src/generator/types-generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@
******************************************************************************/
import type { Grammar, LangiumServices } from 'langium';
import { joinToNode, toString } from 'langium/generate';
import { collectAst } from 'langium/types';
import { LangiumGrammarGrammar } from 'langium/internal';
import { collectAst, LangiumGrammarGrammar } from 'langium/grammar';
import { collectKeywords } from './util.js';

export function generateTypesFile(services: LangiumServices, grammars: Grammar[]): string {
Expand Down
3 changes: 1 addition & 2 deletions packages/langium-cli/src/generator/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,13 @@
* This program and the accompanying materials are made available under the
* terms of the MIT License, which is available in the project root.
******************************************************************************/
import { type Grammar, getAllReachableRules, GrammarAST, stream, streamAllContents } from 'langium';
import { type Grammar, getAllReachableRules, GrammarAST, stream, streamAllContents, terminalRegex } from 'langium';
import { type Generated, expandToNode } from 'langium/generate';
import fs from 'fs-extra';
import * as path from 'node:path';
import * as url from 'node:url';
import * as readline from 'node:readline';
import chalk from 'chalk';
import { terminalRegex } from 'langium/internal';

// This is a replacement for `__dirname`
function getDirname(): string {
Expand Down
6 changes: 4 additions & 2 deletions packages/langium-cli/src/parser-validation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
* This program and the accompanying materials are made available under the
* terms of the MIT License, which is available in the project root.
******************************************************************************/
import type { Grammar, IParserConfig, LangiumDocuments, LangiumGrammarServices, LangiumParser, LanguageMetaData, } from 'langium';
import type { Grammar, IParserConfig, LangiumDocuments, LangiumParser, LanguageMetaData } from 'langium';
import type { LangiumConfig, LangiumLanguageConfig } from './package.js';
import { createServicesForGrammar, getDocument, GrammarAST, prepareLangiumParser } from 'langium';
import { getDocument, GrammarAST, prepareLangiumParser } from 'langium';
import type { LangiumGrammarServices} from 'langium/grammar';
import { createServicesForGrammar } from 'langium/grammar';
import { getFilePath } from './package.js';

export async function validateParser(grammar: Grammar, config: LangiumConfig, grammarConfigMap: Map<Grammar, LangiumLanguageConfig>,
Expand Down
3 changes: 2 additions & 1 deletion packages/langium-cli/test/generator/ast-generator.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@
* terms of the MIT License, which is available in the project root.
******************************************************************************/

import { EmptyFileSystem, createLangiumGrammarServices, type Grammar } from 'langium';
import { EmptyFileSystem, type Grammar } from 'langium';
import { expandToString, normalizeEOL } from 'langium/generate';
import { parseHelper } from 'langium/test';
import { createLangiumGrammarServices } from 'langium/grammar';
import { describe, expect, test } from 'vitest';
import { generateAst } from '../../src/generator/ast-generator.js';
import type { LangiumConfig } from '../../src/package.js';
Expand Down
3 changes: 2 additions & 1 deletion packages/langium-cli/test/generator/types-generator.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@
******************************************************************************/

import type { Grammar } from 'langium';
import { EmptyFileSystem, createLangiumGrammarServices } from 'langium';
import { EmptyFileSystem } from 'langium';
import { expandToStringWithNL } from 'langium/generate';
import { createLangiumGrammarServices } from 'langium/grammar';
import { parseHelper } from 'langium/test';
import { describe, expect, test } from 'vitest';
import { generateTypesFile } from '../../src/generator/types-generator.js';
Expand Down
3 changes: 2 additions & 1 deletion packages/langium-vscode/src/language-server/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
******************************************************************************/

import type { LangiumSharedServices, Module, PartialLangiumSharedServices } from 'langium';
import { createLangiumGrammarServices, startLanguageServer } from 'langium';
import { startLanguageServer } from 'langium';
import { createLangiumGrammarServices } from 'langium/grammar';
import { NodeFileSystem } from 'langium/node';
import { createConnection, ProposedFeatures } from 'vscode-languageserver/node.js';
import { LangiumGrammarWorkspaceManager } from './grammar-workspace-manager.js';
Expand Down
10 changes: 3 additions & 7 deletions packages/langium/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,9 @@
"types": "./lib/node/index.d.ts",
"import": "./lib/node/index.js"
},
"./types": {
"types": "./lib/grammar/type-system/index.d.ts",
"import": "./lib/grammar/type-system/index.js"
},
"./internal": {
"types": "./lib/grammar/internal-grammar-util.d.ts",
"import": "./lib/grammar/internal-grammar-util.js"
"./grammar": {
"types": "./lib/grammar/index.d.ts",
"import": "./lib/grammar/index.js"
}
},
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion packages/langium/src/default-module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import type { LangiumDefaultServices, LangiumDefaultSharedServices, LangiumServi
import type { FileSystemProvider } from './workspace/file-system-provider.js';
import { TextDocuments } from 'vscode-languageserver';
import { TextDocument } from 'vscode-languageserver-textdocument';
import { createGrammarConfig } from './grammar/grammar-config.js';
import { createGrammarConfig } from './language/grammar-config.js';
import { createCompletionParser } from './parser/completion-parser-builder.js';
import { DefaultCompletionProvider } from './lsp/completion/completion-provider.js';
import { DefaultDocumentHighlightProvider } from './lsp/document-highlight-provider.js';
Expand Down
2 changes: 1 addition & 1 deletion packages/langium/src/documentation/comment-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* terms of the MIT License, which is available in the project root.
******************************************************************************/

import type { GrammarConfig } from '../grammar/grammar-config.js';
import type { GrammarConfig } from '../language/grammar-config.js';
import { isAstNodeWithComment } from '../serializer/json-serializer.js';
import type { LangiumServices } from '../services.js';
import type { AstNode } from '../syntax-tree.js';
Expand Down
2 changes: 1 addition & 1 deletion packages/langium/src/grammar/generated/grammar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
******************************************************************************/

import type { Grammar } from './ast.js';
import { loadGrammarFromJson } from '../../utils/grammar-util.js';
import { loadGrammarFromJson } from '../../utils/grammar-loader.js';

let loadedLangiumGrammarGrammar: Grammar | undefined;
export const LangiumGrammarGrammar = (): Grammar => loadedLangiumGrammarGrammar ?? (loadedLangiumGrammarGrammar = loadGrammarFromJson(`{
Expand Down
2 changes: 1 addition & 1 deletion packages/langium/src/grammar/generated/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* DO NOT EDIT MANUALLY!
******************************************************************************/

import type { LanguageMetaData } from '../language-meta-data.js';
import type { LanguageMetaData } from '../../language/language-meta-data.js';
import type { Module } from '../../dependency-injection.js';
import type { LangiumGeneratedServices, LangiumGeneratedSharedServices, LangiumSharedServices, LangiumServices } from '../../services.js';
import type { IParserConfig } from '../../parser/parser-config.js';
Expand Down
21 changes: 18 additions & 3 deletions packages/langium/src/grammar/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,22 @@
* terms of the MIT License, which is available in the project root.
******************************************************************************/

export * from './ast-reflection-interpreter.js';
export * from './grammar-config.js';
export * from './generated/grammar.js';
export * from './generated/module.js';
export * from './lsp/grammar-call-hierarchy.js';
export * from './lsp/grammar-code-actions.js';
export * from './lsp/grammar-completion-provider.js';
export * from './lsp/grammar-definition.js';
export * from './lsp/grammar-folding-ranges.js';
export * from './lsp/grammar-formatter.js';
export * from './lsp/grammar-semantic-tokens.js';
export * from './references/grammar-naming.js';
export * from './references/grammar-references.js';
export * from './references/grammar-scope.js';
export * from './validation/types-validator.js';
export * from './validation/validation-resources-collector.js';
export * from './validation/validator.js';
export * from './type-system/index.js';
export * from './langium-grammar-module.js';
export * from './language-meta-data.js';
export * from './internal-grammar-util.js';
export * from './ast-reflection-interpreter.js';
Loading

0 comments on commit 2af8796

Please sign in to comment.