Сложность обнаружения IDE и автоматическое завершение зависит от языкового синтаксиса?

StackOverflow https://stackoverflow.com//questions/10702652

  •  13-12-2019
  •  | 
  •  

Вопрос

Менее проверки / менее строгим анализом кода, необходимые для обеспечения ошибок среды развития и автоматическое завершение языков программирования, которые состоят в основном из читаемых человеком фразами и слов (I.E. Python, VB.NET)?Это в отличие от языков C-стиля C, которые больше зависят от символов и пунктуации для структуры кода.

Это было полезно?

Решение

У меня есть опыт / я несу ответственным за строительство Десятки языковых передних концов .

Свободно языки против пунктуационных языков, как правило, одинаково трудно разобрать и статистически анализировать.

Люди, которые определяют языки любого вида, либо украшают их в течение десятилетий (например, COBOL с 1958 года), либо построены сложные языки (C ++, Scala, Ruby) с комплексным синтаксисом и сложным разрешением имени и правила вывода в виде типа; Поставщики компилятора затем продолжают добавить неясный синтаксис для поддержки странных вещей, которые они делают или для предоставления блокировки клиента (E.G., MS «Управляемого C ++», DLL-объявлениями и т. Д.). Существует третья проблема из-за паршивых определений; Верхние языки могут иметь точные правила о том, как они работают, но многие языки имеют небрежные определения (например, PHP), которые создают темные угловые случаи, которые должны быть вытянуты от болезненных экспериментов с фактической реализацией.

C ++ был нашим худшим, особенно С Комитетом C ++ 11 делает массивный недавний беспорядок. У нас есть полноразмерные анализаторы C ++, но все еще работают над полным именем для C ++ 11 сверху нашей реализации C ++ 98. (Код разрешения имени составляет около 250 000 строк кода и его недостаточно!).

IBM Cobol - это близкий второй; Язык - это просто гигант, и есть все виды смешных правил разрешения имени («неквалифицированное имя может относиться к конкретному имени без квалификации, если ссылка однозначная», так что это название однозначном ссылке в этом контексте?). < / P >.

После того, как вы получите разрешение прошедшего анализа и имени / типа, вы попадаете в контрольный поток, поток данных, точек - к анализу, диапазон Anlaysis, Call Graph Construction, ... которые, как правило, примерно одинаковое количество усилий, что и более ранние фазы; Мы уходим меньше, имеем действительно хорошие библиотеки, которые поддерживают эти задачи.

со всем этим в качестве анализа фона, вы можете начать делать «статический анализ» умного вида, которые хотят люди.

Другим плакатом отметил, что восстановление от синтаксических ошибок и (акцент) «Продолжайте генерировать значимые сообщения об ошибках». Все, что я могу сказать, это «Аминь, брат». Смотрите это, чтобы ответьте https://stackovflow.com/a/6657974/120163 для обсуждения того, что идет не так, когда вы иметь «частичные программы», что по сути, что вы получаете, когда синтаксис замораживает ошибку, угадаю на решение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top