
AssignExprsTree Parsing...

  File: data.txt

ident=  abc
intlit= 22
intlit= 77
intlit= 98
assignmentStatement: abc

ident=  xyz
ident=  abc
intlit= 33
ident=  abc
assignmentStatement: xyz

ident=  fcn0
procedureCallStatement: fcn0

ident=  abc
intlit= 55
ident=  xyz
ident=  fcn2
procedureCallStatement: fcn2

ident=  efg
ident=  fcn0
procedureCall: fcn0
intlit= 66
ident=  fcn2
procedureCall: fcn2
assignmentStatement: efg

ident=  hij
ident=  abc
intlit= 88
ident=  klm
intlit= 99
ident=  xyz
assignmentStatement: hij

ident=  hij
ident=  abc
intlit= 55
ident=  klm
intlit= 77
ident=  fcn2
procedureCallStatement: fcn2

program

* Parsing Successful *

Tree:  ( PROGRAM ( = abc ( * ( - 22 ) ( + 77 98 ) ) ) ( = xyz ( / abc ( - 33 abc ) ) ) ( CALL fcn0 ) ( CALL fcn2 abc ( * 55 xyz ) ) ( = efg ( CALL fcn2 ( CALL fcn0 ) 66 ) ) ( = ( ARRAY hij ( - abc ) ) ( * 88 ( ARRAY klm ( / 99 xyz ) ) ) ) ( CALL fcn2 ( / ( ARRAY hij abc ) 55 ) ( ARRAY klm 77 ) ) )

* Tree Construction Successful *

LOADA abc 	# abc
LOADI 22 	# 22
NEG    		# -22
LOADI 77 	# 77
LOADI 98 	# 98
ADD    		# 77 + 98
MUL    		# 22 * +
STORE		# abc <- *

LOADA xyz 	# xyz
LOADA abc 	# abc
LOADI 33 	# 33
LOADA abc 	# abc
SUB    		# 33 - abc
DIV    		# abc / 33
STORE		# xyz <- /

LOADF fcn0
CALL		# call fcn0

LOADA abc 	# abc
LOADI 55 	# 55
LOADA xyz 	# xyz
MUL    		# 55 * xyz
LOADF fcn2
CALL		# call fcn2

LOADA efg 	# efg
LOADF fcn0
CALL		# call fcn0

LOADI 66 	# 66
LOADF fcn2
CALL		# call fcn2

STORE		# efg <- CALL

LOADA abc 	# abc
NEG    		# -abc
LOADA hij 	# hij
ARRAY		# hij[abc]
LOADI 88 	# 88
LOADI 99 	# 99
LOADA xyz 	# xyz
DIV    		# 99 / xyz
LOADA klm 	# klm
ARRAY		# klm[/]
MUL    		# 88 * klm
STORE		# hij <- *

LOADA abc 	# abc
LOADA hij 	# hij
ARRAY		# hij[abc]
LOADI 55 	# 55
DIV    		# hij / 55
LOADI 77 	# 77
LOADA klm 	# klm
ARRAY		# klm[77]
LOADF fcn2
CALL		# call fcn2

END

* Tree-Walk Successful *

