惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
人人都是产品经理
人人都是产品经理
美团技术团队
Blog — PlanetScale
Blog — PlanetScale
S
SegmentFault 最新的问题
博客园 - 【当耐特】
V
V2EX
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 叶小钗
Google DeepMind News
Google DeepMind News
量子位
罗磊的独立博客
月光博客
月光博客
N
Netflix TechBlog - Medium
大猫的无限游戏
大猫的无限游戏
博客园_首页
P
Proofpoint News Feed
Jina AI
Jina AI
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
腾讯CDC

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Learn Compilers Using CrabPascal | Aprenda compiladores c...
CrabPascal · 2026-06-04 · via DEV Community

Bilingual post · Post bilíngue

Jump to: English · Português


English {#english}

Learn Compilers Using CrabPascal

Series — Part 2: Previous: Audit Deep Dive: IDE, CI, and Docs (054-audit-ide-ci-docs). Course doc: resources/curso-compiladores-crabpascal. Technical depth: architecture/technical/tecnico-detalhado.

Textbooks teach compilers with toy languages — CALC, MiniJava, IMP. Useful, but abstract. CrabPascal is a real compiler: lexer, parser, semantic analyzer, dual backends, RTL shims, and a sprint history you can read in git. The Mintlify course resources/curso-compiladores-crabpascal turns that codebase into a one-hour guided tour. This post explains why that matters and how to use it.

Why learn compilers through a real project?

Compiler courses often stop at code generation for a language with ten constructs. Production compilers add:

  • Error recovery and diagnostic spans
  • Namespace resolution and unit loading
  • Object layout, VMT, and properties
  • Two execution modes (interpret vs native C)
  • A runtime with 65+ builtins

CrabPascal exposes all of this in Rust, with Pascal fixtures you already understand if you know Delphi. You are not learning a compiler — you are learning how Delphi-like semantics get implemented.

Course structure (six modules)

The course in Mintlify walks six chapters:

  1. Introduction — Why translation is fascinating; compilers as protectors and optimizers
  2. Anatomy — Frontend (lexer, parser, semantic) vs backend (codegen, linker)
  3. Lifecycle — Source to executable; where CrabPascal's dual-mode fits
  4. CrabPascal case study — Concrete file map and pipeline phases
  5. Real-world compilers — GCC, LLVM, Rustc comparisons
  6. Next steps — How to contribute after the tour

Each section links theory to files you can open today.

Map theory to repository paths

Concept CrabPascal location
Lexical analysis src/lexer/
Parsing / AST src/parser/, src/ast/
Semantic analysis src/semantic/
Interpretation src/complete_runtime.rs
C code generation src/codegen/
Preprocessor src/preprocessor/
Unit graph src/unit_resolver.rs
Delphi RTL surface rtl/sys/*.pas

Read architecture/technical/tecnico-detalhado alongside the course for VMT, heap layout, and builtin dispatch tables.

Hands-on exercises (self-paced)

After each module, try one small task:

After lexer module — Add a token trace to a failing fixture:

crab-pascal check tests/fixtures/your_file.pas

Enter fullscreen mode Exit fullscreen mode

After parser module — Read a parser_hardening.rs test; find the AST node it asserts.

After semantic module — Introduce an undefined variable; confirm Sprint 1 span format in output.

After backend module — Compare run vs build-exe on a string fixture; note honest failures post-v2.21.0.

After runtime module — Trace a property read in complete_runtime.rs starting from a three-line class.

These exercises mirror what sprint contributors do — not exams, but navigation practice.

Who is this course for?

  • Delphi developers curious why their code behaves differently in CrabPascal
  • Rust developers wanting a large, readable compiler codebase
  • CS students past the dragon book who need a maintained case study
  • Contributors preparing for RTL, parser, or codegen sprints

Intermediate level assumed: you should read Pascal and basic Rust syntax.

Connection to the audit series

Posts 050–054 documented technical debt honestly. The course does not hide gaps — it shows where in the pipeline each feature lives so you can fix TD-IDs with context. Learning and contributing converge.

Suggested reading order

  1. getting-started/quickstart — run hello world
  2. resources/curso-compiladores-crabpascal — full course
  3. architecture/technical/arquitetura-design — design decisions
  4. 009-compiler-pipeline-five-phases (blog Part 1) — pipeline overview
  5. Pick one sprint review matching your interest (generics, exceptions, strings)

Takeaway

Compiler education does not require starting from zero. CrabPascal offers a bilingual, open, sprint-documented laboratory. Work through the course, then claim one backlog item — parser fixture, RTL shim, or parity test. That is how compiler engineers are made in 2026.

Next: Mapping the Delphi Bible to CrabPascal (056-delphi-bible-analysis).


Português {#portugus}

Aprenda compiladores com CrabPascal

Série — Parte 2: Anterior: Auditoria: IDE, CI e documentação (054-audit-ide-ci-docs). Curso: resources/curso-compiladores-crabpascal. Profundidade técnica: architecture/technical/tecnico-detalhado.

Livros ensinam compiladores com linguagens de brinquedo — CALC, MiniJava, IMP. Útil, mas abstrato. CrabPascal é um compilador real: lexer, parser, analisador semântico, dual backends, shims RTL e histórico de sprints legível no git. O curso Mintlify em resources/curso-compiladores-crabpascal transforma esse codebase em tour guiado de uma hora. Este post explica por que importa e como usar.

Por que aprender compiladores via projeto real?

Cursos de compiladores often param em codegen para linguagem com dez construtos. Compiladores de produção adicionam:

  • Recuperação de erro e spans de diagnóstico
  • Resolução de namespaces e carregamento de units
  • Layout de objetos, VMT e properties
  • Dois modos de execução (interpretar vs C nativo)
  • Runtime com 65+ builtins

CrabPascal expõe tudo isso em Rust, com fixtures Pascal que você já entende se conhece Delphi. Você não aprende um compilador — aprende como semântica Delphi-like é implementada.

Estrutura do curso (seis módulos)

O curso no Mintlify percorre seis capítulos:

  1. Introdução — Por que tradução fascina; compiladores como protetores e otimizadores
  2. Anatomia — Frontend (lexer, parser, semântica) vs backend (codegen, linker)
  3. Ciclo de vida — Fonte ao executável; onde dual-mode do CrabPascal encaixa
  4. Estudo de caso CrabPascal — Mapa concreto de arquivos e fases do pipeline
  5. Compiladores reais — Comparações GCC, LLVM, Rustc
  6. Próximos passos — Como contribuir após o tour

Cada seção liga teoria a arquivos que você pode abrir hoje.

Mapeie teoria para paths do repositório

Conceito Local no CrabPascal
Análise léxica src/lexer/
Parsing / AST src/parser/, src/ast/
Análise semântica src/semantic/
Interpretação src/complete_runtime.rs
Codegen C src/codegen/
Preprocessor src/preprocessor/
Grafo de units src/unit_resolver.rs
Surface RTL Delphi rtl/sys/*.pas

Leia architecture/technical/tecnico-detalhado junto com o curso para VMT, layout de heap e tabelas de dispatch de builtins.

Exercícios práticos (auto-ritmo)

Após cada módulo, tente uma tarefa pequena:

Após módulo lexer — Adicione trace de token a fixture que falha:

crab-pascal check tests/fixtures/seu_arquivo.pas

Enter fullscreen mode Exit fullscreen mode

Após módulo parser — Leia teste em parser_hardening.rs; ache o nó AST que ele asserta.

Após módulo semântica — Introduza variável indefinida; confirme formato de span Sprint 1 na saída.

Após módulo backend — Compare run vs build-exe em fixture de string; note falhas honestas pós-v2.21.0.

Após módulo runtime — Trace leitura de property em complete_runtime.rs partindo de classe de três linhas.

Esses exercícios espelham o que contribuidores de sprint fazem — não provas, mas prática de navegação.

Para quem é o curso?

  • Desenvolvedores Delphi curiosos por que código se comporta diferente no CrabPascal
  • Desenvolvedores Rust querendo codebase de compilador grande e legível
  • Estudantes de CC pós-dragon book que precisam de case study mantido
  • Contribuidores se preparando para sprints RTL, parser ou codegen

Nível intermediário assumido: leia Pascal e sintaxe Rust básica.

Conexão com série de auditoria

Posts 050–054 documentaram débito técnico honestamente. O curso não esconde gaps — mostra onde no pipeline cada feature vive para você corrigir TD-IDs com contexto. Aprender e contribuir convergem.

Ordem de leitura sugerida

  1. getting-started/quickstart — rode hello world
  2. resources/curso-compiladores-crabpascal — curso completo
  3. architecture/technical/arquitetura-design — decisões de design
  4. 009-compiler-pipeline-five-phases (blog Parte 1) — visão do pipeline
  5. Escolha um sprint review alinhado ao seu interesse (generics, exceptions, strings)

Conclusão

Educação em compiladores não exige começar do zero. CrabPascal oferece laboratório bilíngue, aberto e documentado por sprint. Faça o curso, depois claim um item do backlog — fixture de parser, shim RTL ou teste de paridade. Assim se formam engenheiros de compiladores em 2026.

Próximo: Mapeando a Bíblia Delphi no CrabPascal (056-delphi-bible-analysis).


Published on dev.to/@crabpascal · Código em CrabPascal