Colorindo código fonte em C com o SED
Publicado por Marcos Paulo Ferreira 25/07/2009
[ Hits: 6.574 ]
Homepage: http://daemoniolabs.wordpress.com
Este script inacabado recebe um código em C e retorna o mesmo código colorido, só que em formato HTML. Posteriormente você pode transformar este arquivo HTML em PDF.
Qualquer ajuda na manutenção do código será muito bem vinda.
Daemonio
#!/bin/sed -f # #Autor: Daemonio #Email: undefinido at gmail.com #Fri Jun 26 00:09:55 BRT 2009 # #Script SED que colori um codigo fonte em C #retorando o codigo colorido em um arquivo #html. # #[sintaxe] c2html.sed codigo.c > codigo.html # 1 i\ <html>\ <head>\ <title>** c2html.sed - Sed Colorido **</title>\ </head>\ <body>\ <pre> #Junta todas as linhas que contem um '\' no final. :a /\\$/ { N ba } # #Substituir pelos (alguns) chars especiais do HTML s/&/\&/g s/</\</g s/>/\>/g # #Includes e defines # #Codigo para #ifdef e companhia faltando. :( # /^[ \t]*\(#include\|#define\)/ { s@"@\"@g s@.*@<font color='green'>&</font>@ #Nao ha mais nada para colorir (va para o fim do script). b } # #Um caracter C entre '' s@'\(..\?\)'@<font color='red'>&</font>@ # #Colorir os digitos (rosa escuro) s@\b\([[:digit:]]\+\)\b@<font color='#FF0099'>\1</font>@g # #Palavras reservadas s@\b\(int\|char\|void\|float\|double\|long\|short\)\b@<b>&</b>@g s@\b\(if\|else\|switch\|case\|break\|continue\)@<b>&</b>@g s@\b\(for\|while\|do\|typedef\|struct\|return\)@<b>&</b>@g s@\b\(volatile\|extern\|local\|register\|union\)\b@<b>&</b>@g s@\b(static\|const\|default\|enum\|goto\sizeof)\b@<b>&</b>@g s@\b\(un\)\?signed\b@<b>&</b>@g # #Aspas /"/ { #Substitui "" por $""$ onde o $ eh um char especial. # # exemplo: "entre aspas" -> vira -> $"entre aspas"$ # #Isso pra facilitar a manipulacao e para nao #casar uma aspas final com uma inicial. # s@"\([^"]*\)"@$"\1"$@g #Retirar tags HTML entre as aspas sem casar #com o conteudo entre o fim de uma dupla #de aspas com o inicio da outra dupla. :b /\$"[^>]\+>[^"]*"\$/ { s@\$"\([^<]*\)<[^>]\+>\([^"]*\)"\$@$"\1\2"$@ tb } #Colorir de vermelho as aspas s@\$"\([^"]*\)"\$@<font color='red'>"\1"</font>@g } # #Comentarios \@/\*@ { #Comentarios com mais de uma linha :c \@\*/@!{ N bc } #Eliminar tags HTML entre os comentarios :d s@/\*\([^<]*\)<[^>]\+>\(.*\)\*/@/*\1\2*/@ td s@\(\([^/][^\*])\)*\)/\*\(.*\)\*/@\2<font color='blue'>/*\3*/</font>@g } # #Comentarios indicados por // \@//@ { #Eliminar tags HTML :e s@//\([^<]*\)<[^>]\+>\([^$]\+$\)@//\1\2@ te s@//.*$@<font color='blue'>&</font>@g } # $ a\ </pre>\ </body> \ </html>\
Alteração rápida de permissões, e usuários
Miguxeitor.sed - converse com seus miguxos
imtxt - Escrever texto em imagens
Perifericos Hardware na terminal
Máquina perereca - até onde é possível o uso de Linux?
Mitigação - O que é e quando é "seguro" desabilitar
A arte e a prática da Disciplina a longo prazo
Topgrade - Atualize seu sistema Linux inteiro com um único comando
Como anda a saúde do disco rígido?
Reescalando a tela hd para fullhd com o xrandr
Debian 13 "trixie&... lançado! (15)
script backup e restaure samba4 (0)
samba4 versao 4.22.3 usuario nao consegue trocar a senha [RESOLVIDO] (5)
Rede Windows / Linux Mint- pastas e arquivos somente como leitura (5)