<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yash Arya</title>
    <description>The latest articles on DEV Community by Yash Arya (@yasharyapersonal).</description>
    <link>https://dev.to/yasharyapersonal</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4111199%2F1c6718a4-53a3-49cc-99c1-618d25bb65dc.jpg</url>
      <title>DEV Community: Yash Arya</title>
      <link>https://dev.to/yasharyapersonal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yasharyapersonal"/>
    <language>en</language>
    <item>
      <title>Ion+: An experimental low-level language with indentation scoping written in Python (Seeking feedback on AST &amp; frontend design)</title>
      <dc:creator>Yash Arya</dc:creator>
      <pubDate>Thu, 17 Sep 2026 11:23:30 +0000</pubDate>
      <link>https://dev.to/yasharyapersonal/ion-an-experimental-low-level-language-with-indentation-scoping-written-in-python-seeking-3j82</link>
      <guid>https://dev.to/yasharyapersonal/ion-an-experimental-low-level-language-with-indentation-scoping-written-in-python-seeking-3j82</guid>
      <description>&lt;p&gt;Hi everyone,&lt;/p&gt;

&lt;p&gt;I've been working on a compiler hobby project called &lt;strong&gt;Ion+&lt;/strong&gt;. The project explores combining low-level systems programming concepts (typed variables, manual memory handling, hardware-level control) with a clean, indentation-based syntax.&lt;/p&gt;

&lt;p&gt;The entire compiler frontend is written from scratch in Python to keep the pipeline clear, modular, and accessible before targeting an LLVM backend.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the Syntax Looks Like
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;Node&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
   &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;node_id&lt;/span&gt;
   &lt;span class="n"&gt;ptr&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;ip_address&lt;/span&gt;
   &lt;span class="n"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;is_active&lt;/span&gt;
   &lt;span class="n"&gt;byte&lt;/span&gt; &lt;span class="n"&gt;latency&lt;/span&gt;

&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;unsigned&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;MAX_RETRIES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;

&lt;span class="n"&gt;alloc&lt;/span&gt; &lt;span class="n"&gt;ptr&lt;/span&gt; &lt;span class="n"&gt;buffer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;addr&lt;/span&gt; &lt;span class="n"&gt;MAX_RETRIES&lt;/span&gt;

&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;Node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;network_ready&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;none&lt;/span&gt;

    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;attempts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;attempts&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;MAX_RETRIES&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;hardware&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ping&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;True&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="n"&gt;attempts&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Current Pipeline &amp;amp; Implementation
&lt;/h3&gt;

&lt;p&gt;The compiler frontend currently covers stages 1 through 4:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lexing &amp;amp; Scanning:&lt;/strong&gt; Regex-based tokenizer identifying keywords, types (&lt;code&gt;int&lt;/code&gt;, &lt;code&gt;byte&lt;/code&gt;, &lt;code&gt;ptr&lt;/code&gt;, &lt;code&gt;none&lt;/code&gt;), modifiers (&lt;code&gt;const&lt;/code&gt;, &lt;code&gt;volatile&lt;/code&gt;, &lt;code&gt;atomic&lt;/code&gt;, &lt;code&gt;alloc&lt;/code&gt;), operators, and literals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Indentation Handling:&lt;/strong&gt; Post-lexer stream processor that tracks indentation depth and automatically injects explicit &lt;code&gt;INDENT&lt;/code&gt; and &lt;code&gt;DEDENT&lt;/code&gt; tokens for block boundaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AST Construction:&lt;/strong&gt; Explicit node definitions (&lt;code&gt;nodes.py&lt;/code&gt;) representing program structures, typed variable declarations, member/call expressions, conditionals, and loops.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parser:&lt;/strong&gt; Recursive descent parser (&lt;code&gt;core_parser.py&lt;/code&gt;) converting token streams into a structured AST ready for semantic analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What You Can Test Right Now
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Parsing source files directly using the &lt;code&gt;.ionx&lt;/code&gt; extension.&lt;/li&gt;
&lt;li&gt;Inspecting token streams and generated AST structures via &lt;code&gt;main.py&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Experimenting with typed variable declarations, structs, and control-flow blocks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Looking for Contributors &amp;amp; Feedback
&lt;/h3&gt;

