badeball/xpath-analyzer

View on GitHub
lib/parsers/unary_expr.ts

Summary

Maintainability
A
0 mins
Test Coverage
import XPathLexer from "xpath-lexer";

import { ExprParser, ExprNode } from "./expr";

import { NEGATION } from "../expr_type";

import * as UnionExpr from "./union_expr";

export interface UnaryNode {
  type: typeof NEGATION;
  lhs: ExprNode;
}

export function parse (rootParser: ExprParser, lexer: XPathLexer): ExprNode {
  if (lexer.peak() === "-") {
    lexer.next();

    return {
      type: NEGATION,
      lhs: parse(rootParser, lexer)
    };
  } else {
    return UnionExpr.parse(rootParser, lexer);
  }
}