سؤال

أنا أتعلم البيسون في هذا الوقت الشيء الوحيد الذي أقوم به هو rpcalc على سبيل المثال, ولكن الآن أريد أن تنفيذ وظيفة الطباعة(مثل printf ج) لكنني لا أعلم كيف أفعل هذا و أنا أخطط أن يكون بناء الجملة مثل هذا print ("Something here");, ولكن لا أعرف كيفية بناء وظيفة الطباعة و أنا لا أعرف كيفية إنشاء هذا ; مثل نهاية السطر.
شكرا على مساعدتك.

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

المحلول

عليك أولا أن تسأل نفسك:
ما هي [الباطن]أجزاء من بلدي 'print ("شيئا");' syntax ؟

بمجرد تحديد هذه الأجزاء ، "ببساطة" وصف لهم في شكل قواعد قواعد النحو ، جنبا إلى جنب مع تطبيق قواعد الإنتاج.ومن ثم السماح البيسون توليد محلل لك ؛ ذلك حول هذا الموضوع.

لوضع لكم في طريقك:
نصف عمود ربما عنصر سوف تستخدم لفصل statemements (مثل هذا واحد "نداء" إلى الطباعة من آخر).
'طباعة' في حد ذاته هو على الأرجح الكلمات الرئيسية, أو يفضل أن تكون وظيفة الأم اسم من اللغة الخاصة بك.
على طباعة بيان يبدو أن تأخذ سلسلة حرفية كما [أحد] حججها.حرفية string يبدأ وينتهي مع اقتباس مزدوجة (وربما تسمح هرب ونقلت داخل نفسه)
الخ.على بخط غامق مائل التعبيرات المذكورة أعلاه هي بعض من الكيانين ('الرموز' في محلل لغة) هل من المحتمل سوف تحتاج إلى تحديد في بنية اللغة الخاصة بك.لذلك عليك استخدام البيسون القواعد النحوية ، مثل

stmt : print_stmt ';' | input_stmt ';'| some_other_stmt ';' ;
prnt_stmt : print '(' args ')' 
     { printf( $3 ); }
    ;

args : arg ',' args;
...

منذ طرح السؤال حول شبه عمود ربما بعض الارتباك كان من الاستخدامات المختلفة منها ؛ انظر على سبيل المثال أعلاه كيف ';' تنتمي إلى اللغة الخاصة بك حيث الجملة ؛ (لا يقتبس) في نهاية كل حكم القاعدة هي جزء من البيسون اللغة.

ملاحظة:وهذا بالطبع التبسيط تنفيذ تهدف إلى عرض الأساسية.أيضا البيسون الجملة قد يكون تات قبالة (كان هناك / فعلت ذلك ، ولكن متى ;-) ثم "التقى" ANTLR أبدا إلى العودة إلى البيسون ، على الرغم من أنني لا أرى كيف وخفيفة الوزن تماما الذاتي الواردة الطبيعة يمكن أن تجعل من المناسب في بعض الحالات)

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