forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=109)
-   -   Переименоватор ! (http://forum.boolean.name/showthread.php?t=7621)

dimanche13 12.01.2009 00:01

Переименоватор !
 
Вложений: 1
Маленькая консольная программка, которая находит и заменяет слова в файле на слова из файла словаря. Получает на входе 3 файла:
1) исходный файл
2) выходной файл
3) файл словаря
вопрос: "Зачем?"

первое применение: Помню кто-то говорил, что прикольно былобы посмотреть как бы выглядел язык программирования, если б в нем использовались русские слова. Вот вам и шанс посмотреть на ваши программы по новому :-D В архиве лежит файл Blitz_to_rus.ini в котором прописаны слева от знака равно (для тех кто в танке это "=") искомые слова, и справа слово, то на которое поменять. Я, к сожалению, не силен в Blitz3D, но вы можете добавлять в файл свои строчки сравнения.
второе применение: допустим есть у вас исходный код программы, которая вам позарез нужна, тока вот на другом ЯП, тогда просто пишите в файл соответствия функций того языка на котором исходник, к вашему любимому ЯП. В знакомом коде будет разобраться намного проще.
третий случай: вытекающий из второго. Вам надо перевести программу с BLitz3D на Xors3D. Пишите в файле соответствия функций, и вуаля, у вас Xors3D-код.

Использовать так:
ReNamer.exe входной_файл выходной_файл файл_словаря
к сожалению программа консольная, но писать bat-ники (они же cmd-шники) никто пока не запрещал.
Надеюсь, кому-нить, да пригодится.

Данил 12.01.2009 02:24

Ответ: Переименоватор !
 
как раз думал сделать прогу, которая бы менял код б3д на код ксорса - вот оно.. )

ABTOMAT 12.01.2009 02:42

Ответ: Переименоватор !
 
Одним переименовыванием прогу на ксорс не переведёшь. И где-то я уже видел прогу типа Blitz-to-Xors которая везде вначале x'ы расставляла...

Данил 12.01.2009 03:14

Ответ: Переименоватор !
 
вот. это и хотел сделать.
ну не спорю... но все ж самое противное дело, типо расставления везде х будет сделано

dimanche13 12.01.2009 11:24

Ответ: Переименоватор !
 
Да, нет же, прога не меняет функции B3D на функции Xors-а, и не ставит никаких "х" вначале. Это лишь одно из ее применений, которое я привел в пример. Это именно множественный replace по тексту программы и не только программы.

Данил 13.01.2009 01:04

Ответ: Переименоватор !
 
это понятно, но главное , допустим, для меня - ставить эти х.

NitE 13.01.2009 17:11

Re: Переименоватор !
 
да ктомуже таких прог пруд пруди - но конечно приятно когда сам сделал ))

Abiron 13.01.2009 19:28

Ответ: Переименоватор !
 
Ей можно кустарный перевод делать. Только удобнее, еслиб в одном файле исходные слова словаря, в другом слова для замены.

impersonalis 14.01.2009 02:54

Ответ: Переименоватор !
 
Цитата:

Ей можно кустарный перевод делать. Только удобнее, еслиб в одном файле исходные слова словаря, в другом слова для замены.
Мда-а-а когда я был ещё совем маленьким и кодил на цпп, у меня было увлечение всякими языковыми процессорами. Среди них был транслятор речевых стилей. Во-первых даже ему (при его тупой замене) нужна была биекция более мелких объектов - морфем (корней), а не слов. Аффиксы (префиксы, постфиксы и интерфиксы) он, насколько я помню, находил отсеивая их от корней.
Вы же хотите так вот, топором, замутить перевод?
Цитата:

транспортировка окиси водорода в сосуде с перфорированным дном

impersonalis 14.01.2009 03:08

Ответ: Переименоватор !
 
кстати. чего тема не в "проектах"?

SBJoker 14.01.2009 10:33

Ответ: Переименоватор !
 
Если программа использует один проход по исходному тексту на одну пару заменяемого слова и замещающего, то есть не сразу очевидная проблема замены заменяемых частей.

Подробнее: всегда возможна ситуация когда результат одной замены является входным параметров следующей замены. например:

мы хотим заменить знаки комментария Blitz3D " ; " на знак комментария BlitzMAX " ' ". А так же хотим заменить одинарную кавычку " ' " на двойную " " ".

имеем текст исходный:
Код:

