Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package lisa5;
- import praks7.parsers.Node;
- import praks7.parsers.Parser;
- // S → aSdS | ε | CS
- // C → c | C/
- public class AcdcParser extends Parser {
- public AcdcParser(String input) {
- super(input);
- }
- // S → aSdS | ε | CS
- protected Node s() {
- Node n = new Node("S");
- switch (peek()){
- case 'a':
- n.add(match('a'));
- n.add(s());
- n.add(match('d'));
- n.add(s());
- break;
- case 'c':
- n.add(c());
- n.add(s());
- break;
- case 'd':
- case '$':
- n.add(epsilon());
- break;
- default:
- expected('a','c','d','$');
- }
- return n;
- }
- protected Node c() {
- Node n = new Node("C");
- n.add(match('c'));
- n.add(r(n));
- return n;
- }
- protected Node r(Node n) {
- switch (peek()){
- case 'a':
- case 'c':
- case 'd':
- case '$':
- return n;
- case '/':
- Node m = new Node("C");
- m.add(n);
- m.add(match('/'));
- return r(m);
- default:
- expected('a','c','d','$','/');
- }
- return null;
- }
- public static void main(String[] args) {
- Parser p = new AcdcParser("ac/dc");
- p.testParser();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement