Improve Portuguese translation of Compilers guide (#27087)
Added missing translations, improved some wording and removed extraneous whitespace.
This commit is contained in:
committed by
Randell Dawson
parent
64b403338c
commit
d5046d6e82
@ -2,6 +2,7 @@
|
|||||||
title: Compilers
|
title: Compilers
|
||||||
localeTitle: Compiladores
|
localeTitle: Compiladores
|
||||||
---
|
---
|
||||||
|
|
||||||
## Compiladores
|
## Compiladores
|
||||||
|
|
||||||
### Programação
|
### Programação
|
||||||
@ -11,17 +12,18 @@ Na sua essência, um computador barebones (também conhecido como computador de
|
|||||||
Humanos interagem com computadores usando **Programas**. Um programa é simplesmente uma sequência de opcodes fornecidos ao computador juntamente com dados que são necessários para executar os opcodes.
|
Humanos interagem com computadores usando **Programas**. Um programa é simplesmente uma sequência de opcodes fornecidos ao computador juntamente com dados que são necessários para executar os opcodes.
|
||||||
|
|
||||||
Por exemplo,
|
Por exemplo,
|
||||||
|
|
||||||
```
|
```
|
||||||
ADD 10, 20 // ADD is the Opcode
|
ADD 10, 20 // ADD é o Opcode (código da operação)
|
||||||
// and 10, 20 are the two operands(data)
|
// e 10, 20 são os dois operandos (dados)
|
||||||
// needed for the ADD instruction to be executed successfully
|
// necessários para que a instrução ADD seja executada com sucesso
|
||||||
```
|
```
|
||||||
|
|
||||||
Os humanos desenvolvem programas para resolver problemas complexos. Observando como os opcodes são simples, se tentarmos desenvolver programas usando apenas opcodes, será muito complicado e difícil de depurar. Para resolver este problema, linguagens de alto nível como C/C++, Python, Java, Javascript, etc foram desenvolvidas.
|
Os humanos desenvolvem programas para resolver problemas complexos. Observando como os opcodes são simples, se tentarmos desenvolver programas usando apenas opcodes, será muito complicado e difícil de depurar. Para resolver este problema, linguagens de alto nível como C/C++, Python, Java, Javascript, etc foram desenvolvidas.
|
||||||
|
|
||||||
Agora, linguagens de alto nível não são adequadas para execução por computadores. Assim, surgiu a necessidade de um tradutor que pudesse digerir os programas de linguagem de alto nível e convertê-los em instruções de linguagem de máquina adequadas para execução por um computador.
|
Agora, linguagens de alto nível não são adequadas para execução por computadores. Assim, surgiu a necessidade de um tradutor que pudesse digerir os programas de linguagem de alto nível e convertê-los em instruções de linguagem de máquina adequadas para execução por um computador.
|
||||||
|
|
||||||
#### \[HUMANOS\] -> \[Programas de idiomas de alto nível\] -> \[Tradutor\] -> \[Linguagem de máquina\] -> \[Computador\]
|
#### \[HUMANOS\] -> \[Programas em linguagem de alto nível\] -> \[Tradutor\] -> \[Linguagem de máquina\] -> \[Computador\]
|
||||||
|
|
||||||
Um **compilador** é um tipo de programa tradutor, que traduz linguagens de alto nível em código binário, que não é nada além de 1s e 0s. Quando você executa seu código-fonte, um compilador traduz todo o código primeiro e depois produz o código binário. Então o computador pega o código binário e o executa.
|
Um **compilador** é um tipo de programa tradutor, que traduz linguagens de alto nível em código binário, que não é nada além de 1s e 0s. Quando você executa seu código-fonte, um compilador traduz todo o código primeiro e depois produz o código binário. Então o computador pega o código binário e o executa.
|
||||||
|
|
||||||
@ -31,29 +33,31 @@ Se houver erros no seu código-fonte, o compilador detecta e sinaliza-os. Isso i
|
|||||||
|
|
||||||
A maioria dos compiladores divide-se em três estágios principais: Análise, Transformação e Geração de Código
|
A maioria dos compiladores divide-se em três estágios principais: Análise, Transformação e Geração de Código
|
||||||
|
|
||||||
1. _A análise_ está tomando código bruto e transformando-o em uma representação mais abstrata do código.
|
1. _Análise (Parsing)_ é tomar código bruto e transformá-lo em uma representação mais abstrata do código.
|
||||||
2. _A transformação_ leva essa representação abstrata e manipula para fazer o que o compilador quiser.
|
2. A _Transformação_ pega essa representação abstrata e a manipula para fazer o que o compilador quiser.
|
||||||
3. _Geração de código_ leva a representação transformada do código e transforma-lo em novo código.
|
3. A _Geração de Código_ pega a representação transformada do código e o transforma em novo código.
|
||||||
|
|
||||||
#### Análise
|
#### Análise
|
||||||
|
|
||||||
A análise normalmente é dividida em duas fases: **Análise Lexical** e **Análise Sintática**.
|
A análise normalmente é dividida em duas fases: **Análise Lexical** e **Análise Sintática**.
|
||||||
|
|
||||||
_A análise lexical_ pega o código bruto e o separa nessas coisas chamadas de tokens por uma coisa chamada tokenizer (ou lexer).
|
A _Análise Lexical_ pega o código bruto e o separa em coisas chamadas de tokens por uma coisa chamada tokenizer (ou lexer).
|
||||||
|
|
||||||
```
|
```
|
||||||
Tokens are an array of tiny little objects that describe an isolated piece of the syntax.
|
Tokens são uma lista de pequenos objetos que descrevem uma peça isolada da sintaxe.
|
||||||
They could be numbers, labels, punctuation, operators, etc.
|
Eles podem ser números, rótulos, pontuação, operadores, etc.
|
||||||
```
|
```
|
||||||
|
|
||||||
_A análise sintática_ pega os tokens e os reformata em uma representação que descreve cada parte da sintaxe e sua relação com o outro. Isso é conhecido como uma representação intermediária ou Abstract Syntax Tree.
|
A _Análise Sintática_ pega os tokens e os reformata em uma representação que descreve cada parte da sintaxe e sua relação com as outras. Isso é conhecido como uma representação intermediária ou Árvore de Sintaxe Abstrata.
|
||||||
|
|
||||||
```
|
```
|
||||||
An Abstract Syntax Tree, or AST for short, is a deeply nested object.
|
Uma Árvore de Sintaxe Abstrata (ou *Abstract Syntax Tree*, AST) é um objeto profundamente aninhado.
|
||||||
It represents code in a way that is both easy to work with and tells us a lot of information.
|
Ela representa o código de uma maneira que é simples de trabalhar e nos fornece muitas informações.
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Transformação
|
#### Transformação
|
||||||
|
|
||||||
O próximo tipo de estágio para um compilador é a transformação. Novamente, isso apenas pega a AST da última etapa e faz alterações nela. Ele pode manipular o AST na mesma língua ou pode traduzi-lo em um idioma totalmente novo.
|
O próximo tipo de estágio para um compilador é a transformação. Novamente, isso apenas pega a AST da última etapa e faz alterações nela. Ele pode manipular o AST na mesma linguagem ou pode traduzi-lo para uma linguagem totalmente nova.
|
||||||
|
|
||||||
#### Geração de Código
|
#### Geração de Código
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user