У меня возникли проблемы с определением выражения, которое позволяет использовать любой текст между двумя тегами (включая теги).
Примеры:
#ifdef
asdasdasdasdasdsasd
asdasdasdasdasdasdasd
asdasdasdasdasdasasd
#endif
Это также должно позволить
#ifdef
asdasdasd
asdasdsad
#ifdefasdasdasd
asdasdasd
#endif#endif
asdasdasd
asdasdasd
#endif
Итак, как вы можете видеть, до тех пор, пока он начинается и заканчивается #ifdef и endif, любой текст внутри должен быть в порядке.
Может ли кто-нибудь помочь мне создать такое выражение?
Я пробовал до сих пор следующее:
H_IF_IGNORE
= ("#ifdef) _
H_IF_IGNORE / (!"#endif"i SourceCharacter)*
"#endif"
Но он работает не очень хорошо и в конечном итоге потребляет больше текста после последнего endif.
С наилучшими пожеланиями
Внутренняя часть может быть либо другой #ifdef
или SourceCharacter
повторяется, так что обе части должны быть в круглых скобках.
Попробуйте что-нибудь в этом направлении:
H_IF_IGNORE
= "#ifdef" _*
(H_IF_IGNORE / (!"#endif" SourceCharacter))* _*
"#endif"
SourceCharacter = .
_ = [\s\n]