about summary refs log tree commit diff stats
path: root/js/scripting-lang/docs/baba-yaga/0.0.1/parser.js.html
diff options
context:
space:
mode:
Diffstat (limited to 'js/scripting-lang/docs/baba-yaga/0.0.1/parser.js.html')
-rw-r--r--js/scripting-lang/docs/baba-yaga/0.0.1/parser.js.html83
1 files changed, 50 insertions, 33 deletions
diff --git a/js/scripting-lang/docs/baba-yaga/0.0.1/parser.js.html b/js/scripting-lang/docs/baba-yaga/0.0.1/parser.js.html
index 2b91a2d..9858678 100644
--- a/js/scripting-lang/docs/baba-yaga/0.0.1/parser.js.html
+++ b/js/scripting-lang/docs/baba-yaga/0.0.1/parser.js.html
@@ -2,22 +2,35 @@
 <html lang="en">
 <head>
     <meta charset="utf-8">
-    <title>JSDoc: Source: parser.js</title>
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>parser.js - Documentation</title>
 
-    <script src="scripts/prettify/prettify.js"> </script>
-    <script src="scripts/prettify/lang-css.js"> </script>
+    <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>
 
-<div id="main">
+<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>
 
-    <h1 class="page-title">Source: parser.js</h1>
+<div id="main">
+    
+    <h1 class="page-title">parser.js</h1>
+    
 
     
 
@@ -32,6 +45,14 @@
 
 import { TokenType } from './lexer.js';
 
+// Cross-platform environment detection
+const isNode = typeof process !== 'undefined' &amp;&amp; process.versions &amp;&amp; process.versions.node;
+const isBun = typeof process !== 'undefined' &amp;&amp; process.versions &amp;&amp; process.versions.bun;
+const isBrowser = typeof window !== 'undefined' &amp;&amp; typeof document !== 'undefined';
+
+// Cross-platform debug flag
+const DEBUG = (isNode &amp;&amp; process.env.DEBUG) || (isBrowser &amp;&amp; window.DEBUG) || false;
+
 /**
  * AST node types for the language
  * 
@@ -362,7 +383,7 @@ export function parser(tokens) {
      * patterns, and unexpected tokens during pattern parsing.
      */
     function parseWhenExpression() {
-        if (process.env.DEBUG) {
+        if (DEBUG) {
             console.log(`[DEBUG] parseWhenExpression: starting, current token = ${tokens[current].type}`);
         }
         current++; // Skip 'when'
@@ -393,7 +414,7 @@ export function parser(tokens) {
         const cases = [];
         
         while (current &lt; tokens.length) {
-            if (process.env.DEBUG) {
+            if (DEBUG) {
                 console.log(`[DEBUG] parseWhenExpression: starting new case, current token = ${tokens[current].type}, value = ${tokens[current].value || 'N/A'}`);
             }
             // Parse pattern(s) - can be single pattern or multiple patterns
@@ -402,7 +423,7 @@ export function parser(tokens) {
             // Parse patterns until we hit THEN
             while (current &lt; tokens.length &amp;&amp; tokens[current].type !== TokenType.THEN) {
                 let pattern;
-                if (process.env.DEBUG) {
+                if (DEBUG) {
                     console.log(`[DEBUG] parseWhenExpression: parsing pattern, current token = ${tokens[current].type}, value = ${tokens[current].value || 'N/A'}`);
                 }
                 
@@ -552,7 +573,7 @@ export function parser(tokens) {
                 result: [result]
             });
             
-            if (process.env.DEBUG) {
+            if (DEBUG) {
                 console.log(`[DEBUG] parseWhenExpression: finished case, current token = ${tokens[current].type}, value = ${tokens[current].value || 'N/A'}`);
             }
             
@@ -560,13 +581,13 @@ export function parser(tokens) {
             if (current &lt; tokens.length) {
                 const nextToken = tokens[current];
                 
-                if (process.env.DEBUG) {
+                if (DEBUG) {
                     console.log(`[DEBUG] parseWhenExpression: checking termination, nextToken = ${nextToken.type}, value = ${nextToken.value || 'N/A'}`);
                 }
                 
                 // Stop on semicolon
                 if (nextToken.type === TokenType.SEMICOLON) {
-                    if (process.env.DEBUG) {
+                    if (DEBUG) {
                         console.log(`[DEBUG] parseWhenExpression: terminating on SEMICOLON`);
                     }
                     current++;
@@ -575,7 +596,7 @@ export function parser(tokens) {
                 
                 // Stop on assignment (for consecutive assignments)
                 if (nextToken.type === TokenType.ASSIGNMENT) {
-                    if (process.env.DEBUG) {
+                    if (DEBUG) {
                         console.log(`[DEBUG] parseWhenExpression: terminating on ASSIGNMENT`);
                     }
                     break;
@@ -594,7 +615,7 @@ export function parser(tokens) {
                     
                     if (lookAhead &lt; tokens.length &amp;&amp; tokens[lookAhead].type === TokenType.ASSIGNMENT) {
                         // This is the start of a new assignment, terminate the when expression
-                        if (process.env.DEBUG) {
+                        if (DEBUG) {
                             console.log(`[DEBUG] parseWhenExpression: terminating on new assignment starting with ${nextToken.value}`);
                         }
                         break;
@@ -603,7 +624,7 @@ export function parser(tokens) {
                 
                 // Stop on right brace (for when expressions inside table literals)
                 if (nextToken.type === TokenType.RIGHT_BRACE) {
-                    if (process.env.DEBUG) {
+                    if (DEBUG) {
                         console.log(`[DEBUG] parseWhenExpression: terminating on RIGHT_BRACE`);
                     }
                     break;
@@ -611,7 +632,7 @@ export function parser(tokens) {
                 
                 // Stop on comma (for when expressions inside table literals)
                 if (nextToken.type === TokenType.COMMA) {
-                    if (process.env.DEBUG) {
+                    if (DEBUG) {
                         console.log(`[DEBUG] parseWhenExpression: terminating on COMMA`);
                     }
                     break;
@@ -913,7 +934,7 @@ export function parser(tokens) {
      * Error handling includes checks for missing operators or operands.
      */
     function parseExpression() {
-        if (process.env.DEBUG) {
+        if (DEBUG) {
             console.log(`[DEBUG] parseExpression: starting, current token = ${tokens[current].type}`);
         }
         
@@ -931,7 +952,7 @@ export function parser(tokens) {
         // Handle unary minus at the beginning of expressions
         let left;
         if (current &lt; tokens.length &amp;&amp; (tokens[current].type === TokenType.MINUS || tokens[current].type === TokenType.UNARY_MINUS)) {
-            if (process.env.DEBUG) {
+            if (DEBUG) {
                 console.log(`[DEBUG] parseExpression: handling unary minus`);
             }
             current++;
@@ -945,14 +966,14 @@ export function parser(tokens) {
             left = parseTerm();
         }
         
-        if (process.env.DEBUG) {
+        if (DEBUG) {
             console.log(`[DEBUG] parseExpression: after parseTerm, current token = ${tokens[current].type}`);
         }
         
         while (current &lt; tokens.length) {
             const token = tokens[current];
             
-            if (process.env.DEBUG) {
+            if (DEBUG) {
                 console.log(`[DEBUG] parseExpression: while loop, current token = ${token.type}, value = ${token.value || 'N/A'}`);
             }
             
@@ -1016,7 +1037,7 @@ export function parser(tokens) {
      * Error handling includes checks for missing operators or operands.
      */
     function parseTerm() {
-        if (process.env.DEBUG) {
+        if (DEBUG) {
             console.log(`[DEBUG] parseTerm: starting, current token = ${tokens[current].type}`);
         }
         let left = parseApplication();
@@ -1069,7 +1090,7 @@ export function parser(tokens) {
      * Error handling includes checks for missing operators or operands.
      */
     function parseFactor() {
-        if (process.env.DEBUG) {
+        if (DEBUG) {
             console.log(`[DEBUG] parseFactor: starting, current token = ${tokens[current].type}`);
         }
         let left = parsePrimary();
@@ -1508,7 +1529,7 @@ export function parser(tokens) {
             throw new Error('Unexpected end of input');
         }
         
-        if (process.env.DEBUG) {
+        if (DEBUG) {
             console.log(`[DEBUG] parsePrimary: current token = ${token.type}, value = ${token.value || 'N/A'}`);
         }
         
@@ -1654,9 +1675,9 @@ export function parser(tokens) {
 
             case TokenType.LEFT_PAREN:
                 current++;
-                if (process.env.DEBUG) {
-                    console.log(`[DEBUG] parsePrimary: parsing LEFT_PAREN, current token = ${tokens[current].type}`);
-                }
+                            if (DEBUG) {
+                console.log(`[DEBUG] parsePrimary: parsing LEFT_PAREN, current token = ${tokens[current].type}`);
+            }
                 const expression = parseLogicalExpression();
                 if (current >= tokens.length || tokens[current].type !== TokenType.RIGHT_PAREN) {
                     throw new Error('Expected ")" after expression');
@@ -1736,17 +1757,13 @@ export function parser(tokens) {
 
 </div>
 
-<nav>
-    <h2><a href="index.html">Home</a></h2><h3>Tutorials</h3><ul><li><a href="tutorial-00_Introduction.html">00_Introduction</a></li><li><a href="tutorial-01_Juxtaposition_Function_Application.html">01_Juxtaposition_Function_Application</a></li><li><a href="tutorial-02_Right_Associative_Via_Operator.html">02_Right_Associative_Via_Operator</a></li><li><a href="tutorial-03_Automatic_Element_Wise_Table_Operations.html">03_Automatic_Element_Wise_Table_Operations</a></li><li><a href="tutorial-04_Partial_Application_by_Default.html">04_Partial_Application_by_Default</a></li><li><a href="tutorial-05_When_Expressions_Pattern_Matching.html">05_When_Expressions_Pattern_Matching</a></li><li><a href="tutorial-06_Immutable_Tables_with_Functional_Operations.html">06_Immutable_Tables_with_Functional_Operations</a></li><li><a href="tutorial-07_Function_References_with_At_Symbol.html">07_Function_References_with_At_Symbol</a></li><li><a href="tutorial-08_Combinator_Based_Architecture.html">08_Combinator_Based_Architecture</a></li><li><a href="tutorial-09_No_Explicit_Return_Statements.html">09_No_Explicit_Return_Statements</a></li><li><a href="tutorial-10_Table_Literals_as_Primary_Data_Structure.html">10_Table_Literals_as_Primary_Data_Structure</a></li><li><a href="tutorial-11_Combinators_Deep_Dive.html">11_Combinators_Deep_Dive</a></li><li><a href="tutorial-12_Functional_Harness_Integration.html">12_Functional_Harness_Integration</a></li><li><a href="tutorial-13_Operator_Spacing_Best_Practices.html">13_Operator_Spacing_Best_Practices</a></li><li><a href="tutorial-README.html">README</a></li></ul><h3>Global</h3><ul><li><a href="global.html#callStackTracker">callStackTracker</a></li><li><a href="global.html#debugError">debugError</a></li><li><a href="global.html#debugLog">debugLog</a></li><li><a href="global.html#executeFile">executeFile</a></li><li><a href="global.html#initializeStandardLibrary">initializeStandardLibrary</a></li><li><a href="global.html#interpreter">interpreter</a></li><li><a href="global.html#lexer">lexer</a></li><li><a href="global.html#main">main</a></li><li><a href="global.html#parser">parser</a></li><li><a href="global.html#readFile">readFile</a></li><li><a href="global.html#run">run</a></li></ul>
-</nav>
-
 <br class="clear">
 
 <footer>
-    Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.4</a> on Tue Jul 29 2025 14:41:59 GMT-0400 (Eastern Daylight Time)
+    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>
+<script>prettyPrint();</script>
+<script src="scripts/linenumber.js"></script>
 </body>
 </html>