![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 10.09.2009
Сообщений: 352
|
![]()
Не подскажите, как это лучше сделать?
Ахо и Ульман говорять только, что для синтаксического анализатора это сложная задача, поэтому в Fortran'е она была вынесена в лексический. Но для этого нужно хранить предыдущий токен, значит структура лексического анализатора будет весить больше, и вообще по-моему это ИЗВРАЩЕНИЕ =( Как это делают в наши дни? Последний раз редактировалось anyx; 10.12.2010 в 07:55. |
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
По-разному, но в основном большинство прислушиваются к мнению академиков, ибо авторитет. Я преобразовывал -а в 0-а
![]() Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 10.09.2009
Сообщений: 352
|
![]() |
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]() Цитата:
![]()
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 10.09.2009
Сообщений: 352
|
![]() |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Ну пусть так. Смысл идеи думаю тебе ясен.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 10.09.2009
Сообщений: 352
|
![]()
Только сейчас понял - это не прокатит. Приоритет унарного минуса больше, чем у степени ("**"). Т.е. "-5 ** 3" => "(-5) ** 3", а не в "- (5 ** 3)". А этот способ даёт "-5 ** 3" => "+ 0 - 5 ** 3" => "+ 0 - (5 ** 3)". Есть идеи?
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Да.
-5**3 --> (0-5)**3 -5/6 --> (0-5)/6 Не знаю как у Вас, а у меня шла автозамена -5 чуть позже в момент получения действительного значения числа...
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#9 | |||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,091
|
![]() Цитата:
В книжках советуют первым делом все унарные минусы заменить на символ типа тильды, т.е. из такого: Цитата:
Цитата:
В синтаксическом анализаторе этой штуке делать нечего, ибо там оно действительно будет сложно. А как лучше в лексический поместить - тут всё зависит от организации самого лексического анализатора. |
|||
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Ну в общем да, он его не там увидел -х-5 --> (0-x)-5
![]() Зы. С тильдой тоже интересно, но у меня была засада - я допускал в идентифкаторах все спецзнаки, которые не используются для обозначений операций и разделителей, а в ряде случаев (когда ситуация позволяла) допускал и их использование.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() Последний раз редактировалось Utkin; 10.12.2010 в 10:15. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сделать переключение языка ввода при попадании в определенное поле | smoky | Microsoft Office Access | 6 | 15.09.2017 07:59 |
Вставка трансляции | bsanchezb | HTML и CSS | 0 | 11.06.2009 22:57 |
Захват и запись видео трансляции из интернета | polco | Софт | 1 | 02.02.2009 13:58 |