سؤال

يجب أن تحدد قواعد اللغة من ملف مثل واحد هو مبين أدناه.

//نموذج ملف
NameCount = 4
الاسم = a
Name = ب
Name = c
Name = d
//نهاية الملف

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

كيفية تعريف في اللغة أن اسم يجب تكرار بالضبط nc مرات ؟

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

المحلول

هذا لا يمكن التعبير عنها في اللغة نفسها.إذا كان عدد إصلاح يمكن التعبير عن العدد المتوقع من الرموز.ولكن المميز تيار التغييرات على أساس القيمة.ما يمكنك القيام به هو إدراج هذا في lexer/محلل الجمع.ولكن لا يمكنك إنشاء هذا البرنامج من قبل فقط سهل النحوي اللغوي.ربما كنت تريد شيئا على غرار

grammar test;

@members {
  private int count = 0;
  private int names = 0;
}

file
    : count (name)+
      {
        if (count != names) throw new Exception("");
      }
    ;

count
    : 'NameCount' EQ Number
      {
        count = Integer.parseInt($Number.text);
      }
    ;

name
    : 'Name' EQ Value
      {
        names++;
      }
...

نصائح أخرى

أنا متأكد من أن هذا هو السياق مجانا قواعد اللغة.إذا لم يكن, لا تستطيع ان تقول ANTLR تحليل اللغة.

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