N NezamDocumentation

Business Language Lexer grammar#

The lexer defines the token vocabulary shared by every parser grammar, including keywords, operators, delimiters, identifiers, strings, numbers, comments, and whitespace.

Source#

PropertyValue
Grammar filepackages/business/language/grammar/BusinessLanguageLexer.g4
Grammar nameBusinessLanguageLexer
Grammar kindlexer
ImportsNone
Imported byannotation, api, app, BusinessLanguage, class, common, configuration, controls, entity, enum, error, errorHandling, expression, field, form, function, iac, interface, literal, message, module, program, query, rule, service, source_ui, struct, subscription, table, test, type, validation
Direct rule or token count441

How to use this page#

Read the examples first when authoring Business Language. Use the rule inventory when checking exact grammar coverage or when updating parser, lowering, editor, or documentation behavior.

Entry rules and syntax families#

Start with these rules when reading this grammar: PUBLIC, PRIVATE, PROTECTED, INTERNAL, EXTENDS, FIELD, VAR, LET, CONST, MIN.

  • This grammar does not expose a large named rule family; use the inventory below as the source of truth.

Key grammar excerpts#

PUBLIC#

antlr
PUBLIC          : 'public';

PRIVATE#

antlr
PRIVATE         : 'private';

PROTECTED#

antlr
PROTECTED       : 'protected';

Complete rule and token inventory#

text
ABSTRACT, ACTION, ADD, ADMIN, AFTER, ALL, AMP_OP, AND
AND_OP, ANNOTATION_START, ANY, API, APOSTROPHE, APP, ARRAY_AGG, ARROW
AS, ASC, ASCENDING, ASSERT, ASSIGN, ASSOCIATED, ASYNC, ATTEMPT
AUTHORIZATION, AVG, AWAIT, BACKTICK, BACKTICK_STRING, BE, BETWEEN, BINARY_INTEGER
BINARY_LITERAL, BIND, BLOB, BLOCK_COMMENT_END, BLOCK_COMMENT_START, BLOCK_COMMENT_TEXT, BODY, BOOL
BOOLEAN, BREAK, BUSINESS_RULES, BUSINESS_RULES_SNAKE, BUTTON, BY, CAPITALIZE, CASCADE
CASE, CATCH, CHAR_LITERAL, CHECK, CHILDREN, CLASS, CLOSE_BRACE, CLOSE_BRACKET
CLOSE_PAREN, COLON, COLOR, COMMA, COMMAND_PALETTES, COMPUTED, CONFIG, CONFIGURATION
CONFLICT, CONNECT, CONSOLE, CONST, CONSTRAINT, CONTAIN, CONTAINS, CONTEXT
CONTINUE, CONTROL, CONTROLLER, COORDINATE, COPY, COUNT, CREATE, CRITICAL
CROSS, CUBE, CURRENT, CUSTOM, DATE, DATE_FORMAT, DATE_LITERAL, DATE_TYPE
DATETIME, DATETIME_LITERAL, DECIMAL, DECIMAL_FLOAT, DECIMAL_INTEGER, DECIMAL_LITERAL, DEFAULT, DELETE
DENSE_RANK, DEPLOYMENT, DESC, DESCENDING, DIGIT, DISABLED, DISTINCT, DIVIDE
DIVIDE_ASSIGN, DO, DOC_BLOCK_TEXT, DOC_COMMENT_END, DOC_COMMENT_START, DOC_LINE_COMMENT_START, DOC_LINE_NEWLINE, DOC_LINE_TEXT
DOLLAR_SIGN, DOMAIN, DOT, DOT_DOT, DOUBLE, DOUBLE_QUOTE_STRING, DUPLICATE, DURATION
EACH, ELSE, EMAIL, EMAIL_FORMAT, EMPTY, ENGINE, ENGINEERING_FLOAT, ENSURE
ENTITY, ENUM, ENV, EQUAL, EQUALS, ERROR, ERRORS, EVENTS
EXCEPT, EXISTS, EXPECT, EXPORT, EXTENDS, FALSE, FAT_ARROW, FIELD
FILE, FILTER, FINALLY, FIND, FIRST, FIRST_VALUE, FLAT_MAP, FLOAT
FLOAT_KW, FLOAT_LITERAL, FOLD, FOLLOWING, FOR, FOREIGN, FORM, FROM
FULL, FUNCTION, GEOLOCATION, GET, GREATER_THAN, GREATER_THAN_EQUALS, GRID, GROUP
GROUPBY, GROUPING, GROUPS, GT_OP, GUID, HAVING, HEAD, HEX_INTEGER
HEX_LITERAL, HIDDEN_KW, HIGH, HORIZONTAL, HOST, HTTP, ID, IF
IMAGE, IMMUTABLE, IMPLEMENTS, IMPORT, IN, INDEX, INDEXED, INFO
INHERITS, INJECT, INLINE, INNER, INSERT, INT, INTEGER, INTEGER_LITERAL
INTEGRITY, INTERFACE, INTERNAL, INTERSECT, INTO, IO, IS, JOIN
JSON, KEY, LABEL, LAG, LAST, LAST_VALUE, LAYOUT, LEAD
LEFT, LESS_THAN, LESS_THAN_EQUALS, LET, LIKE, LIMIT, LIMITER, LINE_COMMENT
LIST, LOCK, LOGIN, LONG, LOW, LOWER, LT_OP, MAP
MATCH, MATCHED, MATCHES, MAX, MAX_LENGTH, MEDIAN, MEDIUM, MENU
MERGE, MESSAGE, METADATA, MIN, MINUS, MINUS_ASSIGN, MINUS_MINUS, MODULE
MODULO, MODULO_ASSIGN, MONTH_NAME, MULTIPLY, MULTIPLY_ASSIGN, NAME, NAMESPACE, NAVIGATE
NAVIGATION, NEW, NO, NO_ACTION, NODEID, NOT, NOT_EQUALS, NOT_OP
NOTHING, NTH_VALUE, NULL, NULL_COALESCING, NULLS, NUMBER, OCTAL_INTEGER, OFFSET
ON, OPEN_BRACE, OPEN_BRACKET, OPEN_PAREN, OPTION, OPTIONAL, OPTIONS, OR
OR_OP, ORDER, ORDERBY, OUTER, OUTPUT, OVER, OVERRIDE, PACKAGE
PARAMS, PARTITION, PASSWORD, PATCH, PATTERN, PATTERN_TYPE, PERCENT, PERCENT_LITERAL
PERCENTAGE, PERCENTILE_CONT, PERCENTILE_DISC, PERFORMANCE, PHONE, PHONE_FORMAT, PIPE_OP, PIPELINE
PLURAL, PLUS, PLUS_ASSIGN, PLUS_PLUS, POST, POWER, PRECEDING, PRIMARY
PRIVATE, PROFILE, PROGRAM, PROPERTY, PROTECTED, PROVIDER, PROVIDER_PROFILE, PUBLIC
PUT, QUESTION_DOT, QUESTION_MARK, QUOTE, RAISE, RANGE, RANK, READONLY
RECURSIVE, REDUCE, REF, REFERENCES, REGEX, REGION, REQUIRE, REQUIRED
RESOURCE, RESTRICT, RETURN, RETURNING, RIGHT, ROLLUP, ROUTE, ROW
ROW_NUMBER, ROWS, RULE, RUNTIME, SAVE, SCIENTIFIC_FLOAT, SCIENTIFIC_LITERAL, SEARCHABLE
SECRET, SECTION, SECURITY, SELECT, SEMICOLON, SEPARATOR, SERVICE, SET
SET_NULL, SETS, SETUP, SINGLE_QUOTE_STRING, SKIP_KW, SORT_BY, SPREAD, STARTUP
STATE, STATIC, STDDEV, STORE, STRING, STRING_AGG, STRING_LITERAL, STRUCT
SUBSCRIBE, SUM, SWITCH, SYSTEM, TABLE, TAKE, TEARDOWN, TEMPLATE_STRING
TEST, TEXT, TEXT_TEMPLATE, THEN, THIS, THROW, TIME, TIME_FORMAT
TIME_LITERAL, TIME_TYPE, TIMESPAN_LITERAL, TIMESTAMP, TO, TOOLBAR, TRANSFORM, TRANSFORM_PARALLEL
TRUE, TRY, TWO_COLUMN, TYPE, UI, UINT, ULONG, UNBOUNDED
UNDERSCORE, UNION, UNIQUE, UNLOCK, UPDATE, UPPER, URL, URL_FORMAT
USE, USER, USING, UUID, VALIDATE, VALIDATION, VALIDATION_RESULT_ERROR, VALIDATION_RESULT_SUCCESS
VALIDATION_RESULT_WARNING, VALUES, VAR, VARIANCE, VERSION, VERTICAL, VIRTUAL, VOID
WARNING_KW, WHEN, WHERE, WHILE, WITH, WORKER, WORKSPACE, WS
XML

Examples#

Keywords and identifiers#

bl
public function calculate_total(invoice_id: InvoiceId): money {
  var total: money = 0.00;
  return total;
}

Operators and delimiters#

bl
if (invoice.total >= approval_threshold && invoice.status != "blocked") {
  return true;
}

Common authoring mistakes#

  • Do not copy examples without checking the rule inventory for the exact grammar boundary.
  • Do not add behavior that depends on missing configuration or undeclared user-facing errors.
  • /language/syntax/
  • /language/types-literals/

Authoring notes#

  • Keep examples aligned with the grammar source, not with inferred syntax from another language.
  • Use declared messages for user-facing failures, and fail closed when required configuration is absent.
Source: packages/business/language/grammar-files/business-language-lexer.md