Soru C # açık kaynak C derleyici? [kapalı]


Derleyici oluşturmaya girdim. Müthiş yeni başlayanlar ve gelişmiş şeyler buldum ama ortada hiçbir şey yok. Oyuncak diller için 3 farklı basit ispat kavramı oluşturdum ama kendimi gerçek bir şeye maruz bırakmak istiyorum.

Sözdizim açısından en yalın, gerçek dil C gibi görünmektedir. Şu anda en rahat olduğum dil C # olduğu için, C # ile yazılmış gerçek bir öğretici olmayan C derleyicisinin kaynak kodunu okumayı çok isterim. Bir (kaynak kodu mevcut) var mı?


İdeal olarak bir C derleyicisi, bir .NET veya C # derleyici değil, C # ile yazılmış kaynak kodu ile.
C # - C'nin biraz geri geldiğini biliyorum, ama ben de değiştirmeden önce tanıdık bir dilden başlayarak derleyicileri daha derinlemesine düşünmeme izin vereceğim.

C # / NET NET derleyicileri aramıyorum da, birileri bu soruyu kimin aradığını görmek durumundadır:


21
2018-03-17 17:37


Menşei


Şapkamı sana ulaştır, efendim, ama sanırım birkaç kişi, mazoşistik eğilimlerinize ulaştı. - kervin
derleyici hedef olur mu? - Luiscencio
Beni mazoşistik eğilimlere sokabilirsin. C # ile bir çapraz platform C derleyicisi oluşturmak için herhangi bir çaba ararken bulundu. - Andrew T Finnell


Cevaplar:


Örnek kodu bulmakta zorlanacaksınız. Derleyici yazarları önyükleme. İlk C derleyicisi B'de yazılmıştır. Daha sonra ilk C ++ derleyicisini yazmak için kullanılmıştır. C # derleyicisini yazmak için kullanıldı. Yönetilen kod için derleyiciler yazmak için çok yaygın olarak kullanılır.

Bu geriye doğru giden bir süreç değildir. Yan yollar yaygın olsa da, bir derleyiciyi başka bir işletim sistemi için çapraz derlemek için C derleyicileri sıklıkla kullanıldı.

Sanırım kullandım bu kitapeklerde müthiş C derleyici koduna sahiptir. C dilinde yazılmıştır. Büyük bir projede ihtiyaç duyduğum Basic derleyicisini yazarken bunun bir kısmını kullandım. İfade ayrıştırıcısının doğru olması zor, operatörün öncelik kuralları için zarif bir çözümü var.

Yönetilen bir dili hedeflemek, bunu başarmanın daha kolay bir yoludur. Dil çok önemli olmamalı, çalışmanın gerçek meydan okumasıdır. Her ne kadar olsa da çok Yönetilen kod çalışması daha kolay. C'yi hedeflemek istiyorsanız, nesne dosya formatı ve linkerde siyah-kayış makine kodu skillz ve derin bir içgörü gerekir.


11
2018-03-17 18:28



İlk C derleyicisi BCPL'de yazılmadı - nereden aldınız?
@Neil: 15 yıl önce bir yerlerde okuduğumu düşündüğüm sıkıcı bir detay. Hatırlamıyorum, kim umurunda? Belli ki, bunun bir postaya oy vermesi için yeterince önemli olduğunu düşünüyorsun. hiçbir şey değil Bu yumruk kasedi ile ne yapmak için. Frikkin mesajını sizin için önemliyse düzenleyin. - Hans Passant
DMR’den alıntı yapmak için cm.bell-labs.com/cm/cs/who/dmr/chist.html: 1971'de B dilini bir karakter tipi ekleyerek genişletmeye başladım ve aynı zamanda derleyicisini yeniden işlenmiş kod yerine PDP-11 makine yönergelerini oluşturmak için yeniden yazdım. Böylece B'den C'ye geçiş, derleme dili ile rekabet edebilecek kadar hızlı ve küçük programlar üretebilen bir derleyicinin yaratılmasıyla eş zamanlıydı. Yeni B. için biraz genişletilmiş dil NB'yi aradım.


Sözdizim açısından en basit gerçek dil C. gibi görünmektedir.

