Nova-Art is a custom systems-programming tool that transforms Roman Urdu scripts into optimized, executable C++ code. By bridging the gap between native language expression and high-performance computing, Nova-Art makes programming more accessible and intuitive.
We have successfully moved beyond lexical analysis. The engine now features a complete "source-to-binary" pipeline.
- Lexer (Scanner): Full tokenization of Urdu keywords, literals, and operators.
- Recursive Descent Parser: Hierarchical structuring of code into an Abstract Syntax Tree (AST).
- Transpiler: Context-aware conversion of AST nodes into C++17 source code.
- Automation Engine: Integrated "one-click" compilation that invokes
g++and runs the resulting binary automatically.
| Nova-Art Keyword | C++ Equivalent | Purpose |
|---|---|---|
rakho |
auto |
Variable declaration and assignment |
farmao |
std::cout |
Output/Print to console |
pocho |
std::cin |
User input (Type-safe) |
agar |
if |
Conditional logic (Coming Soon) |
jabtak |
while |
Iterative loops (Coming Soon) |
To ensure a smooth developer experience, please note the current scope of the Nova-Art engine:
- Declare Variables: Use
rakho name = 10. - Standard Output: Print strings and variables using
farmao. - User Interaction: Accept terminal input via
pocho. - Auto-Compile: The tool automatically creates an
output.cppand compiles it intoapp.exe. - Case Insensitivity: Keywords like
Farmao,farmao, andFARMAOare all recognized.
- Complex Math: Multi-step expressions (e.g.,
rakho x = 10 + 5 * 2) are currently being refined. - Custom Functions: All code currently lives within the
main()scope. - Error Recovery: If a syntax error is found, the transpiler reports it but does not attempt to "fix" the code for compilation.
With the core pipeline built, our next sprint focuses on Turing Completeness:
- Phase 4: Logic Gates: Implementing
agar(if) andwarna(else) nodes in the AST. - Phase 5: Loops: Adding
jabtak(while) for repetitive tasks. - Phase 6: Expression Parsing: Upgrading the parser to handle complex mathematical formulas using the Shunting-yard algorithm or recursive precedence.
- Write your Nova-Art script (e.g.,
tests/hello.nova):
farmao "Apna naam likhen:"
rakho naam = ""
pocho naam
farmao "Khushamdeed!"
farmao naam
- Run the Transpiler:
./build/Nova-Art tests/hello.nova
- Result: The engine will generate
output.cpp, compile it, and launch your program instantly.
- Language: C++17
- Build System: CMake
- Compiler Requirements: MinGW-w64 (g++) or Clang.
- Architecture: Abstract Syntax Tree (AST) with Unique Pointer ownership.
A special shout-out to [https://github.com/bfiza079-hub] for the constant motivation and for pushing me to take this project from an idea to a working transpiler. This project wouldn't have reached v1.0 without your help!