# Automata converter

This program can convert between two pairs of automata types. First pair is deep pushdown automaton and parallel deep 
pushdown automaton. Second pair is deep pushdown automaton and tuple parallel deep pushdown automaton

This program doesn't accept automata with special pushdown symbol '#' and pop rules. This is because the '#' symbol is 
only for checking the bottom of the stack. Generating pop rules is useless work because automata have them implicitly.
This program requires that symbol 'X' doesn't belong to tuple parallel deep pushdown automata pushdown symbols and 
doesn't belong to pushdown symbols of basic deep pushdown automata that is about ot be converted to tuple parallel deep 
pushdown automata.

## Usage

### Start via Makefile
Run automata converter with parameters.

``
make run ARGS="[options]"
``

Run automatic tests.

``
make test
``

Get Makefile help

``
make help
``

### Direct start

``
./Src/automataConverter.py [options]
``

## Accepted parameters:

- -h or --help => Shows help.
- -i {file} or --input {file}  => Read from input file instead of reading standard input.
- -o {file} or --output {file} => Write output to output file instead of writing to standard output.
- -1 or --pda2ppda             => Convert deep pushdown automaton to parallel deep pushdown automaton.
- -2 or --ppda2pda             => Convert parallel deep pushdown automaton to deep pushdown automaton.
- -3 or --pda2tppda            => Convert deep pushdown automaton to tuple parallel deep pushdown automaton.
- -4 or --tppda2pda            => Convert tuple parallel deep pushdown automaton to deep pushdown automaton.
