OberonCore
https://forum.oberoncore.ru/

Находить все ошибки vs Прерывать компиляцию на первой
https://forum.oberoncore.ru/viewtopic.php?f=61&t=2707
Страница 1 из 1

Автор:  Сергей Губанов [ Понедельник, 21 Июнь, 2010 13:24 ]
Заголовок сообщения:  Находить все ошибки vs Прерывать компиляцию на первой

Если компилятор работает быстро (за секунду или за две), то есть ли вообще смысл находить как можно больше ошибок вместо того чтобы остановить компиляцию при нахождении первой?

Автор:  igor [ Понедельник, 21 Июнь, 2010 14:02 ]
Заголовок сообщения:  Re: Находить все ошибки vs Прерывать компиляцию на первой

После неудачной компиляции хотелось бы иметь общее представление о количестве ошибок.

Автор:  Сергей Губанов [ Понедельник, 21 Июнь, 2010 14:16 ]
Заголовок сообщения:  Re: Находить все ошибки vs Прерывать компиляцию на первой

А, дошло, в том случае если это чужой модуль...

Автор:  Alexey Veselovsky [ Понедельник, 21 Июнь, 2010 16:04 ]
Заголовок сообщения:  Re: Находить все ошибки vs Прерывать компиляцию на первой

igor писал(а):
После неудачной компиляции хотелось бы иметь общее представление о количестве ошибок.

Только вот очень часто процентов 70 ошибок являются наведенными. Т.е. реально ошибок существенно меньше чем выдал компилятор.

Вопрос в том, можно ли построить такой компилятор (откуда куда?) который бы распозновал связи между ошибками?

Автор:  Валерий Лаптев [ Понедельник, 21 Июнь, 2010 18:57 ]
Заголовок сообщения:  Re: Находить все ошибки vs Прерывать компиляцию на первой

Alexey Veselovsky писал(а):
igor писал(а):
После неудачной компиляции хотелось бы иметь общее представление о количестве ошибок.

Только вот очень часто процентов 70 ошибок являются наведенными. Т.е. реально ошибок существенно меньше чем выдал компилятор.

Вопрос в том, можно ли построить такой компилятор (откуда куда?) который бы распознавал связи между ошибками?

Можно... :) Во всяком случае, большинство связей можно отследить. Например, неправильное объявление переменной влечет наличие ошибок во всех местах, где эта переменная используется. Обо всех таких ошибках можно выдавать по требованию.

Автор:  Alexey Veselovsky [ Понедельник, 21 Июнь, 2010 22:04 ]
Заголовок сообщения:  Re: Находить все ошибки vs Прерывать компиляцию на первой

Валерий Лаптев писал(а):
Можно... :) Во всяком случае, большинство связей можно отследить. Например, неправильное объявление переменной влечет наличие ошибок во всех местах, где эта переменная используется. Обо всех таких ошибках можно выдавать по требованию.

А откуда компилятор будет знать, что вот ЭТО ВОТ, была попытка именно что объявления переменной? Ведь там же ошибка. Синтаксическая и хз. что там хотел сказать программист.

Автор:  Rifat [ Вторник, 22 Июнь, 2010 08:37 ]
Заголовок сообщения:  Re: Находить все ошибки vs Прерывать компиляцию на первой

На wikipedia есть небольшая статья об этом:
http://ru.wikipedia.org/wiki/Синтаксический_анализ
Еще где-то читал, что можно сделать такой анализ ошибок, когда компилятор пытается найти минимальные изменения, которые надо сделать, чтобы программа стала корректной. Однако этот способ может быть достаточно долгим и во многих случаях восстановления в режиме паники бывает достаточно.

Автор:  Виктор О [ Четверг, 24 Июнь, 2010 11:11 ]
Заголовок сообщения:  Re: Находить все ошибки vs Прерывать компиляцию на первой

ИМХО, вопрос актуален в двух случаях:
1. При работе из командной строки.
2. При переносе кода в другой транслятор.

Если же работаешь в среде, а компилятор срабатывает по каждой точке с запятой и наборе "END", а стандартные блоки выбора и цикла вставляются целиком по началу, то и ошибок будет соизмеримо с единицей. Более того, часть из них будет типа неописанной переменной цикла, и среда тогда должна просто предложить вставить переменную в таблицу данных.

Автор:  Валерий Лаптев [ Четверг, 24 Июнь, 2010 12:14 ]
Заголовок сообщения:  Re: Находить все ошибки vs Прерывать компиляцию на первой

Alexey Veselovsky писал(а):
Валерий Лаптев писал(а):
Можно... :) Во всяком случае, большинство связей можно отследить. Например, неправильное объявление переменной влечет наличие ошибок во всех местах, где эта переменная используется. Обо всех таких ошибках можно выдавать по требованию.

А откуда компилятор будет знать, что вот ЭТО ВОТ, была попытка именно что объявления переменной? Ведь там же ошибка. Синтаксическая и хз. что там хотел сказать программист.

Ну, в оберонском царстве вообще нет проблем с этим, ибо объявления все наверху, а действия с переменными - внизу... :)
И ИМХО, вполне можно сделать компилятор немного интеллектуальным, чтоб он мог предположить хотя бы в типовых ошибочных случаях, то была попытка объхявить переменную, но неудалась.
Например, переставлены случайно буквы - у нас есть расстояние Левенштейна (кажись, так зовут), которое помогает определить, насколько близко иссследуемая строка к другой.

Автор:  Info21 [ Четверг, 24 Июнь, 2010 14:43 ]
Заголовок сообщения:  Re: Находить все ошибки vs Прерывать компиляцию на первой

Валерий Лаптев писал(а):
вполне можно сделать компилятор немного интеллектуальным
Свят-свят-свят!

Автор:  Валерий Лаптев [ Четверг, 24 Июнь, 2010 17:35 ]
Заголовок сообщения:  Re: Находить все ошибки vs Прерывать компиляцию на первой

Info21 писал(а):
Валерий Лаптев писал(а):
вполне можно сделать компилятор немного интеллектуальным
Свят-свят-свят!

:mrgreen:
Дык в семантическом редакторе и компилятора-то как такового нет... :) Только генератор кода в целевую платформу... И то - если требуется. А так вообще-то непосредственно семантическую модель можно интерпретировать - Франц жеж в своем диссере все написал... :)

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/