tabnas-expr 0.5.19

Pratt expression-operator plugin for the tabnas parsing engine, over the jsonic base grammar
Documentation
{
  "$schema": "https://tabnas.dev/schema/plugin.schema.json",
  "name": "@tabnas/expr",
  "go": "github.com/tabnas/expr/go",
  "rust": "tabnas-expr",
  "description": "Expression syntax with operators and precedence for the tabnas engine.",
  "base": "@tabnas/jsonic",
  "engine": "@tabnas/parser",
  "languageId": "expr",
  "pluginKind": "grammar",
  "specDir": "test/spec",
  "clib": {
    "dir": "go/clib",
    "library": "libtabnasexpr",
    "abi": "v1",
    "errorCodes": [
      "usage",
      "grammar",
      "handle",
      "internal"
    ]
  },
  "errorCodes": [],
  "docs": "https://tabnas.dev/docs/packages",
  "repository": "https://github.com/tabnas/expr",
  "versionSource": "ts/package.json",
  "translate": {
    "reads": "tree",
    "writes": "tree",
    "root": "any",
    "schema": "expr",
    "embed": "alchemy/embed.alc",
    "render": "alchemy/render.alc",
    "loss": [
      "Comments, spacing, implicit lists and maps, and the document's own spelling of strings and numbers are not kept: every list is written in brackets, every object in braces with its keys quoted, every string double-quoted and every number as JSON writes it.",
      "An operation of the default operators is written in infix, and a term that would need parentheses, which read back as a group, is written as a list instead, which reads back as the same tree.",
      "A list whose first element is an object whose src member is a default operator's source text, as the reader's own value describes an operator, is written with that text in the object's place, as an operation where its count makes one: only the src member is read, and the object's other members, the token the operator was read from among them, are not kept. A list whose first element is an object with any other src that is not empty, zero, false or null, as a C syntax tree's token has, is refused with TARGET_VALUE_UNREPRESENTABLE, since the reader would read that src alone as the list's operator.",
      "A negative number is written with its sign, which reads back as the operator - applied to the number's magnitude.",
      "A number that is not finite is written as the string Infinity, -Infinity or NaN."
    ],
    "whole": "A binary operator follows its left term, and a later operator can take a finished operation as its own term, as the - in 1*2-3 takes 1*2, so an expression's tree is complete only at its end: a document is read whole before anything is written."
  }
}