Linguagem de programação
Victor Antoniazzi @vgsantoniazzi
compiladores e interpretadores
Compiladores vs Interpretadores
Por que C gera um arquivo e Ruby não?
Compilador
- Verifica a declaração
- Gera assembly
- Proxima declaração
- Executa o assembly!
Erro de compilacão
- Não executa as declarações
Interpretador
- Verifica a declaração
- Executa declaração
- Proxima declaração
Erro de interpretação
- Executa as declarações
Como é analisado o arquivo?
Análise sintática
Análise léxica
Análise semântica
Código!
x = 10;
print x;
token "x", tipo identificador, coluna 1, linha 1;
token "=", tipo assinatura, coluna 3, linha 1;
token "10", tipo inteiro, coluna 5, linha 1;
token ";", tipo fim, coluna 6, linha 1;
token "print", tipo imprimir, coluna 5, linha 2;
token "x", tipo identificador, coluna 7, linha 2;
token ";", tipo fim, coluna 8, linha 2;
if(CurrentToken() == VARIABLE) {
string variableName = CurrentToken();
nextToken.Match(ASSIGNMENT);
int value = MathExpression(CurrentTokenPosition);
variables[variableName] = value;
NextToken.match(SEMICOLON);
}
if(CurrentToken() == OUTPUT) {
print variables[CurrentToken()]
NextToken.match(SEMICOLON);
}
Quando intepretar e quando compilar?
Por que criar uma linguagem de programação?
Live coding!
Dúvidas?

Compiladores e interpretadores