/****************************************************************************** * This file was generated by langium-cli 4.2.0. * DO NOT EDIT MANUALLY! ******************************************************************************/ /* eslint-disable */ import * as langium from '../../syntax-tree.js'; export const LangiumGrammarTerminals = { ID: /\^?[_a-zA-Z][\w_]*/, STRING: /"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/, NUMBER: /NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/, RegexLiteral: /\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/, WS: /\s+/, ML_COMMENT: /\/\*[\s\S]*?\*\//, SL_COMMENT: /\/\/[^\n\r]*/, }; export type LangiumGrammarTerminalNames = keyof typeof LangiumGrammarTerminals; export type LangiumGrammarKeywordNames = | "!" | "&" | "(" | ")" | "*" | "+" | "+=" | "," | "->" | "." | ".." | ":" | ";" | "<" | "=" | "=>" | ">" | "?" | "?!" | "?; } export const Action = { $type: 'Action', cardinality: 'cardinality', feature: 'feature', inferredType: 'inferredType', operator: 'operator', type: 'type' } as const; export function isAction(item: unknown): item is Action { return reflection.isInstance(item, Action.$type); } export interface Alternatives extends AbstractElement { readonly $type: 'Alternatives'; elements: Array; } export const Alternatives = { $type: 'Alternatives', cardinality: 'cardinality', elements: 'elements' } as const; export function isAlternatives(item: unknown): item is Alternatives { return reflection.isInstance(item, Alternatives.$type); } export interface ArrayLiteral extends langium.AstNode { readonly $container: ArrayLiteral | TypeAttribute; readonly $type: 'ArrayLiteral'; elements: Array; } export const ArrayLiteral = { $type: 'ArrayLiteral', elements: 'elements' } as const; export function isArrayLiteral(item: unknown): item is ArrayLiteral { return reflection.isInstance(item, ArrayLiteral.$type); } export interface ArrayType extends langium.AstNode { readonly $container: ArrayType | ReferenceType | Type | TypeAttribute | UnionType; readonly $type: 'ArrayType'; elementType: TypeDefinition; } export const ArrayType = { $type: 'ArrayType', elementType: 'elementType' } as const; export function isArrayType(item: unknown): item is ArrayType { return reflection.isInstance(item, ArrayType.$type); } export interface Assignment extends AbstractElement { readonly $type: 'Assignment'; feature: FeatureName; operator: '+=' | '=' | '?='; predicate?: '->' | '=>'; terminal: AbstractElement; } export const Assignment = { $type: 'Assignment', cardinality: 'cardinality', feature: 'feature', operator: 'operator', predicate: 'predicate', terminal: 'terminal' } as const; export function isAssignment(item: unknown): item is Assignment { return reflection.isInstance(item, Assignment.$type); } export type Associativity = 'left' | 'right'; export interface BooleanLiteral extends langium.AstNode { readonly $container: ArrayLiteral | Conjunction | Disjunction | Group | NamedArgument | Negation | TypeAttribute; readonly $type: 'BooleanLiteral'; true: boolean; } export const BooleanLiteral = { $type: 'BooleanLiteral', true: 'true' } as const; export function isBooleanLiteral(item: unknown): item is BooleanLiteral { return reflection.isInstance(item, BooleanLiteral.$type); } export interface CharacterRange extends TerminalElement { readonly $type: 'CharacterRange'; left: Keyword; right?: Keyword; } export const CharacterRange = { $type: 'CharacterRange', cardinality: 'cardinality', left: 'left', lookahead: 'lookahead', parenthesized: 'parenthesized', right: 'right' } as const; export function isCharacterRange(item: unknown): item is CharacterRange { return reflection.isInstance(item, CharacterRange.$type); } export type Condition = BooleanLiteral | Conjunction | Disjunction | Negation | ParameterReference; export const Condition = { $type: 'Condition' } as const; export function isCondition(item: unknown): item is Condition { return reflection.isInstance(item, Condition.$type); } export interface Conjunction extends langium.AstNode { readonly $container: Conjunction | Disjunction | Group | NamedArgument | Negation; readonly $type: 'Conjunction'; left: Condition; right: Condition; } export const Conjunction = { $type: 'Conjunction', left: 'left', right: 'right' } as const; export function isConjunction(item: unknown): item is Conjunction { return reflection.isInstance(item, Conjunction.$type); } export interface CrossReference extends AbstractElement { readonly $type: 'CrossReference'; deprecatedSyntax: boolean; isMulti: boolean; terminal?: AbstractElement; type: langium.Reference; } export const CrossReference = { $type: 'CrossReference', cardinality: 'cardinality', deprecatedSyntax: 'deprecatedSyntax', isMulti: 'isMulti', terminal: 'terminal', type: 'type' } as const; export function isCrossReference(item: unknown): item is CrossReference { return reflection.isInstance(item, CrossReference.$type); } export interface Disjunction extends langium.AstNode { readonly $container: Conjunction | Disjunction | Group | NamedArgument | Negation; readonly $type: 'Disjunction'; left: Condition; right: Condition; } export const Disjunction = { $type: 'Disjunction', left: 'left', right: 'right' } as const; export function isDisjunction(item: unknown): item is Disjunction { return reflection.isInstance(item, Disjunction.$type); } export interface EndOfFile extends AbstractElement { readonly $type: 'EndOfFile'; } export const EndOfFile = { $type: 'EndOfFile', cardinality: 'cardinality' } as const; export function isEndOfFile(item: unknown): item is EndOfFile { return reflection.isInstance(item, EndOfFile.$type); } export type FeatureName = 'assoc' | 'current' | 'entry' | 'extends' | 'false' | 'fragment' | 'grammar' | 'hidden' | 'import' | 'infer' | 'infers' | 'infix' | 'interface' | 'left' | 'on' | 'returns' | 'right' | 'terminal' | 'true' | 'type' | 'with' | PrimitiveType | string; export interface Grammar extends langium.AstNode { readonly $type: 'Grammar'; imports: Array; interfaces: Array; isDeclared: boolean; name?: string; rules: Array; types: Array; } export const Grammar = { $type: 'Grammar', imports: 'imports', interfaces: 'interfaces', isDeclared: 'isDeclared', name: 'name', rules: 'rules', types: 'types' } as const; export function isGrammar(item: unknown): item is Grammar { return reflection.isInstance(item, Grammar.$type); } export interface GrammarImport extends langium.AstNode { readonly $container: Grammar; readonly $type: 'GrammarImport'; path: string; } export const GrammarImport = { $type: 'GrammarImport', path: 'path' } as const; export function isGrammarImport(item: unknown): item is GrammarImport { return reflection.isInstance(item, GrammarImport.$type); } export interface Group extends AbstractElement { readonly $type: 'Group'; elements: Array; guardCondition?: Condition; predicate?: '->' | '=>'; } export const Group = { $type: 'Group', cardinality: 'cardinality', elements: 'elements', guardCondition: 'guardCondition', predicate: 'predicate' } as const; export function isGroup(item: unknown): item is Group { return reflection.isInstance(item, Group.$type); } export interface InferredType extends langium.AstNode { readonly $container: Action | InfixRule | ParserRule; readonly $type: 'InferredType'; name: string; } export const InferredType = { $type: 'InferredType', name: 'name' } as const; export function isInferredType(item: unknown): item is InferredType { return reflection.isInstance(item, InferredType.$type); } export interface InfixRule extends langium.AstNode { readonly $container: Grammar; readonly $type: 'InfixRule'; call: RuleCall; dataType?: PrimitiveType; inferredType?: InferredType; name: string; operators: InfixRuleOperators; parameters: Array; returnType?: langium.Reference; } export const InfixRule = { $type: 'InfixRule', call: 'call', dataType: 'dataType', inferredType: 'inferredType', name: 'name', operators: 'operators', parameters: 'parameters', returnType: 'returnType' } as const; export function isInfixRule(item: unknown): item is InfixRule { return reflection.isInstance(item, InfixRule.$type); } export interface InfixRuleOperatorList extends langium.AstNode { readonly $container: InfixRuleOperators; readonly $type: 'InfixRuleOperatorList'; associativity?: Associativity; operators: Array; } export const InfixRuleOperatorList = { $type: 'InfixRuleOperatorList', associativity: 'associativity', operators: 'operators' } as const; export function isInfixRuleOperatorList(item: unknown): item is InfixRuleOperatorList { return reflection.isInstance(item, InfixRuleOperatorList.$type); } export interface InfixRuleOperators extends langium.AstNode { readonly $container: InfixRule; readonly $type: 'InfixRuleOperators'; precedences: Array; } export const InfixRuleOperators = { $type: 'InfixRuleOperators', precedences: 'precedences' } as const; export function isInfixRuleOperators(item: unknown): item is InfixRuleOperators { return reflection.isInstance(item, InfixRuleOperators.$type); } export interface Interface extends langium.AstNode { readonly $container: Grammar; readonly $type: 'Interface'; attributes: Array; name: string; superTypes: Array>; } export const Interface = { $type: 'Interface', attributes: 'attributes', name: 'name', superTypes: 'superTypes' } as const; export function isInterface(item: unknown): item is Interface { return reflection.isInstance(item, Interface.$type); } export interface Keyword extends AbstractElement { readonly $container: CharacterRange | InfixRuleOperatorList; readonly $type: 'Keyword'; predicate?: '->' | '=>'; value: string; } export const Keyword = { $type: 'Keyword', cardinality: 'cardinality', predicate: 'predicate', value: 'value' } as const; export function isKeyword(item: unknown): item is Keyword { return reflection.isInstance(item, Keyword.$type); } export interface NamedArgument extends langium.AstNode { readonly $container: RuleCall; readonly $type: 'NamedArgument'; calledByName: boolean; parameter?: langium.Reference; value: Condition; } export const NamedArgument = { $type: 'NamedArgument', calledByName: 'calledByName', parameter: 'parameter', value: 'value' } as const; export function isNamedArgument(item: unknown): item is NamedArgument { return reflection.isInstance(item, NamedArgument.$type); } export interface NegatedToken extends TerminalElement { readonly $type: 'NegatedToken'; terminal: AbstractElement; } export const NegatedToken = { $type: 'NegatedToken', cardinality: 'cardinality', lookahead: 'lookahead', parenthesized: 'parenthesized', terminal: 'terminal' } as const; export function isNegatedToken(item: unknown): item is NegatedToken { return reflection.isInstance(item, NegatedToken.$type); } export interface Negation extends langium.AstNode { readonly $container: Conjunction | Disjunction | Group | NamedArgument | Negation; readonly $type: 'Negation'; value: Condition; } export const Negation = { $type: 'Negation', value: 'value' } as const; export function isNegation(item: unknown): item is Negation { return reflection.isInstance(item, Negation.$type); } export interface NumberLiteral extends langium.AstNode { readonly $container: ArrayLiteral | TypeAttribute; readonly $type: 'NumberLiteral'; value: number; } export const NumberLiteral = { $type: 'NumberLiteral', value: 'value' } as const; export function isNumberLiteral(item: unknown): item is NumberLiteral { return reflection.isInstance(item, NumberLiteral.$type); } export interface Parameter extends langium.AstNode { readonly $container: InfixRule | ParserRule; readonly $type: 'Parameter'; name: string; } export const Parameter = { $type: 'Parameter', name: 'name' } as const; export function isParameter(item: unknown): item is Parameter { return reflection.isInstance(item, Parameter.$type); } export interface ParameterReference extends langium.AstNode { readonly $container: Conjunction | Disjunction | Group | NamedArgument | Negation; readonly $type: 'ParameterReference'; parameter: langium.Reference; } export const ParameterReference = { $type: 'ParameterReference', parameter: 'parameter' } as const; export function isParameterReference(item: unknown): item is ParameterReference { return reflection.isInstance(item, ParameterReference.$type); } export interface ParserRule extends langium.AstNode { readonly $container: Grammar; readonly $type: 'ParserRule'; dataType?: PrimitiveType; definition: AbstractElement; entry: boolean; fragment: boolean; inferredType?: InferredType; name: string; parameters: Array; returnType?: langium.Reference; } export const ParserRule = { $type: 'ParserRule', dataType: 'dataType', definition: 'definition', entry: 'entry', fragment: 'fragment', inferredType: 'inferredType', name: 'name', parameters: 'parameters', returnType: 'returnType' } as const; export function isParserRule(item: unknown): item is ParserRule { return reflection.isInstance(item, ParserRule.$type); } export type PrimitiveType = 'Date' | 'bigint' | 'boolean' | 'number' | 'string'; export interface ReferenceType extends langium.AstNode { readonly $container: ArrayType | ReferenceType | Type | TypeAttribute | UnionType; readonly $type: 'ReferenceType'; isMulti: boolean; referenceType: TypeDefinition; } export const ReferenceType = { $type: 'ReferenceType', isMulti: 'isMulti', referenceType: 'referenceType' } as const; export function isReferenceType(item: unknown): item is ReferenceType { return reflection.isInstance(item, ReferenceType.$type); } export interface RegexToken extends TerminalElement { readonly $type: 'RegexToken'; regex: string; } export const RegexToken = { $type: 'RegexToken', cardinality: 'cardinality', lookahead: 'lookahead', parenthesized: 'parenthesized', regex: 'regex' } as const; export function isRegexToken(item: unknown): item is RegexToken { return reflection.isInstance(item, RegexToken.$type); } export interface ReturnType extends langium.AstNode { readonly $container: TerminalRule; readonly $type: 'ReturnType'; name: PrimitiveType | string; } export const ReturnType = { $type: 'ReturnType', name: 'name' } as const; export function isReturnType(item: unknown): item is ReturnType { return reflection.isInstance(item, ReturnType.$type); } export interface RuleCall extends AbstractElement { readonly $container: InfixRule; readonly $type: 'RuleCall'; arguments: Array; predicate?: '->' | '=>'; rule: langium.Reference; } export const RuleCall = { $type: 'RuleCall', arguments: 'arguments', cardinality: 'cardinality', predicate: 'predicate', rule: 'rule' } as const; export function isRuleCall(item: unknown): item is RuleCall { return reflection.isInstance(item, RuleCall.$type); } export interface SimpleType extends langium.AstNode { readonly $container: ArrayType | ReferenceType | Type | TypeAttribute | UnionType; readonly $type: 'SimpleType'; primitiveType?: PrimitiveType; stringType?: string; typeRef?: langium.Reference; } export const SimpleType = { $type: 'SimpleType', primitiveType: 'primitiveType', stringType: 'stringType', typeRef: 'typeRef' } as const; export function isSimpleType(item: unknown): item is SimpleType { return reflection.isInstance(item, SimpleType.$type); } export interface StringLiteral extends langium.AstNode { readonly $container: ArrayLiteral | TypeAttribute; readonly $type: 'StringLiteral'; value: string; } export const StringLiteral = { $type: 'StringLiteral', value: 'value' } as const; export function isStringLiteral(item: unknown): item is StringLiteral { return reflection.isInstance(item, StringLiteral.$type); } export interface TerminalAlternatives extends TerminalElement { readonly $type: 'TerminalAlternatives'; elements: Array; } export const TerminalAlternatives = { $type: 'TerminalAlternatives', cardinality: 'cardinality', elements: 'elements', lookahead: 'lookahead', parenthesized: 'parenthesized' } as const; export function isTerminalAlternatives(item: unknown): item is TerminalAlternatives { return reflection.isInstance(item, TerminalAlternatives.$type); } export interface TerminalElement extends AbstractElement { readonly $type: 'CharacterRange' | 'NegatedToken' | 'RegexToken' | 'TerminalAlternatives' | 'TerminalElement' | 'TerminalGroup' | 'TerminalRuleCall' | 'UntilToken' | 'Wildcard'; lookahead?: '?!' | '?; } export const TerminalGroup = { $type: 'TerminalGroup', cardinality: 'cardinality', elements: 'elements', lookahead: 'lookahead', parenthesized: 'parenthesized' } as const; export function isTerminalGroup(item: unknown): item is TerminalGroup { return reflection.isInstance(item, TerminalGroup.$type); } export interface TerminalRule extends langium.AstNode { readonly $container: Grammar; readonly $type: 'TerminalRule'; definition: TerminalElement; fragment: boolean; hidden: boolean; name: string; type?: ReturnType; } export const TerminalRule = { $type: 'TerminalRule', definition: 'definition', fragment: 'fragment', hidden: 'hidden', name: 'name', type: 'type' } as const; export function isTerminalRule(item: unknown): item is TerminalRule { return reflection.isInstance(item, TerminalRule.$type); } export interface TerminalRuleCall extends TerminalElement { readonly $type: 'TerminalRuleCall'; rule: langium.Reference; } export const TerminalRuleCall = { $type: 'TerminalRuleCall', cardinality: 'cardinality', lookahead: 'lookahead', parenthesized: 'parenthesized', rule: 'rule' } as const; export function isTerminalRuleCall(item: unknown): item is TerminalRuleCall { return reflection.isInstance(item, TerminalRuleCall.$type); } export interface Type extends langium.AstNode { readonly $container: Grammar; readonly $type: 'Type'; name: string; type: TypeDefinition; } export const Type = { $type: 'Type', name: 'name', type: 'type' } as const; export function isType(item: unknown): item is Type { return reflection.isInstance(item, Type.$type); } export interface TypeAttribute extends langium.AstNode { readonly $container: Interface; readonly $type: 'TypeAttribute'; defaultValue?: ValueLiteral; isOptional: boolean; name: FeatureName; type: TypeDefinition; } export const TypeAttribute = { $type: 'TypeAttribute', defaultValue: 'defaultValue', isOptional: 'isOptional', name: 'name', type: 'type' } as const; export function isTypeAttribute(item: unknown): item is TypeAttribute { return reflection.isInstance(item, TypeAttribute.$type); } export type TypeDefinition = ArrayType | ReferenceType | SimpleType | UnionType; export const TypeDefinition = { $type: 'TypeDefinition' } as const; export function isTypeDefinition(item: unknown): item is TypeDefinition { return reflection.isInstance(item, TypeDefinition.$type); } export interface UnionType extends langium.AstNode { readonly $container: ArrayType | ReferenceType | Type | TypeAttribute | UnionType; readonly $type: 'UnionType'; types: Array; } export const UnionType = { $type: 'UnionType', types: 'types' } as const; export function isUnionType(item: unknown): item is UnionType { return reflection.isInstance(item, UnionType.$type); } export interface UnorderedGroup extends AbstractElement { readonly $type: 'UnorderedGroup'; elements: Array; } export const UnorderedGroup = { $type: 'UnorderedGroup', cardinality: 'cardinality', elements: 'elements' } as const; export function isUnorderedGroup(item: unknown): item is UnorderedGroup { return reflection.isInstance(item, UnorderedGroup.$type); } export interface UntilToken extends TerminalElement { readonly $type: 'UntilToken'; terminal: AbstractElement; } export const UntilToken = { $type: 'UntilToken', cardinality: 'cardinality', lookahead: 'lookahead', parenthesized: 'parenthesized', terminal: 'terminal' } as const; export function isUntilToken(item: unknown): item is UntilToken { return reflection.isInstance(item, UntilToken.$type); } export type ValueLiteral = ArrayLiteral | BooleanLiteral | NumberLiteral | StringLiteral; export const ValueLiteral = { $type: 'ValueLiteral' } as const; export function isValueLiteral(item: unknown): item is ValueLiteral { return reflection.isInstance(item, ValueLiteral.$type); } export interface Wildcard extends TerminalElement { readonly $type: 'Wildcard'; } export const Wildcard = { $type: 'Wildcard', cardinality: 'cardinality', lookahead: 'lookahead', parenthesized: 'parenthesized' } as const; export function isWildcard(item: unknown): item is Wildcard { return reflection.isInstance(item, Wildcard.$type); } export type LangiumGrammarAstType = { AbstractElement: AbstractElement AbstractParserRule: AbstractParserRule AbstractRule: AbstractRule AbstractType: AbstractType Action: Action Alternatives: Alternatives ArrayLiteral: ArrayLiteral ArrayType: ArrayType Assignment: Assignment BooleanLiteral: BooleanLiteral CharacterRange: CharacterRange Condition: Condition Conjunction: Conjunction CrossReference: CrossReference Disjunction: Disjunction EndOfFile: EndOfFile Grammar: Grammar GrammarImport: GrammarImport Group: Group InferredType: InferredType InfixRule: InfixRule InfixRuleOperatorList: InfixRuleOperatorList InfixRuleOperators: InfixRuleOperators Interface: Interface Keyword: Keyword NamedArgument: NamedArgument NegatedToken: NegatedToken Negation: Negation NumberLiteral: NumberLiteral Parameter: Parameter ParameterReference: ParameterReference ParserRule: ParserRule ReferenceType: ReferenceType RegexToken: RegexToken ReturnType: ReturnType RuleCall: RuleCall SimpleType: SimpleType StringLiteral: StringLiteral TerminalAlternatives: TerminalAlternatives TerminalElement: TerminalElement TerminalGroup: TerminalGroup TerminalRule: TerminalRule TerminalRuleCall: TerminalRuleCall Type: Type TypeAttribute: TypeAttribute TypeDefinition: TypeDefinition UnionType: UnionType UnorderedGroup: UnorderedGroup UntilToken: UntilToken ValueLiteral: ValueLiteral Wildcard: Wildcard } export class LangiumGrammarAstReflection extends langium.AbstractAstReflection { override readonly types = { AbstractElement: { name: AbstractElement.$type, properties: { cardinality: { name: AbstractElement.cardinality } }, superTypes: [] }, AbstractParserRule: { name: AbstractParserRule.$type, properties: { }, superTypes: [AbstractRule.$type, AbstractType.$type] }, AbstractRule: { name: AbstractRule.$type, properties: { }, superTypes: [] }, AbstractType: { name: AbstractType.$type, properties: { }, superTypes: [] }, Action: { name: Action.$type, properties: { cardinality: { name: Action.cardinality }, feature: { name: Action.feature }, inferredType: { name: Action.inferredType }, operator: { name: Action.operator }, type: { name: Action.type, referenceType: AbstractType.$type } }, superTypes: [AbstractElement.$type] }, Alternatives: { name: Alternatives.$type, properties: { cardinality: { name: Alternatives.cardinality }, elements: { name: Alternatives.elements, defaultValue: [] } }, superTypes: [AbstractElement.$type] }, ArrayLiteral: { name: ArrayLiteral.$type, properties: { elements: { name: ArrayLiteral.elements, defaultValue: [] } }, superTypes: [ValueLiteral.$type] }, ArrayType: { name: ArrayType.$type, properties: { elementType: { name: ArrayType.elementType } }, superTypes: [TypeDefinition.$type] }, Assignment: { name: Assignment.$type, properties: { cardinality: { name: Assignment.cardinality }, feature: { name: Assignment.feature }, operator: { name: Assignment.operator }, predicate: { name: Assignment.predicate }, terminal: { name: Assignment.terminal } }, superTypes: [AbstractElement.$type] }, BooleanLiteral: { name: BooleanLiteral.$type, properties: { true: { name: BooleanLiteral.true, defaultValue: false } }, superTypes: [Condition.$type, ValueLiteral.$type] }, CharacterRange: { name: CharacterRange.$type, properties: { cardinality: { name: CharacterRange.cardinality }, left: { name: CharacterRange.left }, lookahead: { name: CharacterRange.lookahead }, parenthesized: { name: CharacterRange.parenthesized, defaultValue: false }, right: { name: CharacterRange.right } }, superTypes: [TerminalElement.$type] }, Condition: { name: Condition.$type, properties: { }, superTypes: [] }, Conjunction: { name: Conjunction.$type, properties: { left: { name: Conjunction.left }, right: { name: Conjunction.right } }, superTypes: [Condition.$type] }, CrossReference: { name: CrossReference.$type, properties: { cardinality: { name: CrossReference.cardinality }, deprecatedSyntax: { name: CrossReference.deprecatedSyntax, defaultValue: false }, isMulti: { name: CrossReference.isMulti, defaultValue: false }, terminal: { name: CrossReference.terminal }, type: { name: CrossReference.type, referenceType: AbstractType.$type } }, superTypes: [AbstractElement.$type] }, Disjunction: { name: Disjunction.$type, properties: { left: { name: Disjunction.left }, right: { name: Disjunction.right } }, superTypes: [Condition.$type] }, EndOfFile: { name: EndOfFile.$type, properties: { cardinality: { name: EndOfFile.cardinality } }, superTypes: [AbstractElement.$type] }, Grammar: { name: Grammar.$type, properties: { imports: { name: Grammar.imports, defaultValue: [] }, interfaces: { name: Grammar.interfaces, defaultValue: [] }, isDeclared: { name: Grammar.isDeclared, defaultValue: false }, name: { name: Grammar.name }, rules: { name: Grammar.rules, defaultValue: [] }, types: { name: Grammar.types, defaultValue: [] } }, superTypes: [] }, GrammarImport: { name: GrammarImport.$type, properties: { path: { name: GrammarImport.path } }, superTypes: [] }, Group: { name: Group.$type, properties: { cardinality: { name: Group.cardinality }, elements: { name: Group.elements, defaultValue: [] }, guardCondition: { name: Group.guardCondition }, predicate: { name: Group.predicate } }, superTypes: [AbstractElement.$type] }, InferredType: { name: InferredType.$type, properties: { name: { name: InferredType.name } }, superTypes: [AbstractType.$type] }, InfixRule: { name: InfixRule.$type, properties: { call: { name: InfixRule.call }, dataType: { name: InfixRule.dataType }, inferredType: { name: InfixRule.inferredType }, name: { name: InfixRule.name }, operators: { name: InfixRule.operators }, parameters: { name: InfixRule.parameters, defaultValue: [] }, returnType: { name: InfixRule.returnType, referenceType: AbstractType.$type } }, superTypes: [AbstractParserRule.$type] }, InfixRuleOperatorList: { name: InfixRuleOperatorList.$type, properties: { associativity: { name: InfixRuleOperatorList.associativity }, operators: { name: InfixRuleOperatorList.operators, defaultValue: [] } }, superTypes: [] }, InfixRuleOperators: { name: InfixRuleOperators.$type, properties: { precedences: { name: InfixRuleOperators.precedences, defaultValue: [] } }, superTypes: [] }, Interface: { name: Interface.$type, properties: { attributes: { name: Interface.attributes, defaultValue: [] }, name: { name: Interface.name }, superTypes: { name: Interface.superTypes, defaultValue: [], referenceType: AbstractType.$type } }, superTypes: [AbstractType.$type] }, Keyword: { name: Keyword.$type, properties: { cardinality: { name: Keyword.cardinality }, predicate: { name: Keyword.predicate }, value: { name: Keyword.value } }, superTypes: [AbstractElement.$type] }, NamedArgument: { name: NamedArgument.$type, properties: { calledByName: { name: NamedArgument.calledByName, defaultValue: false }, parameter: { name: NamedArgument.parameter, referenceType: Parameter.$type }, value: { name: NamedArgument.value } }, superTypes: [] }, NegatedToken: { name: NegatedToken.$type, properties: { cardinality: { name: NegatedToken.cardinality }, lookahead: { name: NegatedToken.lookahead }, parenthesized: { name: NegatedToken.parenthesized, defaultValue: false }, terminal: { name: NegatedToken.terminal } }, superTypes: [TerminalElement.$type] }, Negation: { name: Negation.$type, properties: { value: { name: Negation.value } }, superTypes: [Condition.$type] }, NumberLiteral: { name: NumberLiteral.$type, properties: { value: { name: NumberLiteral.value } }, superTypes: [ValueLiteral.$type] }, Parameter: { name: Parameter.$type, properties: { name: { name: Parameter.name } }, superTypes: [] }, ParameterReference: { name: ParameterReference.$type, properties: { parameter: { name: ParameterReference.parameter, referenceType: Parameter.$type } }, superTypes: [Condition.$type] }, ParserRule: { name: ParserRule.$type, properties: { dataType: { name: ParserRule.dataType }, definition: { name: ParserRule.definition }, entry: { name: ParserRule.entry, defaultValue: false }, fragment: { name: ParserRule.fragment, defaultValue: false }, inferredType: { name: ParserRule.inferredType }, name: { name: ParserRule.name }, parameters: { name: ParserRule.parameters, defaultValue: [] }, returnType: { name: ParserRule.returnType, referenceType: AbstractType.$type } }, superTypes: [AbstractParserRule.$type] }, ReferenceType: { name: ReferenceType.$type, properties: { isMulti: { name: ReferenceType.isMulti, defaultValue: false }, referenceType: { name: ReferenceType.referenceType } }, superTypes: [TypeDefinition.$type] }, RegexToken: { name: RegexToken.$type, properties: { cardinality: { name: RegexToken.cardinality }, lookahead: { name: RegexToken.lookahead }, parenthesized: { name: RegexToken.parenthesized, defaultValue: false }, regex: { name: RegexToken.regex } }, superTypes: [TerminalElement.$type] }, ReturnType: { name: ReturnType.$type, properties: { name: { name: ReturnType.name } }, superTypes: [] }, RuleCall: { name: RuleCall.$type, properties: { arguments: { name: RuleCall.arguments, defaultValue: [] }, cardinality: { name: RuleCall.cardinality }, predicate: { name: RuleCall.predicate }, rule: { name: RuleCall.rule, referenceType: AbstractRule.$type } }, superTypes: [AbstractElement.$type] }, SimpleType: { name: SimpleType.$type, properties: { primitiveType: { name: SimpleType.primitiveType }, stringType: { name: SimpleType.stringType }, typeRef: { name: SimpleType.typeRef, referenceType: AbstractType.$type } }, superTypes: [TypeDefinition.$type] }, StringLiteral: { name: StringLiteral.$type, properties: { value: { name: StringLiteral.value } }, superTypes: [ValueLiteral.$type] }, TerminalAlternatives: { name: TerminalAlternatives.$type, properties: { cardinality: { name: TerminalAlternatives.cardinality }, elements: { name: TerminalAlternatives.elements, defaultValue: [] }, lookahead: { name: TerminalAlternatives.lookahead }, parenthesized: { name: TerminalAlternatives.parenthesized, defaultValue: false } }, superTypes: [TerminalElement.$type] }, TerminalElement: { name: TerminalElement.$type, properties: { cardinality: { name: TerminalElement.cardinality }, lookahead: { name: TerminalElement.lookahead }, parenthesized: { name: TerminalElement.parenthesized, defaultValue: false } }, superTypes: [AbstractElement.$type] }, TerminalGroup: { name: TerminalGroup.$type, properties: { cardinality: { name: TerminalGroup.cardinality }, elements: { name: TerminalGroup.elements, defaultValue: [] }, lookahead: { name: TerminalGroup.lookahead }, parenthesized: { name: TerminalGroup.parenthesized, defaultValue: false } }, superTypes: [TerminalElement.$type] }, TerminalRule: { name: TerminalRule.$type, properties: { definition: { name: TerminalRule.definition }, fragment: { name: TerminalRule.fragment, defaultValue: false }, hidden: { name: TerminalRule.hidden, defaultValue: false }, name: { name: TerminalRule.name }, type: { name: TerminalRule.type } }, superTypes: [AbstractRule.$type] }, TerminalRuleCall: { name: TerminalRuleCall.$type, properties: { cardinality: { name: TerminalRuleCall.cardinality }, lookahead: { name: TerminalRuleCall.lookahead }, parenthesized: { name: TerminalRuleCall.parenthesized, defaultValue: false }, rule: { name: TerminalRuleCall.rule, referenceType: TerminalRule.$type } }, superTypes: [TerminalElement.$type] }, Type: { name: Type.$type, properties: { name: { name: Type.name }, type: { name: Type.type } }, superTypes: [AbstractType.$type] }, TypeAttribute: { name: TypeAttribute.$type, properties: { defaultValue: { name: TypeAttribute.defaultValue }, isOptional: { name: TypeAttribute.isOptional, defaultValue: false }, name: { name: TypeAttribute.name }, type: { name: TypeAttribute.type } }, superTypes: [] }, TypeDefinition: { name: TypeDefinition.$type, properties: { }, superTypes: [] }, UnionType: { name: UnionType.$type, properties: { types: { name: UnionType.types, defaultValue: [] } }, superTypes: [TypeDefinition.$type] }, UnorderedGroup: { name: UnorderedGroup.$type, properties: { cardinality: { name: UnorderedGroup.cardinality }, elements: { name: UnorderedGroup.elements, defaultValue: [] } }, superTypes: [AbstractElement.$type] }, UntilToken: { name: UntilToken.$type, properties: { cardinality: { name: UntilToken.cardinality }, lookahead: { name: UntilToken.lookahead }, parenthesized: { name: UntilToken.parenthesized, defaultValue: false }, terminal: { name: UntilToken.terminal } }, superTypes: [TerminalElement.$type] }, ValueLiteral: { name: ValueLiteral.$type, properties: { }, superTypes: [] }, Wildcard: { name: Wildcard.$type, properties: { cardinality: { name: Wildcard.cardinality }, lookahead: { name: Wildcard.lookahead }, parenthesized: { name: Wildcard.parenthesized, defaultValue: false } }, superTypes: [TerminalElement.$type] } } as const satisfies langium.AstMetaData } export const reflection = new LangiumGrammarAstReflection();