Skip to main content
Module

x/denops_std/function/nvim/mod.ts>nvim_parse_expression

📚 Standard module for denops.vim
Latest
function nvim_parse_expression
import { nvim_parse_expression } from "https://deno.land/x/denops_std@v6.5.0/function/nvim/mod.ts";

Parse a VimL expression.

Attributes: api-fast

Parameters:

  • {expr} Expression to parse. Always treated as a single line.
  • {flags} Flags: - "m" if multiple expressions in a row are allowed (only the first one will be parsed), - "E" if EOC tokens are not allowed (determines whether they will stop parsing process or be recognized as an operator/space, though also yielding an error). - "l" when needing to start parsing with lvalues for ":let" or ":for". Common flag sets: - "m" to parse like for ":echo". - "E" to parse like for "<C-r>=". - empty string for ":call". - "lm" to parse for ":let".
  • {highlight} If true, return value will also include "highlight" key containing array of 4-tuples (arrays) (Integer, Integer, Integer, String), where first three numbers define the highlighted region and represent line, starting column and ending column (latter exclusive: one should highlight region [start_col, end_col)).

Return:

- AST: top-level dictionary with these keys:
  - "error": Dictionary with error, present only if parser saw some
    error. Contains the following keys:
    - "message": String, error message in printf format, translated.
      Must contain exactly one "%.*s".
    - "arg": String, error message argument.

  - "len": Amount of bytes successfully parsed. With flags equal to ""
    that should be equal to the length of expr string. (“Successfully
    parsed” here means “participated in AST creation”, not “till the
    first error”.)
  - "ast": AST, either nil or a dictionary with these keys:
    - "type": node type, one of the value names from ExprASTNodeType
      stringified without "kExprNode" prefix.
    - "start": a pair [line, column] describing where node is
      "started" where "line" is always 0 (will not be 0 if you will be
      using nvim_parse_viml() on e.g. ":let", but that is not present
      yet). Both elements are Integers.
    - "len": “length” of the node. This and "start" are there for
      debugging purposes primary (debugging parser and providing debug
      information).
    - "children": a list of nodes described in top/"ast". There always
      is zero, one or two children, key will not be present if node
      has no children. Maximum number of children may be found in
      node_maxchildren array.

- Local values (present only for certain nodes):
  - "scope": a single Integer, specifies scope for "Option" and
    "PlainIdentifier" nodes. For "Option" it is one of ExprOptScope
    values, for "PlainIdentifier" it is one of ExprVarScope values.
  - "ident": identifier (without scope, if any), present for "Option",
    "PlainIdentifier", "PlainKey" and "Environment" nodes.
  - "name": Integer, register name (one character) or -1. Only present
    for "Register" nodes.
  - "cmp_type": String, comparison type, one of the value names from
    ExprComparisonType, stringified without "kExprCmp" prefix. Only
    present for "Comparison" nodes.
  - "ccs_strategy": String, case comparison strategy, one of the value
    names from ExprCaseCompareStrategy, stringified without
    "kCCStrategy" prefix. Only present for "Comparison" nodes.
  - "augmentation": String, augmentation type for "Assignment" nodes.
    Is either an empty string, "Add", "Subtract" or "Concat" for "=",
    "+=", "-=" or ".=" respectively.
  - "invert": Boolean, true if result of comparison needs to be
    inverted. Only present for "Comparison" nodes.
  - "ivalue": Integer, integer value for "Integer" nodes.
  - "fvalue": Float, floating-point value for "Float" nodes.
  - "svalue": String, value for "SingleQuotedString" and
    "DoubleQuotedString" nodes.

Parameters

denops: Denops
expr: unknown
flags: unknown
highlight: unknown

Returns

Promise<unknown>