Compilador feito através do uso do LEX e do YACC para estudo e compreensão de compilação de uma linguagem criada para a linguagem C-Assembly uma linguagem que nos lembra o assembly com algumas facilitações.
-
Tipos: int, char, boolean, float, double, string
-
Estruturas de controle: if/else, for, while, do-while, switch.
-
Array bi-dimensional
-
Blocos
-
Variáveis locais e globais, com escopo.
-
Expressões com precedência e associatividade de operadores
-
Funções com parametros por valor e referência
-
Concatenação de strings com operador "+"
-
Entrada e saida padrao (printf e scanf)
-
Verificação de tipos
-
Verificação do número e tipo dos parâmetros de funções
-
Operadores básicos: ( ) + - / * % && || ! > < >=
-
intervalo: [ 0 .. 10 ]
-
filter[ x % 2 == 0 ]
-
forEach[ print( x ) ]
-
firstN[ 10 ]
-
lastN[ 10 ]
-
sort[ x ]
-
split x > 6
-
merge( a, b )[ x == y ]
C-Assembly é C padronizado desta forma:
-
Comando if/goto, sem blocos,
-
Funções,
-
Parâmetros,
-
Arrays unidimensionais,
-
Tipos: int, long, char, float e double,
-
Expressões com uma atribuição e um dos operadores a seguir:
-
-
- / % < > = == != || && ! | & ^ ~
-
-
Uso de array: apenas um array por atribuição sem outro operador, a = m[x];
-
Chamadas de função: sem expressões como parâmetros, apenas variáveis ou valores,
-
Variáveis local e global.