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