Skip to content

Commit

Permalink
Move ast.ts to language folder
Browse files Browse the repository at this point in the history
  • Loading branch information
msujew committed Nov 26, 2023
1 parent 2af8796 commit fbf06f6
Show file tree
Hide file tree
Showing 46 changed files with 73 additions and 64 deletions.
10 changes: 9 additions & 1 deletion packages/langium-cli/src/generate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ export async function runGenerator(config: LangiumConfig, options: GenerateOptio
}

const genAst = generateAst(grammarServices, embeddedGrammars, config);
await writeWithFail(path.resolve(output, 'ast.ts'), genAst, options);
await writeWithFail(path.resolve(updateLangiumInternalAstPath(output, config), 'ast.ts'), genAst, options);

const serializedGrammar = serializeGrammar(grammarServices, embeddedGrammars, config);
await writeWithFail(path.resolve(output, 'grammar.ts'), serializedGrammar, options);
Expand Down Expand Up @@ -393,6 +393,14 @@ export async function runGenerator(config: LangiumConfig, options: GenerateOptio
return buildResult(true);
}

function updateLangiumInternalAstPath(output: string, config: LangiumConfig): string {
if (config.langiumInternal) {
return path.join(output, '..', '..', 'language', 'generated');
} else {
return output;
}
}

