What is the most commonly used/ most practical method to parse context sensitive languages?

what is the most commonly used / most practical method to parse CSLs ? By "most practical" I mean

  • Not too theoretical but in opposite to that, with practical usecases
  • Not too complicated (that is, too theoretical either)

Use cases I think of are

  • Recognizing repetition

    < tag-name >some content< / tag-name >

where

tag-name

is the letters to be remembered.

  • remember already defined variables / recognize if a variable is already defined or not

  • backreferencing "<some pattern 1>, <some pattern 2> 1, 2"

  • generating tuples like <%, % + 1>

Could it be a two stack pushdown automaton (TSPDA)

  • (https://de.wikipedia.org/wiki/Zweikellerautomat)
  • How exactly does a two stack pushdown automaton work?

Yours sincerely

von Spotz