Skip to the content.

What the engine honors today

language_template.json is the contract for generated JSON. The interpreter does not implement every field yet. You still emit the full template. Disabled or unused fields stay in the file.

This document is the honest map so you do not promise Python-complete classes when the user will only get the subset below.

Used for lexing and parsing

Area Fields the reader uses
Identity name (required, not the placeholder), extensions, language_detection.extensions
Source case_sensitive, indentation_significant (stored; indent lexing is limited)
Identifiers identifiers.pattern is stored; matching is currently letter/_ start, alphanumeric/_ continue
Comments comments.line.enabled + markers; comments.block.enabled + pairs
Keywords All keyword lists are collected so those words tokenize as keywords
Types keywords.types and every builtin_types.* array (names tokenize as types)
Variables variables.enabled, declaration_keywords, declaration_patterns, declaration_required, assignment_operators
Functions functions.enabled, declaration_keywords, declaration_patterns, header_style, parameter_patterns, return_type_patterns, return_keywords, parameter delimiters via delimiters / tokens
Classes classes.enabled, classes.declaration_keywords, classes.inheritance, classes.methods
Imports imports.enabled, imports.import_keywords, imports.module_separator, imports.relative_import_token, imports.bind_as (or scope.module_scope when bind_as is omitted), imports.search_directories, imports.plugin_entry (default rescripted_register)
Stdlib standard_library.automatically_imported names are imported at the start of run
Control flow if / else_if / else, while, for, break, continue keyword lists
Literals null.values, boolean.true_values / false_values, integer/float enabled, string.enabled, string.forms or ", escape_character
Tokens statement_terminators, statement_terminator_required, argument_separator, member_separator
Delimiters parentheses, brackets, blocks.delimiter open/close
Operators all operators.* arrays plus operator_precedence.levels (explicit levels overwrite). operators.assignment is merged with variables.assignment_operators
Entry entry_point.top_level_execution is recorded; run() still executes top-level statements
Builtins builtins.functions names (host must bind implementations)
Custom custom.function_kinds, custom.types, custom.decorators, custom.host_functions

Implemented script features

Present in the JSON, not fully executed yet

Keep these fields. Do not delete them. Do not tell the user they already have a complete implementation of:

If the user needs one of those as syntax sugar, try custom.* plus host functions first.

functions.header_style

Optional. "" (default) means declarations use declaration_keywords (fn, command, …). "c_type_first" means ReturnType Name(params) headers are parsed even when declaration_keywords is empty. Keyword-style fn still works if those keywords are listed. The same type-first behavior is enabled when declaration_patterns contains "c_type_first" or a pattern like "Type Name(params)".

Defaults the engine adds

If operator lists are sparse, the reader still installs + - * / % == != < <= > >= && || and or and unary ! so expressions work. Your precedence table, if present, wins for listed operators. : is tokenized when classes.inheritance is true.