سؤال

لدي قاعدة متكررة اليسار مثل ما يلي:

EXPRESSION      :    EXPRESSION BINARYOP EXPRESSION | UNARYOP EXPRESSION | NUMBER;

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

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

المحلول

يمكنك إضافة قاعدة متكررة:

EXPRESSION      : EXPRESSION BINARYOP EXPRESSION
                | UNARYOP EXPRESSION
                | NUMBER
                | OPENPARENS EXPRESSION CLOSEPARENS
                ;

نصائح أخرى

نعم، أنت تحاول أن تفعل الكثير في Lexer. إليك كيفية التجول حول القواعد اليسرى العودية:

http://www.antlr.org/wiki/display/antlr3/xpressionsevaluator. (انظر كيف قاعدة المحلل expr سلبا وصولا الى القاعدة atom ثم تسمى متكررة من atom تكرارا)

هذر

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