UNPKG

esther-medina-quintero-parser-nearley

Version:
166 lines (134 loc) 4.66 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Source: src/build-ast.js | Source: src/build-ast.js</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="styles/bootstrap.min.css"> <link type="text/css" rel="stylesheet" href="styles/prettify-jsdoc.css"> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/tui-doc.css"> </head> <body> <nav class="lnb" id="lnb"> <div class="logo" style=""> <img src="img/toast-ui.png" width="100%" height="100%"> </div> <div class="title"> <h1><a href="index.html" class="link">Source: src/build-ast.js</a></h1> </div> <div class="search-container" id="search-container"> <input type="text" placeholder="Search"> <ul></ul> </div> <div class="lnb-api hidden"><h3>Externals</h3><ul><li><a href="external-Grammar.html">Grammar</a><button type="button" class="hidden toggle-subnav btn btn-link"> <span class="glyphicon glyphicon-plus"></span></button><div class="hidden" id="external:Grammar_sub"></div></li></ul></div><div class="lnb-api hidden"><h3>Global</h3><ul><li><a href="global.html#buildNestedApplies">buildNestedApplies</a></li><li><a href="global.html#buildNumberValue">buildNumberValue</a></li><li><a href="global.html#buildStringValue">buildStringValue</a></li><li><a href="global.html#buildWordApplies">buildWordApplies</a></li><li><a href="global.html#compile">compile</a></li><li><a href="global.html#Tokens">Tokens</a></li></ul></div> </nav> <div id="resizer"></div> <div class="main" id="main"> <section> <article> <pre class="prettyprint source linenums"><code>/** * The ASTs of the Egg Lang * @external Grammar * @see {@link https://ull-esit-pl-2122.github.io/temas/syntax-analysis/ast.html#gramatica-informal-de-los-arboles-del-parser-de-egg} */ /** * A function that builds a number value * @param {Token} token The token to be built * @return {Object} The number value */ function buildNumberValue([token]) { // console.log(token) return { type: "value", value: token.value, raw: token.text, }; } /** * A function that builds a string value * @param {Token} token The token to be built * @return {Object} The string value */ function buildStringValue([token]) { return { type: "value", value: token.value.replace(/^"|"$/g, ""), raw: token.text, }; } /** * A function that builds a word applies * @param {Array} word The word to be built * @param {Array} applies The applies to be built * @return {Object} The word applies */ function buildWordApplies([word, applies]) { if (applies == null) { word.type = "word"; word.name = word.value; delete(word.value); delete(word.text); delete(word.toString); return word; } let ast = { type: "apply", operator: word, args: applies[0], } if (applies.length == 1) { return ast; } for (let i = 1; i &lt; applies.length; i++) { let oldAst = ast; ast = { type: "apply", operator: oldAst, args: applies[i], }; } return ast; } /** * A function that builds nested applies * @param {Array} parentExp The parent expression to be built * @param {Array} applies The applies to be built * @return {Array} The nested applies */ function buildNestedApplies([parentExp, applies]) { if (applies) return [parentExp].concat(applies); return [parentExp]; } module.exports = { buildNumberValue, buildStringValue, buildWordApplies, buildNestedApplies }; </code></pre> </article> </section> </div> <footer> <img class="logo" src="img/toast-ui.png" style=""> <div class="footer-text">NHN Entertainment. Frontend Development Lab</div> </footer> <script>prettyPrint();</script> <script src="scripts/jquery.min.js"></script> <script src="scripts/tui-doc.js"></script> <script src="scripts/linenumber.js"></script> <script> var id = '_sub'.replace(/"/g, '_'); var selectedApi = document.getElementById(id); // do not use jquery selector var $selectedApi = $(selectedApi); $selectedApi.removeClass('hidden'); $selectedApi.parent().find('.glyphicon').removeClass('glyphicon-plus').addClass('glyphicon-minus'); showLnbApi(); </script> </body> </html>