O documento discute a API Roslyn do .NET, que permite o acesso ao pipeline de compilação do C# e VB.NET. Isso torna possível implementar ferramentas de código como syntax highlighting, intellisense e refactoring sem precisar reimplementar a análise sintática e semântica. A API Roslyn também permite a geração e análise de código em tempo de execução, facilitando o desenvolvimento de ferramentas de software.
3. Globalcode – Open4education
Quem sou eu?
Desenvolvedor C#
ASP.NET, Xamarin, Coaching,
Trainning e Consultoria
Mestrando na UFBA, na área de Engenharia
de Software
Extração e Visualização de Métricas de
Código
15. Globalcode – Open4education
É o processo de analisar uma sequência de
entrada afim de determinar sua estrutura
gramatical, conforme uma gramática formal
pré-definida – Wikipédia
18. Globalcode – Open4education
É a camada do compilador responsável por
analisar a utilização dos identificadores e
ligar cada uma delas a sua declaração -
Wikipédia
41. Globalcode – Open4education
Sim, temos exemplos
Extração da árvore sintática
Análise Semântica
Compilação de código via C#
Criação de novas keywords
Criação de uma ferramenta de code fix
42. Globalcode – Open4education
E o que dá pra fazer mais?
Geração de código
Ferramentas de Refactoring
Extração de Métricas
Criação de DSLs
Navegação código
Eu sou lá da Bahia, e lá a gente tem vistas horríveis como essa, então quem aparecer por lá pode me dar um toque que a gente sai pra comer uma água.
Roslyn é o codinome do projeto da reescrita dos compiladores do C# e do VB.NET, onde a tendência é que se deixe de usar o compilador que hoje é escrito em c++ para ser usado um compilador escrito no próprio C# e no VB.NET.
Mas pra que fazer isso?
Reescrever um novo compilador é algo que necessita bastante esforço, e isso tomou bastante tempo do time de C#, em uma entrevista, um dos devs justificou o roslyn como um dos motivos de que poucas features foram implementadas no C# recentemente.
Pra que gastar todo esse esforço?
Na verdade, a gente precisa entender o contexto atual, a grande verdade, é que dada a idade do compilador atual e o seu tamanho, ele se tornou um grande problema dentro da Microsoft, onde a codebase, que segundo devs do time de compiladores, está uma bagunça, tem tornado cada vez difícil a adição de novas features.
O outro problema, é que o compilador do C#, hoje, é uma grande caixa preta, nós desenvolvedores não temos a menor idéia do que acontece lá dentro, o pior é que não é só a gente que está do lado de fora, os desenvolvedores da própria Microsoft não tem idéia do que acontece lá exceto o time de compiladores.
No entanto, um compilador não serve apenas para transformar código em IL, na verdade, esse é o produto final, no entanto, existem vários subprodutos que são importantes para nós desenvolvedores, como o parser sintático, a análise semântica e fluxo de execução do código.
Segundo o grande oráculo chamado WikiPedia, é a análise de uma sequência de entrada, afim de construir uma estrutura gramatical, por exemplo, no portugues a nossa estrutura gramatical é composta de substantivos, conjunções e verbos, na programação, são classes, métodos e variáveis.
Qual seria a estrutura do seguinte código?
Mas pera aí… Eu tinha falado que isso era importante na nossa vida como desenvolvedor, mas a grande maioria aqui não deve se preocupar no seu dia a dia com estruturas sintática e nem análises semânticas, mas a gente indiretamente sofremos a influência disso no nosso dia a dia através das ferramentas que usamos.
Syntax highlighting é um exemplo de uso da análise sintática
Intellisense é um exemplo de sintática e semância ao digitar o ., o VS descobre que estamos acessando um membro da classe, faz uma análise semântica para descobrir do que se trata aquela declaracao e traz a lista de possíveis métodos.
Outras funções da nossas IDEs também necessitam dessas informações para funcionar corretamente