Я пишу простой синтаксический анализатор для C. Я просто запускал его с некоторыми другими языковыми файлами (для забавы - чтобы увидеть степень C-подобия и лени - не хочу действительно писать отдельные синтаксические анализаторы для каждого языка, если я можно этого избежать).
Однако синтаксический анализатор, похоже, не работает для JavaScript, если анализируемый код содержит регулярные выражения ...
Случай 1:
Например, при разборе фрагмента кода JavaScript,
var phone="(304)434-5454"
phone=phone.replace(/[\(\)-]/g, "")
//Returns "3044345454" (removes "(", ")", and "-")
Символы '(', '[' и т. Д. Сопоставляются как начало новых областей, которые никогда не могут быть закрыты.
Случай 2:
И, для фрагмента кода Perl,
# Replace backslashes with two forward slashes
# Any character can be used to delimit the regex
$FILE_PATH =~ s@\\@//@g;
// сопоставляется как комментарий ...
Как я могу обнаружить регулярное выражение в тексте содержимого "C-подобного" файла программы?