diff options
Diffstat (limited to 'js/scripting-lang/docs/baba-yaga/0.0.1/global.html')
-rw-r--r-- | js/scripting-lang/docs/baba-yaga/0.0.1/global.html | 4787 |
1 files changed, 0 insertions, 4787 deletions
diff --git a/js/scripting-lang/docs/baba-yaga/0.0.1/global.html b/js/scripting-lang/docs/baba-yaga/0.0.1/global.html deleted file mode 100644 index 4b02d15..0000000 --- a/js/scripting-lang/docs/baba-yaga/0.0.1/global.html +++ /dev/null @@ -1,4787 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width,initial-scale=1"> - <title>Global - Documentation</title> - - <script src="scripts/prettify/prettify.js"></script> - <script src="scripts/prettify/lang-css.js"></script> - <!--[if lt IE 9]> - <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> - <![endif]--> - <link type="text/css" rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css"> - <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> - <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> -</head> -<body> - -<input type="checkbox" id="nav-trigger" class="nav-trigger" /> -<label for="nav-trigger" class="navicon-button x"> - <div class="navicon"></div> -</label> - -<label for="nav-trigger" class="overlay"></label> - -<nav> - <li class="nav-link nav-home-link"><a href="index.html">Home</a></li><li class="nav-heading">Tutorials</li><li class="nav-item"><a href="tutorial-00_Introduction.html">00_Introduction</a></li><li class="nav-item"><a href="tutorial-01_Function_Calls.html">01_Function_Calls</a></li><li class="nav-item"><a href="tutorial-02_Function_Composition.html">02_Function_Composition</a></li><li class="nav-item"><a href="tutorial-03_Table_Operations.html">03_Table_Operations</a></li><li class="nav-item"><a href="tutorial-04_Currying.html">04_Currying</a></li><li class="nav-item"><a href="tutorial-05_Pattern_Matching.html">05_Pattern_Matching</a></li><li class="nav-item"><a href="tutorial-06_Immutable_Tables.html">06_Immutable_Tables</a></li><li class="nav-item"><a href="tutorial-07_Function_References.html">07_Function_References</a></li><li class="nav-item"><a href="tutorial-08_Combinators.html">08_Combinators</a></li><li class="nav-item"><a href="tutorial-09_Expression_Based.html">09_Expression_Based</a></li><li class="nav-item"><a href="tutorial-10_Tables_Deep_Dive.html">10_Tables_Deep_Dive</a></li><li class="nav-item"><a href="tutorial-11_Standard_Library.html">11_Standard_Library</a></li><li class="nav-item"><a href="tutorial-12_IO_Operations.html">12_IO_Operations</a></li><li class="nav-item"><a href="tutorial-13_Error_Handling.html">13_Error_Handling</a></li><li class="nav-item"><a href="tutorial-14_Advanced_Combinators.html">14_Advanced_Combinators</a></li><li class="nav-item"><a href="tutorial-15_Integration_Patterns.html">15_Integration_Patterns</a></li><li class="nav-item"><a href="tutorial-16_Best_Practices.html">16_Best_Practices</a></li><li class="nav-item"><a href="tutorial-README.html">README</a></li><li class="nav-heading"><a href="global.html">Globals</a></li><li class="nav-item"><span class="nav-item-type type-member">M</span><span class="nav-item-name"><a href="global.html#callStackTracker">callStackTracker</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#debugError">debugError</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#debugLog">debugLog</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#executeFile">executeFile</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#initializeStandardLibrary">initializeStandardLibrary</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#interpreter">interpreter</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#lexer">lexer</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#main">main</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#parser">parser</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#readFile">readFile</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#run">run</a></span></li> -</nav> - -<div id="main"> - - <h1 class="page-title">Global</h1> - - - - - - - -<section> - -<header> - - <h2> - - </h2> - - -</header> - -<article> - <div class="container-overview"> - - - - - - -<dl class="details"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</dl> - - - - - </div> - - - - - - - - - - - - - <h3 class="subsection-title">Members</h3> - - - -<div class="section-members"> -<h4 class="name" id="callStackTracker"><span class="type-signature">(constant) </span>callStackTracker<span class="type-signature"></span></h4> - - - - -<div class="description"> - Tracks function calls to help identify infinite recursion -and deep call stacks that cause stack overflow errors. This is essential -for debugging the interpreter's recursive evaluation of AST nodes. - -The tracker maintains a stack of function calls with timestamps and context -information, counts function calls to identify hot paths, and detects -potential infinite recursion by monitoring stack depth. - -This tool is particularly important for the combinator-based architecture -where function calls are the primary execution mechanism, and -nested expressions can lead to deep call stacks. The tracker helps identify -when the combinator translation creates unexpectedly deep call chains, -enabling optimization of the function composition and application patterns. - -The tracker provides detailed statistics about function call patterns, -helping developers understand the execution characteristics of their code -and identify potential performance bottlenecks in the combinator evaluation. -</div> - - - - - -<dl class="details"> - - - - - - - - - - - - - - - - - - - - - - - - - - - <dt class="tag-source">Source:</dt> - <dd class="tag-source"><ul class="dummy"><li> - <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line2758">line 2758</a> - </li></ul></dd> - - - - - - - -</dl> - - - - - - - -</div> - - - - - - <h3 class="subsection-title">Methods</h3> - - - -<div class="section-method"> - - - - <h4 class="name" id="debugError"><span class="type-signature"></span>debugError<span class="signature">(message, error<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></h4> - - - - - -<div class="description"> - Logs debug error messages to console when DEBUG environment variable is set. -Provides verbose error output during development while remaining silent in production. - -Debug functions are gated by the DEBUG environment variable, allowing for -verbose output during development and silent operation in production. This -approach makes it easy to trace execution and diagnose issues without -cluttering normal output. - -This function is particularly useful for debugging parsing and evaluation errors, -providing detailed context about where and why errors occur in the language -execution pipeline. -</div> - - - - - -<dl class="details"> - - - - - - - - - - - - - - - - - - - - - - - - - - - <dt class="tag-source">Source:</dt> - <dd class="tag-source"><ul class="dummy"><li> - <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line2728">line 2728</a> - </li></ul></dd> - - - - - - - -</dl> - - - - - - - - - - <h5>Parameters:</h5> - - -<table class="params"> - <thead> - <tr> - - <th>Name</th> - - - <th>Type</th> - - - <th>Attributes</th> - - - - <th>Default</th> - - - <th class="last">Description</th> - </tr> - </thead> - - <tbody> - - - <tr> - - <td class="name"><code>message</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - <td class="attributes"> - - - - - - </td> - - - - <td class="default"> - - </td> - - - <td class="description last"> - Debug error message to log - - </td> - </tr> - - - - <tr> - - <td class="name"><code>error</code></td> - - - <td class="type"> - - -<span class="param-type"><code>Error</code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - - - </td> - - - - <td class="default"> - - null - - </td> - - - <td class="description last"> - Optional error object to log - - </td> - </tr> - - - </tbody> -</table> - - - - - - - - - - - - - - - - -</div> - - -<div class="section-method"> - - - - <h4 class="name" id="debugLog"><span class="type-signature"></span>debugLog<span class="signature">(message, data<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></h4> - - - - - -<div class="description"> - Logs debug messages to console when DEBUG environment variable is set. -Provides verbose output during development while remaining silent in production. - -Debug functions are gated by the DEBUG environment variable, allowing for -verbose output during development and silent operation in production. This -approach makes it easy to trace execution and diagnose issues without -cluttering normal output. - -This function is essential for debugging the combinator-based architecture, -allowing developers to trace how operators are translated to function calls -and how the interpreter executes these calls through the standard library. - -The function is designed to be lightweight and safe to call frequently, -making it suitable for tracing execution flow through nested -expressions and function applications. -</div> - - - - - -<dl class="details"> - - - - - - - - - - - - - - - - - - - - - - - - - - - <dt class="tag-source">Source:</dt> - <dd class="tag-source"><ul class="dummy"><li> - <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line2701">line 2701</a> - </li></ul></dd> - - - - - - - -</dl> - - - - - - - - - - <h5>Parameters:</h5> - - -<table class="params"> - <thead> - <tr> - - <th>Name</th> - - - <th>Type</th> - - - <th>Attributes</th> - - - - <th>Default</th> - - - <th class="last">Description</th> - </tr> - </thead> - - <tbody> - - - <tr> - - <td class="name"><code>message</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - <td class="attributes"> - - - - - - </td> - - - - <td class="default"> - - </td> - - - <td class="description last"> - Debug message to log - - </td> - </tr> - - - - <tr> - - <td class="name"><code>data</code></td> - - - <td class="type"> - - -<span class="param-type"><code>*</code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - - - </td> - - - - <td class="default"> - - null - - </td> - - - <td class="description last"> - Optional data to log with the message - - </td> - </tr> - - - </tbody> -</table> - - - - - - - - - - - - - - - - -</div> - - -<div class="section-method"> - - - - <h4 class="name" id="executeFile"><span class="type-signature">(async) </span>executeFile<span class="signature">(filePath)</span><span class="type-signature"> → {Promise.<*>}</span></h4> - - - - - -<div class="description"> - Main entry point for file execution. Handles the complete language -pipeline: file reading, lexical analysis, parsing, and interpretation. - -This function orchestrates the entire language execution process: -1. Reads the source file using cross-platform I/O utilities -2. Tokenizes the source code using the lexer -3. Parses tokens into an AST using the combinator-based parser -4. Interprets the AST using the combinator-based interpreter - -The function provides comprehensive error handling and debug output at each -stage for transparency and troubleshooting. It also manages the call stack -tracker to provide execution statistics and detect potential issues. - -Supports both synchronous and asynchronous execution, with proper -error handling and process exit codes. This function demonstrates the -complete combinator-based architecture in action, showing how source code -is transformed through each stage of the language pipeline. - -The function enforces the .txt file extension requirement and provides -detailed error reporting with call stack statistics to help developers -understand execution behavior and diagnose issues. -</div> - - - - - -<dl class="details"> - - - - - - - - - - - - - - - - - - - - - - - - - - - <dt class="tag-source">Source:</dt> - <dd class="tag-source"><ul class="dummy"><li> - <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line2897">line 2897</a> - </li></ul></dd> - - - - - - - -</dl> - - - - - - - - - - <h5>Parameters:</h5> - - -<table class="params"> - <thead> - <tr> - - <th>Name</th> - - - <th>Type</th> - - - - - - <th class="last">Description</th> - </tr> - </thead> - - <tbody> - - - <tr> - - <td class="name"><code>filePath</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last"> - Path to the file to execute - - </td> - </tr> - - - </tbody> -</table> - - - - - - - - - - - - -<div class="section-throws"> -<h5>Throws:</h5> - - - -<dl> - <dt> - <div class="param-desc"> - For file reading, parsing, or execution errors - </div> - </dt> - <dd></dd> - <dt> - <dl> - <dt> - Type - </dt> - <dd> - -<span class="param-type"><code>Error</code></span> - - - </dd> - </dl> - </dt> - <dd></dd> -</dl> - - - -</div> - - - -<div class="section-returns"> -<h5>Returns:</h5> - - - -<dl class="param-type"> - <dt> - Type: - </dt> - <dd> - -<span class="param-type"><code>Promise.<*></code></span> - - - </dd> -</dl> - - -<div class="param-desc"> - The result of executing the file -</div> - - -</div> - - - -</div> - - -<div class="section-method"> - - - - <h4 class="name" id="initializeStandardLibrary"><span class="type-signature"></span>initializeStandardLibrary<span class="signature">(scope)</span><span class="type-signature"></span></h4> - - - - - -<div class="description"> - Injects higher-order functions and combinator functions into the interpreter's global scope. -These functions provide functional programming utilities and implement the combinator foundation -that reduces parsing ambiguity by translating all operations to function calls. - -The standard library includes: -- Higher-order functions (map, compose, pipe, apply, filter, reduce, fold, curry) -- Arithmetic combinators (add, subtract, multiply, divide, modulo, power, negate) -- Comparison combinators (equals, notEquals, lessThan, greaterThan, lessEqual, greaterEqual) -- Logical combinators (logicalAnd, logicalOr, logicalXor, logicalNot) -- Enhanced combinators (identity, constant, flip, on, both, either) - -This approach ensures that user code can access these functions as if they were built-in, -without special syntax or reserved keywords. The combinator foundation allows the parser -to translate all operators to function calls, eliminating ambiguity while preserving syntax. - -Functions are written to check argument types at runtime since the language is dynamically -typed and does not enforce arity or types at parse time. The combinator functions are -designed to work seamlessly with the parser's operator translation, providing a consistent -and extensible foundation for all language operations. - -The standard library is the foundation of the combinator-based architecture. Each function -is designed to support partial application, enabling currying patterns and function composition. -This design choice enables functional programming patterns while maintaining -simplicity and consistency across all operations. - -Error handling is implemented at the function level, with clear error messages that help -users understand what went wrong and how to fix it. This includes type checking for -function arguments and validation of input data. -</div> - - - - - -<dl class="details"> - - - - - - - - - - - - - - - - - - - - - - - - - - - <dt class="tag-source">Source:</dt> - <dd class="tag-source"><ul class="dummy"><li> - <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line134">line 134</a> - </li></ul></dd> - - - - - - - -</dl> - - - - - - - - - - <h5>Parameters:</h5> - - -<table class="params"> - <thead> - <tr> - - <th>Name</th> - - - <th>Type</th> - - - - - - <th class="last">Description</th> - </tr> - </thead> - - <tbody> - - - <tr> - - <td class="name"><code>scope</code></td> - - - <td class="type"> - - -<span class="param-type"><code>Object</code></span> - - - - </td> - - - - - - <td class="description last"> - The global scope object to inject functions into - - </td> - </tr> - - - </tbody> -</table> - - - - - - - - - - - - - - - - -</div> - - -<div class="section-method"> - - - - <h4 class="name" id="interpreter"><span class="type-signature"></span>interpreter<span class="signature">(ast, environment<span class="signature-attributes">opt</span>, initialState<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {*}</span></h4> - - - - - -<div class="description"> - Evaluates an AST by walking through each node and performing the -corresponding operations. Manages scope, handles function calls, and supports -both synchronous and asynchronous operations. - -The interpreter implements a combinator-based architecture where all operations -are executed through function calls to standard library combinators. This design -reduces parsing ambiguity while preserving intuitive syntax. The parser translates -all operators (+, -, *, /, etc.) into FunctionCall nodes that reference combinator -functions, ensuring consistent semantics across all operations. - -Key architectural features: -- Combinator Foundation: All operations are function calls to standard library combinators -- Scope Management: Prototypal inheritance for variable lookup and function definitions -- Forward Declaration: Recursive functions are supported through placeholder creation -- Error Handling: Comprehensive error detection and reporting with call stack tracking -- Debug Support: Optional debug mode for development and troubleshooting -- IO Operations: Support for input/output operations through environment interface - -The interpreter processes legacy operator expressions (PlusExpression, MinusExpression, etc.) -for backward compatibility, but the parser now generates FunctionCall nodes for all operators, -which are handled by the standard library combinator functions. This ensures that all -operations follow the same execution model and can be extended by adding new combinator -functions to the standard library. - -The interpreter uses a global scope for variable storage and function definitions. -Each function call creates a new scope (using prototypal inheritance) to implement -lexical scoping. Immutability is enforced by preventing reassignment in the -global scope. - -The interpreter is split into three functions: evalNode (global), -localEvalNodeWithScope (for function bodies), and localEvalNode (for internal -recursion). This separation allows for correct scope handling and easier debugging. - -Recursive function support is implemented using a forward declaration pattern: -a placeholder function is created in the global scope before evaluation, allowing -the function body to reference itself during evaluation. - -The combinator foundation ensures that all operations are executed through -function calls, providing a consistent and extensible execution model. This -approach enables abstractions and reduces the need for special -handling of different operator types in the interpreter. - -The interpreter supports both synchronous and asynchronous operations. IO operations -like input and output can return Promises, allowing for non-blocking execution -when interacting with external systems or user input. -</div> - - - - - -<dl class="details"> - - - - - - - - - - - - - - - - - - - - - - - - - - - <dt class="tag-source">Source:</dt> - <dd class="tag-source"><ul class="dummy"><li> - <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line1370">line 1370</a> - </li></ul></dd> - - - - - - - -</dl> - - - - - - - - - - <h5>Parameters:</h5> - - -<table class="params"> - <thead> - <tr> - - <th>Name</th> - - - <th>Type</th> - - - <th>Attributes</th> - - - - <th>Default</th> - - - <th class="last">Description</th> - </tr> - </thead> - - <tbody> - - - <tr> - - <td class="name"><code>ast</code></td> - - - <td class="type"> - - -<span class="param-type"><code><a href="global.html#ASTNode">ASTNode</a></code></span> - - - - </td> - - - <td class="attributes"> - - - - - - </td> - - - - <td class="default"> - - </td> - - - <td class="description last"> - Abstract Syntax Tree to evaluate - - </td> - </tr> - - - - <tr> - - <td class="name"><code>environment</code></td> - - - <td class="type"> - - -<span class="param-type"><code><a href="global.html#Environment">Environment</a></code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - - - </td> - - - - <td class="default"> - - null - - </td> - - - <td class="description last"> - External environment for IO operations - - </td> - </tr> - - - - <tr> - - <td class="name"><code>initialState</code></td> - - - <td class="type"> - - -<span class="param-type"><code>Object</code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - - - </td> - - - - <td class="default"> - - {} - - </td> - - - <td class="description last"> - Initial state for the interpreter - - </td> - </tr> - - - </tbody> -</table> - - - - - - - - - - - - -<div class="section-throws"> -<h5>Throws:</h5> - - - -<dl> - <dt> - <div class="param-desc"> - For evaluation errors like division by zero, undefined variables, etc. - </div> - </dt> - <dd></dd> - <dt> - <dl> - <dt> - Type - </dt> - <dd> - -<span class="param-type"><code>Error</code></span> - - - </dd> - </dl> - </dt> - <dd></dd> -</dl> - - - -</div> - - - -<div class="section-returns"> -<h5>Returns:</h5> - - - -<dl class="param-type"> - <dt> - Type: - </dt> - <dd> - -<span class="param-type"><code>*</code></span> - - - </dd> -</dl> - - -<div class="param-desc"> - The result of evaluating the AST, or a Promise for async operations -</div> - - -</div> - - - -</div> - - -<div class="section-method"> - - - - <h4 class="name" id="lexer"><span class="type-signature"></span>lexer<span class="signature">(input)</span><span class="type-signature"> → {Array.<<a href="global.html#Token">Token</a>>}</span></h4> - - - - - -<div class="description"> - The lexer performs lexical analysis by converting source code -into a stream of tokens. Each token represents a meaningful unit of the -language syntax, such as identifiers, literals, operators, and keywords. - -The lexer implements a character-by-character scanning approach with -lookahead for multi-character tokens. It maintains line and column -information for accurate error reporting and debugging. - -Key features: -- Handles whitespace and comments (single-line and multi-line) -- Recognizes all language constructs including operators, keywords, and literals -- Supports string literals with escape sequences -- Provides detailed position information for error reporting -- Cross-platform compatibility (Node.js, Bun, browser) -- Supports function composition with 'via' keyword -- Handles function references with '@' operator - -The lexer is designed to be robust and provide clear error messages -for malformed input, making it easier to debug syntax errors in user code. -It supports the combinator-based architecture by recognizing all operators -and special tokens needed for function composition and application. - -The lexer is the first step in the language processing pipeline and must -correctly identify all tokens that the parser will translate into function -calls. This includes operators that will become combinator function calls, -function references that enable higher-order programming, and special -keywords that support the functional programming paradigm. - -The lexer uses a state machine approach where each character type triggers -different parsing strategies. This design enables efficient tokenization -while maintaining clear separation of concerns for different token types. -The character-by-character approach allows for precise error reporting and -supports multi-character tokens like operators and string literals -with escape sequences. - -Error handling is designed to provide meaningful feedback by including -line and column information in error messages. This enables users to -quickly locate and fix syntax errors in their code. -</div> - - - - - -<dl class="details"> - - - - - - - - - - - - - - - - - - - - - - - - - - - <dt class="tag-source">Source:</dt> - <dd class="tag-source"><ul class="dummy"><li> - <a href="lexer.js.html">lexer.js</a>, <a href="lexer.js.html#line180">line 180</a> - </li></ul></dd> - - - - - - - -</dl> - - - - - - - - - - <h5>Parameters:</h5> - - -<table class="params"> - <thead> - <tr> - - <th>Name</th> - - - <th>Type</th> - - - - - - <th class="last">Description</th> - </tr> - </thead> - - <tbody> - - - <tr> - - <td class="name"><code>input</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last"> - The source code to tokenize - - </td> - </tr> - - - </tbody> -</table> - - - - - - - - - - - - -<div class="section-throws"> -<h5>Throws:</h5> - - - -<dl> - <dt> - <div class="param-desc"> - For unexpected characters or malformed tokens - </div> - </dt> - <dd></dd> - <dt> - <dl> - <dt> - Type - </dt> - <dd> - -<span class="param-type"><code>Error</code></span> - - - </dd> - </dl> - </dt> - <dd></dd> -</dl> - - - -</div> - - - -<div class="section-returns"> -<h5>Returns:</h5> - - - -<dl class="param-type"> - <dt> - Type: - </dt> - <dd> - -<span class="param-type"><code>Array.<<a href="global.html#Token">Token</a>></code></span> - - - </dd> -</dl> - - -<div class="param-desc"> - Array of token objects with type, value, line, and column -</div> - - -</div> - - - -</div> - - -<div class="section-method"> - - - - <h4 class="name" id="main"><span class="type-signature">(async) </span>main<span class="signature">()</span><span class="type-signature"></span></h4> - - - - - -<div class="description"> - Processes command line arguments and executes the specified file. -Provides helpful error messages for incorrect usage. - -The language is designed for file execution only (no REPL), so the CLI -enforces this usage and provides helpful error messages for incorrect invocation. -The function validates that exactly one file path is provided and that the -file has the correct .txt extension. - -Exits with appropriate error codes for different failure scenarios. -</div> - - - - - -<dl class="details"> - - - - - - - - - - - - - - - - - - - - - - - - - - - <dt class="tag-source">Source:</dt> - <dd class="tag-source"><ul class="dummy"><li> - <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line2979">line 2979</a> - </li></ul></dd> - - - - - - - -</dl> - - - - - - - - - - - - - - - - - - - - - - - -</div> - - -<div class="section-method"> - - - - <h4 class="name" id="parser"><span class="type-signature"></span>parser<span class="signature">(tokens)</span><span class="type-signature"> → {<a href="global.html#ASTNode">ASTNode</a>}</span></h4> - - - - - -<div class="description"> - The parser implements a combinator-based architecture where all -operators are translated to function calls to standard library combinators. -This reduces parsing ambiguity while preserving the original syntax. - -The parser uses a recursive descent approach with proper operator precedence -handling. Each operator expression (e.g., x + y) is translated to a FunctionCall -node (e.g., add(x, y)) that will be executed by the interpreter using the -corresponding combinator function. - -Key architectural decisions: -- All operators become FunctionCall nodes to eliminate ambiguity -- Operator precedence is handled through recursive parsing functions -- Function calls are detected by looking for identifiers followed by expressions -- When expressions and case patterns are parsed with special handling -- Table literals and access are parsed as structured data -- Function composition uses 'via' keyword with right-associative precedence -- Function application uses juxtaposition with left-associative precedence - -The parser maintains a current token index and advances through the token -stream, building the AST bottom-up from primary expressions to logical -expressions. This approach ensures that all operations are consistently -represented as function calls, enabling the interpreter to use the combinator -foundation for execution. - -This design choice reduces the need for special operator handling in the -interpreter and enables abstractions through the combinator foundation. -All operations become function calls, providing a consistent and extensible -execution model that can be enhanced by adding new combinator functions. - -The parser implements a top-down recursive descent strategy where each -parsing function handles a specific precedence level. This approach ensures -that operator precedence is correctly enforced while maintaining clear -separation of concerns for different language constructs. - -Error handling is designed to provide meaningful feedback by including -context about what was expected and what was found. This enables users -to quickly identify and fix parsing errors in their code. -</div> - - - - - -<dl class="details"> - - - - - - - - - - - - - - - - - - - - - - - - - - - <dt class="tag-source">Source:</dt> - <dd class="tag-source"><ul class="dummy"><li> - <a href="parser.js.html">parser.js</a>, <a href="parser.js.html#line83">line 83</a> - </li></ul></dd> - - - - - - - -</dl> - - - - - - - - - - <h5>Parameters:</h5> - - -<table class="params"> - <thead> - <tr> - - <th>Name</th> - - - <th>Type</th> - - - - - - <th class="last">Description</th> - </tr> - </thead> - - <tbody> - - - <tr> - - <td class="name"><code>tokens</code></td> - - - <td class="type"> - - -<span class="param-type"><code>Array.<<a href="global.html#Token">Token</a>></code></span> - - - - </td> - - - - - - <td class="description last"> - Array of tokens from the lexer - - </td> - </tr> - - - </tbody> -</table> - - - - - - - - - - - - -<div class="section-throws"> -<h5>Throws:</h5> - - - -<dl> - <dt> - <div class="param-desc"> - For parsing errors like unexpected tokens or missing delimiters - </div> - </dt> - <dd></dd> - <dt> - <dl> - <dt> - Type - </dt> - <dd> - -<span class="param-type"><code>Error</code></span> - - - </dd> - </dl> - </dt> - <dd></dd> -</dl> - - - -</div> - - - -<div class="section-returns"> -<h5>Returns:</h5> - - - -<dl class="param-type"> - <dt> - Type: - </dt> - <dd> - -<span class="param-type"><code><a href="global.html#ASTNode">ASTNode</a></code></span> - - - </dd> -</dl> - - -<div class="param-desc"> - Abstract Syntax Tree with program body -</div> - - -</div> - - - -</div> - - -<div class="section-method"> - - - - <h4 class="name" id="readFile"><span class="type-signature">(async) </span>readFile<span class="signature">(filePath)</span><span class="type-signature"> → {Promise.<string>}</span></h4> - - - - - -<div class="description"> - Handles file reading across different platforms (Node.js, Bun, browser) -with appropriate fallbacks for each environment. This function is essential for -the language's file execution model where scripts are loaded from .txt files. - -The function prioritizes ES modules compatibility by using dynamic import, -but falls back to require for older Node.js versions. Browser environments -are not supported for file I/O operations. - -This cross-platform approach ensures the language can run in various JavaScript -environments while maintaining consistent behavior. The file reading capability -enables the language to execute scripts from files, supporting the development -workflow where tests and examples are stored as .txt files. -</div> - - - - - -<dl class="details"> - - - - - - - - - - - - - - - - - - - - - - - - - - - <dt class="tag-source">Source:</dt> - <dd class="tag-source"><ul class="dummy"><li> - <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line2853">line 2853</a> - </li></ul></dd> - - - - - - - -</dl> - - - - - - - - - - <h5>Parameters:</h5> - - -<table class="params"> - <thead> - <tr> - - <th>Name</th> - - - <th>Type</th> - - - - - - <th class="last">Description</th> - </tr> - </thead> - - <tbody> - - - <tr> - - <td class="name"><code>filePath</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last"> - Path to the file to read - - </td> - </tr> - - - </tbody> -</table> - - - - - - - - - - - - -<div class="section-throws"> -<h5>Throws:</h5> - - - -<dl> - <dt> - <div class="param-desc"> - For file reading errors - </div> - </dt> - <dd></dd> - <dt> - <dl> - <dt> - Type - </dt> - <dd> - -<span class="param-type"><code>Error</code></span> - - - </dd> - </dl> - </dt> - <dd></dd> -</dl> - - - -</div> - - - -<div class="section-returns"> -<h5>Returns:</h5> - - - -<dl class="param-type"> - <dt> - Type: - </dt> - <dd> - -<span class="param-type"><code>Promise.<string></code></span> - - - </dd> -</dl> - - -<div class="param-desc"> - File contents as a string -</div> - - -</div> - - - -</div> - - -<div class="section-method"> - - - - <h4 class="name" id="run"><span class="type-signature"></span>run<span class="signature">(scriptContent, initialState<span class="signature-attributes">opt</span>, environment<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {*}</span></h4> - - - - - -<div class="description"> - Parses and executes a script using the combinator-based language. -This function orchestrates the entire execution pipeline from source code -to final result. - -The function performs the following steps: -1. Tokenize the source code using the lexer -2. Parse the tokens into an AST using the parser -3. Evaluate the AST using the interpreter -4. Return the final result - -This is the primary interface for executing scripts in the language. -It handles the parsing and evaluation pipeline, -providing a simple interface for users to run their code. - -The function supports both synchronous and asynchronous execution. When -the script contains IO operations that return Promises, the function -will return a Promise that resolves to the final result. This enables -non-blocking execution for interactive programs. - -Error handling is comprehensive, with errors from any stage of the -pipeline (lexing, parsing, or evaluation) being caught and re-thrown -with appropriate context. This ensures that users get meaningful -error messages that help them identify and fix issues in their code. - -The function is designed to be stateless, with each call creating -a fresh interpreter instance. This ensures that scripts don't interfere -with each other and enables safe concurrent execution of multiple scripts. -</div> - - - - - -<dl class="details"> - - - - - - - - - - - - - - - - - - - - - - - - - - - <dt class="tag-source">Source:</dt> - <dd class="tag-source"><ul class="dummy"><li> - <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line2667">line 2667</a> - </li></ul></dd> - - - - - - - -</dl> - - - - - - - - - - <h5>Parameters:</h5> - - -<table class="params"> - <thead> - <tr> - - <th>Name</th> - - - <th>Type</th> - - - <th>Attributes</th> - - - - <th>Default</th> - - - <th class="last">Description</th> - </tr> - </thead> - - <tbody> - - - <tr> - - <td class="name"><code>scriptContent</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - <td class="attributes"> - - - - - - </td> - - - - <td class="default"> - - </td> - - - <td class="description last"> - The script content to execute - - </td> - </tr> - - - - <tr> - - <td class="name"><code>initialState</code></td> - - - <td class="type"> - - -<span class="param-type"><code>Object</code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - - - </td> - - - - <td class="default"> - - {} - - </td> - - - <td class="description last"> - Initial state for the interpreter - - </td> - </tr> - - - - <tr> - - <td class="name"><code>environment</code></td> - - - <td class="type"> - - -<span class="param-type"><code><a href="global.html#Environment">Environment</a></code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - - - </td> - - - - <td class="default"> - - null - - </td> - - - <td class="description last"> - Environment for IO operations - - </td> - </tr> - - - </tbody> -</table> - - - - - - - - - - - - -<div class="section-throws"> -<h5>Throws:</h5> - - - -<dl> - <dt> - <div class="param-desc"> - For parsing or evaluation errors - </div> - </dt> - <dd></dd> - <dt> - <dl> - <dt> - Type - </dt> - <dd> - -<span class="param-type"><code>Error</code></span> - - - </dd> - </dl> - </dt> - <dd></dd> -</dl> - - - -</div> - - - -<div class="section-returns"> -<h5>Returns:</h5> - - - -<dl class="param-type"> - <dt> - Type: - </dt> - <dd> - -<span class="param-type"><code>*</code></span> - - - </dd> -</dl> - - -<div class="param-desc"> - The result of executing the script -</div> - - -</div> - - - -</div> - - - - - <h3 class="subsection-title">Type Definitions</h3> - - - -<div class="section-members"> -<h4 class="name" id="ASTNode">ASTNode</h4> - - - - -<div class="description"> - AST node types for the language -</div> - - - - - - <h5 class="subsection-title">Properties:</h5> - - - -<table class="props"> - <thead> - <tr> - - <th>Name</th> - - - <th>Type</th> - - - <th>Attributes</th> - - - - - <th class="last">Description</th> - </tr> - </thead> - - <tbody> - - - <tr> - - <td class="name"><code>type</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - <td class="attributes"> - - - - </td> - - - - - <td class="description last">The node type identifier</td> - </tr> - - - - - - <tr> - - <td class="name"><code>value</code></td> - - - <td class="type"> - - -<span class="param-type"><code>*</code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">Node value (for literals)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>name</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">Identifier name (for identifiers)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>body</code></td> - - - <td class="type"> - - -<span class="param-type"><code>Array.<<a href="global.html#ASTNode">ASTNode</a>></code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">Program or function body</td> - </tr> - - - - - - <tr> - - <td class="name"><code>args</code></td> - - - <td class="type"> - - -<span class="param-type"><code>Array.<<a href="global.html#ASTNode">ASTNode</a>></code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">Function call arguments</td> - </tr> - - - - - - <tr> - - <td class="name"><code>params</code></td> - - - <td class="type"> - - -<span class="param-type"><code>Array.<string></code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">Function parameters</td> - </tr> - - - - - - <tr> - - <td class="name"><code>parameters</code></td> - - - <td class="type"> - - -<span class="param-type"><code>Array.<string></code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">Function parameters (alternative)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>left</code></td> - - - <td class="type"> - - -<span class="param-type"><code><a href="global.html#ASTNode">ASTNode</a></code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">Left operand (for binary expressions)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>right</code></td> - - - <td class="type"> - - -<span class="param-type"><code><a href="global.html#ASTNode">ASTNode</a></code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">Right operand (for binary expressions)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>operand</code></td> - - - <td class="type"> - - -<span class="param-type"><code><a href="global.html#ASTNode">ASTNode</a></code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">Operand (for unary expressions)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>table</code></td> - - - <td class="type"> - - -<span class="param-type"><code><a href="global.html#ASTNode">ASTNode</a></code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">Table expression (for table access)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>key</code></td> - - - <td class="type"> - - -<span class="param-type"><code><a href="global.html#ASTNode">ASTNode</a></code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">Key expression (for table access)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>entries</code></td> - - - <td class="type"> - - -<span class="param-type"><code>Array.<Object></code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">Table entries (for table literals)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>cases</code></td> - - - <td class="type"> - - -<span class="param-type"><code>Array.<<a href="global.html#ASTNode">ASTNode</a>></code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">When expression cases</td> - </tr> - - - - - - <tr> - - <td class="name"><code>pattern</code></td> - - - <td class="type"> - - -<span class="param-type"><code>Array.<<a href="global.html#ASTNode">ASTNode</a>></code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">Pattern matching patterns</td> - </tr> - - - - - - <tr> - - <td class="name"><code>result</code></td> - - - <td class="type"> - - -<span class="param-type"><code>Array.<<a href="global.html#ASTNode">ASTNode</a>></code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">Pattern matching results</td> - </tr> - - - - - - <tr> - - <td class="name"><code>value</code></td> - - - <td class="type"> - - -<span class="param-type"><code><a href="global.html#ASTNode">ASTNode</a></code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">When expression value</td> - </tr> - - - - - </tbody> -</table> - - - - -<dl class="details"> - - - - - - - - - - - - - - - - - - - - - - - - - - - <dt class="tag-source">Source:</dt> - <dd class="tag-source"><ul class="dummy"><li> - <a href="parser.js.html">parser.js</a>, <a href="parser.js.html#line15">line 15</a> - </li></ul></dd> - - - - - - - -</dl> - - - - <h5>Type:</h5> - <ul> - <li> - -<span class="param-type"><code>Object</code></span> - - - </li> - </ul> - - - - - -</div> - - - -<div class="section-members"> -<h4 class="name" id="Environment">Environment</h4> - - - - -<div class="description"> - Environment interface for external system integration -</div> - - - - - - <h5 class="subsection-title">Properties:</h5> - - - -<table class="props"> - <thead> - <tr> - - <th>Name</th> - - - <th>Type</th> - - - - - - <th class="last">Description</th> - </tr> - </thead> - - <tbody> - - - <tr> - - <td class="name"><code>getCurrentState</code></td> - - - <td class="type"> - - -<span class="param-type"><code>function</code></span> - - - - </td> - - - - - - <td class="description last">Returns the current state from external system</td> - </tr> - - - - - - <tr> - - <td class="name"><code>emitValue</code></td> - - - <td class="type"> - - -<span class="param-type"><code>function</code></span> - - - - </td> - - - - - - <td class="description last">Sends a value to the external system</td> - </tr> - - - - - </tbody> -</table> - - - - -<dl class="details"> - - - - - - - - - - - - - - - - - - - - - - - - - - - <dt class="tag-source">Source:</dt> - <dd class="tag-source"><ul class="dummy"><li> - <a href="lang.js.html">lang.js</a>, <a href="lang.js.html#line93">line 93</a> - </li></ul></dd> - - - - - - - -</dl> - - - - <h5>Type:</h5> - <ul> - <li> - -<span class="param-type"><code>Object</code></span> - - - </li> - </ul> - - - - - -</div> - - - -<div class="section-members"> -<h4 class="name" id="Token">Token</h4> - - - - -<div class="description"> - Token object structure -</div> - - - - - - <h5 class="subsection-title">Properties:</h5> - - - -<table class="props"> - <thead> - <tr> - - <th>Name</th> - - - <th>Type</th> - - - <th>Attributes</th> - - - - - <th class="last">Description</th> - </tr> - </thead> - - <tbody> - - - <tr> - - <td class="name"><code>type</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - <td class="attributes"> - - - - </td> - - - - - <td class="description last">The token type from TokenType enum</td> - </tr> - - - - - - <tr> - - <td class="name"><code>value</code></td> - - - <td class="type"> - - -<span class="param-type"><code>*</code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">The token's value (for literals and identifiers)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>name</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - <td class="attributes"> - - <optional><br> - - - - </td> - - - - - <td class="description last">Function name (for FUNCTION_REF tokens)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>line</code></td> - - - <td class="type"> - - -<span class="param-type"><code>number</code></span> - - - - </td> - - - <td class="attributes"> - - - - </td> - - - - - <td class="description last">Line number where token appears (1-indexed)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>column</code></td> - - - <td class="type"> - - -<span class="param-type"><code>number</code></span> - - - - </td> - - - <td class="attributes"> - - - - </td> - - - - - <td class="description last">Column number where token appears (1-indexed)</td> - </tr> - - - - - </tbody> -</table> - - - - -<dl class="details"> - - - - - - - - - - - - - - - - - - - - - - - - - - - <dt class="tag-source">Source:</dt> - <dd class="tag-source"><ul class="dummy"><li> - <a href="lexer.js.html">lexer.js</a>, <a href="lexer.js.html#line123">line 123</a> - </li></ul></dd> - - - - - - - -</dl> - - - - <h5>Type:</h5> - <ul> - <li> - -<span class="param-type"><code>Object</code></span> - - - </li> - </ul> - - - - - -</div> - - - -<div class="section-members"> -<h4 class="name" id="TokenType">TokenType</h4> - - - - -<div class="description"> - Defines all token types used by the lexer and parser. -Each token type represents a distinct syntactic element in the language. - -The token types are organized into categories: -- Literals: NUMBER, STRING, TRUE, FALSE -- Operators: PLUS, MINUS, MULTIPLY, DIVIDE, MODULO, POWER, etc. -- Keywords: WHEN, IS, THEN, FUNCTION, etc. -- Punctuation: LEFT_PAREN, RIGHT_PAREN, SEMICOLON, COMMA, etc. -- Special: IO_IN, IO_OUT, IO_ASSERT, IO_LISTEN, IO_EMIT, FUNCTION_REF, FUNCTION_ARG - -This enumeration provides a centralized definition of all possible -token types, ensuring consistency between lexer and parser. The token -types are designed to support the combinator-based architecture where -all operations are translated to function calls. -</div> - - - - - - <h5 class="subsection-title">Properties:</h5> - - - -<table class="props"> - <thead> - <tr> - - <th>Name</th> - - - <th>Type</th> - - - - - - <th class="last">Description</th> - </tr> - </thead> - - <tbody> - - - <tr> - - <td class="name"><code>NUMBER</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Numeric literals (integers and floats)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>PLUS</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Addition operator (+)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>MINUS</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Subtraction operator (-)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>MULTIPLY</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Multiplication operator (*)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>DIVIDE</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Division operator (/)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>IDENTIFIER</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Variable names and function names</td> - </tr> - - - - - - <tr> - - <td class="name"><code>ASSIGNMENT</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Assignment operator (:)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>ARROW</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Function arrow (->)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>CASE</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Case keyword</td> - </tr> - - - - - - <tr> - - <td class="name"><code>OF</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Of keyword</td> - </tr> - - - - - - <tr> - - <td class="name"><code>WHEN</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">When keyword for pattern matching</td> - </tr> - - - - - - <tr> - - <td class="name"><code>IS</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Is keyword for pattern matching</td> - </tr> - - - - - - <tr> - - <td class="name"><code>THEN</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Then keyword for pattern matching</td> - </tr> - - - - - - <tr> - - <td class="name"><code>WILDCARD</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Wildcard pattern (_)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>FUNCTION</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Function keyword</td> - </tr> - - - - - - <tr> - - <td class="name"><code>LEFT_PAREN</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Left parenthesis (()</td> - </tr> - - - - - - <tr> - - <td class="name"><code>RIGHT_PAREN</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Right parenthesis ())</td> - </tr> - - - - - - <tr> - - <td class="name"><code>LEFT_BRACE</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Left brace ({)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>RIGHT_BRACE</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Right brace (})</td> - </tr> - - - - - - <tr> - - <td class="name"><code>LEFT_BRACKET</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Left bracket ([)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>RIGHT_BRACKET</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Right bracket (])</td> - </tr> - - - - - - <tr> - - <td class="name"><code>SEMICOLON</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Semicolon (;)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>COMMA</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Comma (,)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>DOT</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Dot (.)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>STRING</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">String literals</td> - </tr> - - - - - - <tr> - - <td class="name"><code>TRUE</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Boolean true literal</td> - </tr> - - - - - - <tr> - - <td class="name"><code>FALSE</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Boolean false literal</td> - </tr> - - - - - - <tr> - - <td class="name"><code>AND</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Logical AND operator</td> - </tr> - - - - - - <tr> - - <td class="name"><code>OR</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Logical OR operator</td> - </tr> - - - - - - <tr> - - <td class="name"><code>XOR</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Logical XOR operator</td> - </tr> - - - - - - <tr> - - <td class="name"><code>NOT</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Logical NOT operator</td> - </tr> - - - - - - <tr> - - <td class="name"><code>EQUALS</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Equality operator (==)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>LESS_THAN</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Less than operator (<)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>GREATER_THAN</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Greater than operator (>)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>LESS_EQUAL</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Less than or equal operator (<=)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>GREATER_EQUAL</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Greater than or equal operator (>=)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>NOT_EQUAL</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Not equal operator (!=)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>MODULO</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Modulo operator (%)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>POWER</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Power operator (^)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>IO_IN</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Input operation (..in)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>IO_OUT</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Output operation (..out)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>IO_ASSERT</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Assertion operation (..assert)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>IO_LISTEN</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Listen operation (..listen)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>IO_EMIT</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Emit operation (..emit)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>FUNCTION_REF</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Function reference (@function)</td> - </tr> - - - - - - <tr> - - <td class="name"><code>FUNCTION_ARG</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Function argument (@(expression))</td> - </tr> - - - - - - <tr> - - <td class="name"><code>COMPOSE</code></td> - - - <td class="type"> - - -<span class="param-type"><code>string</code></span> - - - - </td> - - - - - - <td class="description last">Function composition (via)</td> - </tr> - - - - - </tbody> -</table> - - - - -<dl class="details"> - - - - - - - - - - - - - - - - - - - - - - - - - - - <dt class="tag-source">Source:</dt> - <dd class="tag-source"><ul class="dummy"><li> - <a href="lexer.js.html">lexer.js</a>, <a href="lexer.js.html#line4">line 4</a> - </li></ul></dd> - - - - - - - -</dl> - - - - <h5>Type:</h5> - <ul> - <li> - -<span class="param-type"><code>Object</code></span> - - - </li> - </ul> - - - - - -</div> - - - - - -</article> - -</section> - - - - -</div> - -<br class="clear"> - -<footer> - Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.4</a> on Tue Jul 29 2025 23:15:00 GMT-0400 (Eastern Daylight Time) using the Minami theme. -</footer> - -<script>prettyPrint();</script> -<script src="scripts/linenumber.js"></script> -</body> -</html> \ No newline at end of file |