% Tento soubor nahraďte vlastním souborem s přílohami (nadpisy níže jsou pouze pro příklad)

% Pro kompilaci po částech (viz projekt.tex), nutno odkomentovat a upravit
%\documentclass[../projekt.tex]{subfiles}
%\begin{document}

% Umístění obsahu paměťového média do příloh je vhodné konzultovat s vedoucím
%\chapter{Obsah přiloženého paměťového média}

%\chapter{Manuál}

%\chapter{Konfigurační soubor}

%\chapter{RelaxNG Schéma konfiguračního souboru}

%\chapter{Plakát}

\chapter{PDOM XML}

\begin{lstfloat}[hb]
\begin{lstlisting}[label={addPDOM}, caption={Příklad obsahu XML souboru s PDOM}, language=xml]
<?xml version="1.0" encoding="UTF-8"?>
<program file=".\perl_program.pl">
  <Document ppi-type="PPI::Document">
    <Statement ppi-type="PPI::Statement::Variable">
      <Token ppi-type="PPI::Token::Word" Token-type="Word" line="1" col="1">my</Token>
      <Token ppi-type="PPI::Token::Symbol" Token-type="Symbol" line="1" col="4">@arr</Token>
      <Token ppi-type="PPI::Token::Operator" Token-type="Operator" line="1" col="9">=</Token>
      <Structure ppi-type="PPI::Structure::List" Struct-type="List">
        <Statement ppi-type="PPI::Statement::Expression">
          <Token ppi-type="PPI::Token::Number" Token-type="Number" line="1" col="12">1</Token>
          <Token ppi-type="PPI::Token::Operator" Token-type="Operator" line="1" col="13">..</Token>
          <Token ppi-type="PPI::Token::Number" Token-type="Number" line="1" col="15">3</Token>
        </Statement>
      </Structure>
      <Token ppi-type="PPI::Token::Structure" Token-type="Structure" line="1" col="17">;</Token>
    </Statement>
    <Statement ppi-type="PPI::Statement">
      <Token ppi-type="PPI::Token::Magic" Token-type="Symbol" line="3" col="1">$"</Token>
      <Token ppi-type="PPI::Token::Operator" Token-type="Operator" line="3" col="4">=</Token>
      <Token ppi-type="PPI::Token::Quote::Double" Token-type="Quote" line="3" col="6">" "</Token>
      <Token ppi-type="PPI::Token::Structure" Token-type="Structure" line="3" col="9">;</Token>
    </Statement>
    <Statement ppi-type="PPI::Statement">
      <Token ppi-type="PPI::Token::Word" Token-type="Word" line="5" col="1">print</Token>
      <Token ppi-type="PPI::Token::Symbol" Token-type="Symbol" line="5" col="7">@arr</Token>
      <Token ppi-type="PPI::Token::Structure" Token-type="Structure" line="5" col="11">;</Token>
    </Statement>
    <Statement ppi-type="PPI::Statement">
      <Token ppi-type="PPI::Token::Word" Token-type="Word" line="7" col="1">print</Token>
      <Token ppi-type="PPI::Token::Word" Token-type="Word" line="7" col="7">shift</Token>
      <Token ppi-type="PPI::Token::Symbol" Token-type="Symbol" line="7" col="13">@arr</Token>
      <Token ppi-type="PPI::Token::Operator" Token-type="Operator" line="7" col="18">&lt;&lt;</Token>
      <Token ppi-type="PPI::Token::Number" Token-type="Number" line="7" col="21">1</Token>
      <Token ppi-type="PPI::Token::Structure" Token-type="Structure" line="7" col="22">;</Token>
    </Statement>
  </Document>
</program>
\end{lstlisting}
\end{lstfloat}


\chapter{Jednoduché skripty v jazyce Perl a jejich překlady}

\begin{lstfloat}[hb]
\begin{lstlisting}[label={progPerlFib}, caption={Program pro iterativní výpočet prvních 40 Fibonacciho čísel}, language=Perl]
#!/usr/bin/perl
use strict;
use warnings FATAL => 'all';

my $last1 = 0;
my $last2 = 1;
my @fib = ($last1, $last2);
while (@fib < 40){
    @fib = (@fib, $last1 + $last2);
    my $temp = $last1 + $last2;
    $last1 = $last2;
    $last2 = $temp;
}
while (@fib){
    print shift @fib, " ";
}
print "\n"
\end{lstlisting}
\end{lstfloat}

\begin{lstfloat}[hb]
\begin{lstlisting}[label={progJSFib}, caption={Překlad programu \ref{progPerlFib}}, language=JavaScript]
var last1 = 0;
var last2 = 1;
var fib = [last1, last2];
while (fib.length < 40) {
	fib = [...fib, last1 + last2];
	var temp = last1 + last2;
	last1 = last2;
	last2 = temp;
}
while (fib.length) {
	print(fib.shift(), " ");
}
print("\n");




// Compatibility function
function print(...args){
	for (var arg of args){
		process.stdout.write(arg.toString())
	}
}
\end{lstlisting}
\end{lstfloat}


% Factorial

\begin{lstfloat}[hb]
\begin{lstlisting}[label={progPerlFac}, caption={Program pro iterativní výpočet faktoriálu pomocí funkce}, language=Perl]
use strict;
use warnings FATAL => 'all';

sub factorial{
    my $factor = shift @_;
    my $ret = 1;
    while ($factor > 0) {
        $ret = $ret * $factor--;
    }
    return $ret;
}

print factorial(7);
\end{lstlisting}
\end{lstfloat}

\begin{lstfloat}[hb]
\begin{lstlisting}[label={progJSFac}, caption={Překlad programu \ref{progPerlFac}}, language=JavaScript]
function factorial (..._){
	var factor = _.shift();
	var ret = 1;
	while (factor > 0) {
		ret = ret * factor--;
	}
	return ret;
}

print(factorial(7));




// Compatibility functions
function print(...args){
	for (var arg of args){
		process.stdout.write(arg.toString())
	}
}
\end{lstlisting}
\end{lstfloat}
