xlate: proc; /* translate an M-expression to S-expression form */ if accum = 'label' then do; line = line || '(LABEL'; call scan(); if accum = '[' then call scan(); else call syntax(); call x_var(); call x_exp(); if accum = ']' then call scan(); else call syntax(); line = line || ')'; end; else if accum = 'lambda' then do; line = line || '(LAMBDA '; call scan(); if accum = '[' then call scan(); else call syntax(); call x_formal(); call xx(); if accum = ']' then call scan(); else call syntax(); end; else do; line = line ||'('; call x_func(); if accum = '[' then call scan(); else call syntax(); do while (accum ^= ']'); call x_arg(); end; end;