A complexidade do IDE de detecção de erro e auto-realização depende de sintaxe da linguagem?

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

  •  13-12-2019
  •  | 
  •  

Pergunta

São menos verificações/menos rigoroso de análise de código necessário para fornecer o ambiente de desenvolvimento de erro de realimentação e auto de conclusão para linguagens de programação que são compostas em grande parte de human-readable frases e palavras (por exemplo,Python, VB.NET)?Isto está em contraste com o estilo de C línguas que dependem muito mais sobre pontuação e símbolos de estrutura de código.

Foi útil?

Solução

Tenho experiência/am responsável pela construção dezenas de língua front-ends.

Prolixo línguas vs.punctuationy línguas geralmente são igualmente difíceis de analisar e analisar estaticamente.

As pessoas que definem linguagens de qualquer tipo têm sido decorando-os por décadas (por exemplo, COBOL desde 1958), ou a construção de sofisticadas linguagens (C++, Scala, Ruby) com ambas as sintaxes complexas e complexas de resolução de nome e tipo de regras de inferência;o compilador fornecedores, em seguida, continuar para adicionar obscuro sintaxe para apoiar as estranhas coisas que eles fazem, ou para fornecer um cliente de bloqueio (por exemplo, MS "managed C++", declarações de DLL, etc.).Há o terceiro problema do péssimo definições;o top línguas têm regras precisas sobre como eles funcionam, mas muitas línguas têm desleixado definições (por exemplo, PHP), que cria canto escuro casos que têm de ser resolvidas por dolorosas experiências com o real implementação.

C++ foi a nossa pior, controlo electrónico de velocidade.com o C++11 comitê de fazer uma enorme recente confusão de coisas.Temos total C++ analisadores, mas ainda estão trabalhando em completa de resolução de nome para o C++11 no topo do nosso C++98 implementação.(O código de resolução de nome é cerca de 250.000 linhas de código e os seus não o suficiente!).

IBM COBOL é um segundo próximo;a língua é gigante, e há todos os tipos de engraçado, regras de resolução de nome ("um nome não qualificado pode se referir a um nome particular, sem ressalvas, se a referência é inequívoca" Então, é esse o nome, uma referência inequívoca neste contexto?).

Uma vez que você passar de análise e nome/tipo de resolução, depois de você entrar no fluxo de controle, fluxo de dados, pontos de análise, gama anlaysis, chamada de gráfico de construção, ...que, geralmente, são praticamente a mesma quantidade de esforço como as fases anteriores;continuamos com pelo menos ter realmente boas bibliotecas que oferecem suporte a essas tarefas.

Com tudo isso como pano de fundo análises, você pode começar a fazer "estático de análise" da smart tipo que as pessoas querem.

Outro cartaz observou que a recuperação de erros de sintaxe e (ênfase) "continuam a gerar mensagens de erro significativo".Tudo o que posso dizer a este é: "Amém, irmão".Veja este MODO de resposta https://stackoverflow.com/a/6657974/120163 para uma discussão sobre o que de errado quando você tem "parcial de programas", que é essencialmente o que você obtém quando erro de sintaxe reparos acho que em uma correção.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top