#!/usr/bin/perl
# parse language described in arith.output
# Perl source code automatically generated at Fri Apr 17 14:54:53 1998 by
# py v.0.1 25 Aug 1995
# Source code copyright 1995 M-J. Dominus (mjd@pobox.com)
#

require 'py-skel.pl';
require 'arith-rules.pl';

$; = "\034";
%act = (
"0;",	'shift 3',
"0\$default",	'reduce 2',
"0assignment",	'goto 7',
"0NUMBER",	'shift 2',
"0computation",	'goto 32',
"0NAME",	'shift 1',
"0statement",	'goto 5',
"0expr",	'goto 6',
"0(",	'shift 4',
"1\$default",	'reduce 15',
"1ASSIGNOP",	'shift 8',
"2\$default",	'reduce 16',
"3\$default",	'reduce 5',
"4NAME",	'shift 1',
"4expr",	'goto 9',
"4assignment",	'goto 10',
"4NUMBER",	'shift 2',
"4(",	'shift 4',
"5computation",	'goto 11',
"5statement",	'goto 5',
"5expr",	'goto 6',
"5assignment",	'goto 7',
"5(",	'shift 4',
"5;",	'shift 3',
"5NAME",	'shift 1',
"5\$default",	'reduce 2',
"5NUMBER",	'shift 2',
"6POWOP",	'shift 16',
"6*",	'shift 14',
"6+",	'shift 12',
"6,",	'shift 18',
"6-",	'shift 13',
"6/",	'shift 15',
"6;",	'shift 19',
"6?",	'shift 17',
"7;",	'shift 20',
"7\$default",	'reduce 14',
"8assignment",	'goto 10',
"8NUMBER",	'shift 2',
"8NAME",	'shift 1',
"8expr",	'goto 21',
"8(",	'shift 4',
"9)",	'shift 22',
"9*",	'shift 14',
"9+",	'shift 12',
"9,",	'shift 18',
"9-",	'shift 13',
"9/",	'shift 15',
"9?",	'shift 17',
"9POWOP",	'shift 16',
"10\$default",	'reduce 14',
"11\$default",	'reduce 1',
"12(",	'shift 4',
"12expr",	'goto 23',
"12NUMBER",	'shift 2',
"12assignment",	'goto 10',
"12NAME",	'shift 1',
"13assignment",	'goto 10',
"13NUMBER",	'shift 2',
"13(",	'shift 4',
"13NAME",	'shift 1',
"13expr",	'goto 24',
"14NAME",	'shift 1',
"14NUMBER",	'shift 2',
"14expr",	'goto 25',
"14assignment",	'goto 10',
"14(",	'shift 4',
"15expr",	'goto 26',
"15NAME",	'shift 1',
"15(",	'shift 4',
"15assignment",	'goto 10',
"15NUMBER",	'shift 2',
"16(",	'shift 4',
"16assignment",	'goto 10',
"16NAME",	'shift 1',
"16expr",	'goto 27',
"16NUMBER",	'shift 2',
"17expr",	'goto 28',
"17(",	'shift 4',
"17assignment",	'goto 10',
"17NUMBER",	'shift 2',
"17NAME",	'shift 1',
"18NAME",	'shift 1',
"18(",	'shift 4',
"18NUMBER",	'shift 2',
"18expr",	'goto 29',
"18assignment",	'goto 10',
"19\$default",	'reduce 3',
"20\$default",	'reduce 4',
"21,",	'shift 18',
"21?",	'shift 17',
"21\$default",	'reduce 17',
"22\$default",	'reduce 6',
"23\$default",	'reduce 7',
"23*",	'shift 14',
"23,",	'shift 18',
"23/",	'shift 15',
"23?",	'shift 17',
"23POWOP",	'shift 16',
"24?",	'shift 17',
"24\$default",	'reduce 8',
"24POWOP",	'shift 16',
"24*",	'shift 14',
"24,",	'shift 18',
"24/",	'shift 15',
"25,",	'shift 18',
"25?",	'shift 17',
"25POWOP",	'shift 16',
"25\$default",	'reduce 9',
"26POWOP",	'shift 16',
"26,",	'shift 18',
"26?",	'shift 17',
"26\$default",	'reduce 10',
"27\$default",	'reduce 11',
"27,",	'shift 18',
"27?",	'shift 17',
"27POWOP",	'shift 16',
"28:",	'shift 30',
"28?",	'shift 17',
"28POWOP",	'shift 16',
"28*",	'shift 14',
"28+",	'shift 12',
"28,",	'shift 18',
"28-",	'shift 13',
"28/",	'shift 15',
"29\$default",	'reduce 13',
"30NAME",	'shift 1',
"30(",	'shift 4',
"30expr",	'goto 31',
"30NUMBER",	'shift 2',
"30assignment",	'goto 10',
"31\$default",	'reduce 12',
"31,",	'shift 18',
"31?",	'shift 17',
"32End_of_Input",	'goto 33',
"33End_of_Input",	'goto 34',
"34\$default",	'accept',
);

@length = (0, 2, 3, 2, 2, 1, 3, 3, 3, 3, 3, 3, 5, 3, 1, 1, 1, 3, );

@rhs = ('', 'computation', 'computation', 'statement', 'statement', 'statement', 'expr', 'expr', 'expr', 'expr', 'expr', 'expr', 'expr', 'expr', 'expr', 'expr', 'expr', 'assignment', );

@rule = (
  '',
  'computation -> statement computation',
  'computation ->		/* empty */',
  'statement -> expr \';\'',
  'statement -> assignment \';\'',
  'statement -> \';\'',
  'expr -> \'(\' expr \')\'',
  'expr -> expr \'+\' expr',
  'expr -> expr \'-\' expr',
  'expr -> expr \'*\' expr',
  'expr -> expr \'/\' expr',
  'expr -> expr POWOP expr',
  'expr -> expr \'?\' expr \':\' expr',
  'expr -> expr \',\' expr',
  'expr -> assignment',
  'expr -> NAME',
  'expr -> NUMBER',
  'assignment -> NAME ASSIGNOP expr',
);

