Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2009, 16:41   #61
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,838
По умолчанию

Не, вы не поняли. Переведите по вашему алгоритму такой код:
Код:
программа Тест;
начало
  Вывод ("Это начало строки. А это ее конец");
конец.
Arigato на форуме Ответить с цитированием
Старый 09.09.2009, 16:43   #62
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Примерно так:
Код:
program ffrgt;
Begin
 Writeln(' {игнорируем текст внутри кавычек} Это начало строки. А это ее конец');
End.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 09.09.2009, 16:53   #63
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,838
По умолчанию

Цитата:
Сообщение от Alex Cones
{игнорируем текст внутри кавычек}
И как это вы будите делать при простой замене без анализатора?
Arigato на форуме Ответить с цитированием
Старый 09.09.2009, 16:57   #64
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Анализируем и заменяем текст по словам. После замены слова, отрезаем от строки (где содержится текст (Memo1.text)) отрезаем кусочек с переведенным словом.

Код:
If Pos(S,'''') = 1 Then
Begin
 Delete(S,1,1);
 N:=Pos(S,'''');
 Delete(S,1,N);
End;
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 09.09.2009, 17:10   #65
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,838
По умолчанию

Цитата:
Сообщение от Alex Cones
Анализируем и заменяем текст по словам. После замены слова, отрезаем от строки (где содержится текст (Memo1.text)) отрезаем кусочек с переведенным словом.
И как это согласуется с вашими же словами выше:
Цитата:
Сообщение от Alex Cones
> а не автозамена в тексте
Нет, ну почему же.
Заменяем следующее на Begin:
Начало[пробел]
}Начало[пробел]
[пробел]Начало[пробел]
;Начало[пробел]
+то же самое, но с маленькой буквы.
Зачем анализатор? Так вы 50-ти килограммовый текст будет 30 минут анализировать.
Если автозамена - значит автозамена. Если что-то анализируем - значит анализатор
Более того, что значит "с маленькой буквы"? А если набрано слово целиком из заглавных букв?
Приведённый код вообще не понял. Почему позиция кавычки должна = 1?

P.S. У меня складывается впечатление, что у вас попросту нет опыта написания более-менее серьёзных проектов.
Arigato на форуме Ответить с цитированием
Старый 09.09.2009, 17:18   #66
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Согласен, пусть будет слабенький анализ.
Цитата:
Почему позиция кавычки должна = 1?
Просто я привел часть кода, а не весь код.
Схема примерно такая:
Код:
S:=Memo1.Text;
While S<>'' do
 Begin
  If (Pos(S,'Начало ')) = 1 Then
   Begin
    S2:=S2+'Begin ';
    Delete(S,1,7);
   End
 Else
 ...
 Аналогично все остальные слова
 ...
Еще проверим и кавычки:
If Pos(S,'''') = 1 Then
Begin
 Delete(S,1,1);
 N:=Pos(S,'''');
 S2:=S2+Copy(S,1,N);
 Delete(S,1,N);
End;

Если ни один вариант не сработал:
 Begin
  S2:=S2+S[1];
  Delete(S,1,1);
 End;


 End;
А на заглавную букву.... Наверное придется сначала код прогнать на устранение заглавных и перевод в строчные. Как там AnsiLowerCase или что?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 09.09.2009, 17:20   #67
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,838
По умолчанию

А если пользователь напишет "НаЧаЛо"?
Arigato на форуме Ответить с цитированием
Старый 09.09.2009, 17:22   #68
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
А на заглавную букву.... Наверное придется сначала код прогнать на устранение заглавных и перевод в строчные. Как там AnsiLowerCase или что?
Так пойдет?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 09.09.2009, 17:24   #69
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,087
По умолчанию

Зачем городить огород непонятных замен, потом затыкать в этих заменах неучтенные "дырки" непонятно как, когда можно от силы за неделю (по хорошему и пары дней на это хватит с головой) написать нормально спроектированный лексический анализатор?
Для справки: функция Pos находит слова не моментально, а перебирает все символы с начала строки. В данном случае заменяться будет 90% текста, т.е. "ручной" посимвольный перебор (который будет в анализаторе) вероятно будет работать быстрее, чем функция Pos.
Я почему-то уверен, что нормальный лексический анализатор будет работать быстрее и лучше, чем такие замены.
Ну и если уж делаем регистронезависимый язык, то нужно и искомые слова и исходный текст переводить в верхний/нижний регистр, чтобы не перебирать все возможные варианты написание.
Кстати, текст ошибок тоже придётся как-то обрабатывать и переводить. Или же придется прикручивать еще синтаксический анализатор, чтобы количество ошибок, получаемых от компилятора, было минимальным. А вот с синтаксическим анализатором будет всё куда "веселее", чем с лексическим
pu4koff вне форума Ответить с цитированием
Старый 09.09.2009, 17:26   #70
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

А синтаксисом пускай занимается паскалевский компилятор. Мы просто будем отслеживать ошибку, которую выводит компилятор, считывать оттуда инфу и тыкать пользователя носом в эту строку.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
крестики нолики aesoem Общие вопросы Delphi 11 12.06.2011 11:32
Крестики нолики на C++ Alar Gamedev - cоздание игр: Unity, OpenGL, DirectX 11 15.03.2010 16:09
крестики-нолики {PatRioT} Паскаль, Turbo Pascal, PascalABC.NET 4 14.05.2009 13:24
Крестики-нолики mish@ Общие вопросы Delphi 6 07.05.2009 11:01
Крестики нолики Gorbunov Общие вопросы C/C++ 5 22.01.2009 16:04