export async function generateTypes(options: ExtractTypesOptions): Promise<void> {
const grammarPath = path.isAbsolute(options.grammar) ? options.grammar : path.resolve('.', options.grammar);
if (!fs.existsSync(grammarPath) || !fs.lstatSync(grammarPath).isFile()) {
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 @@ -16,7 +16,7 @@ export function serializeGrammar(services: LangiumServices, grammars: Grammar[],
`.appendNewLine(
).appendTemplateIf(!!config.langiumInternal)`
import type { Grammar } from './ast${config.importExtension}';
import type { Grammar } from '../../language/generated/ast${config.importExtension}';
import { loadGrammarFromJson } from '../../utils/grammar-loader${config.importExtension}';
`.appendTemplateIf(!config.langiumInternal)`
Expand Down
5 changes: 3 additions & 2 deletions packages/langium-cli/src/generator/module-generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ export function generateModule(grammars: Grammar[], config: LangiumConfig, gramm
).appendIf(!!config.langiumInternal,
expandToNode`
import type { LanguageMetaData } from '../language-meta-data${config.importExtension}';
import type { LanguageMetaData } from '../../language/language-meta-data${config.importExtension}';
import { ${config.projectName}AstReflection } from '../../language/generated/ast${config.importExtension}';
import type { Module } from '../../dependency-injection${config.importExtension}';
import type { LangiumGeneratedServices, LangiumGeneratedSharedServices, LangiumSharedServices, LangiumServices } from '../../services${config.importExtension}';
`.appendTemplateIf(hasIParserConfigImport)`
Expand All @@ -32,9 +33,9 @@ export function generateModule(grammars: Grammar[], config: LangiumConfig, gramm
).appendTemplateIf(!config.langiumInternal)`
import type { LangiumGeneratedServices, LangiumGeneratedSharedServices, LangiumSharedServices, LangiumServices, LanguageMetaData, Module${hasIParserConfigImport ? ', IParserConfig' : ''} } from 'langium';
import { ${config.projectName}AstReflection } from './ast${config.importExtension}';
`.appendTemplate`
import { ${config.projectName}AstReflection } from './ast${config.importExtension}';
import { ${joinToNode(grammarsWithName, grammar => grammar.name + 'Grammar', { separator: ', '}) } } from './grammar${config.importExtension}';
${joinToNode(
grammarsWithName,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import type { Grammar, LangiumServices } from 'langium';
import { DocumentState, GrammarAST, URI } from 'langium';
import { createGrammarDiagramHtml } from 'langium-railroad';
import { expandToString } from 'langium/generate';
import { resolveTransitiveImports } from 'langium/internal';
import { resolveTransitiveImports } from 'langium/grammar';
import type { Connection } from 'vscode-languageserver';
import { DiagnosticSeverity } from 'vscode-languageserver';
import { DOCUMENTS_VALIDATED_NOTIFICATION, RAILROAD_DIAGRAM_REQUEST } from './messages.js';
Expand Down
4 changes: 2 additions & 2 deletions packages/langium/src/grammar/ast-reflection-interpreter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@

import type { AstReflection, ReferenceInfo, TypeMandatoryProperty, TypeMetaData } from '../syntax-tree.js';
import type { LangiumDocuments } from '../workspace/documents.js';
import type { Grammar } from './generated/ast.js';
import type { Grammar } from '../language/generated/ast.js';
import type { AstTypes, Property } from './type-system/type-collector/types.js';
import { AbstractAstReflection } from '../syntax-tree.js';
import { MultiMap } from '../utils/collections.js';
import { isGrammar } from './generated/ast.js';
import { isGrammar } from '../language/generated/ast.js';
import { collectAst } from './type-system/ast-collector.js';
import { collectTypeHierarchy, findReferenceTypes, hasArrayType, isAstType, hasBooleanType, mergeTypesAndInterfaces } from './type-system/types-util.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 @@ -3,7 +3,7 @@
* DO NOT EDIT MANUALLY!
******************************************************************************/

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

let loadedLangiumGrammarGrammar: Grammar | undefined;
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 @@ -4,10 +4,10 @@
******************************************************************************/

import type { LanguageMetaData } from '../../language/language-meta-data.js';
import { LangiumGrammarAstReflection } from '../../language/generated/ast.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';
import { LangiumGrammarAstReflection } from './ast.js';
import { LangiumGrammarGrammar } from './grammar.js';

export const LangiumGrammarLanguageMetaData = {
Expand Down
2 changes: 1 addition & 1 deletion packages/langium/src/grammar/internal-grammar-util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import { URI } from '../utils/uri-util.js';
import type { LangiumDocuments } from '../workspace/documents.js';
import type { AstNode } from '../syntax-tree.js';
import * as ast from '../grammar/generated/ast.js';
import * as ast from '../language/generated/ast.js';
import { getDocument } from '../utils/ast-util.js';
import { UriUtils } from '../utils/uri-util.js';
import type { LangiumGrammarServices} from './langium-grammar-module.js';
Expand Down
2 changes: 1 addition & 1 deletion packages/langium/src/grammar/langium-grammar-module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import type { Module } from '../dependency-injection.js';
import type { LangiumServices, LangiumSharedServices, PartialLangiumServices, PartialLangiumSharedServices } from '../services.js';
import { LangiumGrammarTypeHierarchyProvider } from './lsp/grammar-type-hierarchy.js';
import type { LangiumGrammarDocument } from './workspace/documents.js';
import type { Grammar } from './generated/ast.js';
import type { Grammar } from '../language/generated/ast.js';
import { createDefaultModule, createDefaultSharedModule } from '../default-module.js';
import { inject } from '../dependency-injection.js';
import { LangiumGrammarGeneratedModule, LangiumGrammarGeneratedSharedModule } from './generated/module.js';
Expand Down
2 changes: 1 addition & 1 deletion packages/langium/src/grammar/lsp/grammar-call-hierarchy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { SymbolKind } from 'vscode-languageserver';
import { AbstractCallHierarchyProvider } from '../../lsp/call-hierarchy-provider.js';
import { getContainerOfType, getDocument, streamAllContents } from '../../utils/ast-util.js';
import { findLeafNodeAtOffset } from '../../utils/cst-util.js';
import { isParserRule, isRuleCall } from '../generated/ast.js';
import { isParserRule, isRuleCall } from '../../language/generated/ast.js';

export class LangiumGrammarCallHierarchyProvider extends AbstractCallHierarchyProvider {
protected getIncomingCalls(node: AstNode, references: Stream<ReferenceDescription>): CallHierarchyIncomingCall[] | undefined {
Expand Down
2 changes: 1 addition & 1 deletion packages/langium/src/grammar/lsp/grammar-code-actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import { findNodeForProperty } from '../../utils/grammar-util.js';
import { escapeRegExp } from '../../utils/regex-util.js';
import { UriUtils } from '../../utils/uri-util.js';
import { DocumentValidator } from '../../validation/document-validator.js';
import * as ast from '../generated/ast.js';
import * as ast from '../../language/generated/ast.js';
import { IssueCodes } from '../validation/validator.js';

export class LangiumGrammarCodeActionProvider implements CodeActionProvider {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ import type { LangiumServices } from '../../services.js';
import type { MaybePromise } from '../../utils/promise-util.js';
import { getContainerOfType } from '../../utils/ast-util.js';
import type { LangiumDocument, LangiumDocuments } from '../../workspace/documents.js';
import type { AbstractElement } from '../generated/ast.js';
import { isAssignment } from '../generated/ast.js';
import type { AbstractElement } from '../../language/generated/ast.js';
import { isAssignment } from '../../language/generated/ast.js';
import { UriUtils } from '../../utils/uri-util.js';

export class LangiumGrammarCompletionProvider extends DefaultCompletionProvider {
Expand Down
4 changes: 2 additions & 2 deletions packages/langium/src/grammar/lsp/grammar-definition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ import type { LangiumServices } from '../../services.js';
import type { AstNode, LeafCstNode, Properties } from '../../syntax-tree.js';
import type { MaybePromise } from '../../utils/promise-util.js';
import type { LangiumDocuments } from '../../workspace/documents.js';
import type { Grammar, GrammarImport } from '../generated/ast.js';
import type { Grammar, GrammarImport } from '../../language/generated/ast.js';
import { LocationLink, Range } from 'vscode-languageserver';
import { DefaultDefinitionProvider } from '../../lsp/index.js';
import { streamContents } from '../../utils/ast-util.js';
import { findAssignment } from '../../utils/grammar-util.js';
import { isGrammarImport } from '../generated/ast.js';
import { isGrammarImport } from '../../language/generated/ast.js';
import { resolveImport } from '../internal-grammar-util.js';

export class LangiumGrammarDefinitionProvider extends DefaultDefinitionProvider {
Expand Down
2 changes: 1 addition & 1 deletion packages/langium/src/grammar/lsp/grammar-folding-ranges.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import type { AstNode } from '../../syntax-tree.js';
import { DefaultFoldingRangeProvider } from '../../lsp/folding-range-provider.js';
import { isParserRule } from '../generated/ast.js';
import { isParserRule } from '../../language/generated/ast.js';

/**
* A specialized folding range provider for the grammar language
Expand Down
2 changes: 1 addition & 1 deletion packages/langium/src/grammar/lsp/grammar-formatter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import type { AstNode } from '../../syntax-tree.js';
import { AbstractFormatter, Formatting } from '../../lsp/formatter.js';
import * as ast from '../generated/ast.js';
import * as ast from '../../language/generated/ast.js';

const indentOrSpace = Formatting.fit(Formatting.oneSpace(), Formatting.indent());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import type { AstNode } from '../../syntax-tree.js';
import type { SemanticTokenAcceptor } from '../../lsp/semantic-token-provider.js';
import { SemanticTokenTypes } from 'vscode-languageserver';
import { AbstractSemanticTokenProvider } from '../../lsp/semantic-token-provider.js';
import { isAction, isAssignment, isParameter, isParameterReference, isReturnType, isRuleCall, isSimpleType, isTypeAttribute } from '../generated/ast.js';
import { isAction, isAssignment, isParameter, isParameterReference, isReturnType, isRuleCall, isSimpleType, isTypeAttribute } from '../../language/generated/ast.js';

export class LangiumGrammarSemanticTokenProvider extends AbstractSemanticTokenProvider {

Expand Down
2 changes: 1 addition & 1 deletion packages/langium/src/grammar/lsp/grammar-type-hierarchy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import type { TypeHierarchyItem } from 'vscode-languageserver';
import { AbstractTypeHierarchyProvider } from '../../lsp/type-hierarchy-provider.js';
import { getDocument } from '../../utils/ast-util.js';
import { findLeafNodeAtOffset } from '../../utils/cst-util.js';
import { isInterface } from '../generated/ast.js';
import { isInterface } from '../../language/generated/ast.js';

export class LangiumGrammarTypeHierarchyProvider extends AbstractTypeHierarchyProvider {
protected getSupertypes(node: AstNode): TypeHierarchyItem[] | undefined {
Expand Down
2 changes: 1 addition & 1 deletion packages/langium/src/grammar/references/grammar-naming.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import type { AstNode, CstNode } from '../../syntax-tree.js';
import { DefaultNameProvider } from '../../references/name-provider.js';
import { findNodeForProperty } from '../../utils/grammar-util.js';
import { isAssignment } from '../generated/ast.js';
import { isAssignment } from '../../language/generated/ast.js';

export class LangiumGrammarNameProvider extends DefaultNameProvider {

Expand Down
4 changes: 2 additions & 2 deletions packages/langium/src/grammar/references/grammar-references.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ import type { AstNode, CstNode } from '../../syntax-tree.js';
import type { Stream } from '../../utils/stream.js';
import type { ReferenceDescription } from '../../workspace/ast-descriptions.js';
import type { LangiumDocuments } from '../../workspace/documents.js';
import type { Action, Assignment, Interface, ParserRule, Type, TypeAttribute } from '../generated/ast.js';
import type { Action, Assignment, Interface, ParserRule, Type, TypeAttribute } from '../../language/generated/ast.js';
import type { FindReferencesOptions } from '../../references/references.js';
import { DefaultReferences } from '../../references/references.js';
import { getContainerOfType, getDocument } from '../../utils/ast-util.js';
import { toDocumentSegment } from '../../utils/cst-util.js';
import { findAssignment, findNodeForProperty, getActionAtElement } from '../../utils/grammar-util.js';
import { stream } from '../../utils/stream.js';
import { UriUtils } from '../../utils/uri-util.js';
import { isAction, isAssignment, isInterface, isParserRule, isType, isTypeAttribute } from '../generated/ast.js';
import { isAction, isAssignment, isInterface, isParserRule, isType, isTypeAttribute } from '../../language/generated/ast.js';
import { extractAssignments } from '../internal-grammar-util.js';
import { collectChildrenTypes, collectSuperTypes } from '../type-system/types-util.js';

Expand Down
4 changes: 2 additions & 2 deletions packages/langium/src/grammar/references/grammar-scope.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ import type { AstNode, AstNodeDescription, ReferenceInfo } from '../../syntax-tr
import type { Stream } from '../../utils/stream.js';
import type { AstNodeLocator } from '../../workspace/ast-node-locator.js';
import type { DocumentSegment, LangiumDocument, LangiumDocuments, PrecomputedScopes } from '../../workspace/documents.js';
import type { Grammar } from '../generated/ast.js';
import type { Grammar } from '../../language/generated/ast.js';
import { EMPTY_SCOPE, MapScope } from '../../references/scope.js';
import { DefaultScopeComputation } from '../../references/scope-computation.js';
import { DefaultScopeProvider } from '../../references/scope-provider.js';
import { findRootNode, getContainerOfType, getDocument, streamAllContents } from '../../utils/ast-util.js';
import { toDocumentSegment } from '../../utils/cst-util.js';
import { stream } from '../../utils/stream.js';
import { AbstractType, Interface, isAction, isGrammar, isParserRule, isReturnType, Type } from '../generated/ast.js';
import { AbstractType, Interface, isAction, isGrammar, isParserRule, isReturnType, Type } from '../../language/generated/ast.js';
import { resolveImportUri } from '../internal-grammar-util.js';
import { getActionType } from '../../utils/grammar-util.js';

Expand Down
2 changes: 1 addition & 1 deletion packages/langium/src/grammar/type-system/ast-collector.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 { Grammar } from '../generated/ast.js';
import type { Grammar } from '../../language/generated/ast.js';
import type { LangiumDocuments } from '../../workspace/documents.js';
import type { AstTypes, InterfaceType, PropertyType, TypeOption, UnionType } from './type-collector/types.js';
import type { ValidationAstTypes } from './type-collector/all-types.js';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@
* terms of the MIT License, which is available in the project root.
******************************************************************************/

import type { ParserRule, Interface, Type, Grammar } from '../../generated/ast.js';
import type { ParserRule, Interface, Type, Grammar } from '../../../language/generated/ast.js';
import type { URI } from '../../../utils/uri-util.js';
import type { LangiumDocuments } from '../../../workspace/documents.js';
import type { PlainAstTypes } from './plain-types.js';
import type { AstTypes } from './types.js';
import { collectInferredTypes } from './inferred-types.js';
import { collectDeclaredTypes } from './declared-types.js';
import { getDocument } from '../../../utils/ast-util.js';
import { isParserRule } from '../../generated/ast.js';
import { isParserRule } from '../../../language/generated/ast.js';
import { resolveImport } from '../../internal-grammar-util.js';
import { isDataTypeRule } from '../../../utils/grammar-util.js';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
* terms of the MIT License, which is available in the project root.
******************************************************************************/

import type { Interface, Type, TypeDefinition } from '../../generated/ast.js';
import type { Interface, Type, TypeDefinition } from '../../../language/generated/ast.js';
import type { PlainAstTypes, PlainInterface, PlainProperty, PlainPropertyType, PlainUnion } from './plain-types.js';
import { isArrayType, isReferenceType, isUnionType, isSimpleType } from '../../generated/ast.js';
import { isArrayType, isReferenceType, isUnionType, isSimpleType } from '../../../language/generated/ast.js';
import { getTypeNameWithoutError, isPrimitiveGrammarType } from '../../internal-grammar-util.js';
import { getTypeName } from '../../../utils/grammar-util.js';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
* terms of the MIT License, which is available in the project root.
******************************************************************************/

import type { ParserRule, Action, AbstractElement, Assignment, RuleCall } from '../../generated/ast.js';
import type { ParserRule, Action, AbstractElement, Assignment, RuleCall } from '../../../language/generated/ast.js';
import type { PlainAstTypes, PlainInterface, PlainProperty, PlainPropertyType, PlainUnion } from './plain-types.js';
import { isNamed } from '../../../references/name-provider.js';
import { MultiMap } from '../../../utils/collections.js';
import { isAlternatives, isKeyword, isParserRule, isAction, isGroup, isUnorderedGroup, isAssignment, isRuleCall, isCrossReference, isTerminalRule } from '../../generated/ast.js';
import { isAlternatives, isKeyword, isParserRule, isAction, isGroup, isUnorderedGroup, isAssignment, isRuleCall, isCrossReference, isTerminalRule } from '../../../language/generated/ast.js';
import { getTypeNameWithoutError, isPrimitiveGrammarType } from '../../internal-grammar-util.js';
import { mergePropertyTypes } from './plain-types.js';
import { isOptionalCardinality, terminalRegex, getRuleType } from '../../../utils/grammar-util.js';
Expand Down
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 { Action, Assignment, TypeAttribute } from '../../generated/ast.js';
import type { Action, Assignment, TypeAttribute } from '../../../language/generated/ast.js';
import type { AstTypes, Property, PropertyType } from './types.js';
import { InterfaceType, UnionType } from './types.js';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import { expandToNode, expandToStringWithNL, joinToNode, toString, type Generated } from '../../../generate/index.js';
import type { CstNode } from '../../../syntax-tree.js';
import type { Action, Assignment, TypeAttribute } from '../../generated/ast.js';
import type { Action, Assignment, TypeAttribute } from '../../../language/generated/ast.js';
import { distinctAndSorted } from '../types-util.js';

export interface Property {
Expand Down
Loading

0 comments on commit fbf06f6

Please sign in to comment.