{
"$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."
}
}