1. Python / Говнокод #18610

    −21

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    import re
    lines = open('gldef.in','r')
    for line in lines:
        print line.replace("BEGIN ","").replace("END","").replace("PREFIX","exp").replace("SECOND","STDCALL") + " {"
        #print "{"
        args = ""
        first = True
        for arg in line[line.index("(")+1:line.index(")")].split(", "):
            if(arg != "void"):
                argsplit = re.split(' |\*', arg)
                #print argsplit[-1]
                if(not(first)):
                    args = args + ", "
                first = False
                args = args + argsplit[-1]
        returnstr = "" if (line.split(' ')[1] == "void") else "return "
        print " "*4+returnstr+line[line.index("PREFIX")+6:line.index("(")+1] + args + ");"
        print "}"
        print ""

    киддискриптинг
    Ни питона ни regexp не знаем, а в сишке текст сложнее обрабатывать.

    Запостил: mittorn, 17 Августа 2015

    Комментарии (195) RSS

    • import re ради re.split - лучшая часть.
      Ответить
      • Альтернатива без re в 2 строки?
        Хотя я полагаю, что всё можно было сделать на re в одну.
        Ответить
    • Кстати, на питоне есть какой-то модуль на котором на 1-2-3 пишутся парсеры.
      Ответить
      • 3_14dar, иди напитон, пидар!
        Ответить
        • лур или кто ты там, ты не заебался еще, хуеглот ебучий?
          Ответить
          • Так не лур, а лишпговно однажды в каком-то треде написал. Да и эта фразочка ему могла просто понравиться, как и многим другим. Может, автору уже она надоела, а народ активно повторяет.
            3_14dar, иди напитон, пидар!
            Ответить
            • Ну не лень же постоянно из-под гостя ее писать (т.е. это не бот)
              Ответить
              • 3_14dar'у не лень же постоянно обсуждать гостя (т. е. это бот).
                Ответить
            • >а лишпговно однажды в каком-то треде написал
              А как гостю по-другому послать 3_14darа напитон? ЛишпГумно всего-лишь багминотный акк. Он и до этого писал. Такому олдфагу стыдно не знать.
              Ответить
      • В голову приходит только PLY, python-lex-yacc. Правда, грамматику и правила СУТ заебешься выписывать; микроскопом шурупы и то проще забивать.
        Ответить
    • Меня вот больше "exp" смущает, чем сам код... Это макрос, который раскрывается в какой-нибудь dllexport? Если да, то какого хуя у него имя не капсом? :)
      Ответить
      • А, кажется понял... Это префикс для имени функции - для Foo() сгенерится expFoo().
        Ответить
      • Спроси у авторов враппера win32codecs в mplayer. Я взял готовый оттуда.
        Я полагаю, что в wine это тоже есть.
        Ответить
    • Есть желающие ради прикола написать калькулятор на питоне, который будет считывать и вычислять выражение из строки?
      Ответить
      • какие фичи?
        Ответить
        • Арифметические операции, м.б. скобки.
          Ответить
          • >> Арифметические операции

            Гдеж ты видел калькулятор с арифметическими операциями?!

            инфикс или префикс, приоритет операций? Ну и полный список операций пожалуйста
            Ответить
            • Блиа, как в обычном выражение на питоне. Тип - плавающая запятая, операторы - +-*/ , возможно скобки.
              Ответить
              • Ну, может, и запилю, если не потеряю интерес в ближайшее время. Но зачем?
                Ответить
                • python 3 + ply
                  как-то так
                  http://pastebin.com/BbRWSiQw
                  Ответить
                  • Ну че, вроде работает. Если бы это еще читать было можно. Что за магические префиксы? Что за dummy? Кто-нибудь может нормально переписать и откомментировать?
                    Ответить
                    • Магические префиксы нужны для ply, она по ним выделяет шаблоны для лексера (t_, токены) и продукции грамматики (p_). ply строит LALR-парсер, сами p_ функции выполняются при сворачивании очередной правой части к заголовку.
                      Dummy - просто пустой класс, чтобы в него можно был запихнуть свойство val, хотя, в этом примере можно было и без него - просто значение запихивать в p[0].
                      Комментировать и читать это не надо, код врайт-онли, лучше статейку на жаброжабре и документацию к ply почитать, запогодя осилив первые четыре главы драгонбука.
                      Ответить
                      • Неужто нельзя было выложить константы в отдельный неймспейс, а потом его куда-то передать? Тут модуль мне объясняет, как мне называть переменные.

                        > код врайт-онли,
                        Уже понял.

                        >первые четыре главы драгонбука.
                        Што это?

                        А чего-нибудь попроще для понимания нет? Выше подбросили pyparsing
                        Ответить
                        • > Што это?
                          Драгонбук - это "книга дракона", пособие по написанию компиляторов; её рекомендуют в первую очередь, если кто-то хочет написать компилятор или интерпретатор. А первые четыре главы посвящены лексическому и синтаксическому анализу и их, в общем-то, почти достаточно для построения простого интерпретатора какого-нибудь языка.

                          > чего-нибудь попроще для понимания нет? Выше подбросили pyparsing
                          Не знаю, я не пишу на парсеры питоне :) Просто как-то возникла необходимость и я начал шерстить по интернету в поисках простых библиотек для написания парсеров по грамматике. Вроде бы, я натыкался уже на pyparsing, но сделал выбор в пользу ply, потому что она:
                          - генерирует lalr-парсер, т.е. может работать с большим количеством грамматик;
                          - описание грамматики и действий СУТ для ply естественнее, нежели у аналогов.
                          Ответить
                          • Я бы все это понял если бы учился на магистре, где это был отдельный предмет.
                            Ответить
                            • > Я бы все это понял если бы учился на магистре, где это был отдельный предмет.
                              Приехали. Т.е. если ты что-то не проходил в институте, то это навсегда останется за пределами твоего понимания?

                              И этот человек ещё ругает унылую рашкинскую систему образования...
                              Ответить
                              • Я не хочу осваивать это сейчас в таком объеме. Думаю, есть более интересные и быстроусвояемые вещи.
                                Ответить
                                • > таком объеме
                                  Да там не всё так страшно в этих парсерах...

                                  Если кратко - есть 2 фазы: лексер и сам парсер. И есть 2 типа сущностей - terminals (токены, по сути) и non-terminals (более сложные конструкции из терминалов и нетерминалов).

                                  На первой фазе ты пишешь пачку регулярок, которые будут ловить токены. И, если надо, немножко кода для вычисления семантического значения токена (число спарсить и т.п.)

                                  Вторая фаза на входе получает эти нетерминалы и пытается склеить их по правилам. Правила пишешь в духе expr = num op num | num - т.е. Выражение это число оператор и число или просто число. Где num и op - либо терминалы с первой фазы, либо правила из второй (рекурсия тоже работает, да). Когда парсер заматчил правило, он вызывает соотв. ему semantic action - функцию, в которой ты клеишь дерево, считаешь выражения и т.п.

                                  Т.е. для 100500+42 первая фаза сгенерит, к примеру, num(100500), op(+), num(42). А на второй мы найдем правило expr = num op num экшн которого получит те три значения и вернет, к примеру, 100542.
                                  Ответить
                                • Бля, неудобно с айпада постить.

                                  А вообще - вся эта хуйня поддерживается намного проще, чем быдлопарсинг на свичах и регулярках.
                                  Ответить
                                  • И вообще парсер можно сгенерить, если умеешь в BNF.
                                    Ответить
                                    • А чему там учиться? мануал прочитал и все ясно.

                                      Другое дело то, что для того что бы излить язык на бнф нужно нихило напрячь мозг, продумать все варианты, понять нахуя ты вообще это пишешь и какие фичи нужны, а какие нет. (собственно большинство новых языков и загибиются на фазе - нахуй нам еще один #{имя_языка} ?)

                                      Собственно нам дали на первой же паре задание принести через неделю бнф языка с которым мы будем работать.
                                      Ответить
                                      • > А чему там учиться? мануал прочитал и все ясно.

                                        Я имел в виду именно если ты умеешь излагать нетривиальные грамматики в BNF. Даже для простого калькулятора мозг напрягать нужно, чтобы приоритеты соблюсти.
                                        Ответить
                                        • >> Даже для простого калькулятора мозг напрягать нужно, чтобы приоритеты соблюсти.

                                          Ну да, там типа для операций одного приоритета свой порождающий нетерминальный символ, который не может породить нетерминал более низкого приоритета, дабы в AST операции высокого уровня были ниже (ближе к листьям) и выполнялись, соответственно, раньше
                                          Ответить
                                      • Школьник, я понял, что у тебя был предмет, которого у меня не было и после семестра изучения (или даже двух) ты знаешь что-то чего я не знаю. Теперь умерь, пожалуйста, свою радость, а то скоро станешь похож на Царя.
                                        Ответить
                                        • Меньше бы пиздел и больше копал - тоже знал бы.
                                          Ответить
                                          • Был бы нужен до этого и не ради фана - может и знал бы, а так все знать не будешь.
                                            Ответить
                  • Расскажи как ты это написал.
                    Ответить
                  • Фублядь, фунахуй. Что-то питоний вариант выглядит страшнее, чем в оригинальном бизоне для сишечки...
                    Ответить
                    • Можно и покрасивше, но лениво :) Всяко лучше бустодуха.
                      Ответить
                      • Да бустодух вообще не в той весовой категории... Ему до бизонов как до луны пешком.
                        Ответить
              • Я могу быть консультантом если интересно
                Ответить
                • Можешь? Ну давай, консультируй. Можешь начать с гугления pyparsing - на кабре было пару статей.
                  Ответить
                  • а почему не ручками? Задача то детская
                    Ответить
                    • Что ручками? Парсить как в говнокоде? Ну... попробуй.
                      Ответить
                      • без pyparsing
                        Ответить
                        • >Парсить как в говнокоде? Ну... попробуй.
                          Только чтобы парсило корректно.
                          Ответить
                          • че там пробовать, я на 3 курсе ручками писал интерпретатор выдуманного языка, а тогда я знал о программировании ровно нихуя. И все работало. А калькулятор такой я когда только начал изучать функциональщину изучать на F# за вечер-два написал, причем большую часть пытался понят кто такое функциональщина.
                            А ты какой-то модуль отрыл для этого

                            У тебя какая конечная цель?
                            Ответить
                            • Наверно, попробовать написать нормально работающий и нормально читаемый парсер.
                              Ответить
                              • Ну так руками его пиши, че тебе эти модули. Напишешь что нибудь простое руками, потом поймешь че кого - можно и серьезные инструменты рассмотреть.
                                и калькулятор - имно не та задача. Нужно писать простенький, но именно язык, императивный, что нибудь банальное - присвоение, пару мат. операций простые функции. у тебя появятся совсем другие проблемы, нежели при написании калькулятора. А потом можно и развить. И Оптимизацию посмотреть
                                Ответить
                                • >пару мат. операций
                                  вот тебе и калькулятор (ну кроме скобок)

                                  Ответить
                              • 3_14dar, иди напасрер, пидар.
                                Ответить
      • # py2
        while True:
            print input()
        
        # py3
        while True:
            print(eval(input())
        Ответить
        • Читак

          Судя по вопросам товарища из области создания языков - он хочет свой эвал с инфексной нотацией и приритетами операторов
          Ответить
        • Без эвала, есесно. Или на худой конец с гарантированно безопасным эвалом.

          Почитал я пару статей, ну предположим ast мы построить можем, а дальше что?
          Ответить
          • > ну предположим ast мы построить можем, а дальше что?
            Дальше надо что-нибудь делать, не?
            Скажем, варианты:
            1. Рекурсивно посчитать выражение
            2. Рекурсивно посчитать выражение, используя свой длинный стек
            3. Преобразовать в набор команд и прогнать на каком-нибудь интерпретаторе
            Ответить
            • >Дальше надо что-нибудь делать, не?
              Кэп, что бы я без тебя делал.
              Ответить
              • Я перечислил варианты.
                Ответить
                • Это не легче чем распарсить выражение.
                  Ответить
                  • > Это не легче
                    Да ну. Парсить всё-таки сложнее, чем тупо дёрнуть тупейшую рекурсивную функцию на корне AST.

                    Варианты со стеком и байткодом тоже элементарные, на самом деле. Но посложнее рекурсии, да.
                    Ответить
                  • Это была бы одна маленькая функция, которую бы вызывали после парсинга:
                    func exec(node) {
                      switch(node.type) {
                      when 'sign':
                        switch(node.value) {
                        when '+': return exec(node.child(1)) + exec(node.child(2));
                        when '-': return exec(node.child(1)) - exec(node.child(2));
                        when '*': return exec(node.child(1)) * exec(node.child(2));
                        }
                        
                      when 'number':
                        return Int(node.value);
                      
                      when 'variable':
                        if(node.value not_in variables) throw 'no variable ' + node.value;
                        return variables[node.value];
                      }
                    }
                    
                    func run(expr) {
                      Ast ast = parse(expr);
                      if(ast.error) throw 'все соснули: ' + ast.error;
                      
                      return exec(ast);
                    }
                    Ответить
            • Для калькулятора я бы даже AST строить не стал - много букв, а толку мало. Перегнал бы в польскую запись алгоритмом Дейкстры и считал бы тупым интерпретатором на стеке.
              Ответить
              • Ну тогда можно вообще не перегонять, а юзать стек прямо во время парсинга.

                Число/переменная - пушим.
                Оператор - исполняем из стека все операторы, которые выше приоритетом и пушим.
                Открывающая скобка - пушим.
                Закрывающая скобка - исполняем из стека все операторы до открывающей.

                Ну и в начале и в конце выражения добавить по скобке, чтобы не париться.
                Ответить
                • да это вообще задача не по теме - пидар хочет получить опыт написание языка, а сам какой то херней страдает

                  калькулятор - изи. такое можно на собеседовании давать
                  Ответить
                  • > такое можно на собеседовании давать
                    Для собеседования и попроще задачки есть: найти среднее арифметическое джвух целых чисел со знаком на c/c++.
                    Ответить
                    • и какие подводные камни кроме переполнения?
                      Ответить
                    • Имхо рашка. Есть ведь вещи поважнее числовой хуйни.
                      Ответить
                      • > числовой хуйни
                        Ну смотря куда. Если чел будет писать системщину на сишке, то представление про ub, переполнения, платформозависимость размеров и т.п. явно лишним не будет.
                        Ответить
                        • Да и вообще это интересно.

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

                          Так и мхом можно порасти
                          Ответить
                          • > это интересно
                            Не факт. Низкий уровень далеко не всем интересен и нужен. Интересных вещей и на высоком хватает.
                            Ответить
                            • Тут даже не столько конкретные факты важны, а гибкость мышления в целом. А низкий уровень тем хорош, что позволяет понять на каких принципах и как примерно высокий работает. Пока асм в глаза не видел все программирование казалось магией)
                              Ответить
                              • > казалось магией
                                Т.е. теперь магия - это всё, что ниже асма? ;)
                                Ответить
                                • там не магия - там WCT геморрой с подсчетом 0 и 1)
                                  Ответить
                                  • Т.е. как эти нолики и единички хранятся на чипах памяти и попадают на них считаем магией? ;) Ну и заодно - как проц делает умножение за время чуть-чуть большее чем сложение и прочие магические няшности.
                                    Ответить
                                    • Ну это физ устройство, тоже читал, но уже слабо помню. Про умножения, и вообще архитектуру у нас даже курс был - рассказывали про всякие кеши, эволюцию процессоров, moesi, ультраспарки, ниагары, (ms)i(ms)d, почему ссдешки сыпятся (или как это назывется у ссдешек? ) и прочие вкусняшки. Но для меня это все на уровне забавностей, так что - пусть в мире будет место загадке)
                                      Ответить
                                      • >Но для меня это все на уровне забавностей
                                        Вот и байтоебство где-то так.
                                        Ответить
                              • Слушай, ты заебал со своей "гибкостью мышления" и прочими фразочками, которые вдолбили тебе в постсовковом вузе. Неужели IT в постсовке и гермашке настолько разное, что я тебя через слово не понимаю?

                                Я тоже когда-то видел асм и даже пару команд помню. Но если о нем спросят на собеседовании - я ничего путного не отвечу.
                                Ответить
                                • А меня на собеседовании попросили сишную прогу из трех строчек на асм портануть :3
                                  Ответить
                                  • Бля, ну само собой это зависит от специальности. Если ты микроконтроллеры ебашишь или что-то еще в таком духе. Я кагбэ прикладной программист.
                                    Ответить
                                    • > прикладной программист
                                      да, от программистов, не осиливших BNF, действительно многие руку ко лбу пригладывают
                                      Ответить
                                      • Многие диванные эксперты? Руки прикладывают от незнания основ ООП/архитектуры, BNF по сравнению с этим так, хуйня.
                                        Ответить
                                        • > Руки прикладывают от незнания основ ООП/архитектуры

                                          Кнут TeX написал без знания "ООП" и "архитектуры", до сих пор все руки прикладывают, ага.
                                          Ответить
                                          • орхитектура и всякие хуяттерны необходимы, когда ничего не умеешь
                                            скопипастил из GoF пару фабрик визиторов, и, типа, тоже код пишешь
                                            Ответить
                                            • >> и, типа, тоже код пишешь

                                              2 кофе и торт этому человеку
                                              Ответить
                                              • > 2 кофе и торт этому человеку

                                                А сам совсем недавно защищал паттерны

                                                http://govnokod.ru/15505#comment221515
                                                Ответить
                                                • >> А сам совсем недавно защищал паттерны

                                                  полтора года назад. С тех пор я увидел людей, которые ничего, кроме паттернов не знали. Ну, скорее они не знали. а думали что знают
                                                  Ответить
                                                  • А я наоборот, за время, пока на ГК был, начал паттерны немного ценить (видимо, потому, что тут выступают против них), а раньше их люто ненавидел.
                                                    Ответить
                                          • Не поверишь, прикладывают. Алсо причем тут страндарт (TeX) к коду? Тебя рукой слишком сильно приложили?
                                            Ответить
                          • Ну а тех людей как раз таки легко понять - у них, в отличие от борманда, есть жизнь.
                            Ответить
                            • Думаешь? У большей части человечества жизни нет. Только огромная дыра внутри, которую они пытаются заесть, запить, засмотреть фильмами, закупить всяким говном... Заучить Джеем)
                              Ответить
                            • А из чего состоит жизнь борманда? У меня сейчас такое впечатление, что у меня даже жизни борманда нет.
                              Ответить
                              • На данный момент из адаптации к новой работе, забав с discovery 429 и просмотра анимца.
                                Ответить
                                • И это вся жизнь? А общение?
                                  Ответить
                                  • Гк, доброчан и друзья в асечке. Ну я же выше писал, что это не жизнь в привычном обывателю понимании :3
                                    Ответить
                                    • > друзья
                                      > в асечке
                                      ловите альфача
                                      Ответить
                                    • А как же реальность? В ней то есть кто нибудь, что бы обсудить конец евангелиона?
                                      Ответить
                                      • > А как же реальность?
                                        Ты имеешь в виду дорогу от дома до работы или магазина? Я бы не рискнул там обсуждать конец евангелиона...
                                        Ответить
                                        • И с соседями не познакомился? Сходил бы, чаю попил. Вдруг по соседству живет прекрасная блондинка-паскалистка?
                                          Ответить
                                    • Друзья хоть настоящие?
                                      Ответить
                                      • > Друзья хоть настоящие?
                                        Нет, только тульпы.
                                        Ответить
                                        • Тульпы в асечке? Что такое тульпа? Еще одно анимесловечко?
                                          Ответить
                                          • > Что такое тульпа?
                                            Лёгкая форма шизофрении, при которой ты можешь общаться с виртуальной личностью.

                                            > анимесловечко
                                            Ты же вроде с борд пришёл, а про тульп не слышал...
                                            Ответить
                                            • На двачах анимешники сидят в разделе про аниме. Я аниме не очень любил из-за пидарасов розенфагов.

                                              У тебя на самом деле есть общение, просто пока оно есть, ты его не замечаешь. А в эмиграции ты бы так не прожил.
                                              Ответить
                                              • > А в эмиграции ты бы так не прожил.
                                                У вас там аська не работает?
                                                Ответить
                                                • Здесь работает все что работает у вас, но с кем по ней общаться?
                                                  Ответить
                                                  • > но с кем по ней общаться
                                                    Да с теми же самыми людьми. Я большинство из них лично очень-очень-очень редко вижу... Разные города всё-таки.
                                                    Ответить
                                            • Тульпы - для тонких личностей, кому нужно тепло и поддержка. Логично что пидар не в курсе
                                              Ответить
                                          • >> Что такое тульпа?

                                            Говнокод - явно не твое

                                            Это шаманизм (и в восточной мифологии тоже что то такое есть) - часть твоей души, которое материализуется в виде живого существа - с ним можно разговаривать, советоваться, играть, и даже сношаться (в этой фазе скорее всего тульпа тебя заборет и ты сдохнешь). Правда это все черевато - например попаданием в адЪ
                                            Ответить
                                            • >
                                              Говнокод - явно не твое
                                              ПНХ, анимешник. Вали на анимешные сайты, а говнокод как раз не твое.
                                              Ответить
                                              • >> ПНХ, анимешник. Вали на анимешные сайты, а говнокод как раз не твое.

                                                Я не анимешник, лалка
                                                Ответить
                                                • > Я не анимешник, лалка
                                                  Один раз - не анимас?
                                                  Ответить
                                                  • 15-кун - не анемун
                                                    Ответить
                                                    • > 15-кун
                                                      Фу, ньюфажина 15-тайтловая.
                                                      Ответить
                                                    • А часами они вы не меряетесь? Скажем, "я 2000h-кун". Или ещё коэффициент как в торрентах: "2000h*1.73-кун".
                                                      Ответить
                                                      • > А часами они вы не меряетесь?
                                                        Ну да, часами тоже. А то вдруг чел насмотрел 1000 OVA'шек по полчаса каждая вместо того, чтобы честно смотреть сериалы по 12+ серий.
                                                        Ответить
                                                        • стоп, каждая ова - это отдельный тайтл? Например в новом хеллсинге 10 ов - это 10 тайтлов?
                                                          Ответить
                                                          • Ну типа того. Теперь ты уже 24-кун?

                                                            Там, на самом деле, никто не знает, как правильно считать. Вроде если 6 ов на одном диске вышло - это один тайтл. А если по-отдельности в разное время - 6.

                                                            P.S. Кого ебут эти счётчики? Ну кроме счётчика проёбанного на аниму времени в часах.
                                                            Ответить
                                                            • короче если верить сайтику я 100h-кун

                                                              Это то, что я вспомнил минус Миядзаки

                                                              Ну и еще игруля "Бесконечно лето"... ^_^
                                                              Ответить
                                                              • > 100h
                                                                0x100? 256?
                                                                Ответить
                                                              • От «Бесконечного лета» комп не распидорасило?
                                                                Ответить
                                                                • нет, а должно было?
                                                                  Ответить
                                                                  • Не знаю. Говорят, у некоторых был какой багор:
                                                                    https://archive.is/uMjEY
                                                                    Ответить
                                                                    • Не, я из стима ставил, все норм
                                                                      Ответить
                                                                      • Жалко. А то бы научился MBR восстанавливать...

                                                                        http://i.imgur.com/wbG7iWU.jpg
                                                                        Ответить
                                                                        • > MBR
                                                                          Да MBR хуйня. Его на автомате вылечить можно, даже не вникая в суть проблемы. Всё-таки хакеры добрые были, раз только MBR запороли.
                                                                          Ответить
                                                                        • 2 порноквеста по цене одного
                                                                          Ответить
                                                                    • А заявление в полицию не писал никто?
                                                                      Ответить
                                                                      • ага - "помогите, я пришел домой с диском с порноквестом, а у меня MBR полетел" а они такие - "Все в УАЗик! Накажем негодяев!" и за ними боевые слоны и пушками тесла
                                                                        Ответить
                                                                        • скорее они такие "вы видели эрогеев IRL и не прописали им c вертушки? да мы на вас сейчас протокол составим"
                                                                          Ответить
                                                                          • Не бей геев, цундереняшечка, они могут сделать приятно.
                                                                            Ответить
                                                                        • "На фестивале раздавали диски с вредоносными программами под под видом игры, которые нанесли вред моему компьютеру. Сделайте с ними что-нибудь." Или в пидарашке полиция на такую хуйню не заморачивается?
                                                                          Ответить
                                                                          • Если бы раздавали яд, наркотики, оружие или фальшивые деньги, то полиция могла бы заинтересоваться.

                                                                            А тут раздавали какие-то диски. Не продавали, заметь! Т. е. придраться к тому, что нарушили правила торговли, невозможно. Акта купли-продажи нет.
                                                                            Ответить
                                                                            • К слову, в УК есть статейка на тему. И вирмейкер запросто по ней пойдёт, если его найдут, конечно.

                                                                              Но тут людям заяву писать неприятно. Получается примерно как "я пошел к шалаве, а у нее оказался сифилис, сделайте с ней что-нибудь".

                                                                              Но чуваки пиздец рисковали, раздавая диски - могут же и в обход закона морду набить.
                                                                              Ответить
                                                                      • > А заявление в полицию не писал никто?
                                                                        "Заявление. На фестивале анимешников мне дали бесплатный диск с порноквестом, я его воткнул в комп и всё наебнулось."

                                                                        P.S. А в бесконечном лете случаем не про школьниц история?
                                                                        Ответить
                                                                        • Прошу предоставить мне штатный компьютер, что бы я смог поиграть в порноквест

                                                                          Нет, не случайно. Про пионерский лагерь
                                                                          Ответить
                                                                        • Про сырнопидоров же.
                                                                          Ответить
                                                              • > блето
                                                                Фу блядь, фу нахуй
                                                                Ответить
                                                              • 15 тайтлов и овер 100 часов? Это состояние называется нарутёнок.
                                                                Ответить
                                                                • Крч, всех бы вас полюбил.
                                                                  Ответить
                                                                • наруту не смотрел, вроде что то эпично-бесконечное?
                                                                  Ответить
                                                                  • Извиняй, попутал. Просто время анимуёбы обычно в сутках измеряют. А так оно не так уж и много.
                                                                    Ответить
                                                                • 100 * 60 / 25 / 15 = 16. Примерно 16 серий на тайтл. В пределах ТВ нормы. Какой нахуй нарутёнок?
                                                                  Ответить
                          • >Да и вообще это интересно.
                            Байтоебство интересно? Школьник в треде.
                            Ответить
                        • Ну это понятно, если придется поддерживать легаси хуйню то и фортран может потребоваться. Но в большинство мест оно имхо не нужно.
                          Ответить
                  • слушай, что у тебя за проблема? Ну начнем с калькулятора. Пока код хомячка плохо читаем, может кто получше подкинет. Или хотя бы идею как без этого монстра парсить.
                    Ответить
                    • >> Или хотя бы идею как без этого монстра парсить.

                      Борманд все отлично объяснил

                      http://govnokod.ru/18610#comment296532

                      Если есть вопросы - спрашивай. + у тебя есть код на питоне и на хаски
                      Ответить
                      • Есть код на нечитаемом комбайне на питоне.
                        Ответить
                    • > как без этого монстра
                      Если хочешь парсить полноценный язык хотя бы уровня паскаля - тебе придётся подобного монстра юзать. Вариантов особо нет.
                      Ответить
                      • Варианты есть, но они очень болезненные. Помню как я руками писал таблицу переходов состояний - больше не хочется
                        Ответить
                        • Вот в том и суть. И даже простенькие комбинаторные парсеры типа pyparsing, spirit или parsec для языков тоже не прокатят...

                          В них, емнип, даже операторы с разными приоритетами/ассоциативностью и конструкции, требующие look ahead, в духе if (x) { ... } и if (x) { ... } else { ...} пилятся только через жопу и костыли.
                          Ответить
                          • я тогда это разрулил тем, что сделал начало всех подобных конструкции разными - то есть

                            if (x) { ... } - when(х) { ... }

                            Все лишь бы не лукахедить
                            Ответить
                            • А с координатами ошибок как поборолся? Или до них дело не дошло?
                              Ответить
                              • было, но уже не помню детали. Помню что долго матерился и работал напильником, что бы отображалась нужная строка и символ. Вроде оно потом даже заработало.

                                Но в конце взлетело - даже сортировку пирамидальную на этом языке написали и оно работало (мы в командах делали - по факту - вдвоем)
                                Ответить
                                • В каком семестре это было?
                                  Ответить
                                  • 4 или 5
                                    Ответить
                                    • Семестре? Что за предмет?
                                      Ответить
                                      • АВС - архитектура вычислительных систем. Ну и на других предметах рассказывали
                                        Ответить
                                        • Так вам рассказывали именно как лексический анализатор/парсер или как это называется работает?
                                          Ответить
                                          • у нас даже 2 предмета было в разных семестрах - сначала интерпретатор писали в командах ручками с акцентом на теорию (Теория автоматов и формальных языков) а потом делали компилятор, но уже каждый сам с помощью компилятора компиляторов с акцентом - а как это бывает в реальной жизни, а как это оптимизировать и т.д + какие вообще языки бывают, виды типизации и все такое (языки программирования)
                                            Ответить
                                            • У нас более ориентированное на практику образование было, конпеляторы вынесли в магистра.
                                              Ответить
                                              • >> У нас более ориентированное на практику образование было

                                                Это поэтому ты калькулятор не можешь написать?
                                                Ответить
                                                • Это поэтому мы не проходили как писать его правильно, а неправильно не хочу (будет баговать)
                                                  Ответить
                                                  • Так ты точно никогда его не напишешь. Борманд же все шаги описал.

                                                    Давай, пиши прогу, которая делит входную строку на токены, потом будем модернизировать.
                                                    Ответить
                                                    • Разбиение на токены было в статье на кабре про pyparsing.
                                                      Ответить
                                                      • ну так и иди на хабр
                                                        Ответить
                                                        • Куда-куда?
                                                          Ответить
                                                          • че раскудахтался?

                                                            Тебе уже все разжевали и в тор положили, даже по горлу полгадили - или делай или кончай кудахтать
                                                            Ответить
                                                            • Дорогой, хабр я нашел сам и его никто не разжевывал, так что иди в хуй.
                                                              Ответить
                                                  • > неправильно не хочу (будет баговать)
                                                    Баги начинаются, когда калькулятор доходит до функций (отличить локальные переменные от глобальных, отличить именованные аргументы от переменных) и императивной питушни (например, какое значение переменной использовать в функции), а до этого пока далеко.
                                                    Питушню вроде левой рекурсии можно и тестами покрыть.
                                                    Так что лучше писать калькулятор, а не косплеить wct-пророка и ждать, пока по реке поплывут исходные коды твоих программ.
                                                    Ответить
                          • про spirit согласен (в нём всё -- сплошные слёзы и страдания), а вот на parsec не гони
                            Ответить
                            • то же говно на parsec http://ideone.com/usklsl (без eval, ибо тривиально)
                              не знаю, в чём bormand узрел проблемы
                              хотя, конечно, никто в здравом уме на parsec писать не будет
                              Ответить
                              • P.S. eval http://ideone.com/Z3Ii0R
                                Ответить
                              • > в чём bormand узрел проблемы
                                В парсинге императивного if'а без else.
                                Ответить
                                • так в чём конкретно проблема? http://ideone.com/uHEXaK
                                  Ответить
                                  • В том, что я не подумал про option.
                                    Ответить
                                    • так любой нормальный генератор парсеров умеет в бэктрекинг
                                      option -- просто маленькая надстройка над этим хозяйством
                                      в attoparsec так даже try не нужен, вообще красота
                                      Ответить
                      • Давайте что-нибудь простое сначала сделаем.
                        Ответить
                        • >Давайте что-нибудь простое сначала сделаем.
                          3_14dar, иди напитон, пидар!
                          Ответить
                  • начинать делать свой язык с синтаксиса, строить дома с крыши, переводить доллары в рубли
                    Ответить
                    • Вычеркнуть лишнее?
                      "строить дома с крыши" - лишнее, т.к. нелогичное
                      Ответить
                      • Двачую. Так смешно, когда называют цену в рублях. Уже давно пора называть все в долларах как в 90е.
                        Ответить
          • >>>с гарантированно безопасным эвалом
            Ну вот тебе и безопасный эвал =D
            http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html
            Ответить
      • Быстроговнокод на хаски

        http://ideone.com/ulecjW

        надо еще в мейби завернуть, но лень
        Ответить

    Добавить комментарий