1. C++ / Говнокод #27220

    +1

    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
    20. 20
    21. 21
    22. 22
    23. 23
    void testToken(const char *value, size_t tokenExpected)
    {
        antlr4::ANTLRInputStream input(value);
        typescript::TypeScriptLexerANTLR lexer(&input);
    
        auto tokens = lexer.getAllTokens();
    
        printTokens(lexer, tokens);
    
        auto token = tokens.front().get();
    
        std::ostringstream stringStream;
        stringStream << "Expecting: [" << lexer.getTokenNames()[tokenExpected] << "] \"" << value << "\" but get: [" << lexer.getTokenNames()[token->getType()] << "] \"" << token->getText() << "\".";
        auto msg = stringStream.str();    
    
        ASSERT_EQUAL_MSG(token->getType(), tokenExpected, msg);
        ASSERT_THROW_MSG(token->getText().compare(value) == 0, msg);
    }
    
    void testOctalIntegerLiteral()
    {
        testToken("01", l::OctalIntegerLiteral);
    }

    Мой расказ о том как жизни было нехрен делать и я начал писать копилятор для TypeScript. как это "пинание х..я" кончиться я не знаю. но вот начал с простого. собрал минимум для разработки это LLVM и ANTLR4. И уже написал свой первый (ну не совсем) lexer.

    вот тут можно посмотреть на убогость говнокода.
    https://github.com/ASDAlexander77/TypeScriptCompiler

    Запостил: ASD_77, 20 Января 2021

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

    • Ебать поехавший.
      Ответить
    • Ты же писал транслятор с таргетом на плюсы, уже забил?
      Ответить
      • ну он был закончен (до того момента сколько мне надо) а полнуюсовместимость облом с JVM облом делать. да и потом он оказался не практичный для разработки вместо С++
        Ответить
        • > ну он был закончен

          Хуясе ты крут. Ты нидлес же?
          Ответить
          • кто такой "нидлес"?
            Ответить
            • Этот петух https://govnokod.ru/user/25596
              Ответить
              • Самое забавное, что он не нидлес, а нидлес не петух, а петух не нидлес, а программист — петух, а нидлес не петух, значит нидлес не программист, а петух — программист, а александр программист, значит александр петух, но не тот петух, а тот петух не этот петух, а этот петух не тот петух, а тот петух на самом деле курица, а курица не петух, значит курица не программист.

                К чему я это всё написал? А к тому, что Георгий Татьяновна сидит глупым лицом напротив и льёт кипяток мимо кружки.
                Ответить
                • Петух, ты в Улан-Удэ живешь?
                  Ответить
                  • Я живу в Усть-Барбитуратинске.
                    Ответить
                    • Нет такого населенного пункта. Усть-Баргузин может?
                      Ответить
                      • Ха, поверил! Усть-Баргузин был придуман мной, чтобы никто не догадался, что на самом деле я живу в Серверно-Бокальске.
                        Ответить
                        • Ой.
                          Ответить
                        • Rooster, пошли бухать
                          Ответить
                          • Я пью только ча1, вод3, моло4о и сироп от 4ашля.
                            Ответить
                            • сироп от кашля это Ягермейстер?
                              Ответить
                              • Б3х3р0вк4
                                Ответить
                                • Пробовал, не понравилось и бугульму пробовал - залупа конская.
                                  Ответить
                                  • У тебя уже суббота?
                                    Ответить
                                    • А бухать можно не только в субботу
                                      Ответить
                                    • нет. Еще пьятница. Но кстати самый худший ликер который я пробовал это уссурийский бальзам.
                                      На самом деле обидно за него. Потому что оно раньше выпускало годные вкусные настойки и уссурик сам был не плох. А сейчас выкупила ебалуга (белуга) и вместе пиздатых настоек стали делать рыгатню под названием доктор хуявгуст (август) и сами уссурики стали как дешанская рыготня налитая за пазухой из под полы не мытой бабки, которая еще нассала и плюнула.
                                      Ответить
                    • >Барбитуратинске
                      а "ляпапам" делаешь?
                      Ответить
                      • Я ходила, я ходила,
                        Ляпапам, ляпапам!
                        Я искала, я искала
                        Феназепам, феназепам!
                        Ответить
                        • Феназепам охуенная тема, кстати. Но её нельзя без рецепта((
                          Ответить
                          • Корвалол разве по рецепту? Кстати, нонче можно без особых проблем выпить целый пузырек. Да многие так и делают! Максимум глюкцов словишь. А вот если бы ты выпил полный пузырек советского корвалола (времён когда водка горела), то с вероятностью 100% впал бы в кому и умер. В живых оставались крайне редко и то- дебилами.
                            Ответить
    • А нахуй компилировать какой-то скриптовый говноязык для браузеров?
      Ответить
      • тайпскрипт статически типизирован c очень мощной системой типов, и он компилируется
        Ответить
        • компилируется в JS?
          Ответить
          • Да. Но что мешает его под llvm?
            Ответить
            • А нахуя? Компилирующиеся в натив языки с GC и мощной системой типов есть и так. Тот же хаскель например.

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

                Я могу представить себе например написание логики на TS с последущей ее космпиляцией под браузер и ios (llvm). Ну, чтоб два раза не писать одно и тоже.


                Алсо, знатаков TS всё же больше среди офисных программистов, чем знатаков хаскеля

                > нахуй его куда-то тащить еще?
                ну а нахуй писать одно и тоже три раза под разные платформы?
                Ответить
                • >с последущей ее космпиляцией под браузер и ios (llvm)
                  А почему б в ios не запускать это через браузер? Компилировать может быть смысл только если какое-то ресурсоемкое говно на этом TS писать, но разве кто-то так делает?

                  > ну а нахуй писать одно и тоже три раза под разные платформы?
                  Для TS ты и так не должен писать одно и то же под разные платформы, ведь он компилируется в JS, а интерпретатор JS есть много где. Если же у тебя какая-то непонятная эмбеддед-микроконтроллерная хуитень, то тебе этот TS вряд ли подойдет т.к. это хуйня с GC. (Хотя вот какие-то ебланы юзают зачем-то тот же микропитон, и даже Iskra JS есть с жопаскриптом)
                  Ответить
                  • >А почему б в ios не запускать это через браузер?
                    Потому что тогда у тебя не будет доступа к полному API системы, не?


                    >микроконтроллерная
                    нет, TS точно не для этого:))

                    >микропитон
                    так это для школьников вроде, чтобы учить программированию железок, не?
                    Ответить
                • > написание логики на TS с последущей ее космпиляцией под браузер и ios
                  - заебали своё говно тащить всюду
                  Ответить
                  • блидь, ну я предположил, зачем можно хотеть TS компилировать под LLVM.

                    Кстати, я так и не знаю, как это правильно решать без всяких реактнейтив и самаринов

                    Ну вот как мне логику пошарить между вебмордой, бекендом, ios и android?
                    Ответить
                    • А вообще нахуя так много разных языков?

                      Пускай был бы один си и один выскоуровневый для автоматизации и бизнес логики. И всё
                      Ответить
                    • > Ну вот как мне логику пошарить между вебмордой, бекендом, ios и android?
                      Можешь на Си писать, и для говнобраузеров компилировать в WebAssembly. Так ты логику даже на микроконтроллеры пошарить можешь
                      Ответить
                      • Могу, но придется много буков писать слишком.

                        для задач типа "выбрать всех петухов с толстым гребешком и отсортировать их по росту, и взять первых двух" хочется высокоуровневый язык использовать, а не чистую сишечку
                        Ответить
                    • > логику пошарить между вебмордой, бекендом, ios и android?
                      - C++, C#, C

                      но это достаточно узкий класс приложений, которым нужна такая хня
                      Ответить
                      • А почему узкий?

                        Разве не любое приложение в 2021 должно иметь версию под ios и андроид?
                        Ответить
                        • ну вообще не любое, но речь не об этом

                          далеко не всегда обязательно нужно выносить логику в какую-то общую зависимость, можно на каждом клиенте отдельно писать, если её не очень много
                          Ответить
                        • Так почти любое приложение - это вебвью с джаваскриптом?
                          Ответить
                          • што

                            ты о чём?
                            Ответить
                            • (это другой гость был, если что)
                              Ответить
                            • Не ебу как работают приложения на смартфонах. Но если бы я делал под iOS и Android, я бы сделал хуйню (не помню как называется), в которой запускается js и рисует интерфейс. Electron, вроде.
                              Ответить
                              • на мобайле это называется Cordova

                                тормозит, тупит, но зато ты можешь писать на рагуляре под телефоны, да

                                уровень качества боженька
                                Ответить
                          • конечно же нет.

                            Приложение использует компоненты UIKit или андроидный гуй
                            Ответить
                    • вообще было бы неплохо иметь какой-то язык чуть гибче сишечки и не такой перегруженный, как кресты, чтобы писать кросс-платформенные прослойки

                      проблема в том, что весь ffi и вся интеграция между языками упирается в то же сишное API/ABI и ничего с этим пока не поделаешь
                      Ответить
                      • ну с сишным ABI интегрироваться относительно легко же, не?
                        Ответить
                        • а где в сишке дженерики там или инкапсуляция адекватная (может, я в неё не умею просто, конечно) или контрактное программирование?

                          то есть все плюсы условного "раста" при использовании его со свифтом или котлином разобьются о необходимости выражать прослойку между в сишных терминах

                          тогда уже проще сразу с сишкой и мудохаться
                          Ответить
                          • Ну нигде, да. В с11 завезли "_Generic", но тебе он не понравится)

                            Если интеропиться с сишкой, то нужно вокруг сишных либ делать красивые высокоуровневые обёрточки
                            Ответить
                      • А свифт кстати не подойдет?

                        Мерзотного гэцэ нету, компилируется в нативный код, типизация статическая, при этом имеет все высокоуровневые плюшки типа вывода типов и лямбд-хуямбд
                        Ответить
                        • ну, сейчас, когда у свифта появилась официальная сборка под винду, в теории его можно использовать в таком качестве и некоторые даже уже начали

                          но взлетит ли это под то же ведро это большой вопрос, я не в курсе

                          язык должен изначально под это затачиваться, у свифта другая история немного
                          Ответить
                          • По идее жопа в том, что в ведре свой рантайм -- ART и соответственно там во-первых своя стандартная либлиотека, а во-вторых она расчитана на язык с GC.

                            Так что портануть свифта туда будет не очень легко видимо.

                            Можно конечно компилироваться нативно, мимо арта, но наверное тогда будет тяжело под разные устройства работать
                            Ответить
                            • андроидщики вообще кмк не очень любят NDK, у них там какая-то своя боль

                              а так привязать gc к рефкаунтеру не то чтобы большая проблема, когда-то же был сборщик в обж си на маке

                              как вариант можно делать свой рантайм или брать чужой с сохранением синтаксиса (пример: https://www.elementscompiler.com/elements/silver/)

                              ну или генерить из стабов по примеру протобафа, но это не сильно императивно
                              Ответить
              • TypeScript знают все. а хаскел - никто.
                Ответить
                • Твоя фраза истинной, если ты добавишь перед ней такое вступление: "Среди мох знакомых"
                  Ответить
                  • я использовал элементы "нечёткой логики"
                    Ответить
    • TypeScript компайлер нужен хотябы потому что С++ это результат эволюции урода. (он мощный но читать на него код просто нереально). а ТS С-стайл язык т.е. может также в С++ но читать код типа "::bla::bla::more_bla::___blablabla( )" не реально.
      Ответить
      • Кресты конечно говно еще то, но в них хотя бы GC нет
        Ответить
    • охуенно
      https://pbs.twimg.com/media/EtcgvD2XAAIsXDo?format=jpg&name=medium
      Ответить

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