Chaga Programming Language: Chapter 1

About the language

  • The Chaga programming language began as a derivative of the C programming language. I developed the Chaga programming language to serve as a teaching tool for my programming languages class at Sonoma State University in the Department of Computer Science.
  • I've forked the Chaga programming language into two languages: Chaga (detailed below) and ChagaLite. ChagaLite is a subset of the Chaga programming language. ChagaLite is an interpreted language while Chaga is a compiled language.

Language design philosophy

  • The Chaga programming language focus is computation for the engineering and science disciplines. Chaga natively supports complex and imaginary numbers in addition to the usual floats and integers. Chaga utilizes 4-bit binary coded decimal (BCD) and string arithmentic for all numerical computation. Consequently, one can compute extremely large or small numbers.
  • The Chaga programming language supports pointers for dynamic memory allocation from the heap. This enables one to create linked lists, trees, graphs, hashes, and other data structures. I'm considering automatic garbage collection but have not decided on the exact technique to implement. The Rust programming language has some interesting techniques.
  • The Chaga programming language has some object-oriented influences via the attributes feature. For simplicity, the language is otherwise non-object oriented.

Language specification in Backus-Naur Form (BNF)


Copyright © 2025 Robert James Bruce.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is available at https://www.gnu.org/licenses/fdl-1.3.html