Published on

October 21, 2018

Removendo Comentários do Código T-SQL: Parte 2

Bem-vindo de volta à segunda parte da nossa série sobre a remoção de comentários do código T-SQL. No artigo anterior, discutimos as regras gramaticais do analisador T-SQL e os cinco principais elementos do T-SQL que precisam ser compreendidos para remover os comentários com segurança. Se você ainda não leu a primeira parte, você pode encontrá-la aqui.

Agora, vamos mergulhar mais fundo no processo de remoção de comentários do código T-SQL. Vamos percorrer um lote de exemplo de T-SQL e ver como o T-SQL Decommenter lida com ele.

Primeiro, vamos dar uma olhada no lote de T-SQL com o qual estaremos trabalhando:

ALTER PROC [F[o]]o]
/*Oi -- <- ignore /*nested*/ mais*/AS
SELECT *, 'Str w/ ''quotes''' AS Foo--, Bas
FROM "B""ar";

Quando descomentado, esperamos que o T-SQL fique assim:

ALTER PROC [F[o]]o]

AS
SELECT *, 'Str w/ ''quotes''' AS Foo
FROM "B""ar";

O T-SQL Decommenter usa uma abordagem recursiva para identificar e remover comentários do código. Ele começa combinando os diferentes tipos de tokens e seus padrões de início. Os tipos de tokens incluem Comentário de Linha, Comentário de Bloco, Literal de String, Identificador Delimitado T-SQL e Identificador Delimitado ANSI.

Vamos percorrer o processo passo a passo:

  1. Iteração 1: O T-SQL Decommenter começa combinando o SQL Normal, já que o tipo de token anterior é _. Ele encontra um Identificador Delimitado T-SQL começando com [ no índice 12. A correspondência é adicionada ao SQL Ativo, e o SQL anterior à correspondência é adicionado ao SQL Fechado. O SQL Fechado é então anexado ao Novo SQL, e a correspondência é removida do SQL Restante.
  2. Iteração 2: O T-SQL Decommenter continua combinando o Identificador Delimitado T-SQL. Ele encontra um ] no índice 4, que pertence ao token T atual. A correspondência é adicionada ao SQL Ativo, e tudo até a correspondência é adicionado ao SQL Fechado. O SQL Fechado é anexado ao Novo SQL, e a correspondência é removida do SQL Restante.
  3. Iteração 3: O T-SQL Decommenter continua combinando o Identificador Delimitado T-SQL. Ele encontra um ] no índice 2, que termina o token T atual. A correspondência é adicionada ao SQL Ativo, e tudo até a correspondência é adicionado ao SQL Fechado. O SQL Fechado é anexado ao Novo SQL, e a correspondência é removida do SQL Restante.
  4. Iteração 4: O T-SQL Decommenter retoma a combinação do SQL Normal. Ele encontra um Comentário de Bloco começando com /* no índice 3. A correspondência é adicionada ao SQL Ativo, e o SQL anterior à correspondência é adicionado ao SQL Fechado. O SQL Fechado é anexado ao Novo SQL, e a correspondência é removida do SQL Restante.
  5. Iteração 5: O T-SQL Decommenter continua combinando o Comentário de Bloco. Ele encontra um /* no índice 17, que pertence ao token B atual. A correspondência é adicionada ao SQL Ativo, e tudo até a correspondência é adicionado ao SQL Fechado. O SQL Fechado é anexado ao Novo SQL, e a correspondência é removida do SQL Restante.
  6. Iteração 6: O T-SQL Decommenter continua combinando o Comentário de Bloco. Ele encontra um */ no índice 7, que pertence ao token B atual. A correspondência é adicionada ao SQL Ativo, e tudo até a correspondência é adicionado ao SQL Fechado. O SQL Fechado é anexado ao Novo SQL, e a correspondência é removida do SQL Restante.
  7. Iteração 7: O T-SQL Decommenter continua combinando o Comentário de Bloco. Ele encontra um */ no índice 6, que termina o token B atual. A correspondência é adicionada ao SQL Ativo, e tudo até a correspondência é adicionado ao SQL Fechado. O SQL Fechado é anexado ao Novo SQL, e a correspondência é removida do SQL Restante.
  8. Iteração 8: O T-SQL Decommenter retoma a combinação do SQL Normal. Ele encontra um Literal de String começando com ‘ no índice 17. A correspondência é adicionada ao SQL Ativo, e o SQL anterior à correspondência é adicionado ao SQL Fechado. O SQL Fechado é anexado ao Novo SQL, e a correspondência é removida do SQL Restante.
  9. Iteração 9: O T-SQL Decommenter continua combinando o Literal de String. Ele encontra um ” no índice 8, que pertence ao token S atual. A correspondência é adicionada ao SQL Ativo, e tudo até a correspondência é adicionado ao SQL Fechado. O SQL Fechado é anexado ao Novo SQL, e a correspondência é removida do SQL Restante.
  10. Iteração 10: O T-SQL Decommenter continua combinando o Literal de String. Ele encontra um ” no índice 7, que pertence ao token S atual. A correspondência é adicionada ao SQL Ativo, e tudo até a correspondência é adicionado ao SQL Fechado. O SQL Fechado é anexado ao Novo SQL, e a correspondência é removida do SQL Restante.
  11. Iteração 11: O T-SQL Decommenter continua combinando o Literal de String. Ele encontra um ‘ no índice 1, que termina o token S atual. A correspondência é adicionada ao SQL Ativo, e tudo até a correspondência é adicionado ao SQL Fechado. O SQL Fechado é anexado ao Novo SQL, e a correspondência é removida do SQL Restante.
  12. Iteração 12: O T-SQL Decommenter retoma a combinação do SQL Normal. Ele encontra um Comentário de Linha começando com — no índice 8. A correspondência é adicionada ao SQL Ativo, e o SQL anterior à correspondência é adicionado ao SQL Fechado. O SQL Fechado é anexado ao Novo SQL, e a correspondência é removida do SQL Restante.
  13. Iteração 13: O T-SQL Decommenter continua combinando o Comentário de Linha. Ele encontra um caractere de Quebra de Linha no índice 7, que termina o token L atual. A correspondência é adicionada ao SQL Ativo, e tudo até a correspondência é adicionado ao SQL Fechado. O SQL Fechado é anexado ao Novo SQL, e a correspondência é removida do SQL Restante.
  14. Iteração 14: O T-SQL Decommenter retoma a combinação do SQL Normal. Ele encontra um Identificador Delimitado ANSI começando com ” no índice 6. A correspondência é adicionada ao SQL Ativo, e o SQL anterior à correspondência é adicionado ao SQL Fechado. O SQL Fechado é anexado ao Novo SQL, e a correspondência é removida do SQL Restante.
  15. Iteração 15: O T-SQL Decommenter continua combinando o Identificador Delimitado ANSI. Ele encontra um “” no índice 2, que pertence ao token A atual. A correspondência é adicionada ao SQL Ativo, e tudo até a correspondência é adicionado ao SQL Fechado. O SQL Fechado é anexado ao Novo SQL, e a correspondência é removida do SQL Restante.
  16. Iteração 16: O T-SQL Decommenter continua combinando o Identificador Delimitado ANSI. Ele encontra um ” no índice 3, que termina o token A atual. A correspondência é adicionada ao SQL Ativo, e tudo até a correspondência é adicionado ao SQL Fechado. O SQL Fechado é anexado ao Novo SQL, e a correspondência é removida do SQL Restante.
  17. Iteração 17: O T-SQL Decommenter retoma a combinação do SQL Normal. Nenhum dos tipos de token corresponde aos seus padrões de início, indicando SQL Normal até o final do SQL Restante. A correspondência é adicionada ao SQL Ativo, e tudo até a correspondência é adicionado ao SQL Fechado. O SQL Fechado é anexado ao Novo SQL, e a correspondência é removida do SQL Restante.
  18. Iteração 18: O T-SQL Decommenter chega ao final da recursão. O conteúdo do Novo SQL é o T-SQL descomentado completo.

E aí está! O T-SQL Decommenter remove com sucesso os comentários do código T-SQL, deixando apenas as declarações SQL necessárias.

No próximo artigo, vamos mergulhar nos detalhes de implementação do T-SQL Decommenter e explorar a lógica exata que impulsiona seu comportamento. Fique ligado!

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.