Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. public static Exp parse(Tokenizer t) throws ParseException {
  2. t.gotoEnd();
  3. return parseExp(t);
  4. }
  5.  
  6. private static Exp parseExp(Tokenizer t) throws ParseException {
  7. Exp term = parseTerm(t);
  8. if (!t.done()) {
  9. Exp exp;
  10. if (t.current().isTheSymbol('+')) {
  11. t.previous();
  12. exp = parseExp(t);
  13. return new BinExp(exp, '+', term);
  14. } else if (t.current().isTheSymbol('-')) {
  15. t.previous();
  16. exp = parseExp(t);
  17. return new BinExp(exp, '-', term);
  18. } else {
  19. return term;
  20. }
  21. } else {
  22. return term;
  23. }
  24. }
  25.  
  26. private static Exp parseTerm(Tokenizer t) throws ParseException {
  27. if (t.current().isTheSymbol(')')) {
  28. t.previous();
  29. Exp e = parseExp(t);
  30. if (t.current().isTheSymbol('(')) {
  31. t.previous();
  32. return e;
  33. } else {
  34. throw new ParseException("( expected");
  35. }
  36. } else if (t.current().isNumber()) {
  37. int v = t.current().number();
  38. t.previous();
  39. return new LitExp(v);
  40. } else {
  41. throw new ParseException("bracket or number expected");
  42. }
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement