Было бы клево, если бы генерировался исходник с заглушками функций — обработчиков правил, которые бы возвращали значение по умолчанию. При этом не просто генерировался, а "подхавтывался" бы старый исходник, т.е. если мы уже начали модифицировать функции, то они не удалялись бы.
Здравствуйте, Ka3a4oK, Вы писали:
KK>Было бы клево, если бы генерировался исходник с заглушками функций — обработчиков правил, которые бы возвращали значение по умолчанию. При этом не просто генерировался, а "подхавтывался" бы старый исходник, т.е. если мы уже начали модифицировать функции, то они не удалялись бы.
Здравствуйте, Ziaw, Вы писали:
Z>Здравствуйте, Ka3a4oK, Вы писали:
KK>>Было бы клево, если бы генерировался исходник с заглушками функций — обработчиков правил, которые бы возвращали значение по умолчанию. При этом не просто генерировался, а "подхавтывался" бы старый исходник, т.е. если мы уже начали модифицировать функции, то они не удалялись бы.
Z>Реквест к IDE?
Не совсем. Генерируется же сейчас сам парсер. Точно так же макрос мог бы генерировать еще один исходник. Частичные классы тут как нельзя кстати.
Здравствуйте, Ka3a4oK, Вы писали:
KK>Не совсем. Генерируется же сейчас сам парсер. Точно так же макрос мог бы генерировать еще один исходник. Частичные классы тут как нельзя кстати.
Здравствуйте, catbert, Вы писали:
C>Здравствуйте, Ka3a4oK, Вы писали:
KK>>Не совсем. Генерируется же сейчас сам парсер. Точно так же макрос мог бы генерировать еще один исходник. Частичные классы тут как нельзя кстати.
C>Частичные методы — возможно но их нету в Nemerle.
Нет, я имел в виду частичные классы. Т.е. в одном файле мы описываем грамматику, а макрос в другом файле генерирует обработчики правил.
Здравствуйте, Ka3a4oK, Вы писали:
KK>Нет, я имел в виду частичные классы. Т.е. в одном файле мы описываем грамматику, а макрос в другом файле генерирует обработчики правил.
Макрос не имеет доступа к IDE, поэтому не может подключать файлы к проекту. То есть тут необходимо менять интеграцию. Кроме того, придется писать нетривиальный код, который замечает изменения в в методах, и их не трогает (и не ясно, что делать, если сигнатура сгенерированного метода будет отличаться от сигнатуры измененного вручную).
Все это для чего? Чтобы можно было скомпилировать бесполезную грамматику?
Я думал, вы имеете в виду просто генерировать в парсере не написанные пользователем методы, которые возвращают default(T). Это требует меньших затрат, и возможно стоит затрат на реализацию.
Здравствуйте, Ka3a4oK, Вы писали:
KK>Было бы клево, если бы генерировался исходник с заглушками функций — обработчиков правил, которые бы возвращали значение по умолчанию. При этом не просто генерировался, а "подхавтывался" бы старый исходник, т.е. если мы уже начали модифицировать функции, то они не удалялись бы.
Тебе выдается сообщение в котором есть полная сигнатура. Копируй ее и помещай в нужное место.
Макросы не могут взаимодействовать с IDE. А стало быть не могут добавлять файлы в проект или код в файлы. Кроме того это привело бы к замусориванию проектов.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.