code: func (p *Lexer) Block(nsp int) (string, bool) {
  
  	c, _ := p.Byte()
  	if c != '\\' {
  		p.UnreadByte()
  		return "", false
  	}
  
  	c, _ = p.Byte()
  	if c != 10 && c != 13 {
  		p.UnreadByte()
  		p.UnreadByte()
  		return "", false
  	}
  	// Read NL if CR was found
  	if c == 13 {
  		p.Byte()
  	}
  
  	buffer := &bytes.Buffer{}
  
  	// read lines while indentation is > nsp
  
  	for {
  		ns, u := p.Space()
  
  		if u == 0 || ns <= nsp {
  			break
  		}
  
  		// Adjust indentation if less that initial
  
  		// Read bytes until end of line
  		for {
  			c, _ = p.Byte()
  
  			if IsEndChar(c) {
  				break
  			}
  
  			if c == 13 {
  				continue
  			}
  
  			buffer.WriteByte(c)
  
  			if c == 10 {
  				break
  			}
  		}
  	}
  
  	// Remove trailing NLs
  	s := buffer.String()
  	for {
  		if len(s) == 0 {
  			break
  		}
  
  		c := s[len(s)-1]
  		if c == 10 {
  			s = s[0 : len(s)-1]
  		} else {
  			break
  		}
  	}
  
  	return s, true
  }
docs: // Block ::= '\\' NL LINES_OF_TEXT