LINUX.ORG.RU

[TWIMC] а вот и язык-конструктор


0

0

http://www.pi-programming.org/What.html

There is only one language construct in π: the pattern. Patterns are, simply speaking, EBNF-expressions with an associated meaning; a pattern can be easiest understood as a function with a syntactically complex (context-free) «signature»

ещё один вариант REBOL-оподобного подхода к языку-конструктору. правда, оптимизационных паттернов в явном виде нет, к сожалению, и здесь

★★★★★

я не совсем понял, это препроцессор что ли ?

gavv
()

1. он не первый -- 27 лет назад уже был http://en.wikipedia.org/wiki/Lithe_(programming_language)

2. выписывать постоянно скобочки в кавычках мне влом

3. и че делать, если хочется одним определением ввести max, годящийся для max(2,7) и сразу же 2 `max` 7 ?

4. вообще у него документация есть? (сорри, у меня инет без картинок, так что я и проглядеть мог)

5. как у него с приоритетами?

6. function with a syntactically complex (context-free) "signature" возможно хорошая идея, меня интересуют более сложные, чем линейные, сигнатуры функций (хотя мне кажется они иногда не должны быть context-free)

www_linux_org_ru ★★★★★
()

> правда, оптимизационных паттернов в явном виде нет, к сожалению, и здесь

оптимизационные патерны весьма не просты, т.к. друг с другом не коммутируют

www_linux_org_ru ★★★★★
()

7. как у него с поддржкой синтаксиса а-ля питон?

8. вообще у него имхо слишком много свободы -- нужен не произвольный синтаксис, а комбинация кирпичиков типа унарный/бинарный/тернарный оператор, "замкнутая форма" (if...then...else...end) и возможно еще некоторых (и вот при отыскании этих некоторых он может пригодится)

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

>вообще у него имхо слишком много свободы

и чем это плохо?

>а комбинация кирпичиков типа

насколько я понял, он позволяет "диалектом первого уровня" ввести такие кирпичики - т.е. как в Forth'е и REBOL'е, определённое слово тут же может быть использовано

jtootf ★★★★★
() автор топика
Ответ на: комментарий от www_linux_org_ru

>друг с другом не коммутируют

это решаемо введением отношения упорядоченности

jtootf ★★★★★
() автор топика
Ответ на: комментарий от www_linux_org_ru

>он не первый

не сомневаюсь

>и че делать, если хочется одним определением

ввести определение такого определения

>вообще у него документация есть

походу нет. впрочем, она простой как валенок

>меня интересуют более сложные, чем линейные, сигнатуры функций

для чего, например?

jtootf ★★★★★
() автор топика
Ответ на: комментарий от gavv

>здесь оператор "?:" - это оператор языка пи ?

оператор языка Java, насколько я могу судить. у самого пи конструкций нет никаких

jtootf ★★★★★
() автор топика
Ответ на: комментарий от www_linux_org_ru

>как у него с поддржкой синтаксиса а-ля питон?

он использует EBNF. ты можешь описать питоновский синтаксис с помощью EBNF?

jtootf ★★★★★
() автор топика
Ответ на: комментарий от jtootf

>> и че делать, если хочется одним определением

> ввести определение такого определения

эээ... а оно получится типизированным? в нем есть такие типы?

>> меня интересуют более сложные, чем линейные, сигнатуры функций

> для чего, например?

для сишного switch-а например

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от jtootf

и вместо java, можно использовать любой язык. прошу прощения за глупый вопрос; сейчас как раз занимаюсь написанием dsl

gavv
()
Ответ на: комментарий от jtootf

> он использует EBNF. ты можешь описать питоновский синтаксис с помощью EBNF?

а там кажись есть спец токены INDENT UNDENT и все помещается в EBNF

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от jtootf

>>друг с другом не коммутируют

>это решаемо введением отношения упорядоченности

сомневаюсь, что этого хватит -- тут скорее нужно че-то интеллектуальнее

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от jtootf

> походу нет. впрочем, она простой как валенок

да? а какая у пи система типов? я пока не понял

9. на тему всяких там фортов и т.п. -- как у него с определением взаимно рекурсивных функции?

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

>я не знаю, но на пи без проблем его определить
я вот о чем спрашивал: пи - это препроцессор для любого другого языка ? (в принципе)

gavv
()
Ответ на: комментарий от jtootf

> ввести определение такого определения

я честно говоря неточно высказался

допустим, я хочу, чтобы *все* двухаргументные функции становились бинарными операторам, будучи заключены в обратные кавычки (ну как в хаскеле) -- это же вроде не контекстно-свободно и на пи не выражается?

foo `max` bar -----> max(foo,bar)

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от gavv

> походу он тем отличается от lithe, что нет в нем ни типов, ни ничего

In addition to that, patterns can be named and in order to provide type safety, each pattern can have an (explicit) type.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от gavv

>пи - это препроцессор для любого другого языка ? (в принципе)

а что считать препроцессором? если на выходе будет машкод, будет ли пи препроцессором для машкода?

я думаю, транслятор будет корректней

jtootf ★★★★★
() автор топика
Ответ на: комментарий от www_linux_org_ru

>сомневаюсь, что этого хватит -- тут скорее нужно че-то интеллектуальнее

аргументация?

jtootf ★★★★★
() автор топика
Ответ на: комментарий от www_linux_org_ru

>а там кажись есть спец токены INDENT UNDENT и все помещается в EBNF

ну значит ответ - да. можно было у меня и не спрашивать

jtootf ★★★★★
() автор топика
Ответ на: комментарий от www_linux_org_ru

>для сишного switch-а например

а зачем тебе сишный свитч?

jtootf ★★★★★
() автор топика
Ответ на: комментарий от jtootf

> кстати, интересно было бы расширить его до VW-грамматик

до какого-то их подмножества, а то ведь для VW-грамматик вообще говоря разбор тьюринг-полный

а так да, интересно бы получилось

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от jtootf

>> сомневаюсь, что этого хватит -- тут скорее нужно че-то интеллектуальнее

> аргументация?

иначе оптимизатор в компиляторе был бы очень простым

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от jtootf

> ну значит ответ - да. можно было у меня и не спрашивать

эти токены есть в грамматике питона, а вот в есть ли они в пи -- это вопрос

www_linux_org_ru ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.