·
Ciência da Computação ·
Compiladores
Send your question to AI and receive an answer instantly
Recommended for you
4
Compilador-Portugol-Analise-Lexica-Sintatica
Compiladores
MACKENZIE
1
Algoritmo para Encontrar o Maior de Dois Números Inteiros
Compiladores
MACKENZIE
4
Compilador Portugol Analise Lexica e Sintatica Trabalho Academico
Compiladores
MACKENZIE
2
Orientações Éticas para Desenvolvimento de Trabalhos Práticos em Programação
Compiladores
MACKENZIE
4
Análise Léxica e Sintática
Compiladores
MACKENZIE
1
Algoritmo para Encontrar o Maior de Dois Numeros Inteiros - Exemplo
Compiladores
MACKENZIE
4
Compilador-Analise-Semantica-e-Geracao-de-Codigo-Intermediario
Compiladores
MACKENZIE
4
Análise Léxica e Sintática para uma Linguagem Baseada em C
Compiladores
MACKENZIE
4
Análise Semântica e Geração de Código
Compiladores
MACKENZIE
1
AFD-JFLAP-e-Codigo-C-Implementacao-de-Automato-Finito-Deterministico
Compiladores
MACKENZIE
Preview text
O objetivo desse trabalho é implementar um Compilador com as fases de análise léxica e sintática para uma linguagem baseada na linguagem C denominada CLite O Compilador para CLite restringe a linguagem C para ter apenas tipos inteiros int e lógicos bool comandos condicionais if e repetição while Não implementaremos a declaração e chamadas de funções nessa linguagem a exceção se faz as funções de entrada scanf e saída printf implementadas de forma modificada Na implementação do Compilador o analisador léxico deve atender as necessidades do analisador sintático A interação entre o analisador léxico e o analisador sintático se dará por meio da função consome do analisador sintático que realizará chamadas à função obteratomo do analisador léxico Arquivofonte Analisador léxico Analisador sintático solicita átomo Figura 1 Interação entre Analisador Léxico e Sintático Gramática da linguagem Clite A sintaxe da linguagem CLite está descrita na notação EBNF os nãoterminais da gramática são nomes entre parênteses angulares e e os símbolos terminais átomos do analisador léxico estão em negrito ou entre aspas Ex A notação α denotará a repetição da cadeia α zero uma ou mais vezes α e a construção β é equivalente a βλ ou seja indica que a cadeia β é opcional programa int main void declaracoes comandos declaracoes declaracao declaracao tipo listavariavel tipo int bool listavariavel identificador identificador comandos comando comando blococomandos atribuicao comandoif comandowhile comandoentrada comandosaida blococomandos comandos atribuicao identificador expressao comandoif if expressao comando else comando comandowhile while expressao comando comandoentrada scanf listavariavel comandosaida printf expressao expressao expressao expressaologica expressaologica expressaologica expressaorelacional expressaorelacional expressaorelacional expressaoadicao oprelacional expressaoadicao oprelacional expressaoadicao expressaomulti expressaomulti expressaomulti operando operando operando identificador numero true false expressao Especificação Léxica Caracteres Delimitadores Os caracteres delimitadores espaços em branco quebra de linhas tabulação e retorno de carro r deverão ser eliminados ignorados pelo analisador léxico mas o controle de linha contagem de linha deverá ser mantido Comentários dois tipos de comentário um começando com e indo até o final da linha 1 linha com o finalizador do comentário o caractere O outro começando com e terminando com várias linhas nesse comentário é importante que a contagem de linha seja mantida além disso os comentários são repassados para o analisador sintático para serem reportados e descartados Palavras reservadas As palavras reservadas na linguagem CLite são lexemas em minúsculo bool else false if int main printf scanf true void while Importante Uma sugestão é que as palavras reservadas sejam reconhecidas na mesma função que reconhece os identificadores e deve ser retornado um átomo específico para cada palavra reservada reconhecida Identificadores Os identificadores começam com o caractere underline em seguida letra minúscula ou maiúscula seguido de zero ou mais letras minúsculas eou maiúsculas dígitos ou caractere limitados a 15 caracteres Caso seja encontrado um identificador com mais de 15 caracteres deve ser retornado ERRO pelo analisador léxico A seguir a definição regular para identificadores letra abzABZ digito 019 identificador letraletradigito Importante Na saída do compilador para átomo identificador deverá ser impresso o lexema que gerou o átomo ou seja a sequência de caracteres reconhecida Números No compilador teremos somente números inteiros na notação hexadecimal com seguinte definição regular abaixo hexa ABCDEF numero 0xdigitohexa Importante Na saída do compilador para átomo numero deverá ser impresso o valor numérico na notação decimal do atributo do átomo ou seja o lexema que gerou o átomo Execução do Compilador No Compilador quando for detectado um erro sintático ou léxico o analisador devese emitir uma mensagem de erro explicativa e terminar a execução do programa A mensagem explicativa deve informar a linha do erro o tipo do erro léxico ou sintático e caso seja um erro sintático devese informar a linha do erro e qual era o átomo esperado e qual foi o átomo encontrado pelo Compilador por exemplo para o programa exemplo1 A seguir temos um outro programa em CLite que lê uma dois números e encontra o maior o programa a seguir está correto léxico e sintático 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 programa le dois numeros inteiros e encontra o maior int mainvoid int num1 num2 int maior scanfnum1 scanfnum2 if num1 num2 maior num1 else maior num2 printfmaior imprime o maior valor O para cada átomo reconhecido o compilador imprime as seguintes informações baseado nas informações contidas na estrutura TInfoAtomo e ao final informa que a análise terminou com sucesso Saída do compilador 1comentário 5main 5abrepar 5void 5fechapar 5abrechaves 6int 6identificador num1 6virgula 6identificador num2 6pontovirgula 7int 7identificador maior 7pontovirgula 16 linhas analisadas programa sintaticamente correto Observações importantes O programa deve estar bem documentado O trabalho será avaliado de acordo com os seguintes critérios Funcionamento do programa caso programa apresentarem warning ao serem compilados serão penalizados Após a execução o programa deve finalizar com retorno igual a 0 O trabalho deve ser desenvolvido na linguagem C e será testado usando o compilador do MinGW com VSCode para configurar sua máquina no Windows acesse httpswwwdougdevbr2022InstalacoeseconfiguracoesparaprogramaremCusandooVS Code O quão fiel é o programa quanto à descrição do enunciado principalmente ao formato de do arquivo de entrada Clareza e organização programas com código confuso linhas longas variáveis com nomes não significativos e desorganizado sem indentação sem comentários também serão penalizados LENNOX 20 TON VARIABLE SPEED AIR HANDLER LENNOX 20 TON VARIABLE SPEED AIR HANDLER
Send your question to AI and receive an answer instantly
Recommended for you
4
Compilador-Portugol-Analise-Lexica-Sintatica
Compiladores
MACKENZIE
1
Algoritmo para Encontrar o Maior de Dois Números Inteiros
Compiladores
MACKENZIE
4
Compilador Portugol Analise Lexica e Sintatica Trabalho Academico
Compiladores
MACKENZIE
2
Orientações Éticas para Desenvolvimento de Trabalhos Práticos em Programação
Compiladores
MACKENZIE
4
Análise Léxica e Sintática
Compiladores
MACKENZIE
1
Algoritmo para Encontrar o Maior de Dois Numeros Inteiros - Exemplo
Compiladores
MACKENZIE
4
Compilador-Analise-Semantica-e-Geracao-de-Codigo-Intermediario
Compiladores
MACKENZIE
4
Análise Léxica e Sintática para uma Linguagem Baseada em C
Compiladores
MACKENZIE
4
Análise Semântica e Geração de Código
Compiladores
MACKENZIE
1
AFD-JFLAP-e-Codigo-C-Implementacao-de-Automato-Finito-Deterministico
Compiladores
MACKENZIE
Preview text
O objetivo desse trabalho é implementar um Compilador com as fases de análise léxica e sintática para uma linguagem baseada na linguagem C denominada CLite O Compilador para CLite restringe a linguagem C para ter apenas tipos inteiros int e lógicos bool comandos condicionais if e repetição while Não implementaremos a declaração e chamadas de funções nessa linguagem a exceção se faz as funções de entrada scanf e saída printf implementadas de forma modificada Na implementação do Compilador o analisador léxico deve atender as necessidades do analisador sintático A interação entre o analisador léxico e o analisador sintático se dará por meio da função consome do analisador sintático que realizará chamadas à função obteratomo do analisador léxico Arquivofonte Analisador léxico Analisador sintático solicita átomo Figura 1 Interação entre Analisador Léxico e Sintático Gramática da linguagem Clite A sintaxe da linguagem CLite está descrita na notação EBNF os nãoterminais da gramática são nomes entre parênteses angulares e e os símbolos terminais átomos do analisador léxico estão em negrito ou entre aspas Ex A notação α denotará a repetição da cadeia α zero uma ou mais vezes α e a construção β é equivalente a βλ ou seja indica que a cadeia β é opcional programa int main void declaracoes comandos declaracoes declaracao declaracao tipo listavariavel tipo int bool listavariavel identificador identificador comandos comando comando blococomandos atribuicao comandoif comandowhile comandoentrada comandosaida blococomandos comandos atribuicao identificador expressao comandoif if expressao comando else comando comandowhile while expressao comando comandoentrada scanf listavariavel comandosaida printf expressao expressao expressao expressaologica expressaologica expressaologica expressaorelacional expressaorelacional expressaorelacional expressaoadicao oprelacional expressaoadicao oprelacional expressaoadicao expressaomulti expressaomulti expressaomulti operando operando operando identificador numero true false expressao Especificação Léxica Caracteres Delimitadores Os caracteres delimitadores espaços em branco quebra de linhas tabulação e retorno de carro r deverão ser eliminados ignorados pelo analisador léxico mas o controle de linha contagem de linha deverá ser mantido Comentários dois tipos de comentário um começando com e indo até o final da linha 1 linha com o finalizador do comentário o caractere O outro começando com e terminando com várias linhas nesse comentário é importante que a contagem de linha seja mantida além disso os comentários são repassados para o analisador sintático para serem reportados e descartados Palavras reservadas As palavras reservadas na linguagem CLite são lexemas em minúsculo bool else false if int main printf scanf true void while Importante Uma sugestão é que as palavras reservadas sejam reconhecidas na mesma função que reconhece os identificadores e deve ser retornado um átomo específico para cada palavra reservada reconhecida Identificadores Os identificadores começam com o caractere underline em seguida letra minúscula ou maiúscula seguido de zero ou mais letras minúsculas eou maiúsculas dígitos ou caractere limitados a 15 caracteres Caso seja encontrado um identificador com mais de 15 caracteres deve ser retornado ERRO pelo analisador léxico A seguir a definição regular para identificadores letra abzABZ digito 019 identificador letraletradigito Importante Na saída do compilador para átomo identificador deverá ser impresso o lexema que gerou o átomo ou seja a sequência de caracteres reconhecida Números No compilador teremos somente números inteiros na notação hexadecimal com seguinte definição regular abaixo hexa ABCDEF numero 0xdigitohexa Importante Na saída do compilador para átomo numero deverá ser impresso o valor numérico na notação decimal do atributo do átomo ou seja o lexema que gerou o átomo Execução do Compilador No Compilador quando for detectado um erro sintático ou léxico o analisador devese emitir uma mensagem de erro explicativa e terminar a execução do programa A mensagem explicativa deve informar a linha do erro o tipo do erro léxico ou sintático e caso seja um erro sintático devese informar a linha do erro e qual era o átomo esperado e qual foi o átomo encontrado pelo Compilador por exemplo para o programa exemplo1 A seguir temos um outro programa em CLite que lê uma dois números e encontra o maior o programa a seguir está correto léxico e sintático 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 programa le dois numeros inteiros e encontra o maior int mainvoid int num1 num2 int maior scanfnum1 scanfnum2 if num1 num2 maior num1 else maior num2 printfmaior imprime o maior valor O para cada átomo reconhecido o compilador imprime as seguintes informações baseado nas informações contidas na estrutura TInfoAtomo e ao final informa que a análise terminou com sucesso Saída do compilador 1comentário 5main 5abrepar 5void 5fechapar 5abrechaves 6int 6identificador num1 6virgula 6identificador num2 6pontovirgula 7int 7identificador maior 7pontovirgula 16 linhas analisadas programa sintaticamente correto Observações importantes O programa deve estar bem documentado O trabalho será avaliado de acordo com os seguintes critérios Funcionamento do programa caso programa apresentarem warning ao serem compilados serão penalizados Após a execução o programa deve finalizar com retorno igual a 0 O trabalho deve ser desenvolvido na linguagem C e será testado usando o compilador do MinGW com VSCode para configurar sua máquina no Windows acesse httpswwwdougdevbr2022InstalacoeseconfiguracoesparaprogramaremCusandooVS Code O quão fiel é o programa quanto à descrição do enunciado principalmente ao formato de do arquivo de entrada Clareza e organização programas com código confuso linhas longas variáveis com nomes não significativos e desorganizado sem indentação sem comentários também serão penalizados LENNOX 20 TON VARIABLE SPEED AIR HANDLER LENNOX 20 TON VARIABLE SPEED AIR HANDLER