Сообщение Re[5]: target, typing от 16.10.2023 16:05
Изменено 16.10.2023 16:09 Sm0ke
Re[5]: target, typing
Здравствуйте, netch80
Вот информация по поводу назначения кси, и про типизацию.
Про остальное темы — отдельным ответом напишу
--
Типизация в кси зависит от выбранного режима
Всего их три:
— case 1 —
Режим ksi-pl
Тут только строгая типизация
Указывать тип ячейки обязательно как ограничение
Ещё допустимо ячейку ограничить не типом, а категорией
К системной категории _any относятся все типы.
А системная _struct назначена только на типы, которые сформированы командой #struct
Ячейка с функцией other_fn в примере выше может принимать только структурные значения как параметр.
Как будет фактически работать у ячейки ограничение по категориии — это уже вопрос реализации
Это может быть специальная динамическая run-time обёртка,
Или некий compile-time аналог шаблонов c++
— case 2 —
Режим ksi-script не допускает накладывать ограничения на тип ячейки
Динамическая типизация в нём позволяет устанавливать для ячейки значения любых типов
Эти типы могут быть отличны от типа начального значения, конечно же
— case 0 —
И наконец режим ksi-lang — это микс из (script + pl)
Тип ячейки можно указывать
Но если не указать, то ограничение типа ячейки будет по категории _any
Надо бы решить какой case реализовать приоритетнее в первую очередь.
Что перед этим ещё надо сделать.
Это были три режима обработчика
Хотя по необходимости можно сделать и отделные, более компактные, обработчики для некоторых case -ов
Вид обработки может быть: интерпретация, компиляция, трансляция
Думаю стоит начать с чего-то одного
--
Хорошо, вот примерные цели применения (таргеты)
ksi-script:
ksi-pl:
--
Ещё немного инфы про обработчик.
Вот в интерпретаторе php есть расширения (extensions)
Они добавляют системные функции, системные типы, константы, интерфейсы, и пр.
Некоторые примеры расширений php:
Неплохо бы в обработчик ksi добавить систему расширений.
На чём писать эти расширения — на плюсах, или даже на самом кси
Почему бы не помечтать
Какие именно понадобятся расширения обработчика — отдельный вопрос
Я не призывааю как либо повторять путь php
Вот информация по поводу назначения кси, и про типизацию.
Про остальное темы — отдельным ответом напишу
--
Типизация в кси зависит от выбранного режима
Всего их три:
— case 1 —
Режим ksi-pl
Тут только строгая типизация
Указывать тип ячейки обязательно как ограничение
some_fn = #fn ($int: x y, $float: factor) : result_type {}
Ещё допустимо ячейку ограничить не типом, а категорией
some_fn = #fn (_any: param) : result_type {}
other_fn = #fn (_struct: param) : result_type {}
К системной категории _any относятся все типы.
А системная _struct назначена только на типы, которые сформированы командой #struct
Ячейка с функцией other_fn в примере выше может принимать только структурные значения как параметр.
Как будет фактически работать у ячейки ограничение по категориии — это уже вопрос реализации
Это может быть специальная динамическая run-time обёртка,
Или некий compile-time аналог шаблонов c++
— case 2 —
Режим ksi-script не допускает накладывать ограничения на тип ячейки
some_fn = #fn (x y factor) {}
Динамическая типизация в нём позволяет устанавливать для ячейки значения любых типов
Эти типы могут быть отличны от типа начального значения, конечно же
— case 0 —
И наконец режим ksi-lang — это микс из (script + pl)
Тип ячейки можно указывать
Но если не указать, то ограничение типа ячейки будет по категории _any
Надо бы решить какой case реализовать приоритетнее в первую очередь.
Что перед этим ещё надо сделать.
Это были три режима обработчика
Хотя по необходимости можно сделать и отделные, более компактные, обработчики для некоторых case -ов
Вид обработки может быть: интерпретация, компиляция, трансляция
Думаю стоит начать с чего-то одного
о парсере | |
Парсер неплохо бы сделать через общую библиотеку, которая не зависит от режима обработчика Я начал писать свой парсер таким образом, чтобы правила разбора писались в самом си++ декларативно Для AST нодов я сделал свой pool, который освобождает ноды пачками сразу. Ноды аст с тривиальными деструкторами. В этом пуле Нет возможности ноды возвращать по одному в пул как свободные, ведь это бы усложнило код в либе пула. Думаю не так важно привязан нод к дереву, или нет. Главное чтобы деструктор пула был вызван после деструктора всего AST -- Я пробовал разобраться в ANTLR, который вроде был кодогенератором на java Есть моменты, что мне не понравились: — придётся тратить время на изучения структур, которые оно генерит, как обходить их аст, как они там устроены — при написании термов придётся тратить время на тесты и исправления недочётов, исходя из особенностей синтаксиса описания АНТЛР термов — зависить от изменений в новых версиях внешней чужой тулзы, не особо охота | |
--
1. Общая направленность — системный, прикладной на какой-то класс задач.
Назначение языка — для любых задач.
Уже не бывает. Надо определиться.
Хорошо, вот примерные цели применения (таргеты)
ksi-script:
- web аналог php
скриптовый игровой движок
простенькие desktop проги
maybe ~ для ui разметки
ksi-pl:
- компиляция
научные расчёты
maybe ~ аналог си плюс плюс
--
Ещё немного инфы про обработчик.
Вот в интерпретаторе php есть расширения (extensions)
Они добавляют системные функции, системные типы, константы, интерфейсы, и пр.
Некоторые примеры расширений php:
- для работы с СУБД mySQL
для работы с изображениями GD
для работы с http запросами CURL
Неплохо бы в обработчик ksi добавить систему расширений.
На чём писать эти расширения — на плюсах, или даже на самом кси
Почему бы не помечтать
Какие именно понадобятся расширения обработчика — отдельный вопрос
Я не призывааю как либо повторять путь php
Re[5]: target, typing
Здравствуйте, netch80
Вот информация по поводу назначения кси, и про типизацию.
Про остальное темы — отдельным ответом напишу
--
Типизация в кси зависит от выбранного режима
Всего их три:
— case 1 —
Режим ksi-pl
Тут только строгая типизация
Указывать тип ячейки обязательно как ограничение
Ещё допустимо ячейку ограничить не типом, а категорией
К системной категории _any относятся все типы.
А системная _struct назначена только на типы, которые сформированы командой #struct
Ячейка с функцией other_fn в примере выше может принимать только структурные значения как параметр.
Как будет фактически работать у ячейки ограничение по категориии — это уже вопрос реализации
Это может быть специальная динамическая run-time обёртка,
Или некий compile-time аналог шаблонов c++
— case 2 —
Режим ksi-script не допускает накладывать ограничения на тип ячейки
Динамическая типизация в нём позволяет устанавливать для ячейки значения любых типов
Эти типы могут быть отличны от типа начального значения, конечно же
— case 0 —
И наконец режим ksi-lang — это микс из (script + pl)
Тип ячейки можно указывать
Но если не указать, то ограничение типа ячейки будет по категории _any
Надо бы решить какой case реализовать приоритетнее в первую очередь.
Что перед этим ещё надо сделать.
Это были три режима обработчика
Хотя по необходимости можно сделать и отделные, более компактные, обработчики для некоторых case -ов
Вид обработки может быть: интерпретация, компиляция, трансляция
Думаю стоит начать с чего-то одного
--
Хорошо, вот примерные цели применения (таргеты)
ksi-script:
ksi-pl:
--
Ещё немного инфы про обработчик.
Вот в интерпретаторе php есть расширения (extensions)
Они добавляют системные функции, системные типы, константы, интерфейсы, и пр.
Некоторые примеры расширений php:
Неплохо бы в обработчик ksi добавить систему расширений.
На чём писать эти расширения — на плюсах, или даже на самом кси
Почему бы не помечтать
Какие именно понадобятся расширения обработчика — отдельный вопрос
Я не призываю как либо повторять путь php
Вот информация по поводу назначения кси, и про типизацию.
Про остальное темы — отдельным ответом напишу
--
Типизация в кси зависит от выбранного режима
Всего их три:
— case 1 —
Режим ksi-pl
Тут только строгая типизация
Указывать тип ячейки обязательно как ограничение
some_fn = #fn ($int: x y, $float: factor) : result_type {}
Ещё допустимо ячейку ограничить не типом, а категорией
some_fn = #fn (_any: param) : result_type {}
other_fn = #fn (_struct: param) : result_type {}
К системной категории _any относятся все типы.
А системная _struct назначена только на типы, которые сформированы командой #struct
Ячейка с функцией other_fn в примере выше может принимать только структурные значения как параметр.
Как будет фактически работать у ячейки ограничение по категориии — это уже вопрос реализации
Это может быть специальная динамическая run-time обёртка,
Или некий compile-time аналог шаблонов c++
— case 2 —
Режим ksi-script не допускает накладывать ограничения на тип ячейки
some_fn = #fn (x y factor) {}
Динамическая типизация в нём позволяет устанавливать для ячейки значения любых типов
Эти типы могут быть отличны от типа начального значения, конечно же
— case 0 —
И наконец режим ksi-lang — это микс из (script + pl)
Тип ячейки можно указывать
Но если не указать, то ограничение типа ячейки будет по категории _any
Надо бы решить какой case реализовать приоритетнее в первую очередь.
Что перед этим ещё надо сделать.
Это были три режима обработчика
Хотя по необходимости можно сделать и отделные, более компактные, обработчики для некоторых case -ов
Вид обработки может быть: интерпретация, компиляция, трансляция
Думаю стоит начать с чего-то одного
о парсере | |
Парсер неплохо бы сделать через общую библиотеку, которая не зависит от режима обработчика Я начал писать свой парсер таким образом, чтобы правила разбора писались в самом си++ декларативно Для AST нодов я сделал свой pool, который освобождает ноды пачками сразу. Ноды аст с тривиальными деструкторами. В этом пуле Нет возможности ноды возвращать по одному в пул как свободные, ведь это бы усложнило код в либе пула. Думаю не так важно привязан нод к дереву, или нет. Главное чтобы деструктор пула был вызван после деструктора всего AST -- Я пробовал разобраться в ANTLR, который вроде был кодогенератором на java Есть моменты, что мне не понравились: — придётся тратить время на изучения структур, которые оно генерит, как обходить их аст, как они там устроены — при написании термов придётся тратить время на тесты и исправления недочётов, исходя из особенностей синтаксиса описания АНТЛР термов — зависить от изменений в новых версиях внешней чужой тулзы, не особо охота | |
--
1. Общая направленность — системный, прикладной на какой-то класс задач.
Назначение языка — для любых задач.
Уже не бывает. Надо определиться.
Хорошо, вот примерные цели применения (таргеты)
ksi-script:
- web аналог php
скриптовый игровой движок
простенькие desktop проги
maybe ~ для ui разметки
ksi-pl:
- компиляция
научные расчёты
maybe ~ аналог си плюс плюс
--
Ещё немного инфы про обработчик.
Вот в интерпретаторе php есть расширения (extensions)
Они добавляют системные функции, системные типы, константы, интерфейсы, и пр.
Некоторые примеры расширений php:
- для работы с СУБД mySQL
для работы с изображениями GD
для работы с http запросами CURL
Неплохо бы в обработчик ksi добавить систему расширений.
На чём писать эти расширения — на плюсах, или даже на самом кси
Почему бы не помечтать
Какие именно понадобятся расширения обработчика — отдельный вопрос
Я не призываю как либо повторять путь php