@dbml/parse
Version:
> TODO: description
54 lines (53 loc) • 1.56 kB
TypeScript
import { CompileError } from '../errors';
import { SyntaxToken } from '../lexer/tokens';
import { default as Report } from '../report';
import { ProgramNode, SyntaxNodeIdGenerator } from './nodes';
export default class Parser {
private tokens;
private current;
private errors;
private contextStack;
private nodeFactory;
constructor(tokens: SyntaxToken[], nodeIdGenerator: SyntaxNodeIdGenerator);
private isAtEnd;
private advance;
private peek;
private match;
private check;
private previous;
private canHandle;
private consume;
private discardUntil;
private gatherInvalid;
parse(): Report<{
ast: ProgramNode;
tokens: SyntaxToken[];
}, CompileError>;
private program;
private synchronizeProgram;
private elementDeclaration;
private synchronizeElementDeclarationName;
private synchronizeElementDeclarationAlias;
private fieldDeclaration;
private expression;
private shouldStopExpression;
private normalExpression;
private expression_bp;
private leftExpression_bp;
private extractOperand;
private functionExpression;
private blockExpression;
private canBeField;
private synchronizeBlock;
private primaryExpression;
private tupleExpression;
private synchronizeTuple;
private listExpression;
private synchronizeList;
private attribute;
private synchronizeAttributeName;
private attributeValue;
private synchronizeAttributeValue;
private attributeName;
private logError;
}