github.com/jflude/taocp@v0.0.0-20240210234939-99f2a91af3c2/mixal/pseudo.go (about)

     1  package mixal
     2  
     3  import "github.com/jflude/taocp/mix"
     4  
     5  func (a *asmb) parseEQU() {
     6  	if a.wVal = 0; !a.parseWValue() {
     7  		a.syntaxError()
     8  	}
     9  	sym := a.tokens[0].val.(string)
    10  	a.symbols[sym] = a.wVal
    11  	a.patchFixUps(sym)
    12  }
    13  
    14  func (a *asmb) parseORIG() {
    15  	if a.wVal = 0; !a.parseWValue() {
    16  		a.syntaxError()
    17  	}
    18  	a.self = a.wVal.Int()
    19  	a.newSegment(a.self)
    20  }
    21  
    22  func (a *asmb) parseCON() {
    23  	if a.wVal = 0; !a.parseWValue() {
    24  		a.syntaxError()
    25  	}
    26  	a.emit(a.wVal)
    27  }
    28  
    29  func (a *asmb) parseALF() {
    30  	w, err := mix.ConvertToMIX(a.input)
    31  	if err != nil {
    32  		parseError(err, a.input)
    33  	}
    34  	a.input = ""
    35  	a.emit(w[0])
    36  }
    37  
    38  func (a *asmb) parseEND() {
    39  	if a.wVal = 0; !a.parseWValue() {
    40  		a.syntaxError()
    41  	}
    42  	a.obj.start = a.wVal.Int()
    43  	for _, lit := range a.literals {
    44  		a.symbols[lit.sym] = mix.NewWord(a.self)
    45  		a.patchFixUps(lit.sym)
    46  		a.emit(lit.val)
    47  	}
    48  	for k := range a.fixups {
    49  		a.symbols[k] = mix.NewWord(a.self)
    50  		a.patchFixUps(k)
    51  		a.emit(0)
    52  	}
    53  }