Program		->	Deklarace Funkce		Program.su=Funkce.su
		->	Funkce				Program.su=Funkce.su

Deklarace	->	Typ ident ( putProm ) D2	putProm.did=ident.sid

Typ		->	int

D2		->	= D2' D3
		->	D3

D2'		->	cislo
		->	ident

D3		->	; D4
		->	, ident ( putProm ) D2		putProm.did=ident.sid

D4		->	epsilon
		->	Deklarace

Vyraz		->	T E'				Vyraz.su=E'.su; E'.du=T.su

E'		->	+ T E'				T0'.su=T1'.su; T1'.du=new BinOp('+',T0.du,F.su)
		->	- T E'				T0'.su=T1'.su; T1'.du=new BinOp('-',T0.du,F.su)
		->	epsilon				T'.su=T'.du

T		->	FT'				T'.du=F.su; T.su=T'.su

T'		->	* F T'				T0'.su=T1'.su; T1'.du=new BinOp('*',T0.du,F.su)
		->	/ F T'				-- not supported --
		->	epsilon				T'.su=T'.du

F		->	ident				F.su=new Ident(ident.sid) 
		->	cislo				F.su=new Cislo(cislo.shod)
		->	( Vyraz )			F.su=Vyraz.su

Funkce		->	void ident ( ) SlozPrikaz	Funkce.su=new Funkce(SlozPrikaz.su)

SLozPrikaz	->	{ Prikaz Sloz2 }		SlozPrikaz.su=new Seznam(Prikaz.su,SLoz2.su)

Sloz2		->	Prikaz Sloz2			Sloz20.su=new Seznam(Prikaz.su,Sloz21.su)
		->	epsilon				Sloz2.su=new Empty()

Prikaz		->	;				Prikaz.su=new Empty()
		->	SLozPrikaz			Prikaz.su=SlozPrikaz.su
		->	Prirazeni ;			Prikaz.su=Prirazeni.su
		->	Print				Prikaz.su=Print.su
		->	If				Prikaz.su=If.su
		->	While				Prikaz.su=While.su
		->	For				Prikaz.su=For.su
		-> 	epsilon				Prikaz.su=new Empty()

Prirazeni	->	ident = Vyraz			Prirazeni.su=new Prirazeni(getAdr(ident.sid),Vyraz.su)

Print		->	printf ( Print2			Print.su=Print2.su

Print2		->	string ) ;			Print2.su=new PrintS(string.shod)
		->	ident ) ;			Print2.su=new Print(Vyraz.su)

If		->	if ( Podm ) Prikaz If2		If.su=new If(Podm.su,Prikaz.su,If2.su)

If2		->	else Prikaz			If2.su=Prikaz.su
		->	epsilon				If2.su=new Empty()

Podm		->	ident Podm2			Podm.su=Podm2.su; Podm2.did=ident.sid

Podm2		->	Porovnani Vyraz			Podm2.su=new BinOp(Porovnani.sid,Podm2.did,Vyraz.su)
		->	epsilon				-- not supported --

While		->	while ( Podm ) Prikaz		While.su=new While(Podm.su,Prikaz.su)

For		->	for ( Prirazeni ; For2		For.su=For2.su; For2.du=Prirazeni.su

For2		->	; For3				For2.su=For3.su; For3.d1=For2.du; For3.d2=new Empty()
		->	Podm ; For3			For2.su=For3.su; For3.d1=For2.du; For3.d2=Podm.su

For3		->	Prirazeni ) Prikaz		For3.su=new For(For3.d1,For3.d2,Prirazeni.su,Prikaz.su)
		->	) Prikaz			For3.su=new For(For3.d1,For3.d2,new Empty(),Prikaz.su)

Porovnani	->	==				Porovnani.sid=ROVNO
		->	!=				Porovnani.sid=NEROVNO
		->	>=				Porovnani.sid=VETSIROVNO
		->	<=				Porovnani.sid=MENSIROVNO
		->	>				Porovnani.sid=VETSI
		->	<				Porovnani.sid=MENSI
