Aktueller Stand

This commit is contained in:
2026-01-23 01:33:35 +01:00
parent 082dc5e110
commit 2766dd12c5
10109 changed files with 1578841 additions and 77685 deletions

View File

@@ -0,0 +1,2 @@
import { Rule, GenerateDtsOptions } from "@chevrotain/types";
export declare function generateCstDts(productions: Record<string, Rule>, options?: GenerateDtsOptions): string;

View File

@@ -0,0 +1,27 @@
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateCstDts = void 0;
var model_1 = require("./model");
var generate_1 = require("./generate");
var defaultOptions = {
includeVisitorInterface: true,
visitorInterfaceName: "ICstNodeVisitor"
};
function generateCstDts(productions, options) {
var effectiveOptions = __assign(__assign({}, defaultOptions), options);
var model = (0, model_1.buildModel)(productions);
return (0, generate_1.genDts)(model, effectiveOptions);
}
exports.generateCstDts = generateCstDts;
//# sourceMappingURL=api.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,iCAAoC;AACpC,uCAAmC;AAEnC,IAAM,cAAc,GAAiC;IACnD,uBAAuB,EAAE,IAAI;IAC7B,oBAAoB,EAAE,iBAAiB;CACxC,CAAA;AAED,SAAgB,cAAc,CAC5B,WAAiC,EACjC,OAA4B;IAE5B,IAAM,gBAAgB,yBACjB,cAAc,GACd,OAAO,CACX,CAAA;IAED,IAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,WAAW,CAAC,CAAA;IAErC,OAAO,IAAA,iBAAM,EAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;AACxC,CAAC;AAZD,wCAYC"}

View File

@@ -0,0 +1,3 @@
import { GenerateDtsOptions } from "@chevrotain/types";
import { CstNodeTypeDefinition } from "./model";
export declare function genDts(model: CstNodeTypeDefinition[], options: Required<GenerateDtsOptions>): string;

View File

@@ -0,0 +1,70 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.genDts = void 0;
var flatten_1 = __importDefault(require("lodash/flatten"));
var isArray_1 = __importDefault(require("lodash/isArray"));
var map_1 = __importDefault(require("lodash/map"));
var reduce_1 = __importDefault(require("lodash/reduce"));
var uniq_1 = __importDefault(require("lodash/uniq"));
var upperFirst_1 = __importDefault(require("lodash/upperFirst"));
function genDts(model, options) {
var contentParts = [];
contentParts = contentParts.concat("import type { CstNode, ICstVisitor, IToken } from \"chevrotain\";");
contentParts = contentParts.concat((0, flatten_1.default)((0, map_1.default)(model, function (node) { return genCstNodeTypes(node); })));
if (options.includeVisitorInterface) {
contentParts = contentParts.concat(genVisitor(options.visitorInterfaceName, model));
}
return contentParts.join("\n\n") + "\n";
}
exports.genDts = genDts;
function genCstNodeTypes(node) {
var nodeCstInterface = genNodeInterface(node);
var nodeChildrenInterface = genNodeChildrenType(node);
return [nodeCstInterface, nodeChildrenInterface];
}
function genNodeInterface(node) {
var nodeInterfaceName = getNodeInterfaceName(node.name);
var childrenTypeName = getNodeChildrenTypeName(node.name);
return "export interface ".concat(nodeInterfaceName, " extends CstNode {\n name: \"").concat(node.name, "\";\n children: ").concat(childrenTypeName, ";\n}");
}
function genNodeChildrenType(node) {
var typeName = getNodeChildrenTypeName(node.name);
return "export type ".concat(typeName, " = {\n ").concat((0, map_1.default)(node.properties, function (property) { return genChildProperty(property); }).join("\n "), "\n};");
}
function genChildProperty(prop) {
var typeName = buildTypeString(prop.type);
return "".concat(prop.name).concat(prop.optional ? "?" : "", ": ").concat(typeName, "[];");
}
function genVisitor(name, nodes) {
return "export interface ".concat(name, "<IN, OUT> extends ICstVisitor<IN, OUT> {\n ").concat((0, map_1.default)(nodes, function (node) { return genVisitorFunction(node); }).join("\n "), "\n}");
}
function genVisitorFunction(node) {
var childrenTypeName = getNodeChildrenTypeName(node.name);
return "".concat(node.name, "(children: ").concat(childrenTypeName, ", param?: IN): OUT;");
}
function buildTypeString(type) {
if ((0, isArray_1.default)(type)) {
var typeNames = (0, uniq_1.default)((0, map_1.default)(type, function (t) { return getTypeString(t); }));
var typeString = (0, reduce_1.default)(typeNames, function (sum, t) { return sum + " | " + t; });
return "(" + typeString + ")";
}
else {
return getTypeString(type);
}
}
function getTypeString(type) {
if (type.kind === "token") {
return "IToken";
}
return getNodeInterfaceName(type.name);
}
function getNodeInterfaceName(ruleName) {
return (0, upperFirst_1.default)(ruleName) + "CstNode";
}
function getNodeChildrenTypeName(ruleName) {
return (0, upperFirst_1.default)(ruleName) + "CstChildren";
}
//# sourceMappingURL=generate.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/generate.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,19 @@
import type { Rule } from "@chevrotain/types";
export declare function buildModel(productions: Record<string, Rule>): CstNodeTypeDefinition[];
export type CstNodeTypeDefinition = {
name: string;
properties: PropertyTypeDefinition[];
};
export type PropertyTypeDefinition = {
name: string;
type: PropertyArrayType;
optional: boolean;
};
export type PropertyArrayType = TokenArrayType | RuleArrayType | (TokenArrayType | RuleArrayType)[];
export type TokenArrayType = {
kind: "token";
};
export type RuleArrayType = {
kind: "rule";
name: string;
};

