<!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>Expressions — 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"><a class="nav-item" href="../grammar/">Grammar</a></li>
<li class="toctree-l2"><a class="nav-item" href="../statements/">Statements</a></li>
<li class="toctree-l2 current"><a class="nav-item current" href="./">Expressions</a>
<ul class="subnav">
<li class="toctree-l3"><a class="nav-item toc" href="#atom">Atom</a></li>
<li class="toctree-l3"><a class="nav-item toc" href="#path">Path</a></li>
</ul></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="../statements/">« Previous</a></div>
<div class="next"><a href="../basic-values/">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="expressions">Expressions</h1>
<p>An expression has a lot of variants like binary or unary expressions, calls or just be an <a href="#atom">Atom</a></p>
<h2 id="atom">Atom</h2>
<p>An Atom is the smallest possible expression, just being one value or a <a href="#path">Path</a>.</p>
<h3 id="values">Values</h3>
<p>All of the tokens that are atomic like <code>null</code>, <code>int</code>, <code>float</code>, etc. are valid Atoms.</p>
<p>Examples: <code>1</code>, <code>null</code>, <code>true</code>, <code>"hello there"</code></p>
<h3 id="sub-expression">Sub-Expression</h3>
<p>Of course an Atom can also be another <a href="#expression">Expression</a></p>
<p>Examples: <code>(a + b)</code>, <code>((a + b) * c)</code>, <code>(1)</code></p>
<h3 id="vector">Vector</h3>
<p>A list of <a href="#expression">Expressions</a></p>
<p>Examples: <code>[1, 2, 3]</code>, <code>[a + b, "joe", false]</code></p>
<h3 id="object">Object</h3>
<p>A list of identifier and <a href="#expression">Expression</a> pairs</p>
<p>Examples: <code>{ name = "joe", age = 25 }</code></p>
<h3 id="if-expression">If-Expression</h3>
<p>A conditional expression branch with required if and else-cases.</p>
<p>Examples: <code>if age > 18 "of age" else "under age"</code></p>
<h3 id="function-definition">Function Definition</h3>
<p>This is used to define functions with parameters as an expression.</p>
<p>Examples: <code>fn (a, b) { return a + b }</code></p>
<h2 id="path">Path</h2>
<p>A path is either an identifier or a field/index into another path</p>
<p>Examples: <code>a</code>, <code>a.b</code>, <code>a.b.c</code>, <code>a[1]</code></p></div>
<footer>
<div class="footer-buttons">
<div class="previous"><a href="../statements/" title="Statements"><span>Previous</span></a></div>
<div class="next"><a href="../basic-values/" title="Basic Values"><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>