image thumbnail
from toy compiler by Bill McKeeman
A toy compiler

parser_test
% FILE:    parser_test.m
% PURPOSE: Exercise parser
% METHOD:  Use lexer to get tokens, call parser on token codes
% NOTE:    requires R14Sp2 or later

function parser_test
  src = 'a=1000; b=(a+((1))); longid=1+2-3*4/5\6;';
  disp(['parsing ' src]);
  
  [tc, ts, te] = lexer(src);     % lex source text
  sr = parser(tc);               % parse token codes

  % Display results
  disp(src);                     % the input
  i = 1;
  while i<=length(sr)            % shift/reduce sequence
    r = sr(i);                   % rule
    if r == 1,                   % shift rule
       i = i + 1;                % get parameter
       r = sr(i);                % id or constant
       disp(['shift ''' src(ts(r):te(r)) '''']);
    else
       disp(['rule  ' num2str(r)]);
    end
    i = i + 1;                   % next rule
  end

Contact us at files@mathworks.com