Boa noite Professor, uma atençao muito grande devemos ter em lembrar de gerar o ";" vindo do Statement, errei isso na minha prova de compiladores por bobeira. Obrigado por fornecer seu excelente conteudo gratuitamente Professor José
7 месяцев назад
Isso mesmo, Samuel. O ponto e vírgula (";") no statement é frequentemente é esquecido. Da mesma forma, é importante prestar atenção ao local onde são criadas as chaves "{}" no block. Esse detalhe é crucial porque permite que a gramática da linguagem aceite que, em estruturas como "while" e "if", as chaves sejam opcionais quando há apenas um comando.
Professor, você tem o canal mais completo de computação em português . Seus vídeos são excelentes, e algo complexo fica "possível" de entender.
Год назад
Que bom ouvir esse depoimento, pq de complicado já basta o compilador não é? A ideia é tentar simplificar ao máximo para que os alunos possa de fato ver é possível e MUITO legal produzir um compilador:)
Voltando aqui depois de LFA para acompanhar a disciplina de compiladores por esse canal
Год назад
Que bom Breno, tenho certeza que vai te ajudar muito. Ainda mais se na sua universidade o professor utilizar as tecnologias semelhantes as que eu uso aqui no IFET.
Poderia nos indicar uma referência bibliográfica para complementar suas aulas? Obrigado.
3 месяца назад
Ola Marcelo e demais alunos, eu uso aqui no IFET o Livro do autor AHO, cujo titulo é 'Guia Abrangente para o Design do Compilador: Princípios, Técnicas e Ferramentas'. Um grande livro para os estudantes de ciência da computação e areas afins.
Professor, em 15:00 você não devia ser obrigado a utilizar mais sentençasvindas de Statement, já que o () obriga usar uma ou várias vezes, e o Senhor não usou nenhuma
7 месяцев назад+1
Ola @SamuelSilva, sim voce está correto. Da forma como esta usando o ( ) teriamos que continuar sim. Entretanto, ali temos um *erro no slide, deveria ser [ ] - Que significa zero ou uma ocorrencia. Obrigado pela observação.
Fala professor, percebi um erro no exercício 2. Não pode começar por um statement.
Год назад+1
Olá Eduardo Santos, obrigado pela observação. Você está correto, pois ao considerar que o trecho da gramática apresentado no exercício 01 é "fechado" ele so vai aceitar sentenças que começam com "block", portanto não aceitando statement. No entanto, para fins didáticos, estamos usando uma parte da gramática. Em outras palavras, a gramática completa (vide minuto 6:38) que estamos considerando é mais abrangente. Dai, se considerarmos essa gramática completa, o problema é ainda maior, pois não poderemos derivar os exemplos mostrados no vídeo, pois todos eles deveriam obrigatoriamente começar com "program bla bla bla". Portanto, não podemos perder de vista que, o objetivo desta aula é treinar o processo de derivação, e por isso podemos realizar as derivações do exercício 01, do exercício 05 e também dos exemplos propostos no final. Mas de qualquer forma, agradeço sua observação!
Opa, professor, acredito que a solução do exercício 2 esta errada, pois conforme a legenda, a gramática exige 1 ou mais (" = " Expr | ActPars ), logo não é possível ter o Designator sozinho utilizando esse caminho, já que é necessário ter pelo menos uma das duas opções. E notei também que ao analisar essa parte, acredito que essa gramática aceitaria linhas de código desse tipo: Designator = Expr = Expr = Expr ... ; Que talvez não seja desejado em um compilador.
Год назад+1
Olá Guilherme, isso não é problema não. É possível fazer idade=x=18
eu entendi seu ponto, reparei isso tbm, o ex 2 ficou estranho mesmo, acho q o jose rui talvez nao percebeu o ponto que voce levantou. O uso das chaves no vector, tem um trecho no designator que após o ident ter um express ou act pars, que faltou no exemplo. Talvez a cardinalidade devesse ser mudado para zero ou muitas ao invez de uma ou muitas no designator
professor, gostei muito de assistir suas aulas relacionadas com o tema Linguagens Formais e Automatos. Estou com dúvidas em relação a um exercicio: 1. Pretende-se implementar um reconhecedor de contantes com vírgula flutuante. a. Defina a expressão regular correspondente (sugestão pode utilizar a abreviatura d=0|..|9. Eu não sei como definir essa expressão regular, podia me dar uma ajuda por favor. Ficaria ainda muito mais grato.
Год назад
Ola KnowledgeHub, obrigado pelo comentário, espero que o conteúdo possa sempre te auxiliar ai. Quanto a sua pergunta, vou te rascunhar a solucao para voce aqui por meio de MACROS: DIGITO = “[0-9]*”; DIGITOS = DIGITO + “*”; REAL = “\\-?”+DIGITOS + FRACIONARIA; FRACIONARIA = “\\.”+DIGITOS + (EXPONENCIAL)+“?”; EXPONENCIAL = “E(\\+|\\-)” + DIGITOS; A explicacao completa voce pode conferir aqui: ruclips.net/video/EoDGgy1uqus/видео.html
Boa noite Professor, uma atençao muito grande devemos ter em lembrar de gerar o ";" vindo do Statement, errei isso na minha prova de compiladores por bobeira. Obrigado por fornecer seu excelente conteudo gratuitamente Professor José
Isso mesmo, Samuel. O ponto e vírgula (";") no statement é frequentemente é esquecido. Da mesma forma, é importante prestar atenção ao local onde são criadas as chaves "{}" no block. Esse detalhe é crucial porque permite que a gramática da linguagem aceite que, em estruturas como "while" e "if", as chaves sejam opcionais quando há apenas um comando.
excelente material, parabéns professor!
Obrigado @renat0sp, fique a vontade, a playlist tem muita coisa boa ainda
Professor, você tem o canal mais completo de computação em português .
Seus vídeos são excelentes, e algo complexo fica "possível" de entender.
Que bom ouvir esse depoimento, pq de complicado já basta o compilador não é? A ideia é tentar simplificar ao máximo para que os alunos possa de fato ver é possível e MUITO legal produzir um compilador:)
Voltando aqui depois de LFA para acompanhar a disciplina de compiladores por esse canal
Que bom Breno, tenho certeza que vai te ajudar muito. Ainda mais se na sua universidade o professor utilizar as tecnologias semelhantes as que eu uso aqui no IFET.
Poderia nos indicar uma referência bibliográfica para complementar suas aulas? Obrigado.
Ola Marcelo e demais alunos, eu uso aqui no IFET o Livro do autor AHO, cujo titulo é 'Guia Abrangente para o Design do Compilador: Princípios, Técnicas e Ferramentas'. Um grande livro para os estudantes de ciência da computação e areas afins.
Professor, em 15:00 você não devia ser obrigado a utilizar mais sentençasvindas de Statement, já que o () obriga usar uma ou várias vezes, e o Senhor não usou nenhuma
Ola @SamuelSilva, sim voce está correto. Da forma como esta usando o ( ) teriamos que continuar sim. Entretanto, ali temos um *erro no slide, deveria ser [ ] - Que significa zero ou uma ocorrencia.
Obrigado pela observação.
Tem a correção dos exercícios em algum lugar?
As correções são nas aulas presenciais no IFET Rio Pomba-MG
Fala professor, percebi um erro no exercício 2. Não pode começar por um statement.
Olá Eduardo Santos, obrigado pela observação.
Você está correto, pois ao considerar que o trecho da gramática apresentado no exercício 01 é "fechado" ele so vai aceitar sentenças que começam com "block", portanto não aceitando statement.
No entanto, para fins didáticos, estamos usando uma parte da gramática. Em outras palavras, a gramática completa (vide minuto 6:38) que estamos considerando é mais abrangente. Dai, se considerarmos essa gramática completa, o problema é ainda maior, pois não poderemos derivar os exemplos mostrados no vídeo, pois todos eles deveriam obrigatoriamente começar com "program bla bla bla".
Portanto, não podemos perder de vista que, o objetivo desta aula é treinar o processo de derivação, e por isso podemos realizar as derivações do exercício 01, do exercício 05 e também dos exemplos propostos no final.
Mas de qualquer forma, agradeço sua observação!
Professor tem a correção do ex 6 e 7 ?
Opa, professor, acredito que a solução do exercício 2 esta errada, pois conforme a legenda, a gramática exige 1 ou mais (" = " Expr | ActPars ), logo não é possível ter o Designator sozinho utilizando esse caminho, já que é necessário ter pelo menos uma das duas opções.
E notei também que ao analisar essa parte, acredito que essa gramática aceitaria linhas de código desse tipo:
Designator = Expr = Expr = Expr ... ;
Que talvez não seja desejado em um compilador.
Olá Guilherme, isso não é problema não. É possível fazer idade=x=18
eu entendi seu ponto, reparei isso tbm, o ex 2 ficou estranho mesmo, acho q o jose rui talvez nao percebeu o ponto que voce levantou. O uso das chaves no vector, tem um trecho no designator que após o ident ter um express ou act pars, que faltou no exemplo. Talvez a cardinalidade devesse ser mudado para zero ou muitas ao invez de uma ou muitas no designator
professor, gostei muito de assistir suas aulas relacionadas com o tema Linguagens Formais e Automatos. Estou com dúvidas em relação a um exercicio:
1. Pretende-se implementar um reconhecedor de contantes com vírgula flutuante.
a. Defina a expressão regular correspondente (sugestão pode utilizar a abreviatura d=0|..|9.
Eu não sei como definir essa expressão regular, podia me dar uma ajuda por favor.
Ficaria ainda muito mais grato.
Ola KnowledgeHub, obrigado pelo comentário, espero que o conteúdo possa sempre te auxiliar ai. Quanto a sua pergunta, vou te rascunhar a solucao para voce aqui por meio de MACROS:
DIGITO = “[0-9]*”;
DIGITOS = DIGITO + “*”;
REAL = “\\-?”+DIGITOS + FRACIONARIA;
FRACIONARIA = “\\.”+DIGITOS + (EXPONENCIAL)+“?”;
EXPONENCIAL = “E(\\+|\\-)” + DIGITOS;
A explicacao completa voce pode conferir aqui: ruclips.net/video/EoDGgy1uqus/видео.html