পার্স ট্রি এবং অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রিগুলির মধ্যে পার্থক্য বোঝানোর জন্য এর সহজ উদাহরণটি কী?


14

আমার উপলব্ধি অনুসারে, কোনও পার্সার একটি পার্স গাছ তৈরি করে এবং তারপরে এটি ত্যাগ করে। যাইহোক, এটি একটি বিমূর্ত সিনট্যাক্স ট্রিও পপআপ করতে পারে, যা সংকলকটি সম্ভবত এটি ব্যবহার করে।

আমি এই ছাপের আওতায় রয়েছি যে পার্সিং গাছ এবং বিমূর্ত সিনট্যাক্স গাছ উভয়ই পার্সিং পর্যায়ে তৈরি করা হয়েছে। তাহলে কেউ ব্যাখ্যা করতে পারল কেন এগুলি আলাদা?


3
কেন তাদের আলাদা হতে হবে? দুটি সামান্য ভিন্ন দৃষ্টিকোণ থেকে তারা কি একই জিনিস হতে পারে না?
এস.লট

1
নিশ্চিত নয় যে আমি এই দুটি "ভিন্ন ভিন্ন দৃষ্টিকোণ" :-(
সংযুক্তি যুক্তি

এটাই আসল কথা. তারা একই জিনিস, তাই বিভ্রান্তি। আপনার দৃষ্টিভঙ্গির উপর নির্ভর করে আপনার কাছে কেবল আলাদা শব্দ রয়েছে: পার্সিং বনাম কোড জেনারেশন (বা এক্সপ্লিকেশন, কোনও দোভাষীর ক্ষেত্রে)।
এস.লট

এখানে কোন পার্থক্য নেই. কিছুটা কল্পনা দিয়ে যে কোনও সম্ভাব্য বিমূর্ত সিনট্যাক্স গাছের জন্য একটি সিনট্যাক্স উপস্থাপনা আবিষ্কার করতে পারে। কল্পনার অভাবের সাথে, লিস্পের এস-এক্সপ্রেশনগুলি হ'ল সমস্ত কিছুর জন্য উপযুক্ত একটি ডিফল্ট বাক্য গঠন।
এসকে-যুক্তি

1
আপনার সবার মন্তব্য করার আগে উত্তরটি পড়া উচিত ছিল। একটি পার্থক্য আছে, কিন্তু তাদের পৃথক বা সংযুক্ত করা একটি বাস্তবায়ন সমস্যা।
পল

উত্তর:


20

একটি পার্স গাছ একটি কংক্রিট সিনট্যাক্স ট্রি হিসাবেও পরিচিত।

মূলত, বিমূর্ত গাছের কংক্রিট গাছের চেয়ে কম তথ্য থাকে। কংক্রিট গাছ ভাষায় প্রতিটি উপাদান ধারণ করে, যেখানে বিমূর্ত গাছটি উদ্বেগহীন টুকরো ফেলে দেয়।

উদাহরণস্বরূপ: (2 + 5) * 8

কংক্রিটটি দেখতে এ রকম

  ( 2  + 5 )  * 8
  |  \ | / |  | |
  |   \|/  |  | |
   \___|__/   | |
       \______|/

যদিও বিমূর্ত গাছটি রয়েছে:

2  5 
 \/   
  +  8
   \/
   *

কংক্রিটের ক্ষেত্রে প্রথম বন্ধনী এবং ভাষার সমস্ত টুকরো গাছটিতে সংযুক্ত করা হয়েছে। বিমূর্ত ক্ষেত্রে বন্ধনীগুলি শেষ হয়ে গেছে, কারণ তাদের তথ্য গাছের কাঠামোর সাথে সংযুক্ত করা হয়েছে।


আপনি কোন ভাষার সংকলকটিতে এইভাবে প্রয়োগ করা হয় তা উল্লেখ করতে ভুলে গেছেন। কারণ, আপনি জানেন, আপনার দরকার নেই ... পার্সারটি ঠিক তত্ক্ষণাত বন্ধনী ফেলে দিতে পারে।
এঙ্গো

1
@ ইঙ্গো, যখন কোনও সংকলক বন্ধনী ফেলে দিচ্ছে তখন আমার উত্তরের কিছুই বলার নেই। এটি একটি কংক্রিট পার্স গাছ এবং একটি বিমূর্ত পার্স গাছের মধ্যে পার্থক্য কী তা জিজ্ঞাসা করছে।
উইনস্টন ইওয়ার্ট

সুতরাং, অবশ্যই, আপনি আপনার দাবির জন্য কোনও উত্সের নাম রাখতে পারেন? না এটি কি কেবল আপনার ব্যক্তিগত সংজ্ঞা?
ইনগো



0

আপনার প্রথমে বুঝতে হবে যে কেউ আপনাকে কোনও নির্দিষ্ট উপায়ে পার্সার বা সংকলক লিখতে বাধ্য করে না। বিশেষত, এটি অবশ্যই প্রয়োজন হয় না যে পার্সারের ফলাফল অবশ্যই একটি গাছ হতে পারে। এটি কোনও ডেটা স্ট্রাকচার হতে পারে যা ইনপুট উপস্থাপনের জন্য উপযুক্ত।

উদাহরণস্বরূপ, নিম্নলিখিত ভাষা:

prog:
      definition 
    | definition ';' prog
    ;

definition: .....

সংজ্ঞাগুলির তালিকা হিসাবে প্রতিনিধিত্ব করা যেতে পারে। (Nitpickers বাতলান করবে একটি তালিকা করা হয় একটি অধ: পতিত গাছ, কিন্তু যাহাই হউক না কেন।)

দ্বিতীয়ত, পার্স গাছটি ধরে রাখার দরকার নেই (বা পার্সার যে কোনও ডেটা কাঠামো ফেরত দিয়েছে)। বিপরীতে, সংকলকগুলি সাধারণত পাসের ক্রম হিসাবে নির্মিত হয়, যা পূর্ববর্তী পাসের ফলাফলকে রূপান্তরিত করে। সুতরাং একটি সংকলক সামগ্রিক বিন্যাস এইভাবে হতে পারে:

parser :: String             -> Maybe [Definitions]      -- parser
pass1  :: [Definitions]      -> Maybe DesugaredProg      -- desugarer
pass2  :: DesugaredProg      -> Maybe TypedProg          -- type checker
pass3  :: TypedProg          -> Maybe AbstractTargetLang -- code generation
pass4  :: AbstractTargetLang -> Maybe String             -- pretty printer

compiler :: String           -> Maybe String    -- transform source code to target code
compiler source = do
   defs  <- parser source
   desug <- pass1 defs
   typed <- pass2 desug
   targt <- pass3 typed
   pass4 targt

নীচের লাইন: আপনি যদি লোককে পার্স গাছ , বিমূর্ত সিনট্যাক গাছ , কংক্রিট সিনট্যাক্স গাছ ইত্যাদির বিষয়ে কথা শুনতে পান তবে সর্বদা প্রদত্ত উদ্দেশ্যে উপযুক্ত ডেটা কাঠামোর পরিবর্তে , এবং আপনি ভাল আছেন।


2
এটি প্রশ্নের উত্তর কীভাবে?
উইনস্টন ইওয়ার্ট

@ উইনস্টনওয়ার্ট আমি দাবি করি যে "পার্স ট্রি" এবং "অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি" বিমূর্তি এবং "উপযুক্ত ডেটা স্ট্রাকচার" ব্যতীত আর কিছুই বোঝাতে চাইছে না। সুতরাং, উত্তরটি হ'ল তার সাধারণতায় প্রশ্নটি বোঝা যায় না, যদি না আপনি পার্সারের রিটার্ন টাইপের এবং ভাষার এলওয়াইয়ের XY সংকলনে অন্য কোনও পাসের রিটার্ন টাইপের মধ্যে পার্থক্য জিজ্ঞাসা করেন
ইনগো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.