Advertisement
greedydev

Untitled

Apr 28th, 2022
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.98 KB | None | 0 0
  1. package recur;
  2.  
  3. public class ParserG {
  4.     Letter input;
  5.     char next;
  6.     public ParserG() { }
  7.    
  8.     public boolean analys(String word) {
  9.         input = new Letter(word);
  10.         try {
  11.             next = input.nextChar();
  12.             S();
  13.             match('$');
  14.         } catch (SyntaxError ex) {
  15.             System.out.println(ex.getMessage());
  16.             return false;
  17.         }
  18.         return true;
  19.     }
  20.     private void S() throws SyntaxError {
  21.         match('a');
  22.         match('b');
  23.         if (next == 'b') {
  24.             match('b');
  25.         } else {
  26.             A();
  27.             B();
  28.             match('d');
  29.         }
  30.  
  31.     }
  32.  
  33.     private void A() throws SyntaxError {
  34.         if (next == 'a') {
  35.             next = input.nextChar();
  36.             A();
  37.             match('b');
  38.         } else {
  39.             match('d');
  40.         }
  41.     }
  42.  
  43.     private void B() throws SyntaxError {
  44.         if (next == 'b') {
  45.             match('b');
  46.         } else {
  47.             next = input.nextChar();
  48.             B();
  49.             match('c');
  50.             A();
  51.         }
  52.     }
  53.     private void match(char c) throws SyntaxError {
  54.         if (next == c) {
  55.             next = input.nextChar();
  56.         }
  57.         else throw new SyntaxError("Expecting " + c + ", found " + next);
  58.     }
  59. }
  60.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement