2009-12-22 20 views
7

मैं Shakespeare programming language के साथ प्रयोग करना चाहता था में 10.6 परिणाम मैक ओएस एक्स पर शेक्सपियर प्रोग्रामिंग भाषा अनुवादक spl2c को क्रियान्वित करने, इसलिए मैं here से डाउनलोड और cd spl-1.2.1Make का उपयोग कर Makefile मार डाला।संकलन और चेतावनी/त्रुटियों

spl2c का संकलन एक जोड़े को चेतावनी के साथ निष्पादित करता है:

scanner.l:600: warning, rule cannot be matched 
<stdout>:5808: warning: ‘yyunput’ defined but not used 

और फिर जब यह सब उदाहरण संकलित करने के लिए प्रयास करता है सब कुछ बिगड़ जाता है:

../spl/bin/spl2c <fibonacci.spl> fibonacci.c 
Warning at line 19: equality expected 
Warning at line 28: equality expected 
Warning at line 30: comment expected 
Warning at line 30: comment expected 
Warning at line 30: comment expected 
Warning at line 30: comment expected 
Warning at line 32: comment expected 
Warning at line 32: comment expected 
Warning at line 32: comment expected 
Warning at line 32: comment expected 
Warning at line 34: comment expected 
Warning at line 34: comment expected 
Warning at line 34: comment expected 
Warning at line 34: comment expected 
Warning at line 36: comment expected 
Warning at line 36: comment expected 
Warning at line 37: comment expected 
Warning at line 37: comment expected 
Warning at line 37: comment expected 
Warning at line 37: colon expected 
Warning at line 40: equality expected 
Warning at line 51: comment expected 
Warning at line 51: comment expected 
Warning at line 51: comment expected 
Warning at line 51: comment expected 
Warning at line 51: comment expected 
Warning at line 51: colon expected 
Error at line 59: 'act [roman number]' or 'scene [roman number]' expected 
1 errors and 27 warnings found. No code output. 

किसी को भी सही दिशा में मुझे बात कर सकते हैं इसे ठीक करने के लिए? मेरा मूल प्रोजेक्ट स्प्लिगर्स डीबग करने के लिए झुकाव नहीं कर रहा था, मैं वास्तव में अपना खुद का कंपाइलर लिखना चाहता हूं, लेकिन मैं अब के लिए अपनी प्रारंभिक परियोजना के साथ रहना पसंद करूंगा)।

मैं OS X 10.6.2, gcc version 4.2.1 (Apple Inc. build 5646) (dot 1), flex 2.5.35, और bison (GNU Bison) 2.3 चला रहा हूं।

संपादित करें: सरल कार्यक्रमों के लिए gotos की जरूरत नहीं है (जैसे hello.spl) आप कर सकते हैं पहले अधिनियम मैं/दृश्य आई

उत्तर

22

यह लेक्सिकल पार्सर में नियमित अभिव्यक्ति में एक दोष है।

I forked the language.

I fixed the issue.

I notified the original authors.

Here's a release of the language that includes the fix for your enjoyment.

There are still a few warnings, लेकिन वे कुछ भी प्रभावित करने के लिए नहीं है। Let me know यदि आपको कोई अन्य कार्यात्मक समस्याएं मिलती हैं और मैं देखता हूं कि मैं उनके साथ क्या कर सकता हूं।

(Roffel - यह काला जादू, तथ्य यह है कि कोई भी इस समस्या के बारे में परवाह करता है के लिए हो सकता है अगर नहीं।)

+0

डिट्टो-एथ। धन्यवाद केली। Marlowe OpenCOBOL, COBILL में एम्बेडेड किया गया है। –

+0

नेक्रोमैंसी की बात करते हुए: वास्तव में, यहां प्रस्तुत निदान गलत है। मूल नियमित अभिव्यक्ति के साथ ही सुझाए गए प्रतिस्थापन के साथ काम करेगा। हालांकि, लगभग एक दशक के लिए फ्लेक्स में एक बग रहा है जिसमें सिंगल-कैरेक्टर केस-असंवेदनशील तर्कों के साथ ब्रेसिड दोहराने के उपयोग शामिल हैं। मैंने इसे https://github.com/westes/flex/issues/193 पर रिपोर्ट किया – rici

1

scanner.l:600: warning, rule cannot be matched साथ पहली समस्या है को छोड़कर सभी अधिनियम/दृश्य लाइनों को हटाने से समस्या के समाधान मिलता है क्योंकि rotten शब्द को include/negative_adjective.wordlist फ़ाइल में दो बार जोड़ा गया है, बस इसे वहां से हटा दें और पहली चेतावनी हटा दी जाएगी। हालांकि यह बाकी को ठीक नहीं करता है। अगर मैं कुछ और ठीक कर सकता हूं तो यहां एक नज़र डालें।

+0

अभी थोड़ा सा देखा है। स्कैनर "दृश्यों" और "कृत्यों" के लिए रोमन संख्याओं को मिश्रण करता प्रतीत होता है। व्याकरण को अलग-अलग हिस्सों के लिए फिर से लिखने में देखा गया लेकिन फिर यह पहले व्यक्ति "आई" टोकन के साथ मिश्रित हुआ। खैर, मैं कहूंगा कि इस चीज़ को बनाने के दौरान इस्तेमाल किए गए स्कैनर और व्याकरण के आधार पर कुछ ऐसा होता है ... काम करने के लिए मजेदार होता :) :) – epatel

+0

"स्कैनर और व्याकरण" - मेरा मतलब है कि बाइसन और फ्लेक्स संस्करण – epatel

+0

ठीक है, यह एक अच्छी शुरुआत है। जब मेरे पास समय होता है तो मैं इसे भी देखने की कोशिश कर सकता हूं। या शायद कुछ और सहायक आत्मा आ जाएगी और इसे उठाएगी। मैं मानता हूं कि यह काम देखने के लिए मनोरंजक होगा। –

3

फ्लेक्स में एक बग से यह समस्या परिणाम संस्करणों 2.5.4 और 2.5.33 के बीच कहीं न कहीं शुरू की; यही वह समय है जब शेक्सपियर प्रोसेसर लिखा गया था और इस सवाल से पूछा गया था। बग में एक केस-असंवेदनशील नियमित अभिव्यक्ति (उदाहरण के लिए i{1,3}, जो रोमन अंकों के लिए शेक्सपियर फ्लेक्स विनिर्देश का हिस्सा है) में सिंगल-कैरेक्टर तर्कों के साथ ब्रेस्ड पुनरावृत्ति ऑपरेटर का उपयोग शामिल है; बग का परिणाम यह है कि केस-असंवेदनशीलता खो जाती है, ताकि i{1,3} विस्तारित हो जैसे कि [iI]i?i?[iI][iI]?[iI]? के बजाय। इसका मतलब है कि ऊपरी-केस रोमन अंक दोहराए गए अक्षरों (जो शेक्सपियर स्रोत कोड में सामान्य है) के साथ सही ढंग से पहचाना नहीं जाएगा।

मार्लो में काइल कार्टमेल का परिवर्तन निम्न-मामले के बजाय रेगेक्स में ऊपरी-केस अक्षरों का उपयोग करता है, जो इस मुद्दे को बदल देता है ताकि केवल ऊपरी-केस रोमन अंकों विश्वसनीय रूप से काम कर सकें।

मैंने फ्लेक्स बग की रिपोर्ट https://github.com/westes/flex/issues/193 के रूप में की। फ्लेक्स को यह एक लाइन पैच है अगर किसी को भी इसे आधिकारिक रिलीज से पहले की जरूरत है।

संबंधित मुद्दे