View File

@@ -0,0 +1,129 @@
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildModel = void 0;
var gast_1 = require("@chevrotain/gast");
var map_1 = __importDefault(require("lodash/map"));
var flatten_1 = __importDefault(require("lodash/flatten"));
var values_1 = __importDefault(require("lodash/values"));
var some_1 = __importDefault(require("lodash/some"));
var groupBy_1 = __importDefault(require("lodash/groupBy"));
var assign_1 = __importDefault(require("lodash/assign"));
function buildModel(productions) {
var generator = new CstNodeDefinitionGenerator();
var allRules = (0, values_1.default)(productions);
return (0, map_1.default)(allRules, function (rule) { return generator.visitRule(rule); });
}
exports.buildModel = buildModel;
var CstNodeDefinitionGenerator = /** @class */ (function (_super) {
__extends(CstNodeDefinitionGenerator, _super);
function CstNodeDefinitionGenerator() {
return _super !== null && _super.apply(this, arguments) || this;
}
CstNodeDefinitionGenerator.prototype.visitRule = function (node) {
var rawElements = this.visitEach(node.definition);
var grouped = (0, groupBy_1.default)(rawElements, function (el) { return el.propertyName; });
var properties = (0, map_1.default)(grouped, function (group, propertyName) {
var allNullable = !(0, some_1.default)(group, function (el) { return !el.canBeNull; });
// In an alternation with a label a property name can have
// multiple types.
var propertyType = group[0].type;
if (group.length > 1) {
propertyType = (0, map_1.default)(group, function (g) { return g.type; });
}
return {
name: propertyName,
type: propertyType,
optional: allNullable
};
});
return {
name: node.name,
properties: properties
};
};
CstNodeDefinitionGenerator.prototype.visitAlternative = function (node) {
return this.visitEachAndOverrideWith(node.definition, { canBeNull: true });
};
CstNodeDefinitionGenerator.prototype.visitOption = function (node) {
return this.visitEachAndOverrideWith(node.definition, { canBeNull: true });
};
CstNodeDefinitionGenerator.prototype.visitRepetition = function (node) {
return this.visitEachAndOverrideWith(node.definition, { canBeNull: true });
};
CstNodeDefinitionGenerator.prototype.visitRepetitionMandatory = function (node) {
return this.visitEach(node.definition);
};
CstNodeDefinitionGenerator.prototype.visitRepetitionMandatoryWithSeparator = function (node) {
return this.visitEach(node.definition).concat({
propertyName: node.separator.name,
canBeNull: true,
type: getType(node.separator)
});
};
CstNodeDefinitionGenerator.prototype.visitRepetitionWithSeparator = function (node) {
return this.visitEachAndOverrideWith(node.definition, {
canBeNull: true
}).concat({
propertyName: node.separator.name,
canBeNull: true,
type: getType(node.separator)
});
};
CstNodeDefinitionGenerator.prototype.visitAlternation = function (node) {
return this.visitEachAndOverrideWith(node.definition, { canBeNull: true });
};
CstNodeDefinitionGenerator.prototype.visitTerminal = function (node) {
return [
{
propertyName: node.label || node.terminalType.name,
canBeNull: false,
type: getType(node)
}
];
};
CstNodeDefinitionGenerator.prototype.visitNonTerminal = function (node) {
return [
{
propertyName: node.label || node.nonTerminalName,
canBeNull: false,
type: getType(node)
}
];
};
CstNodeDefinitionGenerator.prototype.visitEachAndOverrideWith = function (definition, override) {
return (0, map_1.default)(this.visitEach(definition), function (definition) { return (0, assign_1.default)({}, definition, override); });
};
CstNodeDefinitionGenerator.prototype.visitEach = function (definition) {
var _this = this;
return (0, flatten_1.default)((0, map_1.default)(definition, function (definition) { return _this.visit(definition); }));
};
return CstNodeDefinitionGenerator;
}(gast_1.GAstVisitor));
function getType(production) {
if (production instanceof gast_1.NonTerminal) {
return {
kind: "rule",
name: production.referencedRule.name
};
}
return { kind: "token" };
}
//# sourceMappingURL=model.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"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"}