https://github.com/ohadswissa/nand2tetris-jack-analyzer
Jack Analyzer: A two-stage syntax parser that converts .jack code into structured XML (tokens + syntax tree)
https://github.com/ohadswissa/nand2tetris-jack-analyzer
jack java nand2tetris parser vm
Last synced: about 1 month ago
JSON representation
Jack Analyzer: A two-stage syntax parser that converts .jack code into structured XML (tokens + syntax tree)
- Host: GitHub
- URL: https://github.com/ohadswissa/nand2tetris-jack-analyzer
- Owner: ohadswissa
- Created: 2025-04-19T14:34:55.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2025-04-19T14:41:02.000Z (about 2 months ago)
- Last Synced: 2025-04-19T18:39:45.851Z (about 2 months ago)
- Topics: jack, java, nand2tetris, parser, vm
- Language: Java
- Homepage:
- Size: 25.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Jack Analyzer - Nand2Tetris Project 10
This project is part of the [Nand2Tetris](https://www.nand2tetris.org/) course.
It implements a two-stage syntax analyzer for the Jack programming language using Java.---
## 🛠 Features
- **JackTokenizer.java** – breaks `.jack` code into tokens
- **CompilationEngine.java** – parses the tokenized input and generates structured XML
- Follows the grammar and structure defined by the Jack language specification
- Output includes both token-level XML and full parse tree XML
- Includes sample programs for testing and comparison against reference XML---
## 📂 Key Files & Structure
- `src/main/java/jackanalyzer/JackTokenizer.java` – Tokenizes input into keywords, symbols, identifiers, etc.
- `src/main/java/jackanalyzer/CompilationEngine.java` – Constructs full syntax tree in XML format
- `src/main/java/jackanalyzer/JackAnalyzer.java` – File I/O manager for `.jack` and output XML
- `src/test/java/jackanalyzer/Test.jack` – Sample input file for analyzer testing
- `ArrayTest/`, `Square/`, `ExpressionLessSquare/` – Sample Jack programs
- `Squarecompare/`, `ExpressionLessSquarecompare/` – Expected XML outputs for validation
- `output/` – Generated XML output from this implementation
- `pom.xml` – Maven project config
- `.gitignore` – Project cleanup---
## ▶️ How to Run
```bash
mvn compile
mvn exec:java -Dexec.mainClass="jackanalyzer.JackAnalyzer" -Dexec.args="Square/Main.jack"
```
## 📌 Example [Input (Jack)]
```
class Main {
function void main() {
var int x;
let x = 2;
return;
}
}
```
## Output (Simplified XML)
```class
Main
...```
## 👨💻 Author
Ohad Swissa
Honors Student – Computer Science & Entrepreneurship
Ex-IDF Special Forces Major | Problem Solver
[LinkedIn](https://www.linkedin.com/in/ohad-swissa-54728a2a6)