PCASTL
{{ infobox programming language
| designer = Philippe Choquette
| developer = Philippe Choquette
| latest_release_version = 3.5
| latest_release_date = {{Start date and age|2018|03|31}}
| license = GNU Lesser General Public License
| operating_system = Cross-platform
| paradigm = imperative, reflective
| year = {{Start date and age|2008}}
| website = {{URL|www.pcosmos.ca/pcastl/}}
}}
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.{{cite web|access-date=2008-06-14|url=http://www.pcosmos.ca/|title=pcosmos.ca |publisher=Philippe Choquette }} 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.{{cite web|access-date=2008-06-14 | url=http://www.pcosmos.ca/pcastl/|title=PCASTL: by Parent and Childset Accessible Syntax Tree Language |publisher=Philippe Choquette }}
Hello world
The "Hello world program" is quite simple:
"Hello, world!"
or
print("Hello, world!")
will do the same.
Syntax
=Influences=
Like in R, statements can, but do not have to, be separated by semicolons.{{cite web|access-date=2008-06-14|url=https://cran.r-project.org/doc/manuals/R-intro.html|title=An Introduction to R |publisher=R Development Core Team }} 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.{{cite book | last=Hanly | first=Jeri R. | author2=Elliot B. Koffman | title=Problem Solving & Program Design in C, Third Edition | publisher=Addison-Wesley | year=1999 | isbn=0-201-35748-8 | url-access=registration | url=https://archive.org/details/problemsolvingpr00hanl_1 }} 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=
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
{{Portal|Free and open-source software}}
References
{{Reflist}}
External links
- [http://www.pcosmos.ca/pcastl/ PCASTL: by Parent and Childset Accessible Syntax Tree Language]
{{FOSS}}
{{DEFAULTSORT:Pcastl}}
Category:Free and open source interpreters
Category:Procedural programming languages