Menu

Tree [23694a] master /
 History

HTTPS access


File Date Author Commit
 doc 2009-04-03 Martin Kopta Martin Kopta [253787] init
 examples 2009-04-03 Martin Kopta Martin Kopta [253787] init
 src 2009-08-02 Martin Kopta Martin Kopta [5203e3] release
 website 2009-08-27 Martin Kopta Martin Kopta [23694a] git sf move
 .gitignore 2009-04-03 Martin Kopta Martin Kopta [3b34ba] flag -Wextra to CXXFLAGS, CXX from g++ to c++ a...
 AUTHORS 2009-08-02 Martin Kopta Martin Kopta [5203e3] release
 COPIYNG 2009-08-02 Martin Kopta Martin Kopta [5203e3] release
 Changelog 2009-08-02 Martin Kopta Martin Kopta [5203e3] release
 README 2009-08-02 Martin Kopta Martin Kopta [5203e3] release

Read Me

Project 'pes' is completely documented and written in czech language, because it
is created for study purposes (for czech students).


Primitivni programovaci jazyk 'pes'
===================================

KOMPILACE
=========

Pro preklad kompilatoru jazyka pes ze zdrojovych kodu do binarni podoby
potrebujete prekladac jazyka c++ (ve kterem je kompilator jazyka pes napsan).
Nejvhodnejsi je kompilator g++ (ze sady kompilacnich nastroju gcc). Lze pouzit
i kompilator c++ dodavany se solarisem a nektere dalsi prekladace c++. Preklad
byl bezchybne proveden na operacnich systemech GNU/Linux, FreeBSD a Solaris.
Zdrojove kody programu jsou obsazeny v adresari 'src/' v nemz se nachazi take
soubor 'Makefile', ve kterem je ulozen navod na sestaveni programu. Makefile
lze pouzit pomoci prikazu 'make' na operacnich systemech typu GNU/Linux,
popripade prikazem 'gmake' na UNIXovych operacnich systemech.

Priklad kompilace:

  $ cd src/
  $ make
  c++ -Wall -Wextra -pedantic -ansi -c -o pesc.o pesc.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o lexan.o lexan.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o synan.o synan.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cUzel.o cUzel.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cProgram.o cProgram.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cDokud.o cDokud.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cPokud.o cPokud.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cPodminka.o cPodminka.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cPrirazeni.o cPrirazeni.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cVraceni.o cVraceni.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cSoucet.o cSoucet.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cRozdil.o cRozdil.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cNasobek.o cNasobek.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cPodil.o cPodil.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cIdentifikator.o cIdentifikator.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cInt.o cInt.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cFloat.o cFloat.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cBlok.o cBlok.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cPrikaz.o cPrikaz.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cVyraz.o cVyraz.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cTerm.o cTerm.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cZbTermu.o cZbTermu.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cFaktor.o cFaktor.cpp
  c++ -Wall -Wextra -pedantic -ansi -c -o cTS.o cTS.cpp
  c++ -Wall -Wextra -pedantic -ansi -o pesc pesc.o lexan.o synan.o cUzel.o \
    cProgram.o cDokud.o cPokud.o cPodminka.o cPrirazeni.o cVraceni.o \
    cSoucet.o cRozdil.o cNasobek.o cPodil.o cIdentifikator.o cInt.o \
    cFloat.o cBlok.o cPrikaz.o cVyraz.o cTerm.o cZbTermu.o cFaktor.o cTS.o
  $ # hotovo

Pokud se neco nepodari, kontaktujte prosim autora (viz AUTOR)


SPUSTENI
========

Pro spusteni je potreba mit prelozeny program 'pesc'. Ten ziskate pomoci
informaci uvedenych v sekci KOMPILACE. Po uspesne kompilaci by jste meli
obdrzet binarni soubor 'src/pesc'. Tento program bere jako jediny parametr
- nazev souboru, ve kterem je ulozen kod v programovacim jazyce PES.

Priklad spusteni:

  $ ./pesc ../examples/euklid.pes > euklid.j


SOUBORY
=======

doc/grammar/ebnf.txt              - syntaxe zapsana pomoci EBNF
doc/grammar/syngram.txt           - syntakticka pravidla v klasickem zapisu
doc/grammar/semgram_ast.txt       - semanticka pravidla (pouziti vnitrni formy)
doc/grammar/vnitrniforma.txt      - doplnujici soubor pro semanticka pravidla
doc/grammar/semgram_atg.txt       - semanticka pravidla ZASTARALE!
doc/setsAndTable.html             - mnoziny FIRST a FOLLOW, rozkladova tabulka
doc/lexFA.png                     - lexikalni analyzator jako obrazek automatu
doc/lexFA.dot                     - lexikalni analyzator popsany jako automat v
                                    jazyce DOT

src/Makefile                      - postup pro kompilaci projektu
src/lexan.cpp                     - kod lexikalniho analyzatoru
src/lexan.h                       - hlavicka pro lexikalni analyzator
src/synan.cpp                     - kod syntaktickeho analyzatoru
src/synan.h                       - hlavicka pro syntakticky analyzator
src/pesc.cpp                      - hlavni zdrojovy soubor
src/cTS.cpp                       - kod tabulky symbolu
src/cTS.h                         - hlavicka tabulky symbolu
...                               - dalsi tridy a hlavicky


examples/euklid.pes               - eukliduv algoritmus pro GCD
examples/faktorial.pes            - vypocet faktorialu
examples/linearni_rovnice.pes     - reseni linearni rovnice ax+b=0
examples/mocnina.pes              - pocitani mocniny a^x
examples/nic.pes                  - nejmensi program
examples/operace.pes              - ukazka operaci
examples/rocnivyplata.pes         - vypocet rocni vyplaty
examples/vypocet_obvodu_kruhu.pes - vypocet obvodu kruhu
examples/sigma.pes                - sigma funkce
         (http://en.wikipedia.org/wiki/Divisor_function)
examples/oneline.pes              - ukazka zhustene syntaxe
examples/zisk.pes                 - vypocet zisku