Advertisement
Guest User

Untitled

a guest
May 24th, 2017
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.52 KB | None | 0 0
  1. package lisa5;
  2.  
  3. import praks7.parsers.Node;
  4. import praks7.parsers.Parser;
  5.  
  6. // S → aSdS | ε | CS
  7. // C → c | C/
  8. public class AcdcParser extends Parser {
  9.  
  10.     public AcdcParser(String input) {
  11.         super(input);
  12.     }
  13.  
  14.     // S → aSdS | ε | CS
  15.     protected Node s() {
  16.         Node n = new Node("S");
  17.         switch (peek()){
  18.             case 'a':
  19.                 n.add(match('a'));
  20.                 n.add(s());
  21.                 n.add(match('d'));
  22.                 n.add(s());
  23.                 break;
  24.             case 'c':
  25.                 n.add(c());
  26.                 n.add(s());
  27.                 break;
  28.             case 'd':
  29.             case '$':
  30.                 n.add(epsilon());
  31.                 break;
  32.             default:
  33.                 expected('a','c','d','$');
  34.         }
  35.         return n;
  36.     }
  37.  
  38.     protected Node c() {
  39.         Node n = new Node("C");
  40.         n.add(match('c'));
  41.         n.add(r(n));
  42.         return n;
  43.     }
  44.  
  45.     protected Node r(Node n) {
  46.         switch (peek()){
  47.             case 'a':
  48.             case 'c':
  49.             case 'd':
  50.             case '$':
  51.                 return n;
  52.             case '/':
  53.                 Node m = new Node("C");
  54.                 m.add(n);
  55.                 m.add(match('/'));
  56.                 return r(m);
  57.             default:
  58.                 expected('a','c','d','$','/');
  59.         }
  60.         return null;
  61.     }
  62.  
  63.  
  64.     public static void main(String[] args) {
  65.         Parser p = new AcdcParser("ac/dc");
  66.         p.testParser();
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement