Treelang
Treelang is a "toy" programming language distributed with the GNU Compiler Collection (GCC) to demonstrate the features of its code-generation backend. It was developed by Tim Josling, based on a language called Toy created by Richard Kenner. During the GCC 4.3 release cycle, a patch was committed to remove the language,[1] because of high maintenance costs outweighing its benefits and also because it was no longer considered a good front-end example by GCC developers.[2]
Overview
Treelang is loosely based on the C programming language, but omits complex features such as pointers, arrays, and records. It has never been completed, although there were plans to gradually add more demonstrative features.
From the documentation distributed with GCC:[3]
- Treelang is a sample language, useful only to help people understand how to implement a new language front end to GCC. It is not a useful language in itself other than as an example or basis for building a new language. Therefore only language developers are likely to have an interest in it.
Example
The following example is from the Treelang documentation, modified by adding the main function, and is included to give an impression of the Treelang syntax and semantics:
// function prototypes
// function 'add' taking two ints and returning an int
external_definition int add(int arg1, int arg2);
external_definition int subtract(int arg3, int arg4);
external_definition int first_nonzero(int arg5, int arg6);
external_definition int double_plus_one(int arg7);
external_definition int main();
// function definition
add
{
// return the sum of arg1 and arg2
return arg1 + arg2;
}
subtract
{
return arg3 - arg4;
}
double_plus_one
{
// aaa is a variable, of type integer and allocated at the start of the function
automatic int aaa;
// set aaa to the value returned from add, when passed arg7 and arg7 as the two parameters
aaa=add(arg7, arg7);
aaa=add(aaa, aaa);
aaa=subtract(subtract(aaa, arg7), arg7) + 1;
return aaa;
}
first_nonzero
{
// C-like if statement
if (arg5)
{
return arg5;
}
else
{
}
return arg6;
}
// Like C, 'gtreelang' needs the main to be defined to create an executable.
main
{
return double_plus_one(5);
}
Note that C-style comments (with the /* */ syntax) are not legal in Treelang.
Commentary
As a simple, C-like language, Treelang is interoperable with C and C++ with some minor datatype caveats. The designated filename extension for Treelang source code files is .tree. Treelang source code can be compiled by invoking gcc normally or as gtreelang. Both invocations run the Treelang frontend (internally labelled tree1) and produce machine code as output. Treelang can also issue some warning messages.[4]
References
- ^ GCC Wiki (online)
- ^ "Rafael Espindola - Re: Patch: Delete treelang".
- ^ Treelang Documentation Archived 2011-07-19 at the Wayback Machine
- ^ Treelang Documentation, § 5 - Compiler Overview Archived 2011-07-19 at the Wayback Machine
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.