Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.20 KB | None | 0 0
  1. void program() {
  2. token tok = next_token();
  3. switch(tok){
  4. case 'begin':
  5. match('begin'); code(); match('end');
  6. }
  7.  
  8. void code() {
  9. token tok = next_token();
  10. switch(tok){
  11. case 'end':
  12. case 'endif':
  13. case 'else':
  14. case 'endwhile': return;
  15. case 'if': instlist();
  16. case 'while': instlist();
  17. case 'VARNAME': instlist();
  18. case 'for': instlist();
  19. case 'print': instlist();
  20. case 'read': instlist();
  21. default :
  22. syntax_error ( tok ) ; break ;
  23. }
  24. }
  25.  
  26. void instlist() {
  27. token tok = next_token();
  28. switch(tok){
  29. case 'VARNAME':
  30. case 'IF':
  31. case 'WHILE':
  32. case 'FOR':
  33. case 'PRINT':
  34. case 'READ': instruction(); instlisttail();
  35. default : syntax_error ( tok ) ; break ;
  36. }
  37. }
  38.  
  39. void instlisttail() {
  40. token tok = next_token();
  41. switch(tok) {
  42. case 'END':
  43. case 'ENDIF':
  44. case 'ELSE': return;
  45. case 'SEMICOLON': match('SEMICOLON'); instlist();
  46. default : syntax_error ( tok ) ; break ;
  47. }
  48. }
  49.  
  50. void instruction() {
  51. token tok = next_token();
  52. switch(tok) {
  53. case 'VARNAME': assign();
  54. case 'IF': _if();
  55. case 'WHILE': _while();
  56. case 'FOR': _for();
  57. case 'PRINT': _print();
  58. case 'READ': _read();
  59. default : syntax_error ( tok ) ; break ;
  60. }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement