<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="../../img/favicon.ico">
<title>Grammar — Luna Docs</title>
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:400,700">
<link rel="stylesheet" href="//cdn.jsdelivr.net/gh/tonsky/FiraCode@1.206/distr/fira_code.css">
<link rel="stylesheet" href="//use.fontawesome.com/releases/v5.8.1/css/all.css">
<link rel="stylesheet" href="//use.fontawesome.com/releases/v5.8.1/css/v4-shims.css">
<link rel="stylesheet" href="../../css/theme.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css">
<script src="//code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
<script>
hljs.initHighlightingOnLoad();
</script>
</head>
<body ontouchstart="">
<div id="container">
<aside>
<div class="home">
<div class="title">
<button class="hamburger"></button>
<a href="../.." class="site-name"> Luna Docs</a>
</div>
<div class="search">
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" title="Type search term here" />
</form>
</div>
</div>
</div>
<nav class="nav">
<ul class="root">
<li class="toctree-l1"><a class="nav-item" href="../..">Home</a><a class="nav-item" href="../..">Home</a></li>
<li class="toctree-l1"><button class="section nav-item">Getting Started</button>
<ul class="subnav">
<li class="toctree-l2"><a class="nav-item" href="../../getting_started/installation/">Installation</a></li>
<li class="toctree-l2"><a class="nav-item" href="../../getting_started/environment/">Environment</a></li>
</ul></li>
<li class="toctree-l1"><button class="section nav-item">Guide</button>
<ul class="subnav">
<li class="toctree-l2 current"><a class="nav-item current" href="./">Grammar</a>
<ul class="subnav">
<li class="toctree-l3"><a class="nav-item toc" href="#atomic-tokens">Atomic Tokens</a></li>
<li class="toctree-l3"><a class="nav-item toc" href="#keywords">Keywords</a></li>
<li class="toctree-l3"><a class="nav-item toc" href="#symbols">Symbols</a></li>
<li class="toctree-l3"><a class="nav-item toc" href="#syntax-sugar">Syntax Sugar</a></li>
</ul></li>
<li class="toctree-l2"><a class="nav-item" href="../statements/">Statements</a></li>
<li class="toctree-l2"><a class="nav-item" href="../expressions/">Expressions</a></li>
<li class="toctree-l2"><a class="nav-item" href="../basic-values/">Basic Values</a></li>
<li class="toctree-l2"><a class="nav-item" href="../variables/">Variables</a></li>
<li class="toctree-l2"><a class="nav-item" href="../objects/">Objects</a></li>
<li class="toctree-l2"><a class="nav-item" href="../functions/">Functions</a></li>
</ul></li>
<li class="toctree-l1"><button class="section nav-item">Standard Modules</button>
<ul class="subnav">
<li class="toctree-l2"><a class="nav-item" href="../../standard_modules/globals/">Globals</a></li>
<li class="toctree-l2"><button class="section nav-item hide">Type Modules</button>
<ul class="subnav hide">
<li class="toctree-l3"><a class="nav-item" href="../../standard_modules/type_modules/int_module/">Int Module</a></li>
<li class="toctree-l3"><a class="nav-item" href="../../standard_modules/type_modules/float_module/">Float Module</a></li>
<li class="toctree-l3"><a class="nav-item" href="../../standard_modules/type_modules/bool_module/">Bool Module</a></li>
<li class="toctree-l3"><a class="nav-item" href="../../standard_modules/type_modules/char_module/">Char Module</a></li>
<li class="toctree-l3"><a class="nav-item" href="../../standard_modules/type_modules/string_module/">String Module</a></li>
<li class="toctree-l3"><a class="nav-item" href="../../standard_modules/type_modules/vector_module/">Vector Module</a></li>
<li class="toctree-l3"><a class="nav-item" href="../../standard_modules/type_modules/object_module/">Object Module</a></li>
</ul></li>
<li class="toctree-l2"><a class="nav-item" href="../../standard_modules/math/">Math</a></li>
<li class="toctree-l2"><a class="nav-item" href="../../standard_modules/io/">IO</a></li>
<li class="toctree-l2"><a class="nav-item" href="../../standard_modules/fs/">FS</a></li>
<li class="toctree-l2"><a class="nav-item" href="../../standard_modules/env/">Env</a></li>
<li class="toctree-l2"><a class="nav-item" href="../../standard_modules/net/">Net</a></li>
<li class="toctree-l2"><a class="nav-item" href="../../standard_modules/os/">OS</a></li>
<li class="toctree-l2"><a class="nav-item" href="../../standard_modules/typed/">Typed</a></li>
</ul></li>
</ul>
</nav>
<div class="repo">
<div class="previous"><a href="../../getting_started/environment/">« Previous</a></div>
<div class="next"><a href="../statements/">Next »</a></div>
</div>
</aside>
<div id="spacer"><button class="arrow"></button></div>
<main>
<div class="home-top">
<button class="hamburger"></button>
<a href="../.." class="site-name"> Luna Docs</a>
</div>
<div id="main">
<nav class="breadcrumbs">
<ul>
<li>Guide</li>
</ul>
</nav>
<div id="content"><h1 id="grammar">Grammar</h1>
<p>The grammar of Luna is very closue to modern languages like JavaScript and Rust</p>
<h2 id="atomic-tokens">Atomic Tokens</h2>
<p>The following is a list of atomic tokens and what their regex is:</p>
<table>
<thead>
<tr>
<th>name</th>
<th>regex</th>
</tr>
</thead>
<tbody>
<tr>
<td>null</td>
<td><code>/null/</code></td>
</tr>
<tr>
<td>ident</td>
<td><code>/[a-zA-Z_]([a-zA-Z_0-9]*)/</code></td>
</tr>
<tr>
<td>int</td>
<td><code>/[0-9]+/</code></td>
</tr>
<tr>
<td>float</td>
<td><code>/[0-9]+\./</code>, <code>/[0-9]+\.[0-9]+/</code></td>
</tr>
<tr>
<td>bool</td>
<td><code>/true/</code>, <code>/false/</code></td>
</tr>
<tr>
<td>char</td>
<td><code>/'\.'/</code></td>
</tr>
<tr>
<td>string</td>
<td><code>/"[^"]*"/</code></td>
</tr>
</tbody>
</table>
<h2 id="keywords">Keywords</h2>
<p>The following is a list of reserved keywords:</p>
<table>
<thead>
<tr>
<th>keyword</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>let</code></td>
<td>local variable definitions</td>
</tr>
<tr>
<td><code>fn</code></td>
<td>function definitions</td>
</tr>
<tr>
<td><code>if</code></td>
<td>conditional branches</td>
</tr>
<tr>
<td><code>else</code></td>
<td>else conditional branches of if statements</td>
</tr>
<tr>
<td><code>match</code></td>
<td>match statement</td>
</tr>
<tr>
<td><code>while</code></td>
<td>while loops</td>
</tr>
<tr>
<td><code>for</code></td>
<td>for loops</td>
</tr>
<tr>
<td><code>in</code></td>
<td>iterate over something in a for loop statement</td>
</tr>
<tr>
<td><code>return</code></td>
<td>return from a call</td>
</tr>
<tr>
<td><code>break</code></td>
<td>break out of a loop</td>
</tr>
<tr>
<td><code>continue</code></td>
<td>skip to next iteration of a loop</td>
</tr>
<tr>
<td><code>null</code></td>
<td>represents the null value</td>
</tr>
<tr>
<td><code>true</code></td>
<td>represents the boolean value <code>true</code></td>
</tr>
<tr>
<td><code>false</code></td>
<td>represents the boolean value <code>false</code></td>
</tr>
</tbody>
</table>
<h2 id="symbols">Symbols</h2>
<p>The following is a list of reserved keywords:</p>
<table>
<thead>
<tr>
<th>symbol</th>
<th>name</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>=</code></td>
<td>equal</td>
</tr>
<tr>
<td><code>,</code></td>
<td>comma</td>
</tr>
<tr>
<td><code>.</code></td>
<td>dot</td>
</tr>
<tr>
<td><code>:</code></td>
<td>colon</td>
</tr>
<tr>
<td><code>!</code></td>
<td>exclamation</td>
</tr>
<tr>
<td><code>(</code></td>
<td>paran left</td>
</tr>
<tr>
<td><code>)</code></td>
<td>paran right</td>
</tr>
<tr>
<td><code>[</code></td>
<td>bracket left</td>
</tr>
<tr>
<td><code>]</code></td>
<td>bracket right</td>
</tr>
<tr>
<td><code>{</code></td>
<td>brace left</td>
</tr>
<tr>
<td><code>}</code></td>
<td>brace right</td>
</tr>
<tr>
<td><code>+</code></td>
<td>plus</td>
</tr>
<tr>
<td><code>-</code></td>
<td>minus</td>
</tr>
<tr>
<td><code>*</code></td>
<td>star</td>
</tr>
<tr>
<td><code>/</code></td>
<td>slash</td>
</tr>
<tr>
<td><code>%</code></td>
<td>percent</td>
</tr>
<tr>
<td><code>^</code></td>
<td>exponent</td>
</tr>
<tr>
<td><code>+=</code></td>
<td>plus equal</td>
</tr>
<tr>
<td><code>-=</code></td>
<td>minus equal</td>
</tr>
<tr>
<td><code>*=</code></td>
<td>star equal</td>
</tr>
<tr>
<td><code>/=</code></td>
<td>slash equal</td>
</tr>
<tr>
<td><code>%=</code></td>
<td>percent equal</td>
</tr>
<tr>
<td><code>^=</code></td>
<td>exponent equal</td>
</tr>
<tr>
<td><code>==</code></td>
<td>equal equal</td>
</tr>
<tr>
<td><code>!=</code></td>
<td>exclamation equal</td>
</tr>
<tr>
<td><code><</code></td>
<td>less</td>
</tr>
<tr>
<td><code>></code></td>
<td>greater</td>
</tr>
<tr>
<td><code><=</code></td>
<td>less equal</td>
</tr>
<tr>
<td><code>>=</code></td>
<td>greater equal</td>
</tr>
<tr>
<td><code>&</code></td>
<td>ampersand</td>
</tr>
<tr>
<td><code>|</code></td>
<td>pipe</td>
</tr>
</tbody>
</table>
<h2 id="syntax-sugar">Syntax Sugar</h2>
<p>Luna has the same design philosophy as Lua.
What that means is that certain syntax is only another way to write the same thing:</p>
<pre><code>fn add(a, b) {
return a + b
}
</code></pre>
<p>translates to</p>
<pre><code>add = fn(a, b) {
return a + b
}
</code></pre></div>
<footer>
<div class="footer-buttons">
<div class="previous"><a href="../../getting_started/environment/" title="Environment"><span>Previous</span></a></div>
<div class="next"><a href="../statements/" title="Statements"><span>Next</span></a></div>
</div>
<div class="footer-note">
<p>
Built with <a href="http://www.mkdocs.org">MkDocs</a> using
<a href="https://github.com/daizutabi/mkdocs-ivory">Ivory theme</a>.
</p>
</div>
</footer>
</div>
</main>
</div>
<script>var base_url = '../..';</script>
<script src="../../js/theme.js"></script>
<script src="../../search/main.js"></script>
</body>
</html>