मैं यूटीएफ -8 अक्षरों को संभालने के लिए एक बाइसन पार्सर बनाने की कोशिश कर रहा हूं। मैं नहीं चाहता कि पार्सर वास्तव में यूनिकोड चरित्र मानों की व्याख्या करे, लेकिन मैं इसे बाइट्स के अनुक्रम के रूप में यूटीएफ -8 स्ट्रिंग को पार्स करना चाहता हूं।क्या बाइसन यूटीएफ -8 अक्षरों को पार्स कर सकता है?
अभी, बाइसन निम्नलिखित कोड जो समस्याग्रस्त है उत्पन्न करता है:
if (yychar <= YYEOF)
{
yychar = yytoken = YYEOF;
YYDPRINTF ((stderr, "Now at end of input.\n"));
}
समस्या यह है कि UTF-8 स्ट्रिंग से कई बाइट एक नकारात्मक मूल्य होगा, और बाइसन एक EOF नकारात्मक मान के रूप की व्याख्या है, और बंद हो जाता है।
क्या इसके आसपास कोई रास्ता है?
खैर, मेरा लेक्सर यूटीएफ -8 वर्णों को ठीक से संभालता है, लेकिन बाइसन पार्सर जैसे ही ऋणात्मक मूल्य देखता है, उतना ही पार्सिंग बंद कर देता है। कृपया सलाह दें। –
क्या आप एक बार में अपनी फ़ाइल 1 बाइट पढ़ रहे हैं? या एक समय में 1 utf-8 एन्कोडेड वर्ण? एक समय में – eduffy
1 बाइट। –