ПКАСТЛ
Парадигма | императивный , рефлексивный |
---|---|
Разработано | Филипп Шокетт |
Разработчик | Филипп Шокетт |
Впервые появился | 2008 год |
Стабильная версия | 3,5 / 31 марта 2018 г |
ТЫ | Кросс-платформенный |
Лицензия | Меньшая стандартная общественная лицензия GNU |
Веб-сайт | www |
Под влиянием | |
С , Р |
PCASTL ) — (аббревиатура от Parent and Childset Accessible Syntax Tree Language это интерпретируемый язык программирования высокого уровня . Он был создан в 2008 году Филиппом Шокеттом. [1] PCASTL предназначен для облегчения написания самомодифицирующегося кода . В языке зарезервированы слова «родитель» и «дочерний набор» для доступа к узлам синтаксического дерева написанного в данный момент кода. [2]
Привет, мир
[ редактировать ]Программа « Привет, мир » довольно проста:
"Hello, world!"
или
print("Hello, world!")
сделаю то же самое.
Синтаксис
[ редактировать ]Синтаксис PCASTL заимствован из языков C и R. программирования Исходный код R версии 2.5.1 был изучен для написания грамматики и лексера, используемых в интерпретаторе PCASTL.
Влияния
[ редактировать ]Как и в R , операторы могут, но не обязательно, разделяться точкой с запятой . [3] Как и в R , переменная может менять тип в течение сеанса . Как и в C и R , PCASTL использует сбалансированные скобки ( { и } ) для создания блоков .
Операторы, найденные в PCASTL, имеют тот же приоритет и ассоциативность что и их аналоги в C. , [2] [4] Циклы for определяются как C. в ++
и --
операторы используются, как и в C, для увеличения или уменьшения переменной до или после ее использования в ее выражении.
Пример PCASTL с использованием for зарезервированного слова и ++
оператор :
for (i = 1; i < 4; i++) print(i)
Функции и комментарии в PCASTL определяются так же, как в R :
# function definition (comment)a = function(){ print("Hello, world!")}# function calla()
зарезервированные слова родительского и дочернего набора
[ редактировать ]Эти зарезервированные слова можно писать только строчными буквами и иначе они не будут распознаваться. Родительское . зарезервированное слово дает ссылку на родительский узел в синтаксическом дереве кода, в котором размещено это слово В следующем коде родительским узлом является оператор =
.
a = parent
Переменная « a » будет содержать ссылку на =
узел. Следующий код показывает, как получить ссылки на два дочерних узла оператора . =
с дочернего набора зарезервированным словом .
a.childset[0]a.childset[1]
Чтобы отобразить значение «a», в этом примере приведены несколько способов:
aa.childset[0].parenta.childset[1].parenta.childset[0].parent.childset[0].parent # and so on...
В следующем коде: мы назначаем сегмент кода правому дочернему элементу =
узел, мы выполняем =
node во второй раз, и мы вызываем вновь определенную функцию.
a.childset[1] = `function() print("hello")'execute(a)a()
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «pcosmos.ca» . Филипп Шокетт . Проверено 14 июня 2008 г.
- ^ Jump up to: а б «PCASTL: язык синтаксического дерева, доступный для родительского и дочернего набора» . Филипп Шокетт . Проверено 14 июня 2008 г.
- ^ «Введение в R» . Основная группа разработчиков R. Проверено 14 июня 2008 г.
- ^ Хэнли, Джери Р.; Эллиот Б. Коффман (1999). Решение проблем и проектирование программ на языке C, третье издание . Аддисон-Уэсли . ISBN 0-201-35748-8 .