سؤال

وأنا بناء على المواصفات MGrammar تحليل بعض رمز زائف تبحث عن قطع معينة من المعلومات. لدي أكثر من عمل المواصفات باستثناء 1 عنصر cruical.

والتعليمة البرمجية الزائفة يدعم بناء جملة إذا، ثم، آخر، ولقد كنت غير قادر على العثور على طريقة مرضية للتحليل ذلك. وبناء بالضبط هو ...

وIF expression operator expression THEN
Statement1
Statement2
Statementn
ELSEIF expression operator expression THEN
Statement1
Statement2
Statementn
ELSE
Statement1
Statement2
Statementn
ENDIF

... أين عدا وELSEIF اختيارية.

ما لدي حتى الآن هو: `بيان جملة = ص: ReturnClause => ص |
الأول: IfClause => ط |
الصناعات الاستخراجية: ElseifClause => الصناعات الاستخراجية |
البريد: ElseClause => ه |
النهاية: EndClause => نهاية |
الخامس: التعبير => الخامس.

وتركيب IfClause = إذا كان اسم: مشغل معرف: المشغل ثم بيان: بيان => إذا [الاسم، المشغل، ثم [البيان]].
اسم تركيب ElseifClause = ELSEIF: مشغل معرف: المشغل ثم بيان: بيان => ELSEIF [الاسم، المشغل، ثم [البيان]].
تركيب ElseClause = بيان آخر: بيان => آخر [البيان].
تركيب EndClause = ENDIF. `

ومع ذلك، فإن بيان بعد 'ثم' و 'آخر' ليس الجشع بما فيه الكفاية ويلتقط فقط العبارة الأولى في شجرة تحليل.

لقد حاول احد لتنفيذ إعراب بيان حالة استخدام MGrammar أو لديك أي اقتراحات؟

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

المحلول

ويمكنك العثور على (تقريبا) الكامل C # 4.0 النحوي في مشروع ركبه على كود بلاكس. دان Vanderboom كتبه في إعداد له رمز اللغة جديد يسمى "النموذج الأصلي".

وربما تساعد: http://archetype.codeplex.com/

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