Кресты / Говнокод #27220 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 ASD_77, (Updated )

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

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

        Хуясе ты крут. Ты нидлес же?
        Ответить
            • Самое забавное, что он не нидлес, а нидлес не петух, а петух не нидлес, а программист — петух, а нидлес не петух, значит нидлес не программист, а петух — программист, а александр программист, значит александр петух, но не тот петух, а тот петух не этот петух, а этот петух не тот петух, а тот петух на самом деле курица, а курица не петух, значит курица не программист.

              К чему я это всё написал? А к тому, что Георгий Татьяновна сидит глупым лицом напротив и льёт кипяток мимо кружки.
              Ответить
                  • Нет такого населенного пункта. Усть-Баргузин может?
                    Ответить
                    • Ха, поверил! Усть-Баргузин был придуман мной, чтобы никто не догадался, что на самом деле я живу в Серверно-Бокальске.
                      Ответить
                              • Пробовал, не понравилось и бугульму пробовал - залупа конская.
                                Ответить
                                  • нет. Еще пьятница. Но кстати самый худший ликер который я пробовал это уссурийский бальзам.
                                    На самом деле обидно за него. Потому что оно раньше выпускало годные вкусные настойки и уссурик сам был не плох. А сейчас выкупила ебалуга (белуга) и вместе пиздатых настоек стали делать рыгатню под названием доктор хуявгуст (август) и сами уссурики стали как дешанская рыготня налитая за пазухой из под полы не мытой бабки, которая еще нассала и плюнула.
                                    Ответить
                    • Я ходила, я ходила,
                      Ляпапам, ляпапам!
                      Я искала, я искала
                      Феназепам, феназепам!
                      Ответить
                      • Феназепам охуенная тема, кстати. Но её нельзя без рецепта((
                        Ответить
                        • Корвалол разве по рецепту? Кстати, нонче можно без особых проблем выпить целый пузырек. Да многие так и делают! Максимум глюкцов словишь. А вот если бы ты выпил полный пузырек советского корвалола (времён когда водка горела), то с вероятностью 100% впал бы в кому и умер. В живых оставались крайне редко и то- дебилами.
                          Ответить
  • А нахуй компилировать какой-то скриптовый говноязык для браузеров?
    Ответить
    • тайпскрипт статически типизирован c очень мощной системой типов, и он компилируется
      Ответить
          • А нахуя? Компилирующиеся в натив языки с 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 компайлер нужен хотябы потому что С++ это результат эволюции урода. (он мощный но читать на него код просто нереально). а ТS С-стайл язык т.е. может также в С++ но читать код типа "::bla::bla::more_bla::___blablabla( )" не реально.
    Ответить
    • Кресты конечно говно еще то, но в них хотя бы GC нет
      Ответить

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

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8