मैं अब्दुलजाज़ घुलौम द्वारा Compilers: Backend to Frontend (and Back to Front Again) के माध्यम से अपना रास्ता काम करने की कोशिश कर रहा हूं। ऐसा लगता है कि पूर्ण पाठ्यक्रम/संगोष्ठी में कौन सा उम्मीद करेगा, इसलिए मैं खुद टुकड़ों को भरने की कोशिश कर रहा हूं।घुलौम किस योजना का उपयोग करता है?
उदाहरण के लिए, मैं DrScheme की R5RS स्वाद में अपने परीक्षण ढांचे का उपयोग करने की कोशिश की है, लेकिन यह मैक्रो सामान की तरह प्रतीत नहीं होता:
src/ghuloum/tests/tests-driver.scm:6:4: read: illegal use of open square bracket
मैं पर अपने परिचय कागज पढ़ा है पाठ्यक्रम, An Incremental Approach to Compiler Construction, जो उपयोग की जाने वाली तकनीकों का एक शानदार अवलोकन देता है, और सुविधाओं के साथ कुछ योजनाओं का उल्लेख करता है जो शायद 'अतिरिक्त क्रेडिट' के लिए लागू करना चाहते हैं, लेकिन वह पाठ्यक्रम में उपयोग की जाने वाली योजना का उल्लेख नहीं करता है।
अद्यतन
मैं अभी भी मूल प्रश्न में खुदाई कर रहा हूँ (जांच कर नीचे एली ने सुझाव दिया इस तरह के पेटिट योजना के रूप में विकल्प), लेकिन Gholoum के काम से संबंधित एक दिलचस्प लिंक मिल गया है, तो मैं इसे यहाँ शामिल कर रहा हूँ।
[Ikarus योजना] (http://en.wikipedia.org/wiki/Ikarus_(Scheme_implementation)) Ghuloum के विचारों की वास्तविक कार्यान्वयन है, और अपनी पीएचडी के काम के लिए किया गया हिस्सा प्रतीत होता है। यह R6RS के पहले कार्यान्वयन में से एक माना जाता है। मैं स्थापित करने के लिए कोशिश कर रहा हूँ अब Ikarus, लेकिन कॉन्फ़िगर स्क्रिप्ट पहचान करने के लिए अपने सिस्टम के libgmp.so की स्थापित करते हैं, तो मेरी समस्या अभी भी अनसुलझे हैं नहीं चाहता है।
उदाहरण
निम्न उदाहरण PLT 2.4 में काम करने के लिए लगता है .2 सुंदर बिग
01 का उपयोग कर डीआरईडी में चल रहा है(require lang/plt-pretty-big)
(load "/Users/donaldwakefield/ghuloum/tests/tests-driver.scm")
(load "/Users/donaldwakefield/ghuloum/tests/tests-1.1-req.scm")
(define (emit-program x)
(unless (integer? x) (error "---"))
(emit " .text")
(emit " .globl scheme_entry")
(emit " .type scheme_entry, @function")
(emit "scheme_entry:")
(emit " movl $~s, %eax" x)
(emit " ret")
)
एक विफलता के कारण को बदलने के लिए #lang योजना परिणाम त्रुटि संदेश
foo.scm:7:3: expand: unbound identifier in module in: emit
जो प्रतीत होता है के साथ निर्देश की आवश्यकता का प्रयास परीक्षण-driver.scm लोड करने के लिए। #lang r6rs का उपयोग करने का प्रयास आरईपीएल को अक्षम करता है, जिसे मैं वास्तव में उपयोग करना चाहता हूं, इसलिए मैं सुंदर बिग के साथ जारी रखने की कोशिश करने जा रहा हूं।
मेरी रोगी सहायता के लिए एली बरज़ील के लिए धन्यवाद।
इसके अलावा, चेज़ योजना की नई रिलीज चीजें तोड़ सकती हैं, इसलिए यदि आप चेज़ योजना का उपयोग करते हैं, तो मैक्रोज़ और मॉड्यूल से जुड़ी पुरानी चीजें काम नहीं कर सकती हैं। – erjiang