<?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: Yogesh Taparia </title>
    <description>The latest articles on DEV Community by Yogesh Taparia  (@yogeshsince2023).</description>
    <link>https://dev.to/yogeshsince2023</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%2F3997023%2Fcb721903-2147-46ff-9e53-eb9f9fdf02b8.png</url>
      <title>DEV Community: Yogesh Taparia </title>
      <link>https://dev.to/yogeshsince2023</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yogeshsince2023"/>
    <language>en</language>
    <item>
      <title>How I Built and Published My Own Programming Language, YO</title>
      <dc:creator>Yogesh Taparia </dc:creator>
      <pubDate>Sat, 27 Jun 2026 11:27:39 +0000</pubDate>
      <link>https://dev.to/yogeshsince2023/how-i-built-and-published-my-own-programming-language-yo-1fpe</link>
      <guid>https://dev.to/yogeshsince2023/how-i-built-and-published-my-own-programming-language-yo-1fpe</guid>
      <description>&lt;p&gt;As a Computer Science student, I noticed that most projects revolve around web applications, CRUD systems, or mobile apps. While those projects are valuable, I wanted to challenge myself with something that would deepen my understanding of how programming languages actually work under the hood.&lt;/p&gt;

&lt;p&gt;That led me to build &lt;strong&gt;YO&lt;/strong&gt;, a custom interpreted programming language written entirely in Python.&lt;/p&gt;

&lt;p&gt;The Motivation&lt;/p&gt;

&lt;p&gt;Whenever we write code in Python, Java, or C++, we rarely think about what happens after pressing Run.&lt;/p&gt;

&lt;p&gt;Questions like these motivated me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How does a programming language understand text?&lt;/li&gt;
&lt;li&gt;How does it recognize variables and keywords?&lt;/li&gt;
&lt;li&gt;How are loops and conditions executed?&lt;/li&gt;
&lt;li&gt;How does source code become something the computer can understand?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of only reading about compilers and interpreters, I decided to build one.&lt;/p&gt;

&lt;p&gt;What is YO?&lt;/p&gt;

&lt;p&gt;YO is a custom interpreted programming language that allows users to write programs using its own syntax and execute them through a Python-based interpreter.&lt;/p&gt;

&lt;p&gt;The project includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lexer&lt;/li&gt;
&lt;li&gt;Parser&lt;/li&gt;
&lt;li&gt;Runtime Environment&lt;/li&gt;
&lt;li&gt;Error Handling System&lt;/li&gt;
&lt;li&gt;Standard Library Modules&lt;/li&gt;
&lt;li&gt;Test Programs&lt;/li&gt;
&lt;li&gt;PyPI Package&lt;/li&gt;
&lt;li&gt;GitHub Repository&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How It Works&lt;/p&gt;

&lt;p&gt;The execution pipeline follows these stages:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Lexical Analysis
&lt;/h3&gt;

&lt;p&gt;The lexer reads source code and converts it into tokens.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let age = 22
print(age)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tokens:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LET
IDENTIFIER(age)
EQUALS
NUMBER(22)
PRINT
IDENTIFIER(age)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Parsing&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The parser transforms tokens into an Abstract Syntax Tree (AST).&lt;/p&gt;

&lt;p&gt;The AST provides a structured representation of the program that can later be executed by the interpreter.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Interpretation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The interpreter walks through the AST and performs operations such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Variable assignments&lt;/li&gt;
&lt;li&gt;Arithmetic operations&lt;/li&gt;
&lt;li&gt;Conditions&lt;/li&gt;
&lt;li&gt;Loops&lt;/li&gt;
&lt;li&gt;Function execution (planned)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Features&lt;/p&gt;

&lt;p&gt;Current features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Variables&lt;/li&gt;
&lt;li&gt;Arithmetic expressions&lt;/li&gt;
&lt;li&gt;Conditional statements&lt;/li&gt;
&lt;li&gt;Loops&lt;/li&gt;
&lt;li&gt;Error reporting&lt;/li&gt;
&lt;li&gt;Standard library support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let x = 10

if x &amp;gt; 5
    print("YO is working!")
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Challenges I Faced&lt;/p&gt;

&lt;p&gt;The most difficult part was building the parser.&lt;/p&gt;

&lt;p&gt;Reading text is easy.&lt;/p&gt;

&lt;p&gt;Understanding program structure is much harder.&lt;/p&gt;

&lt;p&gt;I had to design rules that could correctly identify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expressions&lt;/li&gt;
&lt;li&gt;Statements&lt;/li&gt;
&lt;li&gt;Nested blocks&lt;/li&gt;
&lt;li&gt;Control flow structures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Debugging parser errors often took longer than writing the actual code.&lt;/p&gt;

&lt;p&gt;Publishing YO&lt;/p&gt;

&lt;p&gt;After the interpreter was working, I wanted other developers to try it.&lt;/p&gt;

&lt;p&gt;So I:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created a GitHub repository&lt;/li&gt;
&lt;li&gt;Packaged the project&lt;/li&gt;
&lt;li&gt;Published it on PyPI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now it can be installed using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;yo-lang
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;This project taught me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compiler Design Fundamentals&lt;/li&gt;
&lt;li&gt;Language Parsing Techniques&lt;/li&gt;
&lt;li&gt;Abstract Syntax Trees&lt;/li&gt;
&lt;li&gt;Runtime Execution Models&lt;/li&gt;
&lt;li&gt;Python Package Distribution&lt;/li&gt;
&lt;li&gt;Open Source Project Management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More importantly, it helped me understand what happens behind the scenes when we write code in any programming language.&lt;/p&gt;

&lt;p&gt;Future Roadmap&lt;/p&gt;

&lt;p&gt;Upcoming features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User-defined Functions&lt;/li&gt;
&lt;li&gt;Classes and Objects&lt;/li&gt;
&lt;li&gt;Modules and Imports&lt;/li&gt;
&lt;li&gt;Package Manager&lt;/li&gt;
&lt;li&gt;VS Code Extension&lt;/li&gt;
&lt;li&gt;Better Error Diagnostics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Links&lt;/p&gt;

&lt;p&gt;GitHub Repository:&lt;br&gt;
&lt;a href="https://github.com/yogeshsince2023/yo-lang" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;br&gt;
PyPI Package:&lt;a href="https://pypi.org/project/yo-lang/" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;Building a programming language was one of the most challenging and rewarding projects I have worked on as a student.&lt;/p&gt;

&lt;p&gt;It pushed me beyond application development and forced me to think about how software tools themselves are built.&lt;/p&gt;

&lt;p&gt;If you're a student interested in compilers, interpreters, or language design, I highly recommend trying to build a small programming language yourself. You'll learn far more than you expect.&lt;/p&gt;

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