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) |