langium-cli
Advanced tools
Comparing version 0.4.0 to 0.5.0-next.f2b3802
@@ -14,2 +14,3 @@ "use strict"; | ||
const langium_1 = require("langium"); | ||
const node_1 = require("langium/node"); | ||
const path_1 = __importDefault(require("path")); | ||
@@ -24,3 +25,3 @@ const vscode_uri_1 = require("vscode-uri"); | ||
const parser_validation_1 = require("./parser-validation"); | ||
const { shared: sharedServices, grammar: grammarServices } = (0, langium_1.createLangiumGrammarServices)(); | ||
const { shared: sharedServices, grammar: grammarServices } = (0, langium_1.createLangiumGrammarServices)(node_1.NodeFileSystem); | ||
const documents = sharedServices.workspace.LangiumDocuments; | ||
@@ -146,3 +147,3 @@ function eagerLoad(document, uris = new Set()) { | ||
// Create and validate the in-memory parser | ||
const parserAnalysis = (0, parser_validation_1.validateParser)(grammar, config, configMap, documents); | ||
const parserAnalysis = (0, parser_validation_1.validateParser)(grammar, config, configMap, grammarServices); | ||
if (parserAnalysis instanceof Error) { | ||
@@ -149,0 +150,0 @@ (0, util_1.log)('error', options, parserAnalysis.toString().red); |
@@ -78,3 +78,3 @@ "use strict"; | ||
for (const rule of (0, langium_1.stream)(grammar.rules).filter(langium.isParserRule)) { | ||
collectElementKeywords(rule.alternatives, keywords); | ||
collectElementKeywords(rule.definition, keywords); | ||
} | ||
@@ -81,0 +81,0 @@ return Array.from(keywords).sort((a, b) => a.localeCompare(b)); |
@@ -6,5 +6,5 @@ /****************************************************************************** | ||
******************************************************************************/ | ||
import { Grammar, LangiumDocuments } from 'langium'; | ||
import { Grammar, LangiumGrammarServices } from 'langium'; | ||
import { LangiumConfig, LangiumLanguageConfig } from './package'; | ||
export declare function validateParser(grammar: Grammar, config: LangiumConfig, grammarConfigMap: Map<Grammar, LangiumLanguageConfig>, documents: LangiumDocuments): Error | undefined; | ||
export declare function validateParser(grammar: Grammar, config: LangiumConfig, grammarConfigMap: Map<Grammar, LangiumLanguageConfig>, grammarServices: LangiumGrammarServices): Error | undefined; | ||
//# sourceMappingURL=parser-validation.d.ts.map |
@@ -11,18 +11,11 @@ "use strict"; | ||
const package_1 = require("./package"); | ||
function validateParser(grammar, config, grammarConfigMap, documents) { | ||
function validateParser(grammar, config, grammarConfigMap, grammarServices) { | ||
var _a; | ||
const parserConfig = Object.assign(Object.assign(Object.assign({}, config.chevrotainParserConfig), (_a = grammarConfigMap.get(grammar)) === null || _a === void 0 ? void 0 : _a.chevrotainParserConfig), { skipValidations: false }); | ||
const generatedSharedModule = { | ||
AstReflection: (0, langium_1.interpretAstReflection)(grammar, documents), | ||
}; | ||
const generatedModule = { | ||
Grammar: () => grammar, | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
LanguageMetaData: () => grammarConfigMap.get(grammar), | ||
parser: { | ||
ParserConfig: () => parserConfig | ||
} | ||
}; | ||
const shared = (0, langium_1.inject)((0, langium_1.createDefaultSharedModule)(), generatedSharedModule); | ||
const services = (0, langium_1.inject)((0, langium_1.createDefaultModule)({ shared }), generatedModule); | ||
const services = (0, langium_1.createServicesForGrammar)({ | ||
grammarServices, | ||
grammar, | ||
languageMetaData: languageConfigToMetaData(grammarConfigMap.get(grammar)), | ||
parserConfig | ||
}); | ||
let parser; | ||
@@ -42,3 +35,3 @@ try { | ||
if (defError.ruleName) { | ||
const rule = findRule(defError.ruleName, grammar, documents); | ||
const rule = findRule(defError.ruleName, grammar, grammarServices.shared.workspace.LangiumDocuments); | ||
if (rule && rule.$cstNode) { | ||
@@ -61,2 +54,10 @@ const filePath = (0, package_1.getFilePath)((0, langium_1.getDocument)(rule).uri.fsPath, config); | ||
exports.validateParser = validateParser; | ||
function languageConfigToMetaData(config) { | ||
var _a; | ||
return { | ||
languageId: config.id, | ||
fileExtensions: (_a = config.fileExtensions) !== null && _a !== void 0 ? _a : [], | ||
caseInsensitive: !!config.caseInsensitive | ||
}; | ||
} | ||
function findRule(name, grammar, documents) { | ||
@@ -63,0 +64,0 @@ for (const rule of grammar.rules) { |
{ | ||
"name": "langium-cli", | ||
"version": "0.4.0", | ||
"version": "0.5.0-next.f2b3802", | ||
"description": "CLI for Langium - the language engineering tool", | ||
@@ -28,3 +28,3 @@ "homepage": "https://langium.org", | ||
"scripts": { | ||
"clean": "rimraf lib coverage", | ||
"clean": "shx rm -rf lib coverage", | ||
"build": "tsc", | ||
@@ -42,17 +42,7 @@ "watch": "tsc --watch", | ||
"jsonschema": "^1.4.0", | ||
"langium": "~0.4.0", | ||
"langium": "0.5.0-next.f2b3802", | ||
"lodash": "^4.17.21" | ||
}, | ||
"devDependencies": { | ||
"@types/fs-extra": "^9.0.11", | ||
"@types/jest": "^26.0.20", | ||
"@types/node": "^12.12.6", | ||
"@typescript-eslint/eslint-plugin": "^4.15.2", | ||
"@typescript-eslint/parser": "^4.15.2", | ||
"eslint": "^7.20.0", | ||
"eslint-plugin-header": "^3.1.1", | ||
"jest": "^26.6.3", | ||
"rimraf": "^3.0.2", | ||
"ts-jest": "^26.5.2", | ||
"typescript": "^4.6.2" | ||
"@types/fs-extra": "^9.0.13" | ||
}, | ||
@@ -59,0 +49,0 @@ "repository": { |
@@ -12,2 +12,3 @@ /****************************************************************************** | ||
} from 'langium'; | ||
import { NodeFileSystem } from 'langium/node'; | ||
import path from 'path'; | ||
@@ -30,3 +31,3 @@ import { URI } from 'vscode-uri'; | ||
const { shared: sharedServices, grammar: grammarServices } = createLangiumGrammarServices(); | ||
const { shared: sharedServices, grammar: grammarServices } = createLangiumGrammarServices(NodeFileSystem); | ||
const documents = sharedServices.workspace.LangiumDocuments; | ||
@@ -160,3 +161,3 @@ | ||
// Create and validate the in-memory parser | ||
const parserAnalysis = validateParser(grammar, config, configMap, documents); | ||
const parserAnalysis = validateParser(grammar, config, configMap, grammarServices); | ||
if (parserAnalysis instanceof Error) { | ||
@@ -163,0 +164,0 @@ log('error', options, parserAnalysis.toString().red); |
@@ -61,3 +61,3 @@ /****************************************************************************** | ||
for (const rule of stream(grammar.rules).filter(langium.isParserRule)) { | ||
collectElementKeywords(rule.alternatives, keywords); | ||
collectElementKeywords(rule.definition, keywords); | ||
} | ||
@@ -64,0 +64,0 @@ |
@@ -7,11 +7,7 @@ /****************************************************************************** | ||
import { | ||
createDefaultModule, createDefaultSharedModule, getDocument, Grammar, inject, interpretAstReflection, IParserConfig, | ||
isGrammar, isParserRule, LangiumDocuments, LangiumGeneratedServices, LangiumGeneratedSharedServices, | ||
LangiumParser, LangiumServices, LangiumSharedServices, Module, ParserRule, prepareLangiumParser | ||
} from 'langium'; | ||
import { createServicesForGrammar, getDocument, Grammar, IParserConfig, isGrammar, isParserRule, LangiumDocuments, LangiumGrammarServices, LangiumParser, LanguageMetaData, ParserRule, prepareLangiumParser } from 'langium'; | ||
import { getFilePath, LangiumConfig, LangiumLanguageConfig } from './package'; | ||
export function validateParser(grammar: Grammar, config: LangiumConfig, grammarConfigMap: Map<Grammar, LangiumLanguageConfig>, | ||
documents: LangiumDocuments): Error | undefined { | ||
grammarServices: LangiumGrammarServices): Error | undefined { | ||
const parserConfig: IParserConfig = { | ||
@@ -22,15 +18,8 @@ ...config.chevrotainParserConfig, | ||
}; | ||
const generatedSharedModule: Module<LangiumSharedServices, LangiumGeneratedSharedServices> = { | ||
AstReflection: interpretAstReflection(grammar, documents), | ||
}; | ||
const generatedModule: Module<LangiumServices, LangiumGeneratedServices> = { | ||
Grammar: () => grammar, | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
LanguageMetaData: () => grammarConfigMap.get(grammar) as any, | ||
parser: { | ||
ParserConfig: () => parserConfig | ||
} | ||
}; | ||
const shared = inject(createDefaultSharedModule(), generatedSharedModule); | ||
const services = inject(createDefaultModule({ shared }), generatedModule); | ||
const services = createServicesForGrammar({ | ||
grammarServices, | ||
grammar, | ||
languageMetaData: languageConfigToMetaData(grammarConfigMap.get(grammar)!), | ||
parserConfig | ||
}); | ||
@@ -50,3 +39,3 @@ let parser: LangiumParser | undefined; | ||
if (defError.ruleName) { | ||
const rule = findRule(defError.ruleName, grammar, documents); | ||
const rule = findRule(defError.ruleName, grammar, grammarServices.shared.workspace.LangiumDocuments); | ||
if (rule && rule.$cstNode) { | ||
@@ -69,2 +58,10 @@ const filePath = getFilePath(getDocument(rule).uri.fsPath, config); | ||
function languageConfigToMetaData(config: LangiumLanguageConfig): LanguageMetaData { | ||
return { | ||
languageId: config.id, | ||
fileExtensions: config.fileExtensions ?? [], | ||
caseInsensitive: !!config.caseInsensitive | ||
}; | ||
} | ||
function findRule(name: string, grammar: Grammar, documents: LangiumDocuments): ParserRule | undefined { | ||
@@ -71,0 +68,0 @@ for (const rule of grammar.rules) { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Unidentified License
License(Experimental) Something that seems like a license was found, but its contents could not be matched with a known license.
Found 1 instance in 1 package
Unidentified License
License(Experimental) Something that seems like a license was found, but its contents could not be matched with a known license.
Found 1 instance in 1 package
1
156516
2387
+ Addedlangium@0.5.0-next.f2b3802(transitive)
+ Addedvscode-jsonrpc@8.1.0(transitive)
+ Addedvscode-languageserver@8.1.0(transitive)
+ Addedvscode-languageserver-protocol@3.17.3(transitive)
+ Addedvscode-languageserver-types@3.17.3(transitive)
- Removedlangium@0.4.0(transitive)
- Removedvscode-jsonrpc@6.0.0(transitive)
- Removedvscode-languageserver@7.0.0(transitive)
- Removedvscode-languageserver-protocol@3.16.0(transitive)
- Removedvscode-languageserver-types@3.16.0(transitive)
Updatedlangium@0.5.0-next.f2b3802