xast
Version:
AST parsing library
20 lines (16 loc) • 504 B
text/typescript
import { TokenKind } from '../TokenKind';
import { Parser, NodeParser, Node } from '../Parser';
export const definitionParser: NodeParser<Node> = {
kind: 'DEFINITION',
parse(parser: Parser): Node {
const hasDescription = parser.peek(TokenKind.STRING);
const keywordToken = hasDescription
? parser.lexer.lookahead()
: parser.lexer.token;
const node = parser.parseToken(keywordToken);
if (node) {
return node;
}
throw parser.unexpected(keywordToken);
}
}