Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Nowa wersja
Poprzednia wersja
pl:miw:miw08_prologens [2008/05/06 20:23]
miw utworzono
pl:miw:miw08_prologens [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== Opis ====== ====== Opis ======
-PawełMarek, pmarek@student.agh.edu.pl+__**Projekt zakończony**__ 
 + 
 +**Paweł Marek**<pmarek@student.agh.edu.pl
 ===== PrologEns ===== ===== PrologEns =====
 Kolorowanie składni języka Prolog dla [[http://​www.gnu.org/​software/​enscript/​|GNU Enscript]]. Kolorowanie składni języka Prolog dla [[http://​www.gnu.org/​software/​enscript/​|GNU Enscript]].
-Patrz realizacja dla [[prolog:​geshi_prolog|GeSHi]]. +Patrz realizacja dla [[pl:prolog:​geshi_prolog|GeSHi]]. 
-====== Spotkania ======+ 
 ====== Projekt ====== ====== Projekt ======
 +
 +Poniżej zamieszczam wyniki wykonania projektu kolorowania składni języka Prolog w GNU Enscript.
 +
 +
 +prolog.st
 +<​code>​
 + /**
 + * 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:
 +*/
 +</​code>​
 +
 +
 ====== Sprawozdanie ====== ====== 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:
 +<​code>​
 +enscript --help-pretty-print
 +</​code>​
 +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:
 +<​code>​
 +enscript nazwa_pliku -Eprolog --color --output=nazwa_pliku.ps
 +</​code>​
 +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 ====
 +
 +Przykładowe wyniki. Plik wejściowy:
 +<​code>​
 +/*
 + * family.pl
 + * taken from Bratko, 3rd ed, ch.1, p.17
 + *
 + */
 + 
 +parent(pam,​bob).
 +parent(tom,​bob).
 +parent(tom,​liz).
 + 
 +female(pam).
 +female(liz).
 +female(pat).
 + 
 +male(tom).
 +male(bob).
 +male(jim).
 + 
 +mother(X,Y) :-
 + parent(X,​Y),​
 + female(X).
 + 
 +father(X,Y) :-
 + parent(X,​Y),​
 + male(X).
 +</​code>​
 +
 +Plik wynikowy:
 +
 +{{:​pl:​miw:​prologens.gif|:​pl:​miw:​prologens.gif}} ​
 +
 +
 +
 +
 +
 +
 ====== Materiały ====== ====== Materiały ======
 +  * GNU Enscript Home Page [[http://​www.codento.com/​people/​mtr/​genscript/​]]
 +  * GNU Enscript Manual Page [[http://​www.codento.com/​people/​mtr/​genscript/​enscript.man.html]]
 +  * GNU Enscript v1.6.4 [[http://​www.iki.fi/​mtr/​genscript/​enscript-1.6.4.tar.gz]]
 +  * Writing New Highlighting Definitions in GNU Enscript ​
 +    [[http://​lavica.fesb.hr/​cgi-bin/​info2html?​(enscript)Writing%20New%20Highlighting%20Definitions]]
 +  * Output Languages in GNU Enscript
 +    [[http://​lavica.fesb.hr/​cgi-bin/​info2html?​(enscript)Output%20Languages]]
 +  * Guildelines for writing new highlighting rules for the GNU Enscript
 +    /​usr/​local/​share/​enscript/​hl/​enscript.st
 +
 +
 +
 +
 +
 +
pl/miw/miw08_prologens.1210098205.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