मैं एक साधारण मार्कअप भाषा बनाने के लिए जेसन (बाइसन) का उपयोग कर रहा हूं। मैं इसके लिए स्पष्ट रूप से नया हूं, लेकिन मामूली बदलाव बहुत अच्छी तरह से काम कर रहे हैं। मैं बस एस/आर संघर्ष के स्रोत को समझ में नहीं आता।व्याकरण का हल शिफ्ट/संघर्ष को कम करने
यह कोई फर्क नहीं पड़ता कि 'टेक्स्ट' दो लेजर क्रियाओं (विभिन्न प्रारंभ शर्तों के साथ) द्वारा वापस किया जाता है और मुझे यह पसंद है क्योंकि ऐसा लगता है कि व्याकरण के पास कम नियम हैं और क्योंकि उपयोगकर्ता को त्रुटि संदेश हैं संगत। मैंने संदर्भ के बावजूद 'टेक्स्ट' नियम को आम बनाने की कोशिश की है और मैंने प्रत्येक टोकन को एक अलग नाम देने का भी प्रयास किया है, लेकिन ऐसा लगता है कि यह सब एक साथ होने पर एस/आर संघर्षों पर कोई प्रभाव नहीं पड़ता है।
पार्सर को सादे-पाठ, उप-सरणी और विभिन्न विशेष नोड्स के साथ एक जेसन-ऑब्जेक्ट बनाने के लिए तैयार किया गया है।
विशिष्टता:
/* lexical grammar */
%lex
%s bracketed
%%
<bracketed>(\\.|[^\\\,\[\]])+ { yytext = yytext.replace(/\\(.)/g, '$1'); return 'Text'; }
<INITIAL>(\\.|[^\\\[])+ { yytext = yytext.replace(/\\(.)/g, '$1'); return 'Text'; }
"[" { this.begin('bracketed'); return '['; }
"]" { this.popState(); return ']'; }
"," return ','
<<EOF>> return 'END'
/lex
%start template
%%
template
: sentence END
;
sentence
: /* empty */
| sentence Text
| sentence '[' ']'
| sentence '[' dynamic ']'
;
dynamic
: sentence
/*| dynamic ',' sentence*/
;
चेतावनियाँ:
Conflict in grammar: multiple actions possible when lookahead token is ] in state 5
- reduce by rule: sentence ->
- shift token (then go to state 6)
States with conflicts:
State 5
sentence -> sentence [ .] #lookaheads= END Text [ ]
sentence -> sentence [ .dynamic ] #lookaheads= END Text [ ]
dynamic -> .sentence #lookaheads= ]
sentence -> . #lookaheads= ] Text [
sentence -> .sentence Text
sentence -> .sentence [ ]
sentence -> .sentence [ dynamic ]
विभिन्न जनरेटर एल्गोरिदम कम या ज्यादा परेशानी है, लेकिन वे सभी मुसीबत है लगता है।
धन्यवाद!
ग्रेट उत्तर। और मुझे आपके द्वारा जोड़े गए सुझाव पसंद हैं - जिन्होंने उन कार्यों में अधिक प्रसंस्करण के लिए अपना दिमाग खोला, उस बारे में सोचा नहीं था। मैं अभी भी इसे सभी काम करने पर काम कर रहा हूं। नियम उपस्थिति का आदेश क्या मायने रखता है? –
आपने मुझे यह भी महसूस करने में मदद की कि संघर्ष समाधान समाधानों के लिए कार्रवाई वास्तव में आवश्यक नहीं है। –
मैंने व्याकरण को अपडेट किया - मैं अभी भी इसे नहीं देख सकता। –