Я полагаю, что не существует единого решения, которое могло бы определить, на каком языке находится фрагмент, только на основе этого фрагмента. Возьмите ключевое слово print
. Он может появляться на любом количестве языков, каждый из которых предназначен для разных целей и имеет разный синтаксис.
У меня есть несколько советов. В настоящее время я пишу небольшой фрагмент кода для моего сайта, который можно использовать для определения языков программирования. Как и большинство других постов, может существовать огромный диапазон языков программирования, которые вы просто не слышали, вы не можете объяснить их все.
Что я сделал, так это то, что каждый язык можно определить по выбору ключевых слов. Например, Python может быть идентифицирован несколькими способами. Возможно, будет проще, если вы выберете «черты», которые также являются уникальными для языка. Для Python я выбрал черту использования двоеточий, чтобы начать набор утверждений, что я считаю довольно уникальной чертой (поправьте меня, если я ошибаюсь).
Если в моем примере вы не можете найти двоеточие для начала набора операторов, перейдите к другой возможной особенности, скажем, используя ключевое слово def
, чтобы определить функцию. Теперь это может вызвать некоторые проблемы, поскольку Ruby также использует ключевое слово def
для определения функции. Ключом к тому, чтобы отличить два (Python и Ruby) друг от друга, является использование различных уровней фильтрации для достижения наилучшего соответствия. Ruby использует ключевое слово end
, чтобы завершить функцию, тогда как Python не имеет ничего, чтобы завершить функцию, только отступ, но вы не хотите туда идти. Но, опять же, end
также может быть Lua, еще одним языком программирования, который можно добавить к миксу.
Вы видите, что языки программирования просто слишком сильно перекрывают друг друга. Одно ключевое слово, которое может быть ключевым словом на одном языке, может оказаться ключевым словом на другом языке. Использование комбинации ключевых слов, которые часто сочетаются друг с другом, например, public static void main(String[] args)
в Java, помогает устранить эти проблемы.
Как я уже сказал, ваш лучший шанс - поиск относительно уникальных ключевых слов или наборов ключевых слов, чтобы отделить одно от другого. И, если вы ошиблись, по крайней мере, вы пошли.