;устанавливаем заголовок окна
AppTitle " SBJoker's first RPG"

замена " ; " -> " ' "
Код:

' устанавливаем заголовок окна
AppTitle " SBJoker's first RPG"

замена " ' " -> " " "
Код:

"устанавливаем заголовок окна
 AppTitle " SBJoker"s first RPG"

Этого мы хотели? Не-а...

Поверил тока что, так и есть ;)

dimanche13 14.01.2009 11:23

Ответ: Переименоватор !
 
Цитата:

Сообщение от impersonalis (Сообщение 94684)
кстати. чего тема не в "проектах"?

Да, ну, какой это проэкт, так, утилитка для мелких нужд.

Цитата:

Сообщение от impersonalis (Сообщение 94682)
Мда-а-а когда я был ещё совем маленьким и кодил на цпп, у меня было увлечение всякими языковыми процессорами. Среди них был транслятор речевых стилей. Во-первых даже ему (при его тупой замене) нужна была биекция более мелких объектов - морфем (корней), а не слов. Аффиксы (префиксы, постфиксы и интерфиксы) он, насколько я помню, находил отсеивая их от корней.
Вы же хотите так вот, топором, замутить перевод?

Я не говорил, что это переводчик текста в самом широком смысле этого слова, и вообще кроме слова "топор" в твоем сообщении, других слов я не понял :p А если серьезно, то программа выполняет всё, что я задумывал, а значит оправдала свое написание. Можно конечно развивать сие чудо, накрутить кучу всяких приблуд и фич, и даже превратить ее в некий препроцессор, но такой цели пока нет. :)

Цитата:

Сообщение от SBJoker (Сообщение 94691)
Если программа использует один проход по исходному тексту на одну пару заменяемого слова и замещающего, то есть не сразу очевидная проблема замены заменяемых частей.

Чтоб понять, три раза прочитал, наверное еще не проснулся ;) а может от сообщения Импера мозг раком встал!
По делу: всё именно так, проход там один. И все замечания принимаются как обоснованные.
Но, извините, заменять символ комментария (`) на текстовые кавычки ("), после первой замены мнеб в голову не пришло. Можно сначала заменить " ' " -> " " " а потом уже " ; " -> " ' ".

impersonalis 14.01.2009 11:41

Ответ: Переименоватор !
 
Цитата:

Я не говорил, что это переводчик текста в самом широком смысле этого слова
Да я и не наезжал, я Abiron указал на ошибочность рассуждений

SBJoker 14.01.2009 11:56

Ответ: Переименоватор !
 
Цитата:

Сообщение от dimanche13 (Сообщение 94692)
Но, извините, заменять символ комментария (`) на текстовые кавычки ("), после первой замены мнеб в голову не пришло. Можно сначала заменить " ' " -> " " " а потом уже " ; " -> " ' ".

Ну это я привёл так, для очевидности. Но можно и менее очевидным способом.

EntityName -> xEntityName
Name -> xName

То получим: EntityName -> xEntityname -> xEntityxName.
Хотя очевидно мы хотели заменить имя функции Name но не часть слова. Другим словами переводчик не должен пытаться переводить уже переведённое им же...

Особенно тяжело будут даваться так называемые свапы лексемм...

Например имеем список каких то там координат в текстовом виде с бровной частью.

Нам нужно заменить запятую на точку а точку на запятую.. переименоватор выдаст неправильно изменённый текст сделав исключающие замены.

Например текст "1,256,125.995" при применении словаря:
, = .
. = ,

Сделает не как мы желали: "1.256.125,995", а "1,256,125,995"
Сделав двойную замену: "1,256,125.995"->"1.256.125.995"->"1,256,125,995"

так что имеем вывод что если в тексте хоть где-то уже встречаются слова из словаря на которые надо заменять, мы потеряем их отличие от исходных.

Abiron 21.06.2009 02:04

Ответ: Переименоватор !
 
Цитата:

Да я и не наезжал, я Abiron указал на ошибочность рассуждений
:( :( :( :( :( ЭЭЭЭЭ. Я вообще то пошутил. Я в свое время игрался с переводчиками локальными(pragma таже) и даж они перевод не делают читабельным. Щас гугол даже переводит достаточно коряво.
Непонимаю, как такую фразу можно было всерьез воспринять.


Часовой пояс GMT +4, время: 06:11.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot