PCASTL

From Seo Wiki - Search Engine Optimization and Programming Languages

Jump to: navigation, search
PCASTL
Paradigm imperative, reflective
Appeared in 2008
Designed by Philippe Choquette
Developer Philippe Choquette
Stable release 1.9 (September 18, 2009; 46379477 ago)
Influenced by C, R
OS Cross-platform
License GNU General Public License
Website http://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[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].

Contents

[edit] Hello world

The "Hello world program" is quite simple:

"Hello, world!"

or

print("Hello, world!")

will do the same.

[edit] Syntax

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.

[edit] Influences

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()

[edit] 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()

[edit] See also

[edit] Notes

  1. "pcosmos.ca". Philippe Choquette. http://www.pcosmos.ca/. Retrieved 2008-06-14. 
  2. 2.0 2.1 "PCASTL: by Parent and Childset Accessible Syntax Tree Language". Philippe Choquette. http://www.pcosmos.ca/pcastl/. Retrieved 2008-06-14. 
  3. "An Introduction to R". R Development Core Team. http://cran.r-project.org/doc/manuals/R-intro.html. 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] External links

Personal tools

Served in 1.500 secs.