Author Topic: Новый компьютерный язык  (Read 715 times)

0 Members and 1 Guest are viewing this topic.

Offline Alone Coder

  • Posts: 22398
    • Орфовики
« on: February 12, 2017, 20:30 »
Последнее время я пишу компилятор самодельного языка. Сначала у него был синтаксис, где слова чередовались со знаками, знаки были односимвольные, контекст число левый. Но потом я понял, что не смогу его довести до самокомпиляции малыми шагами, если не сделаю совместимость с Си (через дефайны). Разворачиваться он будет, естественно, на ZX Spectrum.

Постепенно синтаксис сильно приблизился к Си, только все команды начинаются со слова (типа VAR, PROC, FUNC, LET, CALL), а у типизации префикс +. За счёт этого обеспечивается контекст на 1 символ вперёд и нет зарезервированных слов. И не нужны точки с запятой.

Хотелось бы минимальное время самокомпиляции и незначительный объём занимаемой памяти.

Пока не уверен, как строить проект: как в Си (с заголовками и линкером), через include в главном модуле или через проектный файл (тут варианты: компилировать как единый текст или пофайлово, но тогда проблема в линковке констант).

Что плохо в Си, по вашему мнению, и что стоит добавить (малыми силами)? И в какую сторону стоит мутировать после достижения самокомпиляции?

« Reply #1on: February 12, 2017, 20:50 »
Ещё особенности:

строгая типизация (никаких неявных преобразований), char!=byte, указатель!=массив, есть система модулей, доступ к идентификаторам явно описывает место в дереве (в Си - любое место выше, что медленно).

Offline basta

  • Posts: 2673
идеи по синтаксису можно взять из Go для быстрой компиляции.

Offline Alone Coder

  • Posts: 22398
    • Орфовики
Да, вижу общее (кстати, call и let я сумел убрать без потери скорости). Но остальное несовместимо с Си. И сишный синтаксис for не может компилироваться быстро - у него два тела, из которых первое может выполняться после второго. Я не стал реализовывать этот оператор.

Проект строится из отдельно компилируемых модулей, каждый в начале описывает используемые внешние символы.

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

Первый релиз программы на нём (сам язык пока рассылаю только заинтересованным): http://www.pouet.net/prod.php?which=69770

Online kemerover

  • Posts: 1287
А цель какая? Просто интерес и самовыражение?

Offline Alone Coder

  • Posts: 22398
    • Орфовики
Сначала чисто идеи, потом по работе стояла задача, но теперь вроде не стоит. А полноценная нативная среда разработки для Спектрума всегда была нужна.

Offline Bhudh

  • Posts: 47812
  • aka 蝎
    • Сайты по языкознанию
А игры для ZX на нём будут?
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline Alone Coder

  • Posts: 22398
    • Орфовики
Вполне возможно. У меня есть пара недописанных движков.

Online maqomed1

  • Posts: 334
« Reply #8on: September 1, 2017, 18:11 »
Язык доступный к компьютеру, интернету очень нужен для создании и развитии искусственного интеллекта.

Offline Bhudh

  • Posts: 47812
  • aka 蝎
    • Сайты по языкознанию
« Reply #9on: September 1, 2017, 23:55 »
Надеюсь, искусственный интеллект когда-нибудь поймёт предыдущий пост.
Пока на нём даже естественный спотыкается.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline Alone Coder

  • Posts: 22398
    • Орфовики
« Reply #10on: September 2, 2017, 21:11 »
Кстати, если кто не читает ACNews: NedoLang уже работает на Z80 (самокомпиляция) и на ARM Thumb1 (проверено на довольно большом куске кода, который уже проверен на Z80). Качайте с моего сайта :)

« Reply #11on: September 2, 2017, 21:13 »
Вот одна дема на этом языке (её исходники есть в комплекте): http://www.pouet.net/prod.php?which=69770

Сейчас Hippiman начал писать игру.

Offline Hellerick

  • Posts: 24083
« Reply #12on: September 4, 2017, 15:31 »
её исходники есть в комплекте
А посмотреть их где-нибудь можно?


 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Note: this post will not display until it's been approved by a moderator.
Name: Email:
Verification:
Type the letters shown in the picture
Listen to the letters / Request another image
Type the letters shown in the picture:
√49 Напишите ответ строчными буквами:
«Сто одёжек, все без застёжек» — что это?: