Присоединяйтесь к совместному написанию программы!

  • Автор темы gerich
  • Дата начала
G

gerich

постскрипт- язык для описания графики в адобевских продуктах
 
G

Gamlet

Слышал. На нем скрипты во флеш пишутся. Знаю.Знаю. Неплохо, но к нему должен прилагатся видео редактор. B)
Давай тогда лучше вроде пхп напишим.
 
G

gerich

он стековый, то есть вся работа с памятью устроена по принципу стека
для наглядности приведу небольшую прогу на пс
2 3.14 sin add

она эквивалентна следующему:
2+sin(3.14)

интерпретатор перебирает все выражения слева направо.
если там стоит число, то он его кладёт на вершину стека
то есть сначала стек пуст, потом в нём 2, потом 2 и 3 (3 на вершине).
после этого он встречает команду sin, которая берёт из стека число,
удаляет его оттуда и кладёт туда синус трёх то есть 0.
потом команда add берёт из стека 2 числа и кладёт туда их сумму

надеюсь вы знаете что есть стек?


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

и написать EXE на постскрипте нельзя, он работает только с графикой, и интерпретируется принтером при печати, или спец средой
 
G

Gamlet

Посмотрите прогу, которую я написал. Посмотрите на сайте webostrovok.by.ru ;)
 
G

Gamlet

и написать EXE на постскрипте нельзя, он работает только с графикой, и интерпретируется принтером при печати, или спец средой
Конечно нельзя. Знаешь флеш игры? Вот они на нем пишутся. :)
 
G

gerich

По моему они пишутся в Macromedia Flash (или чё-то такое). Я смотрел код флешек, но там (как мне кажется) ни чего общего с постскриптами
 
G

gerich

Вот я решил написать пару слов о моих идеях.
Типы данных.
В нашем языке будет множество различных типов данных, которые условно можно разделить на записываемые непосредственно ввиде текста и создаваемые только командами языка
В первую группу входят числа, строки, ключи, массивы, исполняемые массивы.

Число - это самое обычное число, может быть записано в разных системах счисления.

Строка - последовательность символов начинающаяся и заканчивающаяся символом "
Для того, чтобы вставить в строку символ " надо написать ""
В строку могут входить символы пробела и переноса строки

Ключ - последовательность символов начинающаяся и заканчивающаяся символом \
Для того, чтобы вставить в ключ символ \ надо написать \\
В ключ не могут входить символы пробела и переноса строки
Пустой ключ существовать не будет.
Ключи предназначены для работы со словарями
Запись \+\ отличается от + тем, что если встречается \+\, то интерперетатор сразу кладёт в стек +, а не ищет команду в словаре и не выполняет её.

Массив - последовательность выражений начинающаяся с символа [ и заканчивающаяся символом ]
Между ними могут находиться любые выражения. Всё, что находится между квадратными скобками сначала выполняется, а потом уже создаётся массив.
В массиве могут содержаться элементы любого типа, в том числе и типа массив
Примеры:
[ 1 5 3 465 ]
[ "hello world" ":)" ]
[ [ 1 2 3 ] [ 4 5 6 ] [ 7 8 9 ] ]
Для доступа к элементам массива используются специальные команды.

Исполняемый массив - последовательность выражений начинающаяся с символа { и заканчивающаяся символом }
Между ними могут находиться любые выражения. Всё, что находится между фигурными скобками не выполняется на этапе создания массива.
Для выполнения массива используются специальные команды.
На самом деле исполняемый массив - это конструкция подобная begin .. end в паскале.

Во вторую группу входят словари, стеки, файлы и т.д.
Я рассмотрю словари и стеки.

Словарь-это набор пар ключ-объект.
Когда программа встречает какое-либо выражение, то она сначала просматривает весь словарь и ищет его определение.
Если определение найдено, то если под данным ключом хранится испоняемый массив, то он выполняется, иначе в стек кладётся
соответсвующее выражение.

Стек-массив, у которого можно работать с верхними элементами (удалять и добавлять)
В языке будет несколько стеков:
стек данных-стек, где хранятся все объекты
запись
3 4 +
кладёт свои данные на вершину стека данных.
стек словарей-стек, где хранятся все словари.
То есть определений функции + может быть несколько: в стандартном словаре и в новом словаре, но программа выберет определение из самого верхнего
словаря в стеке, таким образом можно переопределить функцию +.

Алгоритмические структуры.
В каждом языке программирования есть структуры типа if .. then .. else .. , for .. ,while .. и тому подобное.
Наш язык не будет исключением.
вот пример условия
a 2 > { "a > b" message } if
это эквивалентно
if a>b then message("a > b")

Это пока всё, что я хотел рассказать!
 
G

Gamlet

Для: gerich
Ндам. Мне идея DB как то ближе. Помниш я тебе учебник присылал. ДБ это язык для самых обычных прльзователей. Он прост. А ты хочешь сделать мощный но сложный язак. Может интерфейс от ДБ , но стековая система?

А то
a 2 > { "a > b" message } if
как то убито. Встречались с этом в С++. Не очень весело. :)

А еще лучше создать полувизуальный язык. Я видел как то визуальный компилятор ассемблера. Нечто вроде этого неплохая мысль. Язык невизуальный, но визуально настраиваемый (видны функции, но не обьекты типа кнопок.)
 
G

Gamlet

Мне как полному идиоту скажи-стек-это что? B)
 
G

gerich

Объясняю.
Стек-это список состоящий из нескольких элементов, в котором разрешено работать с последним элементом.
То есть это массив, у которого нельзя взять произвольный элемент
вот пример стека
4
8
34
57
Мы можем положить на вершину стека какие-либо данные, например 67, тогда он будет таким
67
4
8
34
57
Для того, чтобы добраться до числа 8 надо убрать с вершины 67 и 4.
Когда кладёшь в стек число это называется push
А когда выталкиваешь с вершины число - pop

Вот в принципе и всё!
 
G

gerich

Не знаю, интересно ли кому, но я уже по-немногу пишу язык на С++ (я его недели 2 назад изучил))).
Назову Redef, так как у него есть большие возможности по переопределению самого языка, в принципе его можно переопределить до синтаксиса любого языка, то есть там будет набор стандартных правил интерпретации кода, к которым можно добавлять свои. Вот так.

Просьба, если кто заинтерисован-пишите в контакт(www.vkontakte.ru Сергей [Герыч] Герасимов)
 
G

GROMILA

Веселые вы ребята :))))

ИТОГО
хотите сделать "программу для расширения возможностей любого приложения"

Если обобщить постинги, то это значит:
1. Обеспечить по нажатию на клаву вызов вашей программы
2. Программа будет написана на вашем языке (в графическом либо текстовом представлении - дискуссия затянулась)
3. Программа будет иметь возможность вызывать сторонние ActiveX

Это все, что вы хотите сделать????
 
P

Pasha

Для: GROMILA
Нет, они пытаются написать скриптовый движок, который можно прицепить к существующему приложению.
 
G

GROMILA

Нет, они пытаются написать скриптовый движок.
Хм, нет?
а чем "скриптовый движок" отличается от тех функций, которые я перечислил?
пункт 2 это и есть

который можно прицепить к существующему приложению
это пункт 1

для чего? - это пункт 3
 
P

Pasha

<!--QuoteBegin-GROMILA+21:10:2007, 17:50 -->
<span class="vbquote">(GROMILA @ 21:10:2007, 17:50 )</span><!--QuoteEBegin-->а чем "скриптовый движок" отличается от тех функций, которые я перечислил?
[snapback]82531" rel="nofollow" target="_blank[/snapback]​
[/quote]Под твое описание подходит система плагинов. А создателям Redef очень хочется сделать именно макросы :)
IMHO, бесполезная трата времени.
 
G

gerich

А вот мне хочется-и баста!))

Тем более я тренеруюсь в С++ проги писать
 
G

Guest

если хочется пусть делают, опыт создания прог всегда пригодится... и мне в том числе)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!