Вверх ↑
Этот топик читают: Гость
Ответов: 5446
Рейтинг: 323
#1: 2009-12-06 18:20:11 ЛС | профиль | цитата
Dilma, хотелось бы понять алгоритм, которым руководствуется FTCG при (не-)простановке кавычек в генерируемом коде.

Некоторые интересные эксперименты (на основе пакета Python). Хотелось бы услышать объяснение результатов...

Для экспериментов применялся модифицированный echo.hws:
code_15908.txt

Схема №1:
code_15909.txt

Результат:
code_15910.txt

Эксперимент №2:
code_15911.txt

Результат:
code_15912.txt

карма: 1

0
файлы: 5code_15908.txt [419B] [390], code_15909.txt [291B] [345], code_15910.txt [223B] [417], code_15911.txt [272B] [351], code_15912.txt [131B] [381]
vip
#1.1контекстная реклама от партнеров
Администрация
Ответов: 15294
Рейтинг: 1518
#2: 2009-12-06 19:00:37 ЛС | профиль | цитата
предлагаю проводить эксперименты в рамках ic одного из пакетов входящих в дистрибутив - web, qt, vbs.
карма: 26
0
Ответов: 5446
Рейтинг: 323
#3: 2009-12-06 19:36:22 ЛС | профиль | цитата
Dilma, не проблема. Берём пакет VBS (Lev's VBS Pack), меняем hiEcho.vbs на
code_15913.txt

Схема №1:
code_15914.txt

Результат:
code_15915.txt

Схема №2:
code_15916.txt

Результат:
code_15917.txt

карма: 1

0
файлы: 5code_15913.txt [552B] [450], code_15914.txt [274B] [334], code_15915.txt [477B] [429], code_15916.txt [255B] [351], code_15917.txt [356B] [432]
Администрация
Ответов: 15294
Рейтинг: 1518
#4: 2009-12-06 22:52:02 ЛС | профиль | цитата
15915 - строка была заключена в кавычки, код - нет
15917 - строка, считанная из потока была заключена в кавычки

#bas
Wscript.Echo "project.sha"
, далее NULL был приведен к строке

#bas
Wscript.Echo ""
и коду

#bas
Wscript.Echo
соответственно
карма: 26
0
Ответов: 5446
Рейтинг: 323
#5: 2009-12-06 23:05:18 ЛС | профиль | цитата
Dilma, а откуда возник NULL в 15916 (15917)?

------------ Дoбавленo в 23.19:
Понял, откуда.
карма: 1

0
Администрация
Ответов: 15294
Рейтинг: 1518
#6: 2009-12-06 23:25:01 ЛС | профиль | цитата
iarspider, для отладки лучше использовать trace - быстрее и проще.
карма: 26
0
Ответов: 5446
Рейтинг: 323
#7: 2009-12-06 23:50:10 ЛС | профиль | цитата
Блин, эта тонкая разница между одинарными и двойными кавычками меня убивает:

#hws
func doEndsWith(_data)
fvar(q)

q = '(' && StrIn && ').endswith(' && SubStr && (isndef(Start)?(', '&&Start):'') && (isndef(End)?(', '&&End):'') && ')'
if (linked(Result))
println(res, " = ", q)
event(onResult, res)
else
event(onResult, q)
end
end

даёт ожидаемый результат:
print((u"project.sha").endswith(u".sha"))

Однако
#hws
func doEndsWith(_data)
fvar(q)

q = "(" && StrIn && ").endswith(" && SubStr && (isndef(Start)?(", "&&Start):"") && (isndef(End)?(", "&&End):"") && ")"

if (linked(Result))
println(res, " = ", q)
event(onResult, res)
else
event(onResult, q)
end
end
даёт
print(u"(project.sha).endswith(.sha)")

карма: 1

0
Администрация
Ответов: 15294
Рейтинг: 1518
#8: 2009-12-07 01:42:23 ЛС | профиль | цитата
iarspider писал(а):
эта тонкая разница между одинарными и двойными кавычками

последовательность символов в одинарных кавычках считается кодом, в двойных - строкой. Конкатенация строки с кодом различается в зависимости от используемого оператора &, && или +


#hws
trace(typeof("string"))
trace(typeof('code'))
напечатает 2 и 19 соответственно
карма: 26
1
Голосовали:iarspider
Ответов: 5446
Рейтинг: 323
#9: 2009-12-07 09:35:10 ЛС | профиль | цитата
Dilma, вот и раскрылась тайна А кое-кто утверждал, что 'строка' и "строка" - это одно и то же... Тема закрыта.
карма: 1

0
Администрация
Ответов: 15294
Рейтинг: 1518
#10: 2009-12-07 09:52:57 ЛС | профиль | цитата
iarspider, а справку почитать конечно же не догадался? Концепция пакета

wiki писал(а):
Тип данных - может быть строкой (последовательность символов, заключенная в двойные кавычки "), числом (целое или вещественное), массивом или "кодом" (последовательность символов, заключенная в одинарные кавычки '). Тип данных "код", по сути, ничем не отличается от строки и необходим кодогенератору исключительно для того, чтобы корректно расставлять операторы конкатенации. Кроме того, данные типа "код" при формировании конечного листинга приложения не обрамляются автоматически кавычками в отличие от строки. Подробнее о простановке операторов конкатенации будет написано ниже.

карма: 26
0
Ответов: 5446
Рейтинг: 323
#11: 2009-12-07 11:29:59 ЛС | профиль | цитата
Я эту статью два дня искал. В какой она ветке спрятана?
карма: 1

0
Ответов: 2125
Рейтинг: 159
#12: 2009-12-07 11:42:07 ЛС | профиль | цитата
Заголовок я сходу нашёл, в пакете WEB. Но страница на первый взгляд выглядела пустой... Потом взгляд упал на скроллбар, и вот она - внизу!
карма: 1

1
Голосовали:iarspider
Администрация
Ответов: 15294
Рейтинг: 1518
#13: 2009-12-07 13:32:52 ЛС | профиль | цитата
FTCG это инструмент все же более заточенный под нужды мультиязыковых скриптов. Во всех остальных языках вероятно когда-нибудь будет использоваться объекно ориентированный RTCG. С его внедрением останется совсем маленький шаг - переписать среду под GTK(или нечто аналогичное) и мы уже получим полноценный инструмент для создания программ под Linux на базе QT, PHP, Phyton, wxWidget.
карма: 26
0
Ответов: 5446
Рейтинг: 323
#14: 2009-12-07 23:17:24 ЛС | профиль | цитата
Dilma, до RTCG (насколько я помню дискуссии времён админства Галкова) - как, пардон, до луны раком. Так что надо FTCG пока развивать.
карма: 1

0
Администрация
Ответов: 15294
Рейтинг: 1518
#15: 2009-12-08 10:47:15 ЛС | профиль | цитата
iarspider писал(а):
до RTCG (насколько я помню дискуссии времён админства Галкова) - как, пардон, до луны раком. Так что надо FTCG пока развивать.

почему же? RTCG работает и может использоваться для генерации простых исходников...
карма: 26
0
15
Сообщение
...
Прикрепленные файлы
(файлы не залиты)