{"id":23595,"date":"2025-06-10T04:00:18","date_gmt":"2025-06-10T01:00:18","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/"},"modified":"2025-06-10T04:00:18","modified_gmt":"2025-06-10T01:00:18","slug":"c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/","title":{"rendered":"C# ile Kendi Derleyicimizi Olu\u015fturuyoruz: 3. B\u00f6l\u00fcm"},"content":{"rendered":"<p><body><\/p>\n<p>C# ile Kendi Derleyicimizi Olu\u015fturuyoruz: 3. B\u00f6l\u00fcm<\/p>\n<p>Merhaba!  Ge\u00e7ti\u011fimiz b\u00f6l\u00fcmlerde leksiksel analizi (lexing) tamamlam\u0131\u015f ve token&#8217;lar\u0131m\u0131z\u0131 olu\u015fturmu\u015ftuk.  \u015eimdi ise,  derleyici olu\u015fturma yolculu\u011fumuzun en \u00f6nemli a\u015famalar\u0131ndan birine, yani <strong>s\u00f6zdizimi analizine (parsing)<\/strong> ve <strong>soyut s\u00f6zdizimi a\u011fac\u0131n\u0131n (AST) olu\u015fturulmas\u0131na<\/strong> dal\u0131yoruz.  Bu ad\u0131m, kodumuzun yap\u0131s\u0131n\u0131 anlaman\u0131n ve derleme s\u00fcrecinin temelini atman\u0131n anahtar\u0131d\u0131r.  \u00d6ncelikle,  ge\u00e7en b\u00f6l\u00fcmlerde olu\u015fturdu\u011fumuz token ak\u0131\u015f\u0131n\u0131 nas\u0131l bir yap\u0131ya d\u00f6n\u00fc\u015ft\u00fcrece\u011fimizi ele alal\u0131m. <\/p>\n<p>S\u00f6zdizimi analizi, leksiksel analizden gelen token ak\u0131\u015f\u0131n\u0131 al\u0131p, programlama dilimizin s\u00f6zdizimine g\u00f6re bu token\u2019lar\u0131 anlaml\u0131 bir hiyerar\u015fik yap\u0131ya d\u00f6n\u00fc\u015ft\u00fcrme i\u015flemidir.  Bu i\u015flem, genellikle bir <strong>s\u00f6zdizimi analiz\u00f6r\u00fc (parser)<\/strong> kullan\u0131larak ger\u00e7ekle\u015ftirilir.  Bir\u00e7ok farkl\u0131 parser t\u00fcr\u00fc bulunmaktad\u0131r; ancak en yayg\u0131n kullan\u0131lanlardan biri, <strong>Recursive Descent Parser&#8217;d\u0131r<\/strong>.  Bu t\u00fcr parser, dilin s\u00f6zdizimini yans\u0131tan \u00f6zyinelemeli fonksiyonlar kullanarak \u00e7al\u0131\u015f\u0131r.<\/p>\n<p>\u00d6rne\u011fin, basit bir aritmetik ifadeyi ele alal\u0131m: <code>2 + 3 * 4<\/code>.  Lexing a\u015famas\u0131ndan sonra token ak\u0131\u015f\u0131m\u0131z \u015f\u00f6yle olabilir: <code>NUMBER(2), PLUS, NUMBER(3), MULTIPLY, NUMBER(4)<\/code>.  Parser, bu token ak\u0131\u015f\u0131n\u0131 alarak, i\u015flemlerin \u00f6ncelik s\u0131ras\u0131na g\u00f6re bir a\u011fa\u00e7 yap\u0131s\u0131 olu\u015fturur.  Bu a\u011fa\u00e7 yap\u0131s\u0131, soyut s\u00f6zdizimi a\u011fac\u0131 (AST) olarak adland\u0131r\u0131l\u0131r.<\/p>\n<p><strong>AST&#8217;nin \u00f6nemi nedir?<\/strong>  AST, kodun yap\u0131s\u0131n\u0131 soyut bir \u015fekilde temsil eder.  Bu sayede, derleyici, kodun anlamsal analizini (semantic analysis), ara kodu olu\u015fturmay\u0131 ve nihayetinde makine koduna \u00e7evirmeyi daha kolay bir \u015fekilde ger\u00e7ekle\u015ftirebilir.  AST, kodun hangi par\u00e7alar\u0131n\u0131n birbirleriyle nas\u0131l ili\u015fkili oldu\u011funu a\u00e7\u0131k\u00e7a g\u00f6sterir.  Bu da, derleyicinin hata tespitini ve optimizasyonlar\u0131n\u0131 daha etkin bir \u015fekilde yapmas\u0131n\u0131 sa\u011flar.<\/p>\n<h2>C# ile Recursive Descent Parser Uygulamas\u0131<\/h2>\n<p>C# kullanarak Recursive Descent Parser&#8217;\u0131 uygulamak i\u00e7in, dilin s\u00f6zdizimini yans\u0131tan \u00f6zyinelemeli fonksiyonlar yazmam\u0131z gerekir.  Bu fonksiyonlar, token ak\u0131\u015f\u0131n\u0131 i\u015fleyerek AST d\u00fc\u011f\u00fcmlerini olu\u015fturur.  A\u015fa\u011f\u0131da basit bir \u00f6rnek verilmi\u015ftir:<\/p>\n<pre><code class=\"language-csharp\">\npublic class Parser {\n    \/\/ ... (Token ak\u0131\u015f\u0131 ve di\u011fer yard\u0131mc\u0131 fonksiyonlar) ...\n\n    public Node ParseExpression() {\n        Node left = ParseTerm();\n        while (currentToken.Type == TokenType.PLUS || currentToken.Type == TokenType.MINUS) {\n            Token op = currentToken;\n            NextToken();\n            Node right = ParseTerm();\n            left = new BinaryNode(op, left, right);\n        }\n        return left;\n    }\n\n    public Node ParseTerm() {\n        \/\/ ... (\u00c7arpma ve b\u00f6lme i\u015flemlerini ele alan kod) ...\n    }\n    \/\/ ... (Di\u011fer \u00f6zyinelemeli fonksiyonlar) ...\n}\n<\/code><\/pre>\n<p>Bu kod par\u00e7as\u0131, basit bir aritmetik ifadesini ayr\u0131\u015ft\u0131rmak i\u00e7in Recursive Descent Parser\u2019\u0131n temel mant\u0131\u011f\u0131n\u0131 g\u00f6stermektedir.  <code>ParseExpression<\/code> ve <code>ParseTerm<\/code> fonksiyonlar\u0131, \u00f6ncelik s\u0131ras\u0131na g\u00f6re i\u015flemleri i\u015fleyerek AST d\u00fc\u011f\u00fcmlerini olu\u015fturur.  Daha karma\u015f\u0131k bir dil i\u00e7in, daha fazla \u00f6zyinelemeli fonksiyon yazman\u0131z gerekecektir.<\/p>\n<p>Bu b\u00f6l\u00fcmde s\u00f6zdizimi analizini ve AST olu\u015fturmay\u0131 temel seviyede ele ald\u0131k.  Gelecek b\u00f6l\u00fcmlerde, daha geli\u015fmi\u015f konular\u0131 ve C# ile daha detayl\u0131 \u00f6rnekleri payla\u015faca\u011f\u0131m.  Unutmay\u0131n,  kendi derleyicinizi olu\u015fturmak uzun ve detayl\u0131 bir s\u00fcre\u00e7tir ancak olduk\u00e7a \u00f6d\u00fcllendirici bir deneyimdir.  Ba\u015far\u0131ya giden yolda s\u0131k\u0131\u015ft\u0131\u011f\u0131n\u0131z noktalarda, <a href=\"https:\/\/fatihsoysal.com\">kendi web sitemi<\/a> \u00fczerinden bana ula\u015fabilirsiniz.<\/p>\n<p>Sonraki b\u00f6l\u00fcmde,  AST&#8217;yi kullanarak kodun anlamsal analizini nas\u0131l ger\u00e7ekle\u015ftirece\u011fimizi inceleyece\u011fiz.  Bu a\u015fama, kodun t\u00fcr kontrol\u00fc ve di\u011fer anlamsal kurallar\u0131n do\u011frulamas\u0131n\u0131 i\u00e7erir.  Haz\u0131r olun!<\/p>\n<p>Umar\u0131m faydal\u0131 bir makale olmu\u015ftur. Herhangi bir sorunuz veya \u00f6neriniz varsa l\u00fctfen yorumlarda belirtin.<\/p>\n<p>#Etiketler: C#, derleyici, compiler, s\u00f6zdizimi analizi, parsing, soyut s\u00f6zdizimi a\u011fac\u0131, AST, programlama, yaz\u0131l\u0131m geli\u015ftirme, fatihsoysal, recursive descent parser<\/p>\n<p><\/body><br \/>\n<\/html><\/p>\n","protected":false},"excerpt":{"rendered":"C# ile Kendi Derleyicimizi Olu\u015fturuyoruz: 3. B\u00f6l\u00fcm Merhaba! Ge\u00e7ti\u011fimiz b\u00f6l\u00fcmlerde leksiksel analizi (lexing) tamamlam\u0131\u015f ve token&#8217;lar\u0131m\u0131z\u0131 olu\u015fturmu\u015ftuk. \u015eimdi&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-23595","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>C# ile Kendi Derleyicimizi Olu\u015fturuyoruz: 3. B\u00f6l\u00fcm<\/title>\n<meta name=\"description\" content=\"Merhaba! Ge\u00e7ti\u011fimiz b\u00f6l\u00fcmlerde leksiksel analizi (lexing) tamamlam\u0131\u015f ve token&#039;lar\u0131m\u0131z\u0131 olu\u015fturmu\u015ftuk. \u015eimdi ise, derleyici olu\u015fturma yolculu\u011fumuzun en \u00f6nemli a\u015famalar\u0131ndan birine, yani s\u00f6zdizimi analizine (parsing) ve soyut s\u00f6zdizimi a\u011fac\u0131n\u0131n (AST) olu\u015fturulmas\u0131na dal\u0131yoruz. Bu ad\u0131m, kodumuzun yap\u0131s\u0131n\u0131 anlaman\u0131n ve derleme s\u00fcrecinin temelini atman\u0131n anahtar\u0131d\u0131r. \u00d6ncelikle, ge\u00e7en b\u00f6l\u00fcmlerde olu\u015fturdu\u011fumuz token ak\u0131\u015f\u0131n\u0131 nas\u0131l bir yap\u0131ya d\u00f6n\u00fc\u015ft\u00fcrece\u011fimizi ele alal\u0131m.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C# ile Kendi Derleyicimizi Olu\u015fturuyoruz: 3. B\u00f6l\u00fcm\" \/>\n<meta property=\"og:description\" content=\"Merhaba! Ge\u00e7ti\u011fimiz b\u00f6l\u00fcmlerde leksiksel analizi (lexing) tamamlam\u0131\u015f ve token&#039;lar\u0131m\u0131z\u0131 olu\u015fturmu\u015ftuk. \u015eimdi ise, derleyici olu\u015fturma yolculu\u011fumuzun en \u00f6nemli a\u015famalar\u0131ndan birine, yani s\u00f6zdizimi analizine (parsing) ve soyut s\u00f6zdizimi a\u011fac\u0131n\u0131n (AST) olu\u015fturulmas\u0131na dal\u0131yoruz. Bu ad\u0131m, kodumuzun yap\u0131s\u0131n\u0131 anlaman\u0131n ve derleme s\u00fcrecinin temelini atman\u0131n anahtar\u0131d\u0131r. \u00d6ncelikle, ge\u00e7en b\u00f6l\u00fcmlerde olu\u015fturdu\u011fumuz token ak\u0131\u015f\u0131n\u0131 nas\u0131l bir yap\u0131ya d\u00f6n\u00fc\u015ft\u00fcrece\u011fimizi ele alal\u0131m.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-06-10T01:00:18+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"C# ile Kendi Derleyicimizi Olu\u015fturuyoruz: 3. B\u00f6l\u00fcm\",\"datePublished\":\"2025-06-10T01:00:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/\"},\"wordCount\":568,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/\",\"name\":\"C# ile Kendi Derleyicimizi Olu\u015fturuyoruz: 3. B\u00f6l\u00fcm\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-06-10T01:00:18+00:00\",\"description\":\"Merhaba! Ge\u00e7ti\u011fimiz b\u00f6l\u00fcmlerde leksiksel analizi (lexing) tamamlam\u0131\u015f ve token'lar\u0131m\u0131z\u0131 olu\u015fturmu\u015ftuk. \u015eimdi ise, derleyici olu\u015fturma yolculu\u011fumuzun en \u00f6nemli a\u015famalar\u0131ndan birine, yani s\u00f6zdizimi analizine (parsing) ve soyut s\u00f6zdizimi a\u011fac\u0131n\u0131n (AST) olu\u015fturulmas\u0131na dal\u0131yoruz. Bu ad\u0131m, kodumuzun yap\u0131s\u0131n\u0131 anlaman\u0131n ve derleme s\u00fcrecinin temelini atman\u0131n anahtar\u0131d\u0131r. \u00d6ncelikle, ge\u00e7en b\u00f6l\u00fcmlerde olu\u015fturdu\u011fumuz token ak\u0131\u015f\u0131n\u0131 nas\u0131l bir yap\u0131ya d\u00f6n\u00fc\u015ft\u00fcrece\u011fimizi ele alal\u0131m.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C# ile Kendi Derleyicimizi Olu\u015fturuyoruz: 3. B\u00f6l\u00fcm\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"C# ile Kendi Derleyicimizi Olu\u015fturuyoruz: 3. B\u00f6l\u00fcm","description":"Merhaba! Ge\u00e7ti\u011fimiz b\u00f6l\u00fcmlerde leksiksel analizi (lexing) tamamlam\u0131\u015f ve token'lar\u0131m\u0131z\u0131 olu\u015fturmu\u015ftuk. \u015eimdi ise, derleyici olu\u015fturma yolculu\u011fumuzun en \u00f6nemli a\u015famalar\u0131ndan birine, yani s\u00f6zdizimi analizine (parsing) ve soyut s\u00f6zdizimi a\u011fac\u0131n\u0131n (AST) olu\u015fturulmas\u0131na dal\u0131yoruz. Bu ad\u0131m, kodumuzun yap\u0131s\u0131n\u0131 anlaman\u0131n ve derleme s\u00fcrecinin temelini atman\u0131n anahtar\u0131d\u0131r. \u00d6ncelikle, ge\u00e7en b\u00f6l\u00fcmlerde olu\u015fturdu\u011fumuz token ak\u0131\u015f\u0131n\u0131 nas\u0131l bir yap\u0131ya d\u00f6n\u00fc\u015ft\u00fcrece\u011fimizi ele alal\u0131m.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/","og_locale":"tr_TR","og_type":"article","og_title":"C# ile Kendi Derleyicimizi Olu\u015fturuyoruz: 3. B\u00f6l\u00fcm","og_description":"Merhaba! Ge\u00e7ti\u011fimiz b\u00f6l\u00fcmlerde leksiksel analizi (lexing) tamamlam\u0131\u015f ve token'lar\u0131m\u0131z\u0131 olu\u015fturmu\u015ftuk. \u015eimdi ise, derleyici olu\u015fturma yolculu\u011fumuzun en \u00f6nemli a\u015famalar\u0131ndan birine, yani s\u00f6zdizimi analizine (parsing) ve soyut s\u00f6zdizimi a\u011fac\u0131n\u0131n (AST) olu\u015fturulmas\u0131na dal\u0131yoruz. Bu ad\u0131m, kodumuzun yap\u0131s\u0131n\u0131 anlaman\u0131n ve derleme s\u00fcrecinin temelini atman\u0131n anahtar\u0131d\u0131r. \u00d6ncelikle, ge\u00e7en b\u00f6l\u00fcmlerde olu\u015fturdu\u011fumuz token ak\u0131\u015f\u0131n\u0131 nas\u0131l bir yap\u0131ya d\u00f6n\u00fc\u015ft\u00fcrece\u011fimizi ele alal\u0131m.","og_url":"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-06-10T01:00:18+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"3 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"C# ile Kendi Derleyicimizi Olu\u015fturuyoruz: 3. B\u00f6l\u00fcm","datePublished":"2025-06-10T01:00:18+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/"},"wordCount":568,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/","url":"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/","name":"C# ile Kendi Derleyicimizi Olu\u015fturuyoruz: 3. B\u00f6l\u00fcm","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-06-10T01:00:18+00:00","description":"Merhaba! Ge\u00e7ti\u011fimiz b\u00f6l\u00fcmlerde leksiksel analizi (lexing) tamamlam\u0131\u015f ve token'lar\u0131m\u0131z\u0131 olu\u015fturmu\u015ftuk. \u015eimdi ise, derleyici olu\u015fturma yolculu\u011fumuzun en \u00f6nemli a\u015famalar\u0131ndan birine, yani s\u00f6zdizimi analizine (parsing) ve soyut s\u00f6zdizimi a\u011fac\u0131n\u0131n (AST) olu\u015fturulmas\u0131na dal\u0131yoruz. Bu ad\u0131m, kodumuzun yap\u0131s\u0131n\u0131 anlaman\u0131n ve derleme s\u00fcrecinin temelini atman\u0131n anahtar\u0131d\u0131r. \u00d6ncelikle, ge\u00e7en b\u00f6l\u00fcmlerde olu\u015fturdu\u011fumuz token ak\u0131\u015f\u0131n\u0131 nas\u0131l bir yap\u0131ya d\u00f6n\u00fc\u015ft\u00fcrece\u011fimizi ele alal\u0131m.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/c-ile-kendi-derleyicimizi-olusturuyoruz-3-bolum\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"C# ile Kendi Derleyicimizi Olu\u015fturuyoruz: 3. B\u00f6l\u00fcm"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/23595","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=23595"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/23595\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=23595"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=23595"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=23595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}