Limon Ayrıştırıcı-Generator: Sabit simgeler değerlendirilmez mi?

0 Cevap php

Ben ayrıştırıcıları öğrenmeye çalışın. Benim C becerileri oldukça düşük olduğundan, ben Ayrıştırıcı Jeneratörler hakkında bir PHP Lemon öğrenmek fiil googled. Her neyse, burada kod çok normal limon arkadaşlar için okunabilir olmalı.

Ayrıştırma soruları tutarken her zaman olduğu gibi, ilk basit bir hesap üretmeye çalışıyor ile başlar.

Yani benim ilk adım basitçe şudur:

start(A)   ::= expr(B). {echo "======RESULT:".A.":".B.":=========".PHP_EOL;}

ne ilk testi ayrıştırır:

include "mysimple.php"; //include the generated Parser
$P = new ParseParser(); //create a Parser object
$P->Parse(ParseParser::VALUE,"13"); // here is the simple test, just understand the Number 13, pls
$P->Parse(0,0); //input is finished, parse!
echo "finished. yeah!".PHP_EOL;

... Ile elde edilen sonuç:

======RESULT:13:=========
finished. yeah!

Yani, her şey beklendiği gibi. Şimdi nihayet bize işlemleri işlemek sağlayacak bir adım hazırlamak için deneyin, expression:

start ::= expr(B).  {echo "======RESULT:".B.":=========".PHP_EOL;}
expr  ::= VALUE(B). {echo "got a value:".B.PHP_EOL;}

Şimdi aynı testi çalıştırdığınızda, ben aynı çıktıyı, artı bir satır söyleyerek görmek için bekliyoruz got a value: 13. Ama ben sadece bu olsun:

got a value:13
======RESULT::=========
finished. yeah!

Peki, ne oldu? Neden sonuç çizgisi boş? Açıkçası expr a VALUE ', 13' ve değerlendirir. Limon değerlendirilmesi umursamıyor? Ben kendim bir şekilde yapmak zorunda mı? Ama nasıl, ben bu noktada bir şey olsun?

0 Cevap