Yes, that's typically how it works -- at some point, the concrete syntax tree has to be converted to abstract syntax.
I wouldn't call it jumping through hoops though. Rather, for me, it's a natural consequence of separation of concerns. I try to build parsers that only know about concrete syntax. A later pass over the CST is responsible for building the AST, which prevents coupling of the parser to the abstract syntax.
[0] https://github.com/hylang/hy