# kornelszyszka/fungo-programming-language architecture

> Architecture diagram of the GitHub repository kornelszyszka/fungo-programming-language, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kornelszyszka/fungo-programming-language
- Repository: https://github.com/kornelszyszka/fungo-programming-language

## Overview

FunGo is a small language front end with a command-line token-inspection loop, a lexer, and a parser that builds an AST. The visible user workflow reads lines from standard input and prints their tokens; the parser and AST are separate language-processing capabilities, not shown wired into that command. No evaluator or execution stage is evidenced. The parser excerpt is partial, so the graph captures only its demonstrated lexer and AST relationships.

Main entry points: [`internal/parser/parser.go`](https://github.com/kornelszyszka/fungo-programming-language/blob/main/internal/parser/parser.go) (Parser), [`internal/lexer/lexer.go`](https://github.com/kornelszyszka/fungo-programming-language/blob/main/internal/lexer/lexer.go) (Lexer), [`cmd/main.go`](https://github.com/kornelszyszka/fungo-programming-language/blob/main/cmd/main.go) (Command entry), [`debug/debugger.go`](https://github.com/kornelszyszka/fungo-programming-language/blob/main/debug/debugger.go) (Token loop)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["Interactive CLI"]
  node_main["Command entry<br/>[main.go]"]
  node_debug["Token loop<br/>[debugger.go]"]
end

subgraph group_front["Language Front End"]
  node_lexer["Lexer<br/>[lexer.go]"]
  node_tokens["Token types<br/>[token.go]"]
  node_parser["Parser<br/>[parser.go]"]
  node_ast["AST nodes<br/>[ast.go]"]
end

node_user(("CLI user"))

node_user -->|"runs"| node_main
node_main -->|"starts"| node_debug
node_debug -->|"tokenizes lines"| node_lexer
node_lexer -->|"emits tokens"| node_tokens
node_parser -->|"reads tokens"| node_lexer
node_parser -->|"dispatches by type"| node_tokens
node_parser -->|"builds nodes"| node_ast

click node_main "https://github.com/kornelszyszka/fungo-programming-language/blob/main/cmd/main.go"
click node_debug "https://github.com/kornelszyszka/fungo-programming-language/blob/main/debug/debugger.go"
click node_lexer "https://github.com/kornelszyszka/fungo-programming-language/blob/main/internal/lexer/lexer.go"
click node_tokens "https://github.com/kornelszyszka/fungo-programming-language/blob/main/internal/lexer/token/token.go"
click node_parser "https://github.com/kornelszyszka/fungo-programming-language/blob/main/internal/parser/parser.go"
click node_ast "https://github.com/kornelszyszka/fungo-programming-language/blob/main/internal/parser/ast/ast.go"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_debug,node_user toneBlue
class node_lexer,node_tokens,node_parser,node_ast toneAmber
```

## Components

### Interactive CLI

- [Command entry](https://github.com/kornelszyszka/fungo-programming-language/blob/main/cmd/main.go): `cmd/main.go`
- [Token loop](https://github.com/kornelszyszka/fungo-programming-language/blob/main/debug/debugger.go): `debug/debugger.go`

### Language Front End

- [Lexer](https://github.com/kornelszyszka/fungo-programming-language/blob/main/internal/lexer/lexer.go): `internal/lexer/lexer.go`
- [Token types](https://github.com/kornelszyszka/fungo-programming-language/blob/main/internal/lexer/token/token.go): `internal/lexer/token/token.go`
- [Parser](https://github.com/kornelszyszka/fungo-programming-language/blob/main/internal/parser/parser.go): `internal/parser/parser.go`
- [AST nodes](https://github.com/kornelszyszka/fungo-programming-language/blob/main/internal/parser/ast/ast.go): `internal/parser/ast/ast.go`

### Other components

- **CLI user**

## Connections

- CLI user → Command entry: runs (evidence: `cmd/main.go`)
- Command entry → Token loop: starts (evidence: `cmd/main.go`)
- Token loop → Lexer: tokenizes lines (evidence: `debug/debugger.go`)
- Lexer → Token types: emits tokens (evidence: `internal/lexer/lexer.go`)
- Parser → Lexer: reads tokens (evidence: `internal/parser/parser.go`)
- Parser → Token types: dispatches by type (evidence: `internal/parser/parser.go`)
- Parser → AST nodes: builds nodes (evidence: `internal/parser/parser.go`)
