Я работаю над мини-проектом для своего семестра для курса Compiler Construction.Как избежать предварительной обработки комментариев внутри строкового литерала с использованием Java Regex
Я разрабатываю часть сканера на данный момент для языка Java на языке Java. Этот сканер будет производить маркеры, которые позже будут использоваться для анализатора ...
Большая часть работы, которую я проделал, - это использование регулярных выражений Java. Проблема, с которой я столкнулся сейчас, заключается в том, что, когда я предварительно обрабатываю код для удаления inline & многострочных комментариев, он также удаляет комментарии внутри строковых литералов, если они есть. Я использую следующее регулярное выражение:
String regExPreProcess = "((?s)(/\\*.*?\\*/|/\\*.*))|(//.*)"
Может кто-то пожалуйста, пролить некоторый свет, чтобы решить эту проблему. Я попробовал lookahead & функцию lookbehind, но проблема все еще сохраняется.
Я даже не уверен, что это что-то регулярное выражение _can_ do ... –
@Louis прав, регулярные выражения бесполезны для этого. Вы не можете просто вырвать биты, которые вас не интересуют, потому что вы не можете надежно идентифицировать их, не зная всего контекста. –
Вы уверены, что это то, что вы хотите? Что означает, что для строкового литерала есть комментарий внутри него? Зачем тебе это когда-нибудь? – mvd