&lt;p&gt;Ion+ is open source and licensed under the &lt;strong&gt;MIT License&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Contributions, feedback, and discussions are welcome across multiple areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improving parser rules and grammar edge-case handling.&lt;/li&gt;
&lt;li&gt;Expanding AST node definitions.&lt;/li&gt;
&lt;li&gt;Planning symbol tables, type checking, and semantic validation passes.&lt;/li&gt;
&lt;li&gt;Preparing the foundation for LLVM IR code generation.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Writing test cases and improving documentation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/YashAryaPersonal/ion-plus" rel="noopener noreferrer"&gt;https://github.com/YashAryaPersonal/ion-plus&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Web Preview:&lt;/strong&gt; &lt;a href="https://ion-plus-preview.onrender.com/" rel="noopener noreferrer"&gt;https://ion-plus-preview.onrender.com/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;License:&lt;/strong&gt; MIT&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feel free to check out the repository, try the code, open issues, or share your thoughts!&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>opensource</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Why I Decided to Build My Own Programming Language at 14 (And What I've Learned So Far)</title>
      <dc:creator>Yash Arya</dc:creator>
      <pubDate>Sat, 05 Sep 2026 13:38:12 +0000</pubDate>
      <link>https://dev.to/yasharyapersonal/building-a-low-level-programming-language-in-python-and-llvm-looking-for-advice-and-collaborators-552d</link>
      <guid>https://dev.to/yasharyapersonal/building-a-low-level-programming-language-in-python-and-llvm-looking-for-advice-and-collaborators-552d</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwno9ma17o88cjoyat4ei.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwno9ma17o88cjoyat4ei.png" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;
Hello, Dev.to community! &lt;/p&gt;

&lt;p&gt;My name is Yash Arya. I am a 14-year-old student with a massive passion for computer science. Today, I want to humbly share a journey I recently started—one that is easily the most challenging and exciting thing I have ever attempted. &lt;/p&gt;

&lt;p&gt;I am building my own low-level programming language from scratch. It is called &lt;a href="https://ion-plus-preview.onrender.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Ion+&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When we first start coding, languages feel like magic. We type words into a screen, and the computer somehow just &lt;em&gt;knows&lt;/em&gt; what to do. But recently, I started wondering: what actually happens under the hood? How does the text I write become a set of instructions that a machine can execute? &lt;/p&gt;

&lt;p&gt;To find out, I decided the best way to learn was to build one myself. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Architecture of Ion+
&lt;/h2&gt;

&lt;p&gt;I wanted this project to bridge two worlds: the readability and developer-friendliness of Python, and the raw performance of low-level systems. Here is the architecture I chose for Ion+:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;The Frontend (Python):&lt;/strong&gt; I am using Python to handle all the text processing. Python is beautiful for writing complex logic quickly, making it perfect for the Lexer and Parser stages.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The Backend (LLVM):&lt;/strong&gt; To give the language real power and speed, the ultimate goal is to pass the parsed code to an LLVM backend for optimization and machine code generation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My Milestone: Conquering the Lexer
&lt;/h2&gt;

&lt;p&gt;When I first opened an empty code file, I had no idea where to start. But I learned that the first step of a compiler is the Lexer (or tokenizer). &lt;/p&gt;

&lt;p&gt;I am incredibly proud to say that &lt;strong&gt;the Lexer for Ion+ is completely finished!&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Writing the Lexer taught me how to break raw source code down into a stream of meaningful tokens. It forced me to think about edge cases, string literals, and how a computer distinguishes between a keyword, an operator, and a variable name. Getting that code to successfully output a clean list of tokens was one of the best feelings I’ve had in programming.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Current Challenge: Hitting the "Parser" Wall
&lt;/h2&gt;

&lt;p&gt;I want to be completely honest about where the project is right now. I have reached the parsing stage—attempting to turn those tokens into an Abstract Syntax Tree (AST) using Recursive Descent. &lt;/p&gt;

&lt;p&gt;It is incredibly intimidating. Looking at the logic required to handle operator precedence and tree structures feels like staring at a massive brick wall. For the first time in this project, I realized I had reached the limits of what I currently know. &lt;/p&gt;

&lt;p&gt;I decided to take a step back and breathe. But I am not giving up. I am taking this time to study, to reach out to the community, and to learn how compiler engineers tackle this exact problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Humble Request for Community Wisdom
&lt;/h2&gt;

&lt;p&gt;I am building Ion+ completely open-source under the &lt;strong&gt;MIT license&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;I have pushed this project as far as I can on my own, but to get over this next wall, I would love the guidance of developers who have walked this path before me. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here is the repository:&lt;/strong&gt; &lt;a href="https://github.com/YashAryaPersonal/ion-plus" rel="noopener noreferrer"&gt;YashAryaPersonal/ion-plus&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;And a Minimal Web&lt;/strong&gt; which may develop as documentation for it in future: &lt;a href="https://ion-plus-preview.onrender.com/" rel="noopener noreferrer"&gt;ion-plus-preview.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are a compiler enthusiast, a Python developer, or just someone who loves supporting open-source side projects, I would be deeply honored if you took a look. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  If you have advice on structuring an AST, please drop it in the comments.&lt;/li&gt;
&lt;li&gt;  If you want to contribute, open a pull request!&lt;/li&gt;
&lt;li&gt;  And if you just want to support a young developer trying to build something cool, a star on the repo would mean the world to me.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I have so much respect for the developers on this platform, and I cannot wait to learn from all of you. Thank you for reading my story, and I will be sure to post updates as Ion+ continues to grow!&lt;/p&gt;

</description>
      <category>python</category>
      <category>beginners</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
