GitHub - Zick9510/Arcana: Arcana: A Languages Oriented Programming Language · GitHub
/" data-turbo-transient="true" />
Skip to content
Search or jump to...
Search code, repositories, users, issues, pull requests...
-->
Search
Clear
Search syntax tips
Provide feedback
--><br>We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
Saved searches
Use saved searches to filter your results more quickly
-->
Name
Query
To see all available qualifiers, see our documentation.
Cancel
Create saved search
Sign in
/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
Zick9510
Arcana
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>139 Commits<br>139 Commits
include
include
src
src
tests
tests
.gitignore
.gitignore
IDEA.md
IDEA.md
LICENSE
LICENSE
Makefile
Makefile
README.md
README.md
run_tests.py
run_tests.py
View all files
Repository files navigation
Arcana
Shape the Language. Control the Machine.
Arcana is an experimental, metaprogramming-first and language-oriented systems programming language.<br>It is designed for developers who find existing languages too rigid and want the power to extend their tool without sacrificing the performance of a formal<br>LLVM pipeline.
In Arcana, syntax is not a law-it is a malleable tool.
Project Status: Early Alpha (Experimental) [v0.0.4]
Arcana is currently in a heavy development phase. It is a proof-of-concept for language-oriented programming and is not suitable for production use yet .
The Philosophy
Most languages force you to wait for a committee to add a new feature. Arcana gives you the Arcane system:<br>a way to expand the compiler's Abstract Syntax Tree (AST) directly from your source code.
Arcana inverts this relationship. Through the Arcane and Trait systems, the language becomes a...
Side-Effect Clarity
Strict visual separation between logic and data:
Code Blocks {}: Represent actions and side effects.
Expressions (): Represent values.
Note: An expression can modify or assign values (e.g., ++i, (j = 2), (int k = 3)).
The Arcane System
The heart of Arcana is the ability to define your own language constructs.
Example: Custom Loop
Define a loop that executes a block a specific number of times without the boilerplate of a traditional for loop.
while (a) {<br>block;<br>a = a - 1;
};
func main() -> int {
int x = 10;
loop [10] {<br>x = x + 9;
return x;
}">arcane CustomLoop (loop: key, block: code) {
rules [<br>@simple: loop [ block ];
];
@simple {
loop [int a] {
while (a) {<br>block;<br>a = a - 1;
};
func main() -> int {
int x = 10;
loop [10] {<br>x = x + 9;
return x;
The Trait System
Traits represent the behavioral properties of a code block. You can define how a block executes and interacts with the machine's state. While Traits are<br>essential for defining new constructs within the Arcane system, they are universal primitives that can be applied to any block of code to enforce specific<br>behaviors.
Example: Do While
The following example demonstrates how a post-condition behavior (a do-while pattern) is implemented by assigning the #loop trait to the code<br>block.
#loop {<br>body;
if (!cond) { break; }<br>};
func main() -> int {
int i = 4;<br>int j = 1;
do {<br>i = i - 1;<br>j = j * 2;
} while (i);
return j;
}">arcane DoWhile (do: key, body: code, while: key, cond: expr) {<br>rules [<br>@standard : do [ body while cond ];
];
@standard {
do #loop {<br>body;
if (!cond) { break; }<br>};
func main() -> int {
int i = 4;<br>int j = 1;
do {<br>i = i - 1;<br>j = j * 2;
} while (i);
return j;
Join the Arcane
Arcana is a call to action for anyone who believes a language should adapt to the programmer, not the other way around. We aren't just building a tool to write<br>code-we are building a way to redefine the relationship between the developer and the machine .
We are looking for contributors. Whether you are just starting your journey or you're someone who wants to break and rewrite the rules of what a language<br>should look like, your perspective is what moves this project forward .
Let's build something impossible.
Contact:
Discord panqueque.boo
Email salastomasalejandro1@gmail.com
About
Arcana: A Languages Oriented Programming Language
Topics
programming-language
parser
compiler
checker
llvm
metaprogramming
help
optimizer
ast
english
lexer
help-wanted
emitter
espanol
cpp23
Resources
Readme
License
Apache-2.0 license
Uh oh!
There was an error while loading. Please reload...