For faster navigation, this Iframe is preloading the Wikiwand page for PCASTL.

PCASTL

PCASTL
Paradigmimperative, reflective
Designed byPhilippe Choquette
DeveloperPhilippe Choquette
First appeared2008; 16 years ago (2008)
Stable release
3.5 / March 31, 2018; 6 years ago (2018-03-31)
OSCross-platform
LicenseGNU Lesser General Public License
Websitewww.pcosmos.ca/pcastl/
Influenced by
C, R

The PCASTL (an acronym for by Parent and Childset Accessible Syntax Tree Language) is an interpreted high-level programming language. It was created in 2008 by Philippe Choquette.[1] The PCASTL is designed to ease the writing of self-modifying code. The language has reserved words parent and childset to access the nodes of the syntax tree of the currently written code.[2]

Hello world

[edit]

The "Hello world program" is quite simple:

"Hello, world!"

or

print("Hello, world!")

will do the same.

Syntax

[edit]

The syntax of PCASTL is derived from programming languages C and R. The source of R version 2.5.1 has been studied to write the grammar and the lexer used in the PCASTL interpreter.

Influences

[edit]

Like in R, statements can, but do not have to, be separated by semicolons.[3] Like in R, a variable can change type in a session. Like in C and R, PCASTL uses balanced brackets ({ and }) to make blocks.

Operators found in PCASTL have the same precedence and associativity as their counterparts in C.[2][4] for loops are defined like in C. ++ and -- operators are used like in C to increment or decrement a variable before or after it is used in its expression.

An example of PCASTL using the for reserved word and the ++ operator:

for (i = 1; i < 4; i++) print(i)

Functions and comments in PCASTL are defined like in R:

# function definition (comment)
a = function()
{
   print("Hello, world!")
}

# function call
a()

parent and childset reserved words

[edit]

Those reserved words can only be written lowercase and will not be recognized otherwise. The parent reserved word gives a reference to the parent node in the syntax tree of the code where the word is placed. In the following code, the parent node is the operator =.

a = parent

The variable "a" will hold a reference to the = node. The following code shows how to get references to the two child nodes of the operator = with the childset reserved word.

a.childset[0]
a.childset[1]

To display the value of "a", some ways are given in this example:

a
a.childset[0].parent
a.childset[1].parent
a.childset[0].parent.childset[0].parent # and so on...

In the following code: we assign a code segment to the right child of the = node, we execute the = node a second time and we call the newly defined function.

a.childset[1] = `function() print("hello")'
execute(a)
a()

See also

[edit]

References

[edit]
  1. ^ "pcosmos.ca". Philippe Choquette. Retrieved 2008-06-14.
  2. ^ a b "PCASTL: by Parent and Childset Accessible Syntax Tree Language". Philippe Choquette. Retrieved 2008-06-14.
  3. ^ "An Introduction to R". R Development Core Team. Retrieved 2008-06-14.
  4. ^ Hanly, Jeri R.; Elliot B. Koffman (1999). Problem Solving & Program Design in C, Third Edition. Addison-Wesley. ISBN 0-201-35748-8.
[edit]
{{bottomLinkPreText}} {{bottomLinkText}}
PCASTL
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?