OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 20 Апрель, 2019 03:23

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
СообщениеДобавлено: Понедельник, 21 Июнь, 2010 13:24 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Если компилятор работает быстро (за секунду или за две), то есть ли вообще смысл находить как можно больше ошибок вместо того чтобы остановить компиляцию при нахождении первой?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 21 Июнь, 2010 14:02 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
После неудачной компиляции хотелось бы иметь общее представление о количестве ошибок.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 21 Июнь, 2010 14:16 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
А, дошло, в том случае если это чужой модуль...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 21 Июнь, 2010 16:04 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2178
Откуда: Нижний Новгород
igor писал(а):
После неудачной компиляции хотелось бы иметь общее представление о количестве ошибок.

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 21 Июнь, 2010 18:57 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3039
Откуда: Астрахань
Alexey Veselovsky писал(а):
igor писал(а):
После неудачной компиляции хотелось бы иметь общее представление о количестве ошибок.

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 21 Июнь, 2010 22:04 

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 22 Июнь, 2010 08:37 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 24 Июнь, 2010 11:11 

Зарегистрирован: Среда, 30 Сентябрь, 2009 14:45
Сообщения: 147
ИМХО, вопрос актуален в двух случаях:
1. При работе из командной строки.
2. При переносе кода в другой транслятор.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 24 Июнь, 2010 12:14 

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 24 Июнь, 2010 14:43 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8050
Откуда: Троицк, Москва
Валерий Лаптев писал(а):
вполне можно сделать компилятор немного интеллектуальным
Свят-свят-свят!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 24 Июнь, 2010 17:35 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3039
Откуда: Астрахань
Info21 писал(а):
Валерий Лаптев писал(а):
вполне можно сделать компилятор немного интеллектуальным
Свят-свят-свят!

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB