DRAKON.SU

Текущее время: Понедельник, 04 Март, 2024 18:47

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
СообщениеДобавлено: Понедельник, 11 Декабрь, 2023 21:56 

Зарегистрирован: Среда, 05 Декабрь, 2018 08:22
Сообщения: 4
День добрый!

Сделал скрипт
Код:
$javascriptContent = Get-Content javascript.tcl -Raw

$wordMap = @{
    '// Autogenerated with DRAKON Editor \$version' = "// Autogenerated with DRAKON Editor $version"
    '\"js\"' = '"php"'
    '\"var \$' = '"\$'
    '\"var\"' = '""'
    '\\nvar ' = '\n '
    '_var \"' = '_var "\$'
   '; var ' = '; '
    'javascript' = 'PHP'
   '\$coll_var.length' = 'count\($coll_var\)'
   '\$keys_var.length' = 'count\($keys_var\)'
   'Object.keys' = 'array_keys'
   #'return \"\$variable === \$constant\"' = 'return append "\$"  "$variable === $constant"'
}

$phpContent = $javascriptContent

foreach ($key in $wordMap.Keys) {
    $phpContent = $phpContent -replace $key, $wordMap[$key]
}

# пришлось делать отдельно
$wordMap = @{
   'return \"\\\$' = 'return "$'
}

foreach ($key in $wordMap.Keys) {
    $phpContent = $phpContent -replace $key, $wordMap[$key]
}


$php_KeyWords = @"

__halt_compiler abstract and array as
break callable case catch class
clone const continue declare default
die do echo else elseif
empty enddeclare endfor endforeach endif
endswitch endwhile eval exit extends final
finally fn for foreach function global
goto if implements include include_once
instanceof insteadof interface isset list
match namespace new or print
private protected public require require_once
return static switch throw trait try
unset use var while xor yield

"@

# Заменяем текст между "variable keywords {" и "}"
$phpContent = $phpContent -replace "(?s)(?<=variable keywords {).*?(?=})", $php_KeyWords

$phpContent | Set-Content php.tcl


Для начала хватает.
Но захотелось использовать switch :roll: .

Но код генерируется такой:
Код:
function switch_RUN($operator) {
    // item 60001
    if (operator === '>') {
        // item 14
        echo $operator;
    } else {
        // item 60002
        if (operator === '===') {
            // item 15
            echo $operator;
        } else {
            // item 16
            echo $operator;
        }
    }
}


Теряется символ $.

Предполагаю, что за это отвечает в javascript.tcl строка
Код:
return "$variable === $constant"


Как бы сделать, чтобы символ $ не терялся?
Заранее признателен.


Вложения:
switch_PHP.drn [48 КБ]
Скачиваний: 17
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Декабрь, 2023 11:35 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Попробуйте заменить функцию compare в вашем php-генераторе на такую:

Код:
proc compare { variable constant } {
    return "\$$variable === $constant"
}


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2024, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB