Program drawing logical systems which are described in language created by me
This program was written by me on VI term of studies on the subject "Formal languages and compilators". Project was written in Java in Netbeans environment.
Here you can find jar file with program. GUI in that program is written in polish. Here is translation of phrases used in program:
"Przykładowy kod (0 węzłów)" - example code without nodes
"Przykładowy kod (1 węzeł)" - example code with one node
"Przykładowy kod (2 węzły)" - example code with two nodes
"Kod dla kompilatora" - source code
"Wynik kompilatora" - compilator output
"Kompiluj" - compile
The aim of the project was to write a program, which would draw logical system described in language created by the author of the whole program. Language had to handle defined elements such as OR, AND, NOT, XOR, input-output and connections between them. What is more, language had to have an extension to create nodes (own components, created from defined elements, e. g. multiplexer). Application had to be written in Java and should present its output in a window. Lexical and syntax analysis had to be performed by own written classes (compatible with structure of LL(1) compilators).
Ʃ = {'T_OR', 'T_AND', 'T_NOT', 'T_XOR', 'T_NUMERURZADZENIA', 'T_LICZBAWEJSC', 'T_NUMERWEJSCIA', 'T_KONIECPROGRAMU', 'T_WEZEL', 'T_KONIECWEZLA', 'T_WEJSCIE', 'T_WYJSCIE', 'T_KONIECWEJSC', 'T_NUMERWEJSCIAZEWNETRZNEGO', 'T_TWORZWEZEL'}
Γ = {'URZADZENIE', 'NAZWAURZADZENIA', 'WEJSCIA', 'WEZEL', 'NOWYWEZEL', 'CIAŁO'}
S = 'CIALO'
P = {
CIALO → URZADZENIE CIALO
CIALO → NOWYWEZEL CIALO
CIALO → T_KONIECPROGRAMU
URZADZENIE → NAZWAURZADZENIA T_NUMERURZADZENIA
T_LICZBAWEJSC WEJSCIA
URZADZENIE → T_WEJSCIE T_NUMERURZADZENIA
URZADZENIE → T_WYJSCIE T_NUMERURZADZENIA T_NUMERWEJSCIA
NAZWAURZADZENIA → T_OR
NAZWAURZADZENIA → T_AND
NAZWAURZADZENIA → T_NOT
NAZWAURZADZENIA → T_XOR
NAZWAURZADZENIA → T_WEZEL
NOWYWEZEL → T_TWORZWEZEL WEZEL
WEZEL → URZADZENIE WEZEL
WEZEL → T_KONIECWEZLA T_NUMERURZADZENIA
WEJSCIA → T_NUMERWEJSCIA WEJSCIA
WEJSCIA → T_NUMERWEJSCIAZEWNETRZNEGO WEJSCIA
WEJSCIA → T_KONIECWEJSC
}
lookahead1(CIALO) = {'T_OR'}
lookahead1(CIALO) = {'T_AND'} lookahead1(CIALO) = {'T_NOT'} lookahead1(CIALO) = {'T_XOR'} lookahead1(CIALO) = {'T_WEZEL'} lookahead1(CIALO) = {'T_WEJSCIE'} lookahead1(CIALO) = {'T_WYJSCIE'} lookahead1(CIALO) = {'T_TWORZWEZEL'} lookahead1(CIALO) = {'T_KONIECPROGRAMU'} Disjoint sets |
lookahead1(URZADZENIE) = {'T_OR'}
lookahead1(URZADZENIE) = {'T_AND'} lookahead1(URZADZENIE) = {'T_NOT'} lookahead1(URZADZENIE) = {'T_XOR'} lookahead1(URZADZENIE) = {'T_WEZEL'} lookahead1(URZADZENIE) = {'T_WEJSCIE'} lookahead1(URZADZENIE) = {'T_WYJSCIE'} Disjoint sets |
lookahead1(NAZWAURZADZENIA) = {'T_OR'}
lookahead1(NAZWAURZADZENIA) = {'T_AND'} lookahead1(NAZWAURZADZENIA) = {'T_NOT'} lookahead1(NAZWAURZADZENIA) = {'T_XOR'} lookahead1(NAZWAURZADZENIA) = {'T_WEZEL'} Disjoint sets |
lookahead1(WEZEL) = {'T_OR'}
lookahead1(WEZEL) = {'T_AND'} lookahead1(WEZEL) = {'T_NOT'} lookahead1(WEZEL) = {'T_XOR'} lookahead1(WEZEL) = {'T_WEZEL'} lookahead1(WEZEL) = {'T_TWORZWEZEL'} lookahead1(WEZEL) = {'T_KON'} Disjoint sets |
lookahead1(WEJSCIA) = {'T_NUMERWEJSCIA'}
lookahead1(WEJSCIA) = {'T_KONIECWEJSC'} lookahead1(WEJSCIA) = {'T_NUMERWEJSCIAZEWNETRZNEGO'} Disjoint sets |
T_OR | or |
T_AND | and |
T_NOT | not |
T_NUMERURZADZENIA | u[0-9]{1,3} |
T_LICZBAWEJSC | we[0-9]{1,3} |
T_NUMERWEJSCIA | [0-9]{1,3} |
T_WEZEL | wezel |
T_KONIECWEZLA | \\} |
T_WEJSCIE | wejscie |
T_WYJSCIE | wyjscie |
T_KONIECWEJSC | ; |
T_NUMERWEJSCIAZEWNETRZNEGO | Z[0-9]{1,3} |
T_TWORZWEZEL | tworzwezel_\\{ |
T_KONIECPROGRAMU | EOF |