سؤال

في LEX/Flex هل هناك طريقة للحصول على الموضع في دفق الأحرف (من بداية الملف) الذي يظهر فيه رمز في؟ نوع من مثل yylineno باستثناء أنه يعيد موضع الحرف باعتباره عدد صحيح؟

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

شكرًا!

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

المحلول

يمكنك تتبع موضع الحرف باستخدام yyleng و yy_user_action. يمتلك Yyleng طول الرمز المميز الحالي ، يتم استدعاء yy_user_action قبل مطابقة الرمز المميز. في YY_USER_ACTION ، أضف yyleng إلى متغير الموضع. ستحتاج إلى إعادة تعيين المتغير في كل رمز في نهاية الخط إلا إذا كنت تريد موضع الحرف من بداية دفق الإدخال. في إجراء القواعد الخاصة بك ، المتغير - yyleng هو موضع بداية الرمز المميز.

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