Arcana: Shape the Language. Control the Machine

Zick95101 pts0 comments

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...

arcana language loop while code block

Related Articles