@dbml/parse
Version:
> TODO: description
54 lines (53 loc) • 3.19 kB
TypeScript
import { SyntaxToken, SyntaxTokenKind } from '../../lexer/tokens';
import { AttributeNode, BlockExpressionNode, ElementDeclarationNode, ListExpressionNode, LiteralNode, PrefixExpressionNode, PrimaryExpressionNode, SyntaxNode, TupleExpressionNode, VariableNode } from '../../parser/nodes';
import { default as CustomValidator } from './elementValidators/custom';
import { default as EnumValidator } from './elementValidators/enum';
import { default as IndexesValidator } from './elementValidators/indexes';
import { default as NoteValidator } from './elementValidators/note';
import { default as ProjectValidator } from './elementValidators/project';
import { default as RefValidator } from './elementValidators/ref';
import { default as TableValidator } from './elementValidators/table';
import { default as TableGroupValidator } from './elementValidators/tableGroup';
import { default as SymbolTable } from '../symbol/symbolTable';
import { default as SymbolFactory } from '../symbol/factory';
import { default as Report } from '../../report';
import { CompileError } from '../../errors';
export declare function pickValidator(element: ElementDeclarationNode & {
type: SyntaxToken;
}): typeof CustomValidator | typeof EnumValidator | typeof TableValidator | typeof TableGroupValidator | typeof ProjectValidator | typeof RefValidator | typeof NoteValidator | typeof IndexesValidator;
export declare function isValidName(nameNode: SyntaxNode): boolean;
export declare function isValidAlias(aliasNode: SyntaxNode): aliasNode is PrimaryExpressionNode & {
expression: VariableNode;
};
export declare function isSimpleName(nameNode: SyntaxNode): nameNode is PrimaryExpressionNode & {
expression: VariableNode;
};
export declare function isValidSettingList(settingListNode: SyntaxNode): settingListNode is ListExpressionNode;
export declare function hasComplexBody(node: ElementDeclarationNode): node is ElementDeclarationNode & {
body: BlockExpressionNode;
bodyColon: undefined;
};
export declare function hasSimpleBody(node: ElementDeclarationNode): node is ElementDeclarationNode & {
bodyColon: SyntaxToken;
};
export declare function registerSchemaStack(variables: string[], globalSchema: SymbolTable, symbolFactory: SymbolFactory): SymbolTable;
export declare function isRelationshipOp(op?: string): boolean;
export declare function isValidColor(value?: SyntaxNode): boolean;
export declare function isVoid(value?: SyntaxNode): boolean;
export declare function isValidDefaultValue(value?: SyntaxNode): boolean;
export declare function isExpressionANumber(value?: SyntaxNode): value is PrimaryExpressionNode & {
expression: LiteralNode & {
literal: {
kind: SyntaxTokenKind.NUMERIC_LITERAL;
};
};
};
export declare function isUnaryRelationship(value?: SyntaxNode): value is PrefixExpressionNode;
export declare function isTupleOfVariables(value?: SyntaxNode): value is TupleExpressionNode & {
elementList: (PrimaryExpressionNode & {
expression: VariableNode;
})[];
};
export declare function aggregateSettingList(settingList?: ListExpressionNode): Report<{
[index: string]: AttributeNode[];
}, CompileError>;