Mark, I think there are some issues with your approach.
1. Some pragmas have language-dependent constructs. For example if
statements. They require different handlers or should be parsed by
each front end internally. I think the second one is a better variant.
2. If we attach pragmas to statements, this will require extra
checking later. For example some pragmas require for statement, omp
atomic requires only i++, i--, etc. expressions.
If we handle them in front end, we know what should be the next statement.
OpenMP pragmas are tight to the other code, so I think most of them
should be parsed by front end and not by handlers. And if I'm not
mistaking at present there are no other pragmas, that require such
functionality, so the question is do we need it now?