Advertisement
Guest User

Untitled

a guest
May 24th, 2017
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.03 KB | None | 0 0
  1. package lisa5;
  2.  
  3. import praks7.parsers.Node;
  4. import praks7.parsers.Parser;
  5.  
  6. // S →  aR | c
  7. // R -> Sb | A
  8.  
  9. // A → bAbQ | dQ
  10. // Q -> cQ | e
  11. public class SAParser extends Parser {
  12.  
  13.     public SAParser(String input) {
  14.         super(input);
  15.     }
  16.  
  17.     // S → aR | c
  18.     protected Node s() {
  19.         Node n = new Node("S");
  20.         switch (peek()){
  21.             case 'a':
  22.                 n.add(match('a'));
  23.                 n.add(r());
  24.                 break;
  25.             case 'c':
  26.                 n.add(match('c'));
  27.                 break;
  28.             default:
  29.                 expected('a', 'c');
  30.         }
  31.         return n;
  32.     }
  33.  
  34.     protected Node r() {
  35.         Node n = new Node("R");
  36.         switch (peek()){
  37.             case 'a':
  38.             case 'c':
  39.                 n.add(s());
  40.                 n.add(match('b'));
  41.                 break;
  42.             case 'b':
  43.             case 'd':
  44.                 n.add(a());
  45.                 break;
  46.             default:
  47.                 expected('a','c','b','d');
  48.         }
  49.         return n;
  50.     }
  51.  
  52.     protected Node a() {
  53.         Node n = new Node("A");
  54.         switch (peek()){
  55.             case 'b':
  56.                 n.add(match('b'));
  57.                 n.add(a());
  58.                 n.add(match('b'));
  59.                 n.add(q());
  60.                 break;
  61.             case 'd':
  62.                 n.add(match('d'));
  63.                 n.add(q());
  64.                 break;
  65.             default:
  66.                 expected('b','d');
  67.         }
  68.         return n;
  69.     }
  70.  
  71.     protected Node q() {
  72.         Node n = new Node("Q");
  73.         switch (peek()){
  74.             case 'b':
  75.             case '$':
  76.                 n.add(epsilon());
  77.                 break;
  78.             case 'c':
  79.                 n.add(match('c'));
  80.                 n.add(q());
  81.                 break;
  82.             default:
  83.                 expected('b','$','c');
  84.         }
  85.         return n;
  86.     }
  87.  
  88.     public static void main(String[] args) {
  89.         Parser p = new SAParser("abdb");
  90.         p.testParser();
  91.     }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement