سؤال

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

شكرا لك مقدما

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

المحلول

من خلال "Lexing" فإنك تشير إلى التحليل المعجمي، وهناك بعض الأدوات القديمة التي لا تزال تعمل في الغالب باسم Lex وYacc.يقوم Lex ببناء الرمز المميز، ويرمز Yacc إلى "مترجم مترجم آخر" وهو المحلل اللغوي الفعلي.

يتمثل مفهوم lex/Yacc في إنشاء قواعد نحوية للغة، ثم تشغيل القواعد من خلال أداة paslex لإنشاء كود المصدر (عادةً في لغة C) والذي يمكنك استخدامه لتحليل ملف واتخاذ إجراء بشأن كلمات رئيسية ورموز مميزة محددة .كتب Martin Waldenburg نسخة باسكال من lex/yacc تسمى PasLex والتي كانت تتجول منذ أكثر من عقد من الزمن وتم تحويلها إلى دلفي (على الرغم من أنه قد لا يعمل مع أحدث الإصدارات دون بعض الأعمال البسيطة).إذا كنت أتذكر بشكل صحيح، فإنه يستخدم نفس ملفات الإدخال النحوي .L مثل lex، لذا فإن أي وثائق تجدها لـ lex/yacc يمكن أيضًا تطبيقها على paslex، باستثناء أنك تحصل على كود باسكال كمخرجات.

لست متأكدًا من توفر الوثائق الحالية.قبل ظهور الإنترنت (شهقت)، كنا نستخدم الكتب وكان معظم هذا موثقًا بشكل كبير على الورق الذي تحول إلى اللون الأصفر منذ فترة طويلة... ومع ذلك، تقول الشائعات أنك قد.. ربما تكون قادرًا على الحصول على نسخة مستعملة من أمازون.لقد قطعت أسناني على هذا باستخدام كتاب يُعرف أيضًا باسم "كتاب التنين" والذي يبدو أنه أعيد نشره مؤخرًا في عام 2006.


يحرر:

لقد كنت مخطئًا بالأداة، لقد كانت كذلك TPLY.كان PasLex أحد تطبيقات قواعد دلفي... وكانت TPLY هي أداة Lex/Yacc التي قامت بإنشاء مصدر باسكال من ملف L..

نصائح أخرى

وأنا لست متأكدا مما إذا كان ذلك ممكنا ولكن لPHP هل سيكون قادرا على استدعاء PHP CLI من دلفي للحصول على المعلومات؟

وإذا كان الأمر كذلك هل يمكن تسمية token_get_all () ثم بصق النتيجة في شيء يمكنك تحليل في دلفي (ربما أكس، سلمان، وما إلى ذلك). هذا هو lexing. المشكلة مع ذلك هو أن ليست سوى نصف المشكلة محلولة - لا يزال لديك لفهم كل رمز في السياق للحصول على النتائج التي تريدها

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