Nowe posty

Autor Wątek: Awk, jak używać pól?  (Przeczytany 3145 razy)

cob

  • Gość
Awk, jak używać pól?
« dnia: 2006-11-19, 16:54:17 »
Muszę napisać program w awk, który będzie tworzył stronę html na podstawie kodu w c. Ma on wyszczególniać słowa kluczowe itp. W zasadzie udało mi się coś stworzyć jednak zauważyłem pewien problem. Teraz również wyrażenia w "" są interpretowane jako słowa kluczowe i dostaję np w miejscu tekstu "przebyte" tekst "przebytee" co jest niedopuszczalne. Domyślam się, że należało by użyć pól i zmienić separator na " ale nie bardzo wiem jak to zrobić. Poniżej zamieszczam to co narazie spłodziłem. Proszę o jakieś sugestie.

BEGIN {
  print "";
  print "";
  print "";
  print "";
  print "";
  print "
"; 
}

//*/ {komentarz=1};
/*// {komentarz=0};



/[/][/]/ { sub ( "[/][/].*", "&" ); print; next;}
/"/ {
if ( komentarz != 1 ) {
gsub ( "return", "&" );
gsub ( "if", "&" );
gsub ( "while", "&" );
gsub ( "for", "&" );
gsub ( "exit", "&" );
gsub ( "continue", "&" );
gsub ( "break", "&" );
gsub ( "do", "&" );
gsub ( "{", "&" );
gsub ( "}", "&" );

gsub ( "void", "&" );
gsub ( "int", "&" );
gsub ( "double", "&" );
gsub ( "byte", "&" );
gsub ( "short", "&" );
gsub ( "float", "&" );
gsub ( "string", "&" );
gsub ( "char", "&" );
gsub ( "#include ", "&" );
gsub ( "#define ", "&" );
gsub ( "*/", "&" ); print;
}
else{
gsub ( "[/]
  • ", "&" );print;


}
}

END {
  print "
";
  print "";
  print "";
}

gomath

  • Gość
Awk, jak używać pól?
« Odpowiedź #1 dnia: 2006-11-21, 09:08:09 »
2006-11-19 16:54:17 cob napisał:

 > dostaję np w miejscu tekstu "przebyte" tekst "przebytee"
 > co jest niedopuszczalne.

Nie mogę teraz tego sprawdzić, ale być może wystarczy zamiast

 > gsub ( "return", "&" );

zrobić:

gsub ( / return /, "&" );

Zwróć uwagę na spacje przed i po 'return'. Oczywiście na tej samej zasadzie należałoby zmienić wszystkie wyrażenia z gsub.