         Edinburgh IMP77 Compiler - Version 8.4
    1 %begin
				.section .mdebug.abi32
				.previous
				.nan	legacy
				.module	fp=xx
				.module	nooddspreg
				.abicalls
		$Ltext0:
				.rdata
				.align	2
		$LC0:
				.byte	40
				.ascii	"Imp77 precedence and associativity test.\000"
				.space	214
				.align	2
		$LC11:
				.byte	85
				.ascii	"a * b // c * d is left associative and with equal preced"
				.ascii	"ence, i.e. ((a * b) // c) * d\000"
				.space	169
				.align	2
		$LC7:
				.byte	37
				.ascii	"This grammar would support the above:\000"
				.space	217
				.align	2
		$LC12:
				.byte	33
				.ascii	"P<expr> = <term-op-list> <term> ;\000"
				.space	221
				.align	2
		$LC13:
				.byte	46
				.ascii	"P<term-op-list> = <term-op> <term-op-list> | ;\000"
				.space	208
				.align	2
		$LC14:
				.byte	26
				.ascii	"P<term-op> = <term> <op> ;\000"
				.space	228
				.align	2
		$LC20:
				.byte	51
				.ascii	"p ^^ q ^^ r is left associative, i.e. (p ^^ q) ^^ r\000"
				.space	203
				.align	2
		$LC21:
				.byte	34
				.ascii	"P<expr> = <term-exp-list> <term> ;\000"
				.space	220
				.align	2
		$LC22:
				.byte	49
				.ascii	"P<term-exp-list> = <term-exp> <term-exp-list> | ;\000"
				.space	205
				.align	2
		$LC23:
				.byte	27
				.ascii	"P<term-exp> = <term> \"^^\" ;\000"
				.space	227
				.align	2
				.globl	main
				LFB185 = .
				.set	nomips16
				.set	nomicromips
				.ent	main
		main:
				.frame	$sp,5912,$31		# vars= 5640, regs= 1/0, args= 256, gp= 8
				.mask	0x80000000,-4
				.fmask	0x00000000,0
				.set	noreorder
				.set	nomacro
				LVL0 = .
				addiu	$sp,$sp,-5912
				sw	$31,5908($sp)
				lui	$28,%hi(__gnu_local_gp)
				addiu	$28,$28,%lo(__gnu_local_gp)
				.cprestore	256
				lw	$2,%got(__stack_chk_guard)($28)
				lw	$2,0($2)
				sw	$2,5900($sp)
    2
				lw	$25,%call16(_imp_initialise)($28)
				.reloc	1f,R_MIPS_JALR,_imp_initialise
			1:	jalr	$25
				nop
				LVL1 = .
				lw	$28,256($sp)
				LVL2 = .
				LVL3 = .
				LBB171 = .
    3 !
    4 ! Precedence of operators
    5 !
    6 ! Highest: 1. \ (complement, unary not)
    7 !          2. \, \\, <<, >>
    8 !          3. *, /, //, &
    9 ! Lowest:  4. +, - (unary and binary), !, !!
   10 !
   11 ! In general, sub-expressions with operators of equal precedence are evaluated from left to right.
   12 !
   13 ! The one exception to the left-hand precedence rule is that consecutive
   14 ! exponentiations are evaluated from right to left; thus A**B**C is
   15 ! evaluated as A**(B**C), not as (A**B)**C.  (Imp80 documentation)
   16
   17 ! Arithmetic operators:
   18
   19 ! |...| modulus              also: !...!  (deprecated some time ago)
   20
   21 ! !  inclusive or
   22 ! !! exclusive or
   23 ! &  and
   24
   25 ! \  real exponentiation     also:  ^  (Imp77)  or  **    (ERCC compilers)
   26 ! \\ integer exponentiation  also:  ^^ (Imp77)  or  ****
   27
   28 ! *  multiply
   29 ! /  real division
   30 ! // integer division
   31
   32 ! << left shift
   33 ! >> right shift
   34
   35 ! +  plus
   36 ! -  minus
   37
   38 ! +  unary +
   39 ! -  unary -
   40 ! \  unary not               also ~ (can be *displayed* as: ¬ (&not;))
   41
   42 ! .  string concatenation
   43
   44 ! Comparison operators:
   45 ! =  eq
   46 ! #  not equals              also \= and <> (Imp80 documentation)
   47 ! == address equals
   48 ! ## address not equals      also \==
   49 ! -> string resolution       (a difficult to classify hybrid of a comparison and an assignment operator)
   50 ! <= less than or equals
   51 ! <  less than
   52 ! >= greater than or equals
   53 ! >
   54
   55 ! Assignment operators:
   56 ! =  assignment
   57 ! == pointer assignment
   58 ! <- jam transfer
   59 ! -> string resolution
   60
   61 ! Data structure operators:
   62 ! _  record field
   63 ! () array indexing
   64 ! [] pointer increment       (a Hamish extension in 68000 Imp only)
   65
   66 ! Other:
   67 ! @  may be considered an operator in %real literals, usually handled by a BIP.
   68
   69
   70   %const %integer a = 19, b = 17, c = 5, d = 3
   71   %integer x = a * b // c * d
   72   print string("Imp77 precedence and associativity test."); newlines(2)
				lui	$2,%hi($LC0)
				addiu	$2,$2,%lo($LC0)
				addiu	$3,$sp,5644
				addiu	$4,$2,256
		$L2:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L2
				addiu	$3,$3,16
				addiu	$2,$sp,5644
				addiu	$3,$sp,268
				addiu	$4,$sp,5900
		$L3:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L3
				addiu	$3,$3,16
				addiu	$2,$sp,268
				addiu	$3,$sp,3084
				addiu	$4,$sp,524
		$L4:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L4
				addiu	$3,$3,16
				LBE171 = .
				LBB172 = .
				LBB173 = .
				addiu	$2,$sp,3100
				addiu	$3,$sp,16
				addiu	$4,$sp,3340
		$L5:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L5
				addiu	$3,$3,16
				lw	$4,3084($sp)
				lw	$5,3088($sp)
				lw	$6,3092($sp)
				lw	$7,3096($sp)
				lw	$25,%call16(_imp_printstring)($28)
				.reloc	1f,R_MIPS_JALR,_imp_printstring
			1:	jalr	$25
				nop
				LVL4 = .
				lw	$28,256($sp)
				LVL5 = .
				LBE173 = .
				LBE172 = .
				LBB174 = .
				LBB175 = .
				li	$4,2			# 0x2
				lw	$25,%call16(_imp_newlines)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newlines
			1:	jalr	$25
				nop
				LVL6 = .
				lw	$28,256($sp)
				LVL7 = .
				LDL1 = .
				LDL2 = .
				LBE175 = .
				LBE174 = .
				LBB176 = .
   73   %if x = 21 %start
   74     print string("In a * b // c * d, '*' has higher priority than '/'."); newline
   75     print string("A second test with '/' will be needed to determine associativity:"); newline
   76     x = a // c // d
   77     %if x = 1 %start
   78       print string("a // c // d is right associative, i.e. a // (b // c)"); newline
   79     %else %if x = 19
   80       print string("a // c // d is left associative, i.e. (a // b) // c"); newline
   81     %else
   82       print string("a // c // d is something weird!  I give up."); newline
   83     %finish
   84   %else %if x = 19
   85     print string("a * b // c * d is right associative and with equal precedence, i.e. a * (b // (c * d))"); newline
   86     newline
   87     print string("This grammar would support the above:"); newline
   88     newline
   89     print string("P<expr> = <term> <op-term-list> ;"); newline
   90     print string("P<op-term-list> = <op-term> <op-term-list> | ;"); newline
   91     print string("P<op-term> = <op> <term> ;"); newline
   92   %else %if x = 192
   93     print string("a * b // c * d is left associative and with equal precedence, i.e. ((a * b) // c) * d"); newline
				lui	$2,%hi($LC11)
				addiu	$2,$2,%lo($LC11)
				addiu	$3,$sp,5644
				addiu	$4,$2,256
		$L6:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L6
				addiu	$3,$3,16
				addiu	$2,$sp,5644
				addiu	$3,$sp,524
				addiu	$4,$sp,5900
		$L7:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L7
				addiu	$3,$3,16
				addiu	$2,$sp,524
				addiu	$3,$sp,4364
				addiu	$4,$sp,780
		$L8:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L8
				addiu	$3,$3,16
				LBE176 = .
				LBB177 = .
				LBB178 = .
				addiu	$2,$sp,4380
				addiu	$3,$sp,16
				addiu	$4,$sp,4620
		$L9:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L9
				addiu	$3,$3,16
				lw	$4,4364($sp)
				lw	$5,4368($sp)
				lw	$6,4372($sp)
				lw	$7,4376($sp)
				lw	$25,%call16(_imp_printstring)($28)
				.reloc	1f,R_MIPS_JALR,_imp_printstring
			1:	jalr	$25
				nop
				LVL8 = .
				lw	$28,256($sp)
				LBE178 = .
				LBE177 = .
				LBB179 = .
				LBB180 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL9 = .
				lw	$28,256($sp)
				LBE180 = .
				LBE179 = .
				LBB181 = .
				LBB182 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL10 = .
				lw	$28,256($sp)
				LBE182 = .
				LBE181 = .
				LBB183 = .
   94     newline
   95     print string("This grammar would support the above:"); newline
				lui	$2,%hi($LC7)
				addiu	$2,$2,%lo($LC7)
				addiu	$3,$sp,5644
				addiu	$4,$2,256
		$L10:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L10
				addiu	$3,$3,16
				addiu	$2,$sp,5644
				addiu	$3,$sp,780
				addiu	$4,$sp,5900
		$L11:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L11
				addiu	$3,$3,16
				addiu	$2,$sp,780
				addiu	$3,$sp,4108
				addiu	$4,$sp,1036
		$L12:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L12
				addiu	$3,$3,16
				LBE183 = .
				LBB184 = .
				LBB185 = .
				addiu	$2,$sp,4124
				addiu	$3,$sp,16
				addiu	$4,$sp,4364
		$L13:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L13
				addiu	$3,$3,16
				lw	$4,4108($sp)
				lw	$5,4112($sp)
				lw	$6,4116($sp)
				lw	$7,4120($sp)
				lw	$25,%call16(_imp_printstring)($28)
				.reloc	1f,R_MIPS_JALR,_imp_printstring
			1:	jalr	$25
				nop
				LVL11 = .
				lw	$28,256($sp)
				LBE185 = .
				LBE184 = .
				LBB186 = .
				LBB187 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL12 = .
				lw	$28,256($sp)
				LBE187 = .
				LBE186 = .
				LBB188 = .
				LBB189 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL13 = .
				lw	$28,256($sp)
				LBE189 = .
				LBE188 = .
				LBB190 = .
   96     newline
   97     print string("P<expr> = <term-op-list> <term> ;"); newline
				lui	$2,%hi($LC12)
				addiu	$2,$2,%lo($LC12)
				addiu	$3,$sp,5644
				addiu	$4,$2,256
		$L14:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L14
				addiu	$3,$3,16
				addiu	$2,$sp,5644
				addiu	$3,$sp,1036
				addiu	$4,$sp,5900
		$L15:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L15
				addiu	$3,$3,16
				addiu	$2,$sp,1036
				addiu	$3,$sp,3852
				addiu	$4,$sp,1292
		$L16:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L16
				addiu	$3,$3,16
				LBE190 = .
				LBB191 = .
				LBB192 = .
				addiu	$2,$sp,3868
				addiu	$3,$sp,16
				addiu	$4,$sp,4108
		$L17:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L17
				addiu	$3,$3,16
				lw	$4,3852($sp)
				lw	$5,3856($sp)
				lw	$6,3860($sp)
				lw	$7,3864($sp)
				lw	$25,%call16(_imp_printstring)($28)
				.reloc	1f,R_MIPS_JALR,_imp_printstring
			1:	jalr	$25
				nop
				LVL14 = .
				lw	$28,256($sp)
				LBE192 = .
				LBE191 = .
				LBB193 = .
				LBB194 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL15 = .
				lw	$28,256($sp)
				LBE194 = .
				LBE193 = .
				LBB195 = .
   98     print string("P<term-op-list> = <term-op> <term-op-list> | ;"); newline
				lui	$2,%hi($LC13)
				addiu	$2,$2,%lo($LC13)
				addiu	$3,$sp,5644
				addiu	$4,$2,256
		$L18:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L18
				addiu	$3,$3,16
				addiu	$2,$sp,5644
				addiu	$3,$sp,1292
				addiu	$4,$sp,5900
		$L19:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L19
				addiu	$3,$3,16
				addiu	$2,$sp,1292
				addiu	$3,$sp,3596
				addiu	$4,$sp,1548
		$L20:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L20
				addiu	$3,$3,16
				LBE195 = .
				LBB196 = .
				LBB197 = .
				addiu	$2,$sp,3612
				addiu	$3,$sp,16
				addiu	$4,$sp,3852
		$L21:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L21
				addiu	$3,$3,16
				lw	$4,3596($sp)
				lw	$5,3600($sp)
				lw	$6,3604($sp)
				lw	$7,3608($sp)
				lw	$25,%call16(_imp_printstring)($28)
				.reloc	1f,R_MIPS_JALR,_imp_printstring
			1:	jalr	$25
				nop
				LVL16 = .
				lw	$28,256($sp)
				LBE197 = .
				LBE196 = .
				LBB198 = .
				LBB199 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL17 = .
				lw	$28,256($sp)
				LBE199 = .
				LBE198 = .
				LBB200 = .
   99     print string("P<term-op> = <term> <op> ;"); newline
				lui	$2,%hi($LC14)
				addiu	$2,$2,%lo($LC14)
				addiu	$3,$sp,5644
				addiu	$4,$2,256
		$L22:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L22
				addiu	$3,$3,16
				addiu	$2,$sp,5644
				addiu	$3,$sp,1548
				addiu	$4,$sp,5900
		$L23:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L23
				addiu	$3,$3,16
				addiu	$2,$sp,1548
				addiu	$3,$sp,3340
				addiu	$4,$sp,1804
		$L24:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L24
				addiu	$3,$3,16
				LBE200 = .
				LBB201 = .
				LBB202 = .
				addiu	$2,$sp,3356
				addiu	$3,$sp,16
				addiu	$4,$sp,3596
		$L25:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L25
				addiu	$3,$3,16
				lw	$4,3340($sp)
				lw	$5,3344($sp)
				lw	$6,3348($sp)
				lw	$7,3352($sp)
				lw	$25,%call16(_imp_printstring)($28)
				.reloc	1f,R_MIPS_JALR,_imp_printstring
			1:	jalr	$25
				nop
				LVL18 = .
				lw	$28,256($sp)
				LBE202 = .
				LBE201 = .
				LBB203 = .
				LBB204 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL19 = .
				lw	$28,256($sp)
				LDL3 = .
				LDL4 = .
				LBE204 = .
				LBE203 = .
				LBB205 = .
				LBB206 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL20 = .
				lw	$28,256($sp)
				LVL21 = .
				LDL5 = .
				LBE206 = .
				LBE205 = .
				LBB207 = .
  100   %else
  101     print string("a * b // c * d uses some weird non-standard combination of precedence and associativity!"); newline
  102   %finish
  103   newline
  104
  105
  106   %const %integer p = 4, q = 3, r = 2
  107   %integer y
  108
  109   y = p ^^ q ^^ r
  110
  111   %if y = 262144 %start
  112     print string("p ^^ q ^^ r is right associative, i.e. p ^^ (q ^^ r)"); newline
  113     newline
  114     print string("This grammar would support the above:"); newline
  115     newline
  116     print string("P<expr> = <term> <exp-term-list> ;"); newline
  117     print string("P<exp-term-list> = <exp-term> <exp-term-list> | ;"); newline
  118     print string("P<exp-term> = ""^^"" <term> ;"); newline
  119   %else %if y = 4096
  120     print string("p ^^ q ^^ r is left associative, i.e. (p ^^ q) ^^ r"); newline
				lui	$2,%hi($LC20)
				addiu	$2,$2,%lo($LC20)
				addiu	$3,$sp,5644
				addiu	$4,$2,256
		$L26:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L26
				addiu	$3,$3,16
				addiu	$2,$sp,5644
				addiu	$3,$sp,1804
				addiu	$4,$sp,5900
		$L27:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L27
				addiu	$3,$3,16
				addiu	$2,$sp,1804
				addiu	$3,$sp,5644
				addiu	$4,$sp,2060
		$L28:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L28
				addiu	$3,$3,16
				LBE207 = .
				LBB208 = .
				LBB209 = .
				addiu	$2,$sp,5660
				addiu	$3,$sp,16
				addiu	$4,$sp,5900
		$L29:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L29
				addiu	$3,$3,16
				lw	$4,5644($sp)
				lw	$5,5648($sp)
				lw	$6,5652($sp)
				lw	$7,5656($sp)
				lw	$25,%call16(_imp_printstring)($28)
				.reloc	1f,R_MIPS_JALR,_imp_printstring
			1:	jalr	$25
				nop
				LVL22 = .
				lw	$28,256($sp)
				LBE209 = .
				LBE208 = .
				LBB210 = .
				LBB211 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL23 = .
				lw	$28,256($sp)
				LBE211 = .
				LBE210 = .
				LBB212 = .
				LBB213 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL24 = .
				lw	$28,256($sp)
				LBE213 = .
				LBE212 = .
				LBB214 = .
  121     newline
  122     print string("This grammar would support the above:"); newline
				lui	$2,%hi($LC7)
				addiu	$2,$2,%lo($LC7)
				addiu	$3,$sp,5388
				addiu	$4,$2,256
		$L30:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L30
				addiu	$3,$3,16
				addiu	$2,$sp,5388
				addiu	$3,$sp,2060
				addiu	$4,$sp,5644
		$L31:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L31
				addiu	$3,$3,16
				addiu	$2,$sp,2060
				addiu	$3,$sp,5388
				addiu	$4,$sp,2316
		$L32:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L32
				addiu	$3,$3,16
				LBE214 = .
				LBB215 = .
				LBB216 = .
				addiu	$2,$sp,5404
				addiu	$3,$sp,16
				addiu	$4,$sp,5644
		$L33:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L33
				addiu	$3,$3,16
				lw	$4,5388($sp)
				lw	$5,5392($sp)
				lw	$6,5396($sp)
				lw	$7,5400($sp)
				lw	$25,%call16(_imp_printstring)($28)
				.reloc	1f,R_MIPS_JALR,_imp_printstring
			1:	jalr	$25
				nop
				LVL25 = .
				lw	$28,256($sp)
				LBE216 = .
				LBE215 = .
				LBB217 = .
				LBB218 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL26 = .
				lw	$28,256($sp)
				LBE218 = .
				LBE217 = .
				LBB219 = .
				LBB220 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL27 = .
				lw	$28,256($sp)
				LBE220 = .
				LBE219 = .
				LBB221 = .
  123     newline
  124     print string("P<expr> = <term-exp-list> <term> ;"); newline
				lui	$2,%hi($LC21)
				addiu	$2,$2,%lo($LC21)
				addiu	$3,$sp,5132
				addiu	$4,$2,256
		$L34:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L34
				addiu	$3,$3,16
				addiu	$2,$sp,5132
				addiu	$3,$sp,2316
				addiu	$4,$sp,5388
		$L35:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L35
				addiu	$3,$3,16
				addiu	$2,$sp,2316
				addiu	$3,$sp,5132
				addiu	$4,$sp,2572
		$L36:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L36
				addiu	$3,$3,16
				LBE221 = .
				LBB222 = .
				LBB223 = .
				addiu	$2,$sp,5148
				addiu	$3,$sp,16
				addiu	$4,$sp,5388
		$L37:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L37
				addiu	$3,$3,16
				lw	$4,5132($sp)
				lw	$5,5136($sp)
				lw	$6,5140($sp)
				lw	$7,5144($sp)
				lw	$25,%call16(_imp_printstring)($28)
				.reloc	1f,R_MIPS_JALR,_imp_printstring
			1:	jalr	$25
				nop
				LVL28 = .
				lw	$28,256($sp)
				LBE223 = .
				LBE222 = .
				LBB224 = .
				LBB225 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL29 = .
				lw	$28,256($sp)
				LBE225 = .
				LBE224 = .
				LBB226 = .
  125     print string("P<term-exp-list> = <term-exp> <term-exp-list> | ;"); newline
				lui	$2,%hi($LC22)
				addiu	$2,$2,%lo($LC22)
				addiu	$3,$sp,4876
				addiu	$4,$2,256
		$L38:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L38
				addiu	$3,$3,16
				addiu	$2,$sp,4876
				addiu	$3,$sp,2572
				addiu	$4,$sp,5132
		$L39:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L39
				addiu	$3,$3,16
				addiu	$2,$sp,2572
				addiu	$3,$sp,4876
				addiu	$4,$sp,2828
		$L40:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L40
				addiu	$3,$3,16
				LBE226 = .
				LBB227 = .
				LBB228 = .
				addiu	$2,$sp,4892
				addiu	$3,$sp,16
				addiu	$4,$sp,5132
		$L41:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L41
				addiu	$3,$3,16
				lw	$4,4876($sp)
				lw	$5,4880($sp)
				lw	$6,4884($sp)
				lw	$7,4888($sp)
				lw	$25,%call16(_imp_printstring)($28)
				.reloc	1f,R_MIPS_JALR,_imp_printstring
			1:	jalr	$25
				nop
				LVL30 = .
				lw	$28,256($sp)
				LBE228 = .
				LBE227 = .
				LBB229 = .
				LBB230 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL31 = .
				lw	$28,256($sp)
				LBE230 = .
				LBE229 = .
				LBB231 = .
  126     print string("P<term-exp> = <term> ""^^"" ;"); newline
				lui	$2,%hi($LC23)
				addiu	$2,$2,%lo($LC23)
				addiu	$3,$sp,4620
				addiu	$4,$2,256
		$L42:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L42
				addiu	$3,$3,16
				addiu	$2,$sp,4620
				addiu	$3,$sp,2828
				addiu	$4,$sp,4876
		$L43:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L43
				addiu	$3,$3,16
				addiu	$2,$sp,2828
				addiu	$3,$sp,4620
				addiu	$4,$sp,3084
		$L44:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L44
				addiu	$3,$3,16
				LBE231 = .
				LBB232 = .
				LBB233 = .
				addiu	$2,$sp,4636
				addiu	$3,$sp,16
				addiu	$4,$sp,4876
		$L45:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L45
				addiu	$3,$3,16
				lw	$4,4620($sp)
				lw	$5,4624($sp)
				lw	$6,4628($sp)
				lw	$7,4632($sp)
				lw	$25,%call16(_imp_printstring)($28)
				.reloc	1f,R_MIPS_JALR,_imp_printstring
			1:	jalr	$25
				nop
				LVL32 = .
				lw	$28,256($sp)
				LBE233 = .
				LBE232 = .
				LBB234 = .
				LBB235 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL33 = .
				lw	$28,256($sp)
				LDL6 = .
				LBE235 = .
				LBE234 = .
				LBB236 = .
				LBB237 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL34 = .
				lw	$28,256($sp)
				LVL35 = .
				LBE237 = .
				LBE236 = .
				LBB238 = .
				LBB239 = .
				move	$4,$0
				lw	$25,%call16(exit)($28)
				.reloc	1f,R_MIPS_JALR,exit
			1:	jalr	$25
				nop
				LVL36 = .
				LBE239 = .
				LBE238 = .
				.set	macro
				.set	reorder
				.end	main
		$LFE185:
		$Letext0:
  127   %else
  128     print string("p ^^ q ^^ r is something weird! ("); write(y, 0); print string(") - I give up."); newline
  129   %finish
  130   newline
  131
  132 ! The remaining issue to be checked is how left/right associativity interact when the precedence is the same,
  133 ! which is only the case for exponentiation and shifts together, eg
  134 !
  135 ! a << b << c ^^ d ^^ e   or   a ^^ b ^^ c >> d >> e
  136 !
  137
  138 %endofprogram
   89 Statements compiled
