README
SwanJS
SwanJS is an expression language that runs in any JavaScript environment.
swan = require('swan-js'); // load the library
evaluate = swan.parse( "3 * x" ); // compile an expression
context = swan.createContext({x:10}); // create an expression context
value = await evaluate(context); // evaluate expression in context: 30
You can install SwanJS via npm:
npm install @onlabsorg/swan-js
Syntax
A Swan expression is simply a sequence of binary operations (operand operator operand operator operand ...), eventually grouped with parenthesis (...), square braces [...] or curly braces {...}.
The available binary operations are:
- Arithmetic operations:
x + y,x - y,x * y,x / y,x % y,x ** y - Comparison operations:
x == y,x != y,x > y,x >= y,x < y,x <= y - Logic operations:
x & y,x | y - Conditional and alternative operations:
x ? y,x ; y, or combinedx ? y ; z - Pairing operation:
x , y - Application (function call):
x y - Function definition:
x -> y - Composition operations:
g << f,f >> g - Mapping operation:
x => f - Assignment operations:
name = x,name: x - Sub-contexting operation:
x.y
The types of grouping available are:
- Parenthesis to alter evaluation precedence:
(expr) - Square braces to create lists:
[x1, x2, x3, ...] - Curly braces to create namespaces:
{n1:v1, n2=v2, n3:v3, ...}
The data types defined in swan are:
- Nothing, or empty tuple:
() - Boolean:
TRUE,FALSE - Number:
123.4 - String:
"abc",'abc',`abc` - List:
[a, b, c, ...] - Namespace:
{n1:v1, n2=v2, n3=v3, ...} - Function:
names -> expression - Undefined:
undefined(operationName, operands) - Tuple:
x1, x2, x3, ...
The swan built-in functions are:
type x, returns the type name ofxrange n, returns the numeric tuple (0, 1, 2, ..., n-1)undefined x, returns an Undefined valuerequire x, loads a standard library module
Learn more
License
Related projects
- olojs is a template engine and content management system that uses swan as inline expression language