Informações da Disciplina

 Preparar para impressão 

Júpiter - Sistema de Gestão Acadêmica da Pró-Reitoria de Graduação


Escola Politécnica
 
Engenharia de Comp e Sist Digitais
 
Disciplina: PCS3566 - Linguagens e Compiladores
Languages and Compilers

Créditos Aula: 4
Créditos Trabalho: 0
Carga Horária Total: 60 h
Tipo: Semestral
Ativação: 01/01/2018 Desativação:

Objetivos
Familiarização com os conceitos de linguagens de programação de alto nível e seus processadores. Técnicas de especificação, projeto, simulação, análise e implementação de componentes de compiladores para linguagens de alto nível imperativas.
 
Familiarization with the concepts of high level programming languages and their processors. Techniques for specification, design, simulation, analysis and implementation of compiler components for imperative high-level languages.
 
 
Docente(s) Responsável(eis)
48341 - João José Neto
1846990 - Ricardo Luis de Azevedo da Rocha
 
Programa Resumido
Conceitos de linguagens de programação e seus processadores. Paradigmas. Componentes, itens léxicos e sintáticos. Semântica. Análise léxica. Meta-linguagens. Especificação formal da sintaxe de linguagens de programação. Análise sintática. Gramáticas e autômatos de pilha estruturados. Obtenção de reconhecedores. Métodos descendentes e ascendentes. Estruturas de controle. Ambientes de execução. Linguagens intermediárias. Código-objeto. Bibliotecas. Análise semântica e geração de código. Estruturas de dados. Tipos de dados. Declarações, manipulação de dados. Seleções, operações, expressões, atribuições, declaração e chamadas de funções e procedimentos. Parâmetros e argumentos. Conceitos de recuperação de erros e de otimização de código. Geração automática de analisadores léxico e sintático. Desenvolvimento de componentes de compiladores para linguagens de alto nível.
 
Concepts of programming languages and their processors. Paradigms. Components, lexical and syntactic items. Semantics. Lexical analysis. Meta-languages. Formal specification of the syntax of programming languages. Syntax analysis. Grammars and structured pushdown automata. Parser generation. Descending and ascending methods. Control structures. Run-time environments. Intermediate languages. Object code. Libraries. Semantic analysis and code generation. Data structures. Data types. Declarations, manipulation of data. Selections, operations, expressions, assignments, declarations and function and procedure calls. Parameters and arguments. Concepts of error recovery and code optimization. Automatic generation of lexical and syntactic analyzers. Development of compiler components for high-level languages.
 
 
Programa
1.	Conceitos de linguagens de programação e seus processadores.
2.	Paradigmas. Componentes, itens léxicos e sintáticos. Semântica. Análise léxica.
3.	Meta-linguagens. Especificação formal da sintaxe de linguagens de programação.
4.	Análise sintática. Gramáticas e autômatos de pilha estruturados. Obtenção de reconhecedores. Métodos descendentes e ascendentes. Estruturas de controle.
5.	Ambientes de execução. Linguagens intermediárias. Código-objeto. Bibliotecas.
6.	Análise semântica e geração de código. Estruturas de dados. Tipos de dados. Declarações e manipulação de dados. Seleções, operações, expressões, atribuições, declaração e chamadas de funções e procedimentos. Parâmetros e argumentos.
7.	Recuperação de erros. Otimização de código.
8.	Geração automática de analisadores léxico e sintático.
9.	Tópicos de projeto: Especificação formal de uma linguagem de alto nível. Construção de um analisador léxico para a linguagem especificada. Construção de um reconhecedor sintático para a linguagem especificada. Implementação de rotinas de geração de código. Implementação de ambiente de execução.
 
1. Concepts of programming languages and their processors. 2. Paradigms. Components. Lexical and syntactical items. Semantics. Lexical analysis. 3. Meta-languages. Formal specification of programming language syntax. 4. Parsing. Grammars and structured pushdown automata. Construction of language acceptors. Top-down and bottom-up analysis. Control structures. 5. Run-time environments. Intermediate languages. Object code. Libraries. 6. Semantic analysis and code generation. Data structures. Data types. Declarations and data manipulation. Selections, operations, expressions, assignments, declaration and calls of functions and procedures. Parameters and arguments. 7. Error recovery. Code optimization. 8. Automatic generation of scanners and parsers. 9. Project topics: Formal specification of a high level language. Implementation of a scanner for the specified language. Implementation of a parser for the specified language. Implementation of code generation routines. Implementation of the run-time environment.
 
 
Avaliação
     
Método
Provas, atividades em sala de aula e projeto.
Critério
A = (P1 + 2*P2 + E) / 4 onde: P1, P2: são provas, e E: é o conceito relativo ao desempenho em atividades práticas, incluindo o projeto e os trabalhos desenvolvidos em classe. OBS: Para haver aprovação é necessário que o projeto esteja completamente desenvolvido, documentado e operante.
Norma de Recuperação
Prova escrita e/ou trabalho.
 
Bibliografia
     
1.	JOSÉ NETO, J. Introdução à Compilação. Elsevier, 2016.
2.	SEBESTA, R. Concepts of Programming Languages. Addison Wesley, 1996.
3.	SLONNEGER; KURTZ. Formal Syntax and Semantics of Programming Languages - A Laboratory Based Approach. Addison Wesley, 1995.
4.	AHO, A.V.; LAM, M.S.; SEHTI, R.; ULLMAN, J.D. Compilers Principles, Techniques and Tools. Addison Wesley, 2006.
5.	TREMBLAY, J.P.; SORENSON, P.G.. The Theory and Practice of Compiler Writing. McGraw-Hill, 1985.
6.	HOLUB, A. Compiler Design in C. Prentice Hall, 1997.
7.	WIRTH, N. Compiler Construction. Addison Wesley, 1995.
 

Clique para consultar os requisitos para PCS3566

Clique para consultar o oferecimento para PCS3566

Créditos | Fale conosco
© 1999 - 2024 - Superintendência de Tecnologia da Informação/USP