2011-11-30 17 views
6

Varsayılan olarak, esnek en uzun eşleşme kuralını kullanır. Bu davranışı en kısa sırayla eşleştirmek için geçersiz kılacak bir yol var mı? En kısa eşleşme kuralını esnek olarak nasıl etkinleştirirsiniz (lexer)?

Flex kılavuzunda size

+0

Hayır ve sahip olsaydınız bunu istemezdiniz. Örneğin, çoğu lexer olmasa bile (kesinlikle benim olan her şey) tümüyle bir kuralla sona ermektedir. yytext [0]; döndür. Bu, bir şey yapan tek kural olacaktı. – EJP

cevap

0

This page ederiz bu bir tarayıcı yerine bir ayrıştırıcı ve düzenli ifadeler eksik işlevsellik eklemek için kullanılabileceğini söylüyor çünkü olmayan açgözlü operatörleri yok diyor.

+0

Ben açgözlü operatörler demek istemedim.Farklı bir regexprs varsa, hem bir stringer aynı önek ile eşleşen bir lexer varsayılan olarak en uzun olanı seçer. İhtiyacım olan şey daha kısa olanı almayı, sıfırlamayı ve tekrar eşleştirmeye başlamanı sağlamak. – VilleDePommes