code: func lexInsideShortcode(l *pageLexer) stateFunc {
  	if l.hasPrefix(l.currentRightShortcodeDelim()) {
  		return lexShortcodeRightDelim
  	}
  	switch r := l.next(); {
  	case r == eof:
  		// eol is allowed inside shortcodes; this may go to end of document before it fails
  		return l.errorf("unclosed shortcode action")
  	case isSpace(r), isEndOfLine(r):
  		l.ignore()
  	case r == '=':
  		l.ignore()
  		return lexShortcodeQuotedParamVal(l, l.peek() != '\\', tScParamVal)
  	case r == '/':
  		if l.currShortcodeName == "" {
  			return l.errorf("got closing shortcode, but none is open")
  		}
  		l.closingState++
  		l.isInline = false
  		l.emit(tScClose)
  	case r == '\\':
  		l.ignore()
  		if l.peek() == '"' {
  			return lexShortcodeParam(l, true)
  		}
  	case l.elementStepNum > 0 && (isAlphaNumericOrHyphen(r) || r == '"'): // positional params can have quotes
  		l.backup()
  		return lexShortcodeParam(l, false)
  	case isAlphaNumeric(r):
  		l.backup()
  		return lexIdentifierInShortcode
  	default:
  		return l.errorf("unrecognized character in shortcode action: %#U. Note: Parameters with non-alphanumeric args must be quoted", r)
  	}
  	return lexInsideShortcode
  }
docs: // scans the elements inside shortcode tags