Самый базовый способ использования парсера выражений — это указать ему начать в заданной позиции с определенным состоянием и парсить до указанной конечной позиции.
Эта функция парсит sexp в текущем буфере, начиная с start, не сканируя дальше limit. Она останавливается в позиции limit или когда выполняются определенные критерии, описанные ниже, и устанавливает точку в место, где парсинг остановился. Она возвращает состояние парсера, описывающее статус парсинга в точке остановки.
Если третий аргумент target-depth не равен nil, парсинг
останавливается, если глубина в скобках становится равной target-depth.
Глубина начинается с 0 или с того, что указано в state.
Если четвертый аргумент stop-before не равен nil, парсинг
останавливается при встрече с любым символом, начинающим sexp. Если
stop-comment не равен nil, парсинг останавливается после начала
невложенного комментария. Если stop-comment — это символ
syntax-table, парсинг останавливается после начала невложенного
комментария или строки, или после конца невложенного комментария или строки, в зависимости от того, что наступит раньше.
Если state равен nil, предполагается, что start находится на
верхнем уровне структуры скобок, например, в начале определения функции.
Или же вы можете захотеть возобновить парсинг в середине структуры.
Для этого вы должны предоставить аргумент state, который описывает начальный статус парсинга.
Значение, возвращенное предыдущим вызовом parse-partial-sexp, подойдет отлично.