To jest stara wersja strony!


Opis

PrologEns

Kolorowanie składni języka Prolog dla GNU Enscript. Patrz realizacja dla GeSHi.

Spotkania

080408

przydzielenie projektu

Projekt

Poniżej zamieszczam wyniki wykonania projektu kolorowania składni języka Prolog w GNU Enscript.

 /**
 * Name: prolog
 * Description: Prolog (PROgramming in LOGic) programming language.
 * Author: Pawel Marek <p.marek@student.agh.edu.pl>
 */

state prolog extends HighlightEntry
{
  /* Comments. */
  /\/\*/ {
    comment_face (true);
    language_print ($0);
    call (c_comment);
    comment_face (false);
  }
  
  /* Comments. */
  /%/ {
    comment_face (true);
    language_print ($0);
    call (eat_one_line);
    comment_face (false);
  }
  
  /* String constants. */
  /'/ {
    string_face (true);
    language_print ($0);
    call (prol_string);
    string_face (false);
  }
  
  /* String constants. */
  /\"/ {
    string_face (true);
    language_print ($0);
    call (c_string);
    string_face (false);
  }
  
  /* Symbols. */
  /+|-|*|\/|\\\\|\^|<|>|=|~|:|\.|,|?|@|#|\$|&/ {
    keyword_face (true);
    language_print ($0);
    keyword_face (false);
  } 
  
  /* Brackets. */
  /\[|\]|\(|\)/ {
    function_name_face (true);
    language_print ($0);
    function_name_face (false);
  }
  
  /* Predicates. */
  /([A-Z])([a-zA-Z0-9]*)/ {
    bold (true);
    language_print ($0);
    bold (false);
  }
  
  /* Numbers. */
  /([0-9])/ {
    type_face (true);
    language_print ($0);
    type_face (false);
  }
}


state prol_string extends Highlight
{
  /\\\\./ {
    language_print ($0);
  }
  /'/ {
    language_print ($0);
    return;
  }
}


/*
Local variables:
mode: c
End:
*/

Sprawozdanie

1. Enscript

Enscript konwertuje pliki tekstowe do formatu PostScript lub innego języka wyjściowego (HTML, RFT, ANSI). Program potrafi zapisać wynik swojego działania w pliku lub wysłać bezpośrednio do drukarki. Jeżeli podczas wywołania nie podano pliku wejściowego enscript przetwarza wejście standardowe (stdin). Enscript może być rozbudowywany do obsługi wielu mediów wyjściowych i posiada szereg opcji konfigurowalnych, które mogą być używane do dostosowywania wydruków do swoich potrzeb. Jednym ze sposobów wykorzystania programu jest kolorowanie składni. Enscript w najnowszej swojej wersji 1.6.4 posiada obsługę kolorowania składni kilkudziesięciu języków, m.innymi: ADA95, C, C++, Delphi, Fortran, VHDL, HTML. Moim zadaniem było dopisać definicje kolorowania składni języka Prolog.

2. Highlighting rules

Program po zainstalowaniu umieszcza swoje pliki konfiguracyjne w /usr/local/share/enscript. Zagłębiając się dalej w strukturze katalogów /usr/local/share/enscript/hl znajdują się pliki z definicjami kolorowania składni poszczególnych języków. Między nimi znajduje się główny plik kolorowania składni enscript.st w którym znaleźć można wskazówki jak należy pisać nowe reguły.

Aby sprawdzić jakie reguły podświetlania składni podsiada Enscript należy wydać polecenie:

enscript –help-pretty-print

Wywołanie zwraca nazwę języków, krótkie opisy i autorów reguł.

Z powodu braku dokumentacji GNU Enscript dotyczących reguł podświetlania składni podczas pisania projektu korzystałem praktycznie tylko z zaleceń zawartych w pliku enscript.st oraz z analizy istniejących już reguł dla innych języków.

3. Instalacja dodatku

Instalacja reguł podświetlania składni Prologu polega na skopiowaniu pliku prolog.st do katalogu /usr/local/share/enscript/hl gdzie znajdują się inne reguły. Program podczas działania sprawdza czy dane reguły są w katalogu i w razie problemów zgłasza błędy.

4. Przykładowe użycie

Aby skorzystać z podświetlania składni Prologu należy wydać polecenie:

enscript nazwa_pliku -Eprolog –color –output=nazwa_pliku.ps

Opcja -E wskazuje jakie reguły podświetlania składni mają zostać użyte. Druga opcja –color włącza bogatsze wyniki o kolory (domyślnie wyniki są tylko pogrubiane). Ostatnia opcja –output sprawia iż wyniki zapisywane są w pliku o podanej po znaku równości nazwie.

5. Testy

:pl:miw:prologens.gif

Materiały

pl/miw/miw08_prologens.1225649690.txt.gz · ostatnio zmienione: 2019/06/27 15:58 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0