Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class PDA
- {
- private Stack<Integer> keller = new Stack<Integer>();
- private int startzustand;
- private int aktZustand;
- private ArrayList<Integer> endzustaende = new ArrayList<Integer>();
- private ArrayList<Character> alphabet = new ArrayList<Character>();
- public PDA()
- {
- // Stack initialisieren
- keller.push(0);
- startzustand = 0;
- aktZustand = startzustand;
- endzustaende.add(2);
- alphabet.add('a');
- alphabet.add('b');
- }
- public boolean pruefeWort(String wort)
- {
- char aktZeichen;
- for (int i = 0; i < wort.length(); i++)
- {
- if (wort.length() == 0) {
- return transZustand(0);
- }
- aktZeichen = wort.charAt(i);
- if (!(alphabet.contains(aktZeichen)))
- {
- System.out.println("Ungültiges Zeichen");
- return false;
- }
- if (aktZeichen == 'a') {
- if (!transZustand(1))
- return false;
- }
- if (aktZeichen == 'b') {
- if (!transZustand(2))
- return false;
- }
- }
- transZustand(0);
- if (endzustaende.contains(aktZustand))
- {
- System.out.println(wort + " ist in der Sprache enthalten");
- return true;
- }
- else
- {
- System.out.println(wort + " ist in der Sprache nicht enthalten");
- return false;
- }
- }
- private boolean transZustand(int zeichen)
- {
- int kZeichen = keller.peek();
- if (aktZustand == 0 && zeichen == 0 && kZeichen == 0)
- {
- aktZustand = 2;
- keller.pop();
- System.out.println("Regel1");
- return true;
- }
- if (aktZustand == 0 && zeichen == 1 && kZeichen == 0)
- {
- aktZustand = 0;
- keller.push(1);
- System.out.println(keller.elementAt(keller.peek()));
- System.out.println("Regel2");
- return true;
- }
- if (aktZustand == 0 && zeichen == 1 && kZeichen == 1)
- {
- aktZustand = 0;
- keller.push(1);
- System.out.println("Regel3");
- return true;
- }
- if (aktZustand == 0 && zeichen == 2 && kZeichen == 1)
- {
- aktZustand = 1;
- keller.pop();
- System.out.println("Regel4");
- return true;
- }
- if (aktZustand == 1 && zeichen == 2 && kZeichen == 1)
- {
- aktZustand = 1;
- keller.pop();
- System.out.println("Regel5");
- return true;
- }
- if (aktZustand == 1 && zeichen == 0 && kZeichen == 0)
- {
- aktZustand = 2;
- keller.pop();
- System.out.println("Regel1");
- return true;
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement