पाठ को पार्स करते समय, मुझे नीचे दिए गए कोड के बाद सामान्य रूप में मिनी-स्टेट-मशीनों को लागू करने की आवश्यकता होती है।क्या टेक्स्ट पार्स करते समय राज्य मशीनों को लागू करने के लिए कोई अच्छा सीपीएएन मॉड्यूल है?
क्या कोई सीपीएएन मॉड्यूल है जिसे "सर्वोत्तम अभ्यास" माना जाता है और यह एक आसान और सुरुचिपूर्ण तरीके से राज्य मशीन तर्क को लागू करने के लिए उपयुक्त है?
मैं समाधान Parse::RecDescent
की तुलना में कम जटिल है, लेकिन अगर कोई भी मौजूद हैं और Parse::RecDescent
इस समस्या का लागू करने के लिए की तुलना में मैंने सोचा था कि बहुत आसान है, मैं बहुत बजाय इसे पर विचार मेरे अपने रोलिंग की तरह मैं बहुत किया गया है करने को तैयार हूँ पसंद करेंगे दूर।
उदाहरण सामान्य पार्स कोड:
my $state = 1;
while (my $token = get_next_token()) { # Usually next line
if ($state == 1) {
do_state1_processing();
if (token_matches_transition_1_to_2($token)) {
do_state_1_to_2_transition_processing();
$state == 2;
next;
} elsif (token_matches_transition_1_to_4($token)) {
do_state_1_to_4_transition_processing();
$state == 4;
next;
} else {
do_state1_continuation();
next;
}
} elsif ($state == 5) {
do_state5_processing();
if (token_matches_transition_5_to_6($token)) {
do_state_5_to_6_transition_processing();
$state == 6;
next;
} elsif (token_matches_transition_5_to_4($token)) {
do_state_5_to_4_transition_processing();
$state == 4;
next;
} else {
do_state5_continuation();
next;
}
} else {
}
}
'एफएसए :: नियम 'के बारे में क्या? (यहां दिए गए 'डीएफए :: *' मॉड्यूल [यहां] (http://www.perl.com/pub/2004/09/23/fsms.html) एक और लीड हो सकता है)। – Ouki
मैं स्वयं इस तरह के मामले में अगले राज्य को लौटने वाले सब के एक हैश का उपयोग करूंगा। हालांकि, मैं देखना चाहता हूं कि और भी क्या उपयोग किया जा सकता है। – Dallaylaen
@ दलायलेन: मेरा विचार बिल्कुल, लेकिन डीवीके ने मॉड्यूल के लिए कहा;) – Ouki