procedure S; begin if nexttoken = "if" then begin scan; E; if nexttoken <> "then" then error else begin scan; S; if nexttoken = "else" then begin scan; S; end; end; end else begin V; if nexttoken <> ":=" then error else begin scan; E; end; end; end S; procedure V; begin if nexttoken <> "id" then error else begin scan; if nexttoken = "(" then begin scan; E; if nexttoken <> ")" then error else scan; end; end; end V; procedure E; begin T; if nexttoken = "+" then begin scan; E; end else scan; end E; procedure T; begin F; if nexttoken = "*" then begin scan; T; end else scan; end T; procedure F; begin if nexttoken = "(" then begin scan; E; if nexttoken <> ")" then error else scan; end else V; end F;