Advertisement
Soulseller

PDA

May 26th, 2016
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.37 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class PDA
  4. {
  5.  
  6.     private Stack<Integer> keller = new Stack<Integer>();
  7.     private int startzustand;
  8.     private int aktZustand;
  9.     private ArrayList<Integer> endzustaende = new ArrayList<Integer>();
  10.     private ArrayList<Character> alphabet = new ArrayList<Character>();
  11.    
  12.  
  13.  
  14.     public PDA()
  15.     {
  16.         // Stack initialisieren
  17.         keller.push(0);
  18.  
  19.  
  20.  
  21.         startzustand = 0;
  22.         aktZustand = startzustand;
  23.         endzustaende.add(2);
  24.         alphabet.add('a');
  25.         alphabet.add('b');
  26.  
  27.        
  28.     }
  29.  
  30.  
  31.  
  32.     public boolean pruefeWort(String wort)
  33.     {
  34.  
  35.         char aktZeichen;
  36.  
  37.         for (int i = 0; i < wort.length(); i++)
  38.         {
  39.             if (wort.length() == 0) {
  40.                 return transZustand(0);
  41.             }
  42.             aktZeichen = wort.charAt(i);
  43.  
  44.             if (!(alphabet.contains(aktZeichen)))
  45.             {
  46.                 System.out.println("Ungültiges Zeichen");
  47.                 return false;
  48.             }
  49.  
  50.             if (aktZeichen == 'a') {
  51.                 if (!transZustand(1))
  52.                     return false;
  53.             }
  54.             if (aktZeichen == 'b') {
  55.                 if (!transZustand(2))
  56.                     return false;
  57.             }
  58.         }
  59.         transZustand(0);
  60.        
  61.         if (endzustaende.contains(aktZustand))
  62.         {          
  63.             System.out.println(wort + " ist in der Sprache enthalten");
  64.             return true;
  65.         }
  66.        
  67.         else
  68.         {          
  69.             System.out.println(wort + " ist in der Sprache nicht enthalten");
  70.             return false;
  71.         }
  72.     }
  73.  
  74.     private boolean transZustand(int zeichen)
  75.     {
  76.         int kZeichen = keller.peek();
  77.  
  78.         if (aktZustand == 0 && zeichen == 0 && kZeichen == 0)
  79.         {
  80.             aktZustand = 2;
  81.             keller.pop();
  82.             System.out.println("Regel1");
  83.             return true;
  84.         }
  85.  
  86.         if (aktZustand == 0 && zeichen == 1 && kZeichen == 0)
  87.         {
  88.             aktZustand = 0;
  89.             keller.push(1);
  90.             System.out.println(keller.elementAt(keller.peek()));
  91.             System.out.println("Regel2");
  92.             return true;
  93.         }
  94.  
  95.         if (aktZustand == 0 && zeichen == 1 && kZeichen == 1)
  96.         {
  97.             aktZustand = 0;
  98.             keller.push(1);
  99.             System.out.println("Regel3");
  100.             return true;
  101.         }
  102.  
  103.         if (aktZustand == 0 && zeichen == 2 && kZeichen == 1)
  104.         {
  105.             aktZustand = 1;
  106.             keller.pop();
  107.             System.out.println("Regel4");
  108.             return true;
  109.         }
  110.  
  111.         if (aktZustand == 1 && zeichen == 2 && kZeichen == 1)
  112.         {
  113.             aktZustand = 1;
  114.             keller.pop();
  115.             System.out.println("Regel5");
  116.             return true;
  117.         }
  118.  
  119.         if (aktZustand == 1 && zeichen == 0 && kZeichen == 0)
  120.         {
  121.             aktZustand = 2;
  122.             keller.pop();
  123.             System.out.println("Regel1");
  124.             return true;
  125.         }
  126.  
  127.         return false;
  128.     }
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement