سؤال

أقوم بإنشاء برنامج يتبع قواعد معينة للتسبب في عدد الكلمات، المقاطع، والجمل في ملف نصي معين.

الجملة هي مجموعة من الكلمات المنفصلة عن طريق المسافة البيضاء التي تنتهي في أ. أو ! أو ؟ ومع ذلك، فإن هذه هي أيضا جملة:

Greetings, earthlings..

الطريقة التي اقتربت بها هذا البرنامج هي المسحوبة من خلال ملف نصي حرف واحد في وقت واحد باستخدام GetChar (). أحظر من العمل مع الملف النصي بأكمله في الذاكرة، يجب أن يكون حرف واحد أو كلمة في وقت واحد.

إليكم معضلي: باستخدام GetChar () يمكنني معرفة ما هو الحرف الحالي. أنا فقط أستمر في استخدام GetChar () في حلقة حتى يجد حرف EOF. ولكن، إذا كانت الجملة لها فترات متعددة في النهاية، فلا تزال جملة واحدة. مما يعني أنني بحاجة إلى معرفة ما كانت الشخصية الأخيرة قبل تحليلها، والآخر بعد ذلك. من خلال تفكيري، هذا يعني دعوة GetChar () أخرى، ولكن من شأنه أن يخلق مشاكل عندما أذهب إلى المسح الضوئي في الحرف التالي (تخطى الآن حرفا).

هل لدى أي شخص اقتراحا كيف يمكنني تحديد أن الجملة المذكورة أعلاه، هي بالفعل جملة؟

شكرا، وإذا كنت بحاجة إلى توضيح أو أي شيء آخر، اسمحوا لي أن أعرف.

هل كانت مفيدة؟

المحلول

تحتاج فقط إلى تنفيذ بسيط جدا آلة الدولة. وبعد بمجرد العثور على نهاية الجملة التي تظل فيها في تلك الحالة حتى تجد بداية جملة جديدة (عادة ما تكون هذه شخصية فضائية غير بيضاء أخرى غير المنهي مثل. أو؟).

نصائح أخرى

تحتاج إلى قواعد قابلة للتوسيع. ابحث عن مثال على التعبيرات العادية وحاول بناء واحد.

عموما اللغة الإنسانية متنوعة وغير قابلة للتحويل بسهولة خاصة إذا كان لديك خطاب عامي لتحليل لغات أو لغات مختلفة. في بعض اللغات قد لا يكون من الواضح أن التمييز بين الكلمة وجملة يكون.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top