Skip to content

Instantly share code, notes, and snippets.

@nasser
Created October 27, 2014 20:39
Show Gist options
  • Save nasser/9e4dee5dbda5543ab88c to your computer and use it in GitHub Desktop.
Save nasser/9e4dee5dbda5543ab88c to your computer and use it in GitHub Desktop.
<meta charset="utf-8">
<script src="js/jquery.js"></script>
<script src="js/jqconsole.js"></script>
<script src="js/sugar.js"></script>
<script src="js/peg.js"></script>
<script src="js/plt.js"></script>
<script type="text/javascript">
// uncomment next line to enable refresh
PLT.refresh = true
// write helper functions and semantics here
</script>
<title>Language</title>
<grammar>
start = list
list = '[' ' '* l:(string / number / list)* ']' ' '* { return l }
word = w:[^ ]+ { return {word:w.join("")}}
string = '"' s:[^"]* '"' ' '* { return s.join("") }
number = d:[0-9\.-]+ ' '* { return parseFloat(d.join("")) }
</grammar>
<h3>Numbers</h3>
<p>These should parse into JavaScript numbers.
Use <a href="http://www.w3schools.com/jsref/jsref_parseint.asp">parseInt</a>
and <a href="http://www.w3schools.com/jsref/jsref_parsefloat.asp">parseFloat</a> as needed.</p>
<code>45</code>
<code>83.2</code>
<code>-7</code>
<code>-92.8</code>
<h3>Text</h3>
<p>These should parse into JavaScript strings.
Use <a href="http://www.w3schools.com/jsref/jsref_join.asp">join</a> as needed.</p>
<code>""</code>
<code>"a"</code>
<code>"Hello"</code>
<code>"Hello World"</code>
<code>"Hello World?"</code>
<h3>List</h3>
<code>[]</code>
<code>[1 2 3 4 5]</code>
<code>[1 2 3 4 5 ]</code>
<code>[1 2 -3 4 54]</code>
<code>[1 2 -3 4.32 54]</code>
<code>[1 2 -3 -4.32 54]</code>
<code>[ 1 2]</code>
<code>[1 2 "hello" 3 4]</code>
<code>[1 2 "hello" [1 2 3 4 5] 3 4]</code>
<code>[1 2 "hello" [1 [2 ["yo dawg" ["i heard you like" ["arrays"]] 3] 4] 5] 3 4]</code>
<h3>Booleans</h3>
<p>These should parse into JavaScript booleans, true or false</p>
<code>true</code>
<code>false</code>
<code>yes</code>
<code>no</code>
<code>on</code>
<code>off</code>
<h3>Extra – Operators</h3>
<code>+ 5 6</code>
<code>* 5 6</code>
<code>- 5 6</code>
<h3>Extra – Nesting</h3>
<code>(+ 7 (- 10 9))</code>
<code>(+ (+ 20 5) (+ 7 2))</code>
<code>(+ (+ 20 5) (+ 7 (+ (+ 20 5) (+ 7 (+ (+ 20 5) (+ 7 (+ (+ 20 5) (+ 7 2))))))))</code>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment