LINUX.ORG.RU

Пишу небольшой транслятор самодельных ini-файлов

 ,


0

1

Я лучше стал понимать лисперов, когда понадобились подстановки текста при неограниченной вложенности подстановок. Есть ли подобные возможности в Питоне? Мне нужно выполнять подстановки в тексте типа: a = 1; b = a; c = b; d = c##a;

★★★★★

Последнее исправление: pacify (всего исправлений: 1)
Ответ на: комментарий от baverman

Делай ini файлы на питоне.

А если я захочу сделать exe'шник, то мне надо будет запускать интерпретатор Питона для чтения ini-файла?

pacify ★★★★★
() автор топика
Ответ на: комментарий от provaton

И причем тут хаскель?

ЛОР славен своими апологетами функциональщины. Особенно выделяются в development любители хаскеля.

getattr(), и подобные извраты не хочу юзать, так как они python-специфичны. Я подразумеваю, что транслятор мне потом придётся переписать на какой-нибудь, несколько другой, язык.

pacify ★★★★★
() автор топика
Последнее исправление: pacify (всего исправлений: 1)
Ответ на: комментарий от pacify

А если я захочу сделать exe'шник

То как ты будешь использовать транслятор ini-файлов, написанный на питоне?

baverman ★★★
()

Ну и возьми схемку какую-нибудь компактную и пиши на ней. Ты же не новичок, как я понимаю, освоишь за пару дней. :)

DeVliegendeHollander ★★
()
Ответ на: комментарий от pacify

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

Странные желания порождают эпичные проблемы.

baverman ★★★
()

подстановки в тексте типа: a = 1; b = a; c = b; d = c##a;

И зачем такое надо. Уже проще какой-нить баш скрипт использовать для конфигов. Если это не вендоподелие конечно же

Siado ★★★★★
()

Я один не понимаю о чем эта тема? Что такое транслятор ini-файлов?

anonymous
()
{-# LANGUAGE TupleSections #-}

import Prelude hiding ( lookup )
import Data.Either
import Data.Map

type Env var num = Map var (Either num var)

myLookup :: Ord var => var -> Env var num -> Maybe (var, num)
myLookup var env = lookup var env >>= either (Just . (var,)) (flip myLookup env)

-- myLookup "d" $ fromList [("a", Left 1), ("b", Right "a"), ("c", Right "b"), ("d", Right "c")]
-- => Just ("a",1)
-- myLookup "e" $ fromList [("a", Left 1), ("b", Right "a"), ("c", Right "b"), ("d", Right "c")]
-- => Nothing

То есть просто табличка var ~> num + var и соответствующий циклический myLookup который будет вызывать обычный lookup по правой части суммы пока не дойдёт до терминальной связи в левой.

quasimoto ★★★★
()
Ответ на: комментарий от i-rinat

MAX_INTERPOLATION_DEPTH

о! вот это ответ по делу. Попробую ещё раз посмотреть исходники ConfigParser.

pacify ★★★★★
() автор топика

str.format в питоне, или форматирование строки по словарю. Или eval/exec в своем пр-ве имен. Задачу то сформулируйте по человечески....

AIv ★★★★★
()
Последнее исправление: AIv (всего исправлений: 1)
Ответ на: комментарий от pacify

А если я захочу сделать exe'шник, то мне надо будет запускать интерпретатор Питона для чтения ini-файла?

man python c-api

AGUtilities ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.