33
ESPECIFICAÇÃO E COMPILAÇÃO DE UMA LINGUAGEM O. O. PARA A PLATAFORMA .NET MANUEL M. SERRANO ARIMUYA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

Conteúdo ► introdução objetivos do trabalho porque a plataforma.NET ► revisão bibliográfica linguagens de programação plataforma.NET compiladores

Embed Size (px)

Citation preview

Page 1: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

ESPECIFICAÇÃO E COMPILAÇÃO

DE UMA LINGUAGEM O. O.

PARA APLATAFORMA .NET

MANUEL M. SERRANO ARIMUYABACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

Page 2: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Conteúdo

► introdução objetivos do trabalho porque a plataforma .NET

► revisão bibliográfica linguagens de programação plataforma .NET compiladores

► características da linguagem► desenvolvimento do compilador► resultados e conclusão

extensões► apresentação do protótipo

Page 3: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Introdução

►objetivos especificar uma linguagem de programação implementar um compilador (4 módulos) novas funcionalidades

Page 4: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Introdução

►plataforma .NET multi-linguagens Microsoft Intermediate Language

(MSIL)

Page 5: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Revisão bibliográfica

►linguagens de programação modelo imperativo X modelo declarativo características: legibilidade,

redigibilidade, confiabilidade, eficiência, facilidade de aprendizado, ortogonalidade, reusabilidade, modificabilidade e portabilidade

Page 6: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Revisão bibliográfica

►linguagens de programação modelo imperativo X modelo declarativo

características: legibilidade, redigibilidade, confiabilidade, eficiência, facilidade de aprendizado, ortogonalidade, reusabilidade, modificabilidade e portabilidade

do { if (Something) {

// Do somethingbreak;

}} while(someCondition);//...

do { if (Something) {

// Do somethinggoto endLoop;

}} while (someCondition);endLoop:

//...

Page 7: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

►linguagens de programação modelo imperativo X modelo declarativo características: legibilidade, redigibilidade,

confiabilidade, eficiência, facilidade deaprendizado, ortogonalidade, reusabilidade, modificabilidade e portabilidade

Revisão bibliográfica

For (int c = 1; c <= 10; i++) { //...}

var c: integer;begin

for c := 1 to 10 dobegin {...}

end end.

Page 8: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

linguagens de programação modelo imperativo X modelo declarativo características: legibilidade, redigibilidade,

confiabilidade, eficiência, facilidade de aprendizado, ortogonalidade, reusabilidade, modificabilidade e portabilidade

Revisão bibliográfica

Page 9: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

linguagens de programação modelo imperativo X modelo declarativo características: legibilidade, redigibilidade,

confiabilidade, eficiência, facilidade de aprendizado, ortogonalidade, reusabilidade, modificabilidade e portabilidade

Revisão bibliográfica

Page 10: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

linguagens de programação modelo imperativo X modelo declarativo características: legibilidade, redigibilidade,

confiabilidade, eficiência, facilidade de aprendizado, ortogonalidade, reusabilidade, modificabilidade e portabilidade

Revisão bibliográfica

Page 11: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

linguagens de programação modelo imperativo X modelo declarativo características: legibilidade, redigibilidade,

confiabilidade, eficiência, facilidade de aprendizado, ortogonalidade, reusabilidade, modificabilidade e portabilidade

Revisão bibliográfica

//Javaint x, y = 2, z = 3;byte a, b = 2, c = 3;x = y + z;a = b + c;

Page 12: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

linguagens de programação modelo imperativo X modelo declarativo características: legibilidade, redigibilidade,

confiabilidade, eficiência, facilidade de aprendizado, ortogonalidade, reusabilidade, modificabilidade e portabilidade

Revisão bibliográfica

Page 13: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

linguagens de programação modelo imperativo X modelo declarativo características: legibilidade, redigibilidade,

confiabilidade, eficiência, facilidade de aprendizado, ortogonalidade, reusabilidade, modificabilidade e portabilidade

Revisão bibliográfica

Page 14: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

linguagens de programação modelo imperativo X modelo declarativo características: legibilidade, redigibilidade,

confiabilidade, eficiência, facilidade de aprendizado, ortogonalidade, reusabilidade, modificabilidade e portabilidade

Revisão bibliográfica

Page 15: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Revisão bibliográfica

plataforma .NET• Common Language Specification (CLS)• Common Type System (CTS)• Microsoft Intermediate Language (MSIL)• Assembly .NET• Common Language Runtime (CLR)• Framework .NET

Page 16: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Revisão bibliográfica

•Framework .NET

Page 17: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Revisão bibliográfica

Compiladores• Largos ou estritos• Controle de Fluxo• Modulo

Page 18: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Revisão bibliográfica

Compiladores• Largos ou estritos• Controle de Fluxo• Modulo

►front-end (léxico, sintático, semântico e códigointermediário)►back-end (outros)

Page 19: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Características da linguagem herança simples sobrecarga de métodoscase-sensitive semelhante ao C (fluxo), Java e C#(orientação a objetos)

Page 20: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

produtiva para o desenvolvimento da camada de negócio de uma aplicação

Características da linguagem

if (valor.CompareTo(new DateTime(2005, 08, 06)) < 0){//Este bloco é executado apenas quando a data contida//na variável valor for menor que 06/08/2005.}if (valor < datetime'06/08/2005'){//Este bloco é executado apenas quando a data contida//na variável valor for menor que 06/08/2005.}

Page 21: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

produtiva para o desenvolvimento da camada de negócio de uma aplicação

Características da linguagem

if (!(cpf like "???.???.???/??")){Console.WriteLine(“Formato do CPF inválido");}

Page 22: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

uso de rotinas de outras LPs .NEToutras linguagens .NET podem usar

as rotinas escritas na LP proposta

Características da linguagem

Page 23: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Desenvolvimento do compilador

requisitos• reportar erros• gerar código MSIL• gerar assembly .NET• ser implementado em C#

Page 24: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Desenvolvimento do compilador

projetos (.NET) Wakizashi Waki Waki.Common Waki.Comp Waki.Gen System.Waki

Page 25: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Desenvolvimento do compilador JavaCCCS

Léxico e SintáticoGramática LLEBNF

CommandNode whileCmd() : { WhileCmd ret = new WhileCmd();} {"while" "(" ret.Cond = expression() ")"ret.Block = blockCmd(){return ret;}}

Page 26: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Desenvolvimento do compilador

Page 27: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Desenvolvimento do compilador

gerador de código

Page 28: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Desenvolvimento do compilador

Page 29: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Resultados e conclusão

recursos básicos de OOnão implementa interfaces, enums e structsganho de produtividade (like e datetime)

Page 30: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Resultados e conclusão

Legibilidade Bom

Redigibilidade Bom

Confiabilidade Regular

Eficiência Independe da Linguagem

Aprendizado Regular

Ortogonalidade Bom

Modificabilidade Bom

Portabilidade Independe da Linguagem

características desejadas

Page 31: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Resultados e conclusão

Rápida curva de prendizagem Produtividade p/ camada de negócio

Recuperação de Erros Semâticos Um erro por compilação

Expressões primitivas Datetime, timespan, like

Interfaces, enums e structs Apenas Classes

Suporta totalmente CTS Suporta parcialmente CTS

3 anos no mercado -

C# x Wakizashi

Page 32: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Extensões

Linguagemsuportar herança múltiplaimplementar instruções para controle deConcorrênciaimplementar tratamento de exceção

compiladorimplementar recuperação de erroscriar IDEpermitir depuração

Page 33: Conteúdo ► introdução  objetivos do trabalho  porque a plataforma.NET ► revisão bibliográfica  linguagens de programação  plataforma.NET  compiladores

Apresentação do Protótipo