Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void program() {
- token tok = next_token();
- switch(tok){
- case 'begin':
- match('begin'); code(); match('end');
- }
- void code() {
- token tok = next_token();
- switch(tok){
- case 'end':
- case 'endif':
- case 'else':
- case 'endwhile': return;
- case 'if': instlist();
- case 'while': instlist();
- case 'VARNAME': instlist();
- case 'for': instlist();
- case 'print': instlist();
- case 'read': instlist();
- default :
- syntax_error ( tok ) ; break ;
- }
- }
- void instlist() {
- token tok = next_token();
- switch(tok){
- case 'VARNAME':
- case 'IF':
- case 'WHILE':
- case 'FOR':
- case 'PRINT':
- case 'READ': instruction(); instlisttail();
- default : syntax_error ( tok ) ; break ;
- }
- }
- void instlisttail() {
- token tok = next_token();
- switch(tok) {
- case 'END':
- case 'ENDIF':
- case 'ELSE': return;
- case 'SEMICOLON': match('SEMICOLON'); instlist();
- default : syntax_error ( tok ) ; break ;
- }
- }
- void instruction() {
- token tok = next_token();
- switch(tok) {
- case 'VARNAME': assign();
- case 'IF': _if();
- case 'WHILE': _while();
- case 'FOR': _for();
- case 'PRINT': _print();
- case 'READ': _read();
- default : syntax_error ( tok ) ; break ;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement