2009-12-22 29 views
7

uyarı/hatalar Mac OS X üzerinde 10,6 sonuçları Shakespeare Programlama Dili çevirmen spl2c yürütülmesi, bu yüzden here indirmiş ve cd spl-1.2.1Make kullanarak Makefile yürüttü.Derleme ve ben <a href="http://shakespearelang.sourceforge.net/report/shakespeare/" rel="nofollow noreferrer">Shakespeare programming language</a> deneme istedi

spl2c derlenmesi birkaç uyarılarla yürütür:

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

Ve tüm örneklerini derlemeye çalıştığında sonra her şey karmakarışık olur:

../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. 

herkes doğru yönde işaret edebilir Bunu düzeltmek için? Orijinal projem, spl'leri öğreniyor olacaktı, derleyicilerin hatalarını ayıklamamıştı (aslında kendi derleyicimi yazmak isterdim, ama şimdiye kadarki ilk projemle uğraşmayı tercih ederim).

OS X 10.6.2, gcc version 4.2.1 (Apple Inc. build 5646) (dot 1), flex 2.5.35 ve bison (GNU Bison) 2.3 çalıştırıyorum.

DÜZENLEME: Basit programları için öncelikle ACT I/scanner.l:600: warning, rule cannot be matched ilk sorundur

cevap

22

Bu, sözcüksel ayrıştırıcıdaki normal ifadedeki bir kusurdur.

There are still a few warnings

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

I notified the original authors.

I fixed the issue.

I forked the language.

, ama hiçbir şey etkileyecek gibi görünmüyor. Let me know, başka bir işlevsel sorunla karşılaşırsanız ve bunlarla neler yapabileceğimi göreceğim.

(Roffel - değilse bu kimse bu soruna umurunda gerçeği, necromancy olacaktır.) Bu sorun Flex bir hata sonucu

+0

Ditto-eth. Teşekkürler Kyle. Marlowe, OpenCOBOL COBILL'e yerleştirildi. –

+0

Otopsi hakkında konuşma: aslında burada sunulan tanı yanlış. Orijinal düzenli ifade, önerilen değiştirme kadar işe yarayacaktır. Bununla birlikte, on yıl boyunca, tek karakterlik büyük/küçük harf duyarsız argümanlarla, tekrarlı tekrarların kullanılmasını içeren bir hata vardı. Https://github.com/westes/flex/issues/193 adresinde bildirdim – rici

1

SAHNE I. dışındaki tüm ACT/SAHNE hatlarını silerek sorunu çözmek (örn hello.spl) gotos olabilir gerektirmeyen rotten kelimesi include/negative_adjective.wordlist dosyasına iki kez eklendiğinden, onu buradan kaldırın ve ilk uyarı silinecektir. Bu gerisini düzeltmez. Daha fazla bir şey çözebilirsem, buraya bir göz atmak.

+0

Şimdi biraz düşündüm. Tarayıcı "sahneler" ve "eylemler" için roma numaralarını karıştırıyor gibi görünüyor. Dilbilgisini ayrı bölümlere sahip olacak şekilde yeniden yazmayı düşündükten sonra ilk "I" jetonuyla karıştırıldı. Eh, bir şey tarayıcı ve bu şeyi oluştururken kullandıkları grammer bağlı olduğunu söyleyebilirim ... çalışma görmek için eğlenceli olurdu :) – epatel

+0

"tarayıcı ve gramer" - Bizon ve esnek sürümü – epatel

+0

iyi demek, Bu iyi bir başlangıç. Zamanım olduğunda, ona da bakmaya çalışabilirim. Ya da belki başka bazı yararlı ruhlar içeri girer ve alırlar. Çalışmayı görmenin eğlenceli olacağını kabul ediyorum. –

3

sürümleri 2.5.4 ve 2.5.33 arasında bir yerde tanıttı; Shakespeare işlemcisinin yazıldığı ve bu soruyu sorduğu zaman arasında. Hata, tek-yönlü argümanlara sahip, tek-karakterli argümanlara sahip olan, tekrarlanan tekrarlayan operatörün kullanımını içerir (örneğin, Romen rakamları için Shakespeare flex spesifikasyonunun bir parçası olan i{1,3}); hatanın sonucu, büyük/küçük harf duyarsızlığının kaybolmasıdır, böylece i{1,3}, [iI][iI]?[iI]? yerine [iI]i?i? olarak genişletilmiştir. Bu, tekrarlanan karakterlerle (Shakespeare kaynak kodunda normal olan) büyük harfli romen rakamlarının doğru olarak tanımlanmayacağı anlamına gelir.

Marlowe'deki Kyle Cartmell'in değişimi küçük harf yerine büyük harfleri kullanır, bu da sorunu tersine çevirir, böylece yalnızca büyük harfli Romen rakamları güvenilir şekilde çalışır.

Flex hatasını https://github.com/westes/flex/issues/193 olarak bildirdim. Herkesin resmi sürümden önce ihtiyacı varsa, Flex'e tek satırlık bir yama.

İlgili konular