Pergunta

Fundo: Recentemente, enquanto olhando para um "editor de texto estruturado" Eu notei que eles usaram um truque para python mudança / perl / c ++ / java et al. em um "estruturado" esboço por esgueirando XML para os comentários das respectivas línguas.

Eu lembrava de ter visto este truque dentro de um arquivo janelas bat uma vez também. As demonstrações reais de arquivo bat foram usadas para "esconder" algum código perl.

Pergunta: Você já viu um caso em que alguém usou os comentários de um programação ou linguagem de marcação para incorporar a sintaxe de uma linguagem totalmente diferente? Se sim, você pode dar um link para o exemplo ou explicar o que era?

Se você não tiver, aqui está um exemplo:

Pergunta: É este tipo de "truque" uma ideia inteligente e útil? Se assim for, você pode enumerar uma instância especial onde você usou esse truque? Se não, você pode descrever por que você acha que é uma má idéia?

Foi útil?

Solução

Você está falando de poliglotas , um aspecto absolutamente fascinante de programação de computadores e um exercício maravilhoso na natureza ambígua de algumas linguagens de script / programação. Enquanto a maioria definitivamente uma noção intrigante, eles raramente são vistos fora da arena de novidade. Falando do ponto de vista de um codificador, no entanto, seria mais definitivamente ser um feito para obter o seu trabalho a função em vários ambientes, muito diferentes; ver, no entanto, como poliglotas geralmente dependem de todos os tipos de hacks e como contorná-las através de comentários, este é quase sempre fora do reino de viabilidade. olhar uma Definitivamente, se você ainda não viu o que eles podem fazer, embora; Vou recomendar esta .

Acredite ou não, esse arquivo único irá compilar corretamente (de alguma maneira, forma ou formulário) em quinze línguas diferentes:

  1. HTML
  2. festa
  3. zsh
  4. C89
  5. C99
  6. C ++
  7. Makefile
  8. Rubi
  9. Tcl
  10. Perl
  11. Haskell
  12. Python
  13. JavaScript
  14. Brainfuck
  15. Whitespace

Outras dicas

Eu não posso lhe dar uma resposta completa, mas NetBean gosta de usar esse truque com o seu código gerado Java.

O problema é que o código-fonte Java deveria ser um meio entre as aplicações. Ao acrescentar significado a certos comentários, você é forçado a ficar com apenas Netbeans. Claro que os comentários podem apenas ser ignorado por outros programas, mas o que se esses comentários são movidos ou alterado? Eu já fiz isso no Netbeans e então alguns funkiness ocorreu quando eu tentei carregar a parte de trás do arquivo no NetBeans. Eu tinha que ter tempo para corrigir a sintaxe (em comentários!) Que era suposto ser invisível para mim.

Pessoalmente, eu nunca adicionar mais significado para um arquivo existente se necessário mais de uma modificação não-local (ou seja, o seu ok para ter significado dentro de um comentário, mas não têm um significado deste comentário a esse comentário ). Eu definitivamente adicionar outro arquivo que continha os metadados necessários na maioria dos casos.

Este horror interpõe marcação XHTML, HTML e pré-HTML3.2 TagSoup 'esconderijo' com comentários CSS:

<style type="text/css"><!--/*--><![CDATA[/*><!--*/
    ...
/*]]>*/--></style>

Eu estava mortificada quando eu comecei a ver que realmente utilizados. Ele só foi concebido como um exercício. Desculpe.

Eu vi esse truque (coisas esconderijo nos comentários) usado para dobrar em editores, para marcação de documentação em várias ferramentas, e para deixar migalhas de pão para o trabalho de ida e volta em uma ferramenta de modelagem.

O outro uso que eu vi é no Cog , um gerador de código. Você escrever comentários python dentro e, em seguida, Cog corre o python para gerar o código. É interessante porque o ponto inteiro é para nunca precisa / quer modificar o código gerado, para que ele não correr para o mesmo conjunto de aborrecimentos que você começa com, por exemplo, um editor de dobrar quando você acidentalmente estragar os comentários dos dobra " em um editor diferente.

Visual Studio tem uma forma de este chamado T4. Infelizmente, a documentação é tipo de esboçado.

Uma marcação favorito usado na documentação para Python é Reestruturado texto. É uma linguagem geral simplificada de marcação, como Markdown ou Têxtil, mas faz para boa estrutura de documentação e pode ser facilmente usado para gerar HTML ou a documentação PDF.

WEB e CWEB de Donald Knuth incorporar Pascal (Web) e C (CWEB) dentro Tex. Aqui está um exemplo do código-fonte METAFONT:

@ The following system-independent code makes the |xord| array contain a
suitable inverse to the information in |xchr|. Note that if |xchr[i]=xchr[j]|
where |i<j<@'177|, the value of |xord[xchr[i]]| will turn out to be
|j| or more; hence, standard ASCII code numbers will be used instead of
codes below @'40 in case there is a coincidence.

@<Set init...@>=
for i:=first_text_char to last_text_char do xord[chr(i)]:=@'177;
for i:=@'200 to @'377 do xord[xchr[i]]:=i;
for i:=0 to @'176 do xord[xchr[i]]:=i;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top