Link da palestra
 
 
| 
 
 | 
 
 | 
 
| 
 
 | 
 
 | 
1 + 2 * 3 = 7
(1 + 2) * 3 = 9
| 1 + 2 * 3 = 7 | (1 + 2) * 3 = 9 | 
|---|---|
| 
 
 | 
 
 | 
+ 1 * 2 3 = 7
* + 1 2 3 = 9
lisp é um exemplo
(+ 1 (* 2 3))
(* 3 (+ 1 2))
3 2 * 1 + = 7
1 2 + 3 * = 9
Máquina de Pilha
| 3 2 * 1 + = 7 | 2 1 + 3 * = 9 | 
|---|---|
| 
 | 
 | 
 
Array.push() e Array.pop()
 
A linguagem alvo pode ser ou uma linguagem textual, ou código de máquina (Bytecode, Assembly).
A JVM é alvo de vários compiladores: Java, Clojure, Kotlin, Scala, Groovy, Jython, etc…
 
| Textual | Máquina de Pilha | 
|---|---|
| 
 | 
 | 
| Textual | Máquina de Pilha | 
|---|---|
| 
 | 
 | 
| Textual | Máquina de Pilha | 
|---|---|
| 
 | 
 | 
| Textual | Máquina de Pilha | 
|---|---|
| 
 | 
 | 
| Textual | Máquina de Pilha | 
|---|---|
| 
 | 
 | 
e.g.: parser de CSV
File <- Line*
Line <- Val (',' Val)* '\n'
Val  <- (![,\n] .)*
| sequence | e1 e2 | |
| ordered choice | e1 / e2 | |
| not predicate | !e | |
| and predicate | &e | (sugar for !!e) | 
| zero or more | e* | |
| one or more | e+ | (sugar for ee*) | 
| optional | e? | (sugar for &ee / !e) |