EYG dasturlash tili — end user programming uchun yangi yechim
EYG — statik tipli funksional dasturlash tili, end user programmerlar uchun murakkablikni kamaytiradi, kod yozishni soddalashtiradi va mustahkam yechimlar taqdim etadi.

Rust dasturlash tilida o'z shaxsiy Markdown → HTML kompilyatorini yaratish, nafaqat tilni o'rganish, balki kompilyatsiya jarayonini chuqur tushunish uchun ham ajoyib amaliyotdir. Ushbu maqolada loyiha qanday bosqichlarda amalga oshirilgani, qaysi texnik qarorlar qabul qilinganligi va kelajakda qanday funksiyalar qo'shilishi mumkinligi ko'rib chiqiladi.
Rust o'zining yuksak xavfsizlik va tezlik xususiyatlari bilan mashhur. Xotira xatolarini kompilyatsiya vaqtida aniqlash imkoniyati, zero‑cost abstractions (nol xarajatli abstraksiyalar) va kuchli tip tizimi, ayniqsa kompilyator yoki interpreter kabi tizim dasturlarini yaratishda katta afzallik beradi. Shuningdek, Rust ekotizimida serde, regex, pulldown‑cmark kabi kutubxonalar mavjud bo'lib, ular Markdown parsing jarayonini ancha soddalashtiradi.
Loyiha quyidagi bosqichlardan iborat:
post/ papkasidagi barcha .md fayllarini topish.**text**), egri (*text*), kod (`code`), havola ([text](url)) va boshqalar.Display traiti orqali HTML satriga o'giriladi.Ushbu bosqichlar Rust trait konseptsiyasidan foydalangan holda soddalashtirilgan, bu esa kodni o'qish va kengaytirishni osonlashtiradi.
Loyiha hozirda CommonMark asosidagi quyidagi elementlarni qo‘llab‑quvvatlaydi:
[
Heading {
level: H1,
content: [
Text(
"this\n",
),
],
},
Heading {
level: H2,
content: [
Text(
"is\n",
),
],
},
Paragraph(
[
Text(
"a very ",
),
Italic(
"simple",
),
Text(
" ",
),
Bold(
"post",
),
Text(
"\n",
),
],
),
]
# dan ###### gacha.``` yoki ~~~ bilan belgilangan.> quote).~text~).).Har bir post YAML front‑matter bilan boshlanadi (title, date, description, tags, draft). draft: true bo‘lsa, post indeksdan chiqarib tashlanadi – bu Git‑ishlab chiqarish oqimida foydali.
Display traitiRustda enum Block va enum Inline yordamida AST yaratiladi. Har bir tur impl Display for Block va impl Display for Inline orqali HTML ga o‘zgartiriladi. Bu yondashuv kodni modullashtirish va testlashni soddalashtirishga xizmat qiladi. Misol uchun, quyidagi kod fragmenti Heading blokini HTML <h1> ga aylantiradi:
impl Display for Block {
fn fmt(&self, f: &mut Formatter) -> fmt::Result {
match self {
Block::Heading { level, content } => {
write!(f, "<h{}>{}</h{}>", level, content, level)
}
// boshqa variantlar
}
}
}
Bu usul println!() kabi oddiy funksiyalar orqali ham to‘g‘ridan‑to‘g‘ri HTML chiqishini beradi.
---
title: Building a markdown compiler
date: 2026-07-27
description: A short line shown in the index
tags: [rust, web]
draft: false
---
[markdown body]
Loyihaning hozirgi holati minimal, ammo quyidagi yo‘nalishlarda rivojlantirish rejalashtirilgan:
tera yoki handlebars kabi kutubxonalar yordamida murakkab layoutlar.rayon crate orqali bir nechta fayllarni bir vaqtning o‘zida qayta ishlash.Bu qo‘shimchalar Rustning ekosistemasini yanada boyitadi va loyiha professional darajaga ko‘tariladi.
Rustda Markdown → HTML kompilyatorini yaratish, tilning xavfsizligi, tezligi va modullik imkoniyatlarini amalda ko‘rish uchun ajoyib platformadir. Loyiha oddiy fayl skanerlashdan boshlab, AST qurish, Display traiti orqali HTML chiqishini yaratishgacha bo‘lgan jarayonni aniq ko‘rsatadi. Kelajakda plaginlar, statik sayt generatori va paralel ishlash kabi funksiyalar qo‘shilishi bilan bu kichik loyiha keng auditoriya uchun foydali vositaga aylanishi mumkin.
Asl manba: andreadimatteo.com