func (p *Parser) atRegisterShift() bool {
	// ARM only.
	if !p.arch.InFamily(sys.ARM, sys.ARM64) {
		return false
	}
	// R1<<...
	if lex.IsRegisterShift(p.peek()) {
		return true
	}
	// R(1)<<...   Ugly check. TODO: Rethink how we handle ARM register shifts to be
	// less special.
	if p.peek() != '(' || len(p.input)-p.inputPos < 4 {
		return false
	}
	return p.at('(', scanner.Int, ')') && lex.IsRegisterShift(p.input[p.inputPos+3].ScanToken)
}
// atRegisterShift reports whether we are at the start of an ARM shifted register.
// We have consumed the register or R prefix.
atRegisterShift reports whether we are at the start of an ARM shifted register.
We have consumed the register or R prefix.
// atRegisterShift reports whether we are at the start of an ARM shifted register . // We have consumed the register or R prefix .
func (p *Parser) atRegisterShift() bool {
	if !p.arch.InFamily(sys.ARM, sys.ARM64) {
		return false
	}
	if lex.IsRegisterShift(p.peek()) {
		return true
	}
	if p.peek() != '(' || len(p.input)-p.inputPos < 4 {
		return false
	}
	return p.at('(', scanner.Int, ')') && lex.IsRegisterShift(p.input[p.inputPos+3].ScanToken)
}
func ( p * Parser ) atRegisterShift ( ) bool { if ! p . arch . InFamily ( sys . ARM , sys . ARM64 ) { return false } if lex . IsRegisterShift ( p . peek ( ) ) { return true } if p . peek ( ) != '(' || len ( p . input ) - p . inputPos < 4 { return false } return p . at ( '(' , scanner . Int , ')' ) && lex . IsRegisterShift ( p . input [ p . inputPos + 3 ] . ScanToken ) }
atRegisterShift reports whether we are at the start of an ARM shifted register.
atRegisterShift reports whether we are at the start of an ARM shifted register .
// ARM only. // R1<<... // R(1)<<...   Ugly check. TODO: Rethink how we handle ARM register shifts to be // less special.