"Gerçek dil" ile ne kastettiğinizden emin değilim, fakat "gerçek dil" ne olursa olsun, C'nin "basit" sözel veya sözdizimsel bir dilbilgisi olduğunu kabul edemem ve onun semantikleri daha az anlaşılır. Oldukça iyi tanımlanmış semantiklere sahip son derece basit bir dil istiyorsanız, neden Scheme'ye gitmiyorsunuz? Şemanın çok kolay bir dilbilgisi vardır, ancak semantik hakkını almak kesinlikle önemsiz değildir.


10
2018-03-17 23:16



Semantikler hangi yollarla tanımlanmıştır? - Dinah
@Dinah: C ve C ++ 'un pek çok yönü derleyici yazara göre ayrılır ve farklı derleyici yazarlar farklı anlamlar seçerler. Örneğin hangi sipariş işlevi argümanları değerlendirilir. (Her ne kadar, adil olmak gerekirse, şema aynı zamanda bu belirtilmiş olanı da bırakır. Bununla birlikte, bu durum, şemanın, bir öncekinden hangisini daha az ilgilendiren daha az etkili kılan, yan etki kodunun önüne geçmesiyle hafifletilir.) - Eric Lippert
Şemaya hiç dokunmadım ama bir şans verebilirim. C # 'da açık kaynak kodlu bir derleyiciyi biliyor musunuz? - Dinah
@Dinah: .NET için Şema uygulamaları var ama açık kaynak olup olmadığını bilmiyorum. - Eric Lippert
Doğru hatırlıyorsam, C tek bir geçişte derlenebilir. Yani bir anlamda C çok basit ;-) - Joren


bunu google ile buldu.

http://blogs.msdn.com/jmstall/archive/2005/02/06/368192.aspx

DÜZENLE: ve bu (tam olarak C değil): http://msdn.microsoft.com/en-us/magazine/cc136756.aspx


5
2018-03-17 17:41



İyi bulmak ve Mono bir de var biliyorum ama mümkünse gerçekten bir C derleyicisi arıyorum. - Dinah


Var olanı bilmiyorum ama yapamayacağın ya da yapmamam gereken bir sebep yok.

C-benzeri bir dil için bir derleyici yazma, bir dönem kolej derleyici kursları için klasik bir proje. Eğer zaten C # biliyorsanız, kolejdeyken işinizi kolaylaştıracak birçok özellik sunar! Etrafı zorlamadan işi kolaylaştıracak çok sayıda kütüphane var ve sağladıkları esnekliğe ihtiyacınız varsa bunları her zaman kendi özel kodunuzla değiştirebilirsiniz.

İlk C derleyicisi BCPL'de yazılmıştır, çünkü sahip oldukları şeydir. Mevcut C derleyicileri genellikle C dilinde yazılır çünkü taşınabilir olmayı hedeflerler. Kimsenin C'nin derleyicileri yazmak için iyi bir dil olduğunu iddia edeceğini sanmıyorum (C # mükemmel değil ama çok daha iyi!) C gibi statik olarak derlenmiş bir dilde çok fazla fayda elde edeceğinizi sanmıyorum Varsa, derleyiciyi yazmak için hedef dili kullanmaktan.

Bir HLL'deki bir derleyicinin potansiyel olarak birçok avantajı vardır. C.'de yazılmış olandan daha kısa ve daha basit olurdu. Tek başına bir çok şeyi, “kimsenin yapmayacağı kadar zor” eşiğinin altına çekilebilecek kadar kolaylaştırabilirdi. (GCC, bir LLL'de yazılmış bir derleyicinin bu kadar karmaşık bir şekilde hareket edebilmesi için poster-çocuk türüdür.) Optimizasyonlar temel olarak C's forte olmayan grafik dönüşümlerdir.

C # 'yı derlemek için C #' yı kullanmak için "geriye doğru" düşünmüyorum. Birisi tüm C kodlarını daha yüksek bir dilde yeniden yazmayı teklif etmediği sürece, yine de bir şekilde derlenmesi gerekiyor ve bu da bir derleyiciye ihtiyacınız olduğu anlamına geliyor. Derleyicinin en iyi güvenilirliği ve performansı sunmasını sağlayacak araçlarla yazılmaması gerekir mi?

İyi şanslar! Ne yazdığını görmeyi dört gözle bekliyorum!


3
2018-03-20 18:12





Burada wikipeddia ve maany açık derleyiciler bir derleyiciler listesi http://en.wikipedia.org/wiki/List_of_compilers


0
2018-05-27 18:15