Difference between revisions of "NumML Language Reference"

From Numerus
Jump to navigation Jump to search
Line 11: Line 11:
with slightly different rules for what is allowed on each side of the operator. In discussing NumML syntax we use the following terms:
with slightly different rules for what is allowed on each side of the operator. In discussing NumML syntax we use the following terms:


===Language Categories===
;Constant
;Constant
:Either a string constant enclosed in single or double quotes (<code>"SIR Model""</code>, <code>'Infection Stats'</code>) or a number in decimal (<code>3.1415</code>) or scientific notation (<code>3.14159e5</code>).
:Either a string constant enclosed in single or double quotes (<code>"SIR Model""</code>, <code>'Infection Stats'</code>) or a number in decimal (<code>3.1415</code>) or scientific notation (<code>3.14159e5</code>).
Line 16: Line 17:
:Equivalent of a Javascript variable such as <code>Sigma</code>, <code>N</code>, <code>beta</code>, etc.
:Equivalent of a Javascript variable such as <code>Sigma</code>, <code>N</code>, <code>beta</code>, etc.
;Unary Expression
;Unary Expression
:An expression such as <code>-10</code> or <code>-Sigma</code>.
:An unary operator modifying a term, such as <code>-10</code> or <code>-Sigma</code>.
 
Constants, Identifiers and Unary Expressions comprise the set of '''terms'''.
 
;Call Expression
;Call Expression
:A function name followed by a comma-separated sequence of arguments enclosed in parentheses. The function name must be an identifier; the arguments can be any list of terms.
:A function name followed by a comma-separated sequence of arguments enclosed in parentheses. The function name must be an identifier; the arguments can be any list of terms.
;Term
Either a constant, identifier, unary expressions
;Computational Expression
;Computational Expression
:A single term or a sequence of terms connected using arithmetic operators <code>+</code>, <code>-</code>, <code>*</code> <code>/</code>, or any other legal Javascript operators.
:A single term or a sequence of terms connected using arithmetic operators <code>+</code>, <code>-</code>, <code>*</code> <code>/</code>, or any other legal Javascript operators.
;Array
;Array
:A comma-separated sequence of terms enclosed in square brackets; e.g., <code>[Sigma, foo(1,2,3), 15.123e3]</code>.
:A comma-separated sequence of terms enclosed in square brackets; e.g., <code>[Sigma, foo(1,2,3), 15.123e3]</code>.
===Syntax Rules for <code>@=</code>===
''LHS'' can be one of the

Revision as of 17:50, 4 July 2025

What is NumML?

NumML is a small, domain-specific language (dsl) for coding SD models and configuring the UI of a Numerus WebKit (NWK) site. It is used in URAM models and in the Configuration Window. This document serves as reference for NWK authors and users wishing to use NumML in their designs.

NumML Operators

NumML uses Javascript syntax extended with 2 infix operators (@= and #=) that are not recognized as meaningful to Javascript. NWK uses a Javascript parser extended to accept these operators to analyze NumML code and respectively generate code or change the value of specific configuration parameters. Each NumML statement has the form:

LHS @= RHS
LHS @# RHS

with slightly different rules for what is allowed on each side of the operator. In discussing NumML syntax we use the following terms:

Language Categories

Constant
Either a string constant enclosed in single or double quotes ("SIR Model"", 'Infection Stats') or a number in decimal (3.1415) or scientific notation (3.14159e5).
Identifier
Equivalent of a Javascript variable such as Sigma, N, beta, etc.
Unary Expression
An unary operator modifying a term, such as -10 or -Sigma.
Call Expression
A function name followed by a comma-separated sequence of arguments enclosed in parentheses. The function name must be an identifier; the arguments can be any list of terms.
Term

Either a constant, identifier, unary expressions

Computational Expression
A single term or a sequence of terms connected using arithmetic operators +, -, * /, or any other legal Javascript operators.
Array
A comma-separated sequence of terms enclosed in square brackets; e.g., [Sigma, foo(1,2,3), 15.123e3].

Syntax Rules for @=

LHS can be one of the