Skip to content

Instantly share code, notes, and snippets.

@JacobEberhardt
Last active February 2, 2018 14:52
Show Gist options
  • Save JacobEberhardt/2b2c17103031f8a23949e430a6fdfca3 to your computer and use it in GitHub Desktop.
Save JacobEberhardt/2b2c17103031f8a23949e430a6fdfca3 to your computer and use it in GitHub Desktop.
<prog> ::= <functions>
<functions> ::= <function> <functions>
<function> ::= `def' <ide> `(' <arguments> `):\\n' <stat-list>
<arguments> ::= <ide> <more-args> | $\varepsilon$
<more-args> ::= `,' <ide> <more-args> | $\varepsilon$
<stat-list> ::= <statement> <stat-list> | `return' <expressions> `\\n'
<expressions> ::= <expr> <more-expr> | $\varepsilon$
<more-exprs> ::= `,' <ide> <more-args> | $\varepsilon$
<statement> ::= <ide> <statement'>
| `if' <expr> <comparator> <expr> `then' <expr> `else' <expr> `fi' <expr'> `==' <expr> `\\n'
| `(' <expr> `)' <term'> <expr'> `==' <expr> `\\n'
| <num> <term'> <expr'> `==' <expr> `\\n'
| `#' <ide> `=' <expr> `\\n'
<statement'> ::= `=' <expr> `\\n'
| <term'> <expr'> `==' <expr> `\\n'
<expr> ::= `if' <expr> <comparator> <expr> `then' <expr> `else' <expr> `fi' <expr'>
| `(' <expr> `)' <term'> <expr'>
| <ide> <term'> <expr'>
| <num> <term'> <expr'>
| <ide> `(' <expressions> `)' <term'> <expr'>
<expr'> ::= `+' <term> <expr'>
| `-' <term> <expr'>
| `**' <num> <term'> <expr'>
| $\varepsilon$
<term> ::= <factor> <term'>
<term'> ::= `*' <term>
| `/' <term>
| $\varepsilon$
<factor> ::= `if' <expr> <comparator> <expr> `then' <expr> `else' <expr> `fi' <expr'> `**' <num>
| `(' <expr> `)' <factor'>
| <ide> <factor'>
| <num> <factor'>
| <ide> `(' <expressions> `)' <factor'>
<factor'> ::= <term'> <expr'> `**' <num>
| $\varepsilon$
<comparator> ::= `<' | `<=' | `==' | `>=' | `>'
<num> ::= `d' <num> | `d'
<ide> ::= `l' <trail> | `l'
<trail> ::= `d' <trail> | `l' <trail> | `d' | `l'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment