কোন মডেল গণনার ব্যাকরণ মাধ্যমে প্রকাশ করা যেতে পারে?


18

এটি কি ব্যাকরণ প্রোগ্রামগুলির একটি সংস্কার ? পূর্ববর্তী ভ্যাগ দ্বারা জিজ্ঞাসা করা হয়েছিল এবং মন্তব্যকারীদের অনেক পরামর্শ সহ।

কোন ব্যাকরণকে গণনার মডেল নির্দিষ্ট করে দেখা যায়? উদাহরণস্বরূপ, যদি আমরা একটি সাধারণ প্রসঙ্গমুক্ত ব্যাকরণ গ্রহণ করি যেমন

G ::= '1' -> '0' '+' '1'
      '1' -> '1' '+' '0'
      '2' -> '2' '+' '0'
      '2' -> '1' '+' '1'
      '2' -> '0' '+' '2'
      '3' -> '3' '+' '0'
      '3' -> '2' '+' '1'
      '3' -> '1' '+' '2'
      '3' -> '1' '+' '2'

ধরে নিলাম যে এখানে পার্সারটি টার্মিনাল এবং অযৌক্তিক চিহ্নগুলির মধ্যে পার্থক্য করে না যেমন আমি এখানে দেখিয়েছি, তবে 3 পর্যন্ত সংখ্যাগুলির জন্য সহজ গাণিতিক সম্পাদন করা সম্ভব।

উদাহরণস্বরূপ, স্ট্রিং নিন

"2 + 0 + 1"

এই স্ট্রিংটিতে একটি এলআর (1) পার্সার চালনা করে নীচের কংক্রিট সিনট্যাক্স ট্রিটি দেওয়া উচিত যেখানে গণনার ফলাফল গাছের গোড়ায় সংরক্ষণ করা হয়:

           '3'
         /  |  \
        /   |   \
      '2'  '+'  '1'
     / | \
    /  |  \
  '2' '+' '0' 

সুতরাং, আমরা যদি একটি প্রোগ্রামার হিসাবে ব্যাকরণ এবং সংকলক হতে পার্সার জেনারেটর গ্রহণ করি, আমরা কি ব্যাকরণ নির্দিষ্টকরণের ভাষাটিকে প্রোগ্রামিং ভাষা হিসাবে দেখতে পারি ?

উপরন্তু, আমরা আপনার কিভাবে সম্পূর্ণ প্রোগ্রাম টুরিং নির্মান করতে পারে অনুরূপ ব্যাকরণ নির্দিষ্ট করে টুরিং-সম্পূর্ণ প্রোগ্রাম নির্মান করতে পারে celullar অটোমাটা বা ল্যামডা ক্যালকুলাস ?

অন্য কথায়, এটি জানা যায় যে অর্থে স্বীকৃতি একটি ভাষা, নিয়মিত ভাষায় মিলা সসীম রাষ্ট্র অটোমাটা , প্রসঙ্গ-মুক্ত ভাষায় মিলা অটোমাটা নিচে ধাক্কা , এবং প্রসঙ্গ-সংবেদী ভাষায় মিলা বেষ্টিত অটোমাটা রৈখিক । তবে, যদি আমরা ব্যাকরণগুলিকে গণনার যন্ত্র হিসাবে বিবেচনা করি ( যেমন উপরের উদাহরণের অর্থে প্রোগ্রামগুলি ), তবে আমরা কীভাবে চমস্কি শ্রেণিবিন্যাসের প্রতিটি শ্রেণির ব্যাকরণগুলির গণনীয় শক্তিকে শ্রেণিবদ্ধ করব?

এছাড়াও, ব্যাকরণগুলির যেমন কম পরিচিত উপ-চশমা সম্পর্কে কীভাবে

সম্পাদনা করুন: যাইহোক, এটি আমার নিজের প্রশ্নের একটি নিটপিক তবে আমি উল্লেখ করিনি যে আমি উদাহরণস্বরূপ ব্যাকরণের জন্য কোনও শুরুর প্রতীক দিই নি এবং টার্মিনাল এবং নন-টার্মিনালগুলির মধ্যে পার্থক্য করার প্রয়োজনে হাত-ওয়েভ করা। টেকনিক্যালি বা ঐতিহ্যগতভাবে আমি মনে করি ব্যাকরণ সম্ভবত এর মত একটি আরো জটিল আকারে লেখা যেতে হবে (যেখানে এস শুরু প্রতীক এবং $ শেষ অফ প্রবাহ টার্মিনাল প্রতিনিধিত্ব করে):

G ::= S -> R0 '$'
      S -> R1 '$'
      S -> R2 '$'
      R0 -> '0'
      R0 -> R0 '+' '0'
      R1 -> '1'
      R1 -> R0 '+' '1'
      R1 -> '1' '+' R0
      R1 -> R0 '+' '1' '+' R0
      R2 -> '2'
      R2 -> R0 '+' '2'
      R2 -> '2' '+' R0
      R2 -> R0 '+' '2' '+' R0
      R2 -> R1 '+' '1'
      R2 -> R1 '+' '1' '+' R0

... না যে এটি সত্যিই কিছু পরিবর্তন করে, তবে আমি ভেবেছিলাম আমার এটি উল্লেখ করা উচিত।

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

অন্য কথায় পার্সারের প্রসঙ্গটি তার লুকোচুরি প্রক্রিয়াটির সাথে একত্রিত করে কোন ফাংশনগুলি প্রয়োগ করতে হবে তা কেবল তা নির্ধারণ করতে সহায়তা করে (প্যারামেট্রিক পলিমারফিজমের মতো 'কিন্ডা') নয় তবে কীভাবে তাদের একসাথে নতুন ফাংশন গঠন করা উচিত।

কমপক্ষে, আমি অনুমান করি যে আপনি এটিকে এটিকে দ্ব্যর্থহীন সিএফজির জন্য দেখতে পারেন, অন্যান্য ব্যাকরণের ক্ষেত্রে এখনই আমার জন্য মানসিক জিমন্যাস্টিক্স কিছুটা বেশি।


3
আপনি ভিজিব্যলি পুশডাউন অটোম্যাটন (নেস্টেড ওয়ার্ডস), এমন একটি সুন্দর এবং প্রতিশ্রুতিবদ্ধ সরঞ্জাম উল্লেখ করতে ভুলে গেছেন! এটি গুরুত্বপূর্ণ কারণ জনপ্রিয় প্রোগ্রামিং ভাষাগুলিতে লিখিত প্রোগ্রামগুলিকে পার্স করতে সক্ষম হতে রিগেক্সসে তুলনায় এটি ন্যূনতম উন্নতি বলে মনে হচ্ছে। ( cis.upenn.edu/~alur/nw.html )
ভ্যাগ

1
ধন্যবাদ, এটি খুব আকর্ষণীয়, আমি এটি সন্ধান করিনি! আমি আরও কয়েকজনকে রেখেছি আমিও
নির্বিচারবাদী প্রসঙ্গমুক্ত

1
@ ইম্জ বলতে আমি ব্যাকরণ বলতে চাইছি কেননা এগুলি আনুষ্ঠানিকভাবে চমস্কি শ্রেণিবিন্যাসে সংজ্ঞায়িত করা হয়েছে (অর্থাত প্রোডাকশনের সেট হিসাবে)। যেহেতু আমি ঠিক বলছি যে আপনি যা বলছেন: ব্যাকরণগুলি প্রোগ্রাম, তার অর্থ ব্যাকরণ দ্বারা উপস্থাপিত প্রোগ্রামগুলির শ্রেণি (যা প্রশ্ন) is
রেহনো লিন্ডেক

1
@ আইএমজ সত্য কথা বলতে গেলে আমি সূচকযুক্ত ব্যাকরণগুলির সাথে সত্যিই পরিচিত নই, আমি কেবল সেগুলি পরে-চিন্তার হিসাবে যুক্ত করেছি।
রেহনো লিন্ডেক

1
আমি ভাবতে শুরু করি যে এই প্রশ্নটি শীতল আলোচনার পরিবর্তে এলটিইউ ফোরামে পোস্ট করা ভাল ধারণা হতে পারে: পি। বিটিডব্লু @ আইএমজেড, সম্ভবত প্রশ্নটি পড়া ভাল হবে "মার্ক হ্যামনের উত্তরে যু্ক্কার দ্বারা বর্ণিত 'কার্যকরী' অর্থে কোন শ্রেণির প্রোগ্রামগুলির সাথে কোন শ্রেণির প্রোগ্রামগুলির সাথে মিল রয়েছে?" যদিও আমার এটি আরও স্পষ্ট করা উচিত ...
রেহনো লিন্ডেক

উত্তর:


10

চমস্কি টাইপ -0 গ্রামার এবং ট্যুরিং মেশিনের মধ্যে একের মধ্যে একটি যোগাযোগ রয়েছে ।

এটি থিউ প্রোগ্রামিং ভাষায় ব্যবহৃত হয়েছে যা আপনাকে প্রাথমিক স্ট্রিং এবং স্ট্রিং-পুনর্লিখনের নিয়মের একটি সেট (একটি সেমি-থিউ ব্যাকরণ , যা টাইপ -0 ব্যাকরণের সমতুল্য) দ্বারা নির্দিষ্ট করে টিউরিং -সম্পূর্ণ প্রোগ্রাম লিখতে দেয় ।

হালনাগাদ:

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

ভাষায় পাতার মর্মর পরিবার, বিশেষ করে প্রচলিত পাতার মর্মর , সম্ভবত সবচেয়ে বড় উদাহরণ আছে, কিন্তু বিস্তৃতভাবে, ভাষী, যেমন স্ট্যাটিক টাইপ পরীক্ষণ সঙ্গে ভাষার যে সবসময় বন্ধ করার দরকার নেই, সি ++ টেমপ্লেট সঙ্গে , Scala এবং Qi থেকে


তবে প্রশ্নটি সেই জিনিসগুলি সম্পর্কে যা অন্যদিকে কাজ করে: ফলাফলটি পৌঁছানো উচিত নিয়ম অনুসারে প্রতীকগুলির প্রাথমিক ক্রমটি পুনর্লিখন না করে, তবে এই প্রশ্নের ব্যাকরণ দ্বারা সংজ্ঞায়িত গণনার "ফলাফল" একটি প্রাথমিক প্রতীক যা ব্যাকরণের নিয়ম অনুসারে "ইনপুট" ক্রম উত্পাদন করতে পারে।
ইম্জ - ইভান জ্যাকারিয়াশেভ

2
এনএকটিটি(কুইতোমার দর্শন লগ করাটি(আমিএন),তোমার দর্শন লগ করাটি)টিএম(আমিএন)=তোমার দর্শন লগ করাটি

আমি সম্মত হই যে টাইপ 0 ব্যাকরণ এবং টিএম এর মধ্যে চিঠিপত্র প্রশ্নের প্রশ্নের একটি বৈধ উত্তর (বিশেষত, যদি হ্যাঁ / না-ফাংশন গণনা করতে সীমাবদ্ধ থাকে)। কীভাবে ইনপুট-আউটপুট জোড়া উপস্থাপন করতে হবে তা সম্পর্কে কিছু কনভেনশন প্রবর্তন করে একটি স্বেচ্ছাসেবক টিএম মডেল করার আরও পরামর্শ আমার কাছে মনে হয় মূল প্রশ্নের মূল আগ্রহের সাথে মেলে না: (
কনট্রাস্ট

আমি একে একে বিদ্যমান ব্যাকরণ কাঠামো এবং গণনা সম্পাদনের জন্য সম্পর্কিত পার্সারগুলি কাজে লাগানোর প্রশ্ন হিসাবে বুঝতে পারি, অর্থাত, একটি ফাংশন এফ এবং ব্যাকরণের মধ্যে অনুবাদটির অনুমোদিত ফর্মটি কেবল এটিই হতে পারে: এস হিসাবে এস হিসাবে পার্স করা হয়েছিল একটি ইনপুট অর্থ এফ ( আমি) s =।
ইম্জ - ইভান জ্যাকারিয়াশেভ

1
পৃষ্ঠপোষকভাবে, থ্রু প্রোগ্রামিংয়ের ভাষা ব্যাকরণ কাঠামো ব্যবহার করে এই ধরণের হয়ে পড়ে বলে মনে হয় না: যদিও এর ব্যাকরণের মতো পুনর্লিখনের বিধি রয়েছে, তবে একটি ইনপুট থেকে ফলাফলের গণনা বিপরীতে নয়, নিয়মের দিকে চলে যায় দিক, যেমন রেহনো চায়। (তবে সম্ভবত এটি কেবলমাত্র প্রোডাকশনগুলিতে তীরের দিক পরিবর্তন করার বিষয়: এই প্রশ্নটির অনুভূতিতে একটি "পার্সার হিসাবে গণনা" ব্যাকরণটি অনুবাদ করে কেবল নিয়মের দিক পরিবর্তন করতে পারে তবে থ্রু প্রোগ্রাম) ফলস্বরূপ ফলাফল হিসাবে প্রারম্ভিক প্রতীকগুলিতে উপস্থিত হবে, তাই না? ..)
ইম্জ - ইভান জ্যাকারিয়াচেভ

6

আমার উত্তরটি আনুষ্ঠানিক, সুনির্দিষ্ট এবং একদম বিষয়বস্তু হওয়ার উদ্দেশ্যে নয়। আমি মনে করি মার্ক হ্যামনের উত্তরটি বেশ শক্ত, তবে আপনার প্রশ্ন আমাকে সম্পর্কিত বিষয় সম্পর্কে ভাবতে বাধ্য করেছে।

ব্যাকরণ ন্যায়িক সিস্টেম বিশেষ ক্ষেত্রে বিবেচিত হতে পারে: ইনপুট একটি রায়, এবং পার্স গাছ একটি হল শিক্ষাদীক্ষা বিচার, বা প্রমাণ যে রায় (ব্যাকরণগত) নিয়ম বৈধ অনুযায়ী।

সেই অর্থে, আপনার প্রশ্নটি যুক্তিবাদী প্রোগ্রামিং / প্রুফ অনুসন্ধানের সম্প্রদায়ের কিছু অংশের পদ্ধতির সাথে সম্পর্কিত হতে পারে (আমি উদাহরণস্বরূপ ডেল মিলারের কথা ভাবছি ), যা প্রমাণ অনুসন্ধানে আরও ক্লাসিকের বিপরীতে গণ্য বিষয়বস্তু রয়েছে প্রকার / প্রমাণ তত্ত্বের দৃষ্টিকোণ যেখানে গণনাটি প্রুফ নরমালাইজেশন

মন্তব্য: আমার উত্তরটি পুনরায় পড়া, আমি "পার্স-ট্রি নির্মাণ প্রমাণ অনুসন্ধান" ধারণাটি এখানে কিছুটা দূরের। প্রমাণ অনুসন্ধান বরং অন্য দিকে প্রবাহিত: একটি প্রদত্ত, বরং জটিল রায় থেকে শুরু এবং প্রমাণের কাঠামোর উপর কাজ করে অনুমানের নিয়মগুলির বারবার ব্যবহার দ্বারা, কেউ আশাবাদী সহজ সরল অক্ষগুলি অর্জন করেন যা আরও প্রমাণ করার প্রয়োজন হয় না to সুতরাং ব্যাকরণের ক্ষেত্রে, নন-টার্মিনাল হিসাবে জটিল সিদ্ধান্ত, টার্মিনাল হিসাবে পরমাণু এবং শব্দের উত্পন্ন সমস্যা হিসাবে প্রমাণ প্রমাণ বা শূন্যতা পরীক্ষা পরীক্ষা করা আরও স্বাভাবিক হবে।


যদিও খুব আকর্ষণীয় মন্তব্য। আমার মস্তিষ্ক এখনই একটি ভাল প্রতিক্রিয়া জানাতে খানিকটা ক্লান্ত, তবে আমার উদাহরণে গাছের
ডালগুলি

6

তদুপরি, আমরা কি ব্যাকরণ নির্দিষ্ট করে টিউরিং-সম্পূর্ণ প্রোগ্রামগুলি তৈরি করতে পারি…?

আমি নিশ্চিত না যে আমি আপনার প্রশ্নটি সঠিকভাবে বুঝতে পেরেছি কিনা তবে আপনি যদি একধরণের স্ট্রিং রাইটিং সিস্টেমের উপর ভিত্তি করে কোনও প্রোগ্রামিং ল্যাঙ্গুয়েজ সন্ধান করেন তবে আপনি সম্ভবত রেফালকে ছেদ করবেন , যা মার্কভ অ্যালগরিদম ফর্মালিজমের উপর ভিত্তি করে (একটি টিউরিং- সম্পূর্ণরূপে আনুষ্ঠানিকতা যা ব্যাকরণের মতো স্ট্রিং রাইটিং সিস্টেমও))


1
আমি প্রশ্নটি নিম্নলিখিত উপায়ে বুঝতে পেরেছি: ফলাফলের গণনা হিসাবে দেখার জন্য রেহনো বুট-আপ পার্সিং প্রক্রিয়াতে (ব্যাকরণ দ্বারা সংজ্ঞায়িত) আগ্রহী। ব্যাকরণের উত্পাদনের নিয়মের বিপরীতে যে অংশগুলি চলছে সেগুলি থেকে গণনাটি ফলাফল তৈরি করা উচিত। রিফলের পুনর্লিখনের নিয়ম (IIUC, একইভাবে উপরে বর্ণিত থু প্রোগ্রামিং ভাষার সাথে) অন্য দিকে চলে যাবে (ফলাফল থেকে ইনপুট থেকে)।
ইম্জ - ইভান জ্যাকারিয়াচেভ

এখন যেহেতু আমি এটি সম্পর্কে যদিও চিন্তা করি, প্রসঙ্গ-সংবেদনশীল ব্যাকরণগুলির উত্পাদন নিয়মের LHS এ একাধিক প্রতীক রয়েছে। সুতরাং আমি মনে করি বাস্তব বাস্তব পার্থক্য নেই। প্রসঙ্গ-সংবেদনশীল ভাষার পার্সার একটি স্ট্রিং রাইটিং সিস্টেম হবে আপনি এটিকে ঠিক কীভাবে দেখেন তা নয়?
রেহনো লিন্ডেক

@ আইএমজ রেহনোর প্রশ্নের স্পষ্টির জন্য আপনাকে ধন্যবাদ। @ রেহনো "প্রসঙ্গ-সংবেদনশীল ভাষার পার্সার একটি স্ট্রিং রাইটিং সিস্টেম হবে আপনি এটিকে ঠিক কীভাবে দেখেন তা নয়?" - এটি সম্ভবত অর্থবোধ করে, হ্যাঁ।
আর্টেম পেরেনিটসিন

কিন্তু রিফালের পুনর্লিখনের নিয়মগুলি কি অ-নির্বিচারে চিকিত্সা করা হয়? (বা অন্যভাবে বললে: রিফাল কী কোনও পুনর্লিখনের পথের সন্ধানে ব্যাকট্র্যাকিং করবে?) আমরা যদি এই "গণনা হিসাবে পার্সিং" পদ্ধতির বিপরীত দিকটিতে পুনর্লিখনের নিয়মগুলি মডেল করতে চাই, আমাদের অ-সংজ্ঞাবিরোধী নিয়মের প্রয়োজন; মত ব্যাকরণ বিবেচনা করুন S -> A a; S -> B b; A -> 0; B -> 0। আমরা যদি নিয়মগুলি বিপরীত করে এই প্রোগ্রাম করে থাকি তবে 0"0 এ" বা "0 বি" তে মূল্যায়ন করার জন্য আমাদের রান সময় প্রক্রিয়াকরণের জন্য বিভিন্ন বিধি পছন্দ করতে হবে S
ইম্জ - ইভান জ্যাকারিয়াশেভ

6

(কেবলমাত্র কিছু তুচ্ছ বিবেচনা। মন্তব্য হতে পারে, তবে খুব দীর্ঘ))

আসলে, আপনি যা বর্ণনা করেছেন তা কোনও ভাষা কী ("ভাষা" এর মানুষের উপলব্ধিতে, এর উদ্দেশ্য সম্পর্কে) এবং কীভাবে একটি ব্যাকরণ একটি ভাষার সংজ্ঞা দেয় সেটিকে খুব স্বাভাবিক দৃষ্টিভঙ্গি হিসাবে কার্যকর মনে হয়

একটি ভাষায় (অসীম অনেকগুলি) সঠিক সিনট্যাকটিক ফর্ম রয়েছে যা শব্দার্থক মানগুলি ব্যাখ্যা করার জন্য ব্যাখ্যা করা হয়

যদি ব্যাখ্যাটি গণনাযোগ্য হয়, তবে কোনও ভাষার সিনট্যাকটিক ফর্মগুলি শব্দার্থক মানেরগুলিকে গণনা করার মতো প্রোগ্রাম হিসাবে দেখা যায়।

যদি আমরা ধরে নিই যে কোনও ভাষা একটি সীমাবদ্ধ ডিভাইস হিসাবে প্রয়োগ করা হয় তবে আমরা কোনও ভাষার এই সীমাবদ্ধ প্রতিনিধিত্বকে "ব্যাকরণ" বলতে পারি। এই বোঝাপড়া অনুসারে, একটি ব্যাকরণ সিনট্যাক্স সম্পর্কে চিন্তা করে, তবে শব্দার্থবিদ্যা সম্পর্কেও, অর্থাত্ কিভাবে তার অংশগুলির মানগুলি থেকে পারমাণবিক অংশগুলি এবং তাদের মানগুলি "অভিধানে" সঞ্চিত থাকে) সম্পূর্ণ অভিব্যক্তির অর্থগত মানটি কীভাবে গণনা করা যায়) ।

প্রাকৃতিক ভাষার কিছু তত্ত্বের এমন একটি রূপ রয়েছে (ফর্মটি যা উপরোক্ত বিবেচনার সাথে সামঞ্জস্যপূর্ণ; এটি ইতিমধ্যে @ গ্যাশকের উত্তরে এখানে উল্লেখ করা হয়েছিল): একটি অনুমানকারী সিস্টেম যা ইনপুটটির সন্ধানের জন্য অনুসন্ধান করে (শব্দার্থের সংখ্যার সাথে মিলিয়ে) মান, বা প্রমাণ শর্তের বিল্ডিং; সিএফ। কারি-হরওয়ার্ড চিঠিপত্র)। সুতরাং, আমরা যদি সেইরকম সিস্টেমগুলির দিকে নজর রাখি এবং সেগুলিকে ব্যাকরণ বিবেচনা করি তবে আপনার প্রশ্নটি তুচ্ছ :

জিআমি (আমি)=এসআমিএসজি

(প্রকৃতপক্ষে, প্রোগ্রামিং ভাষার প্রকৃত সংকলকগুলি সিনট্যাক্স এবং শব্দার্থক উভয়ই একটি সিস্টেমের মতো দেখতে লাগে: তারা একটি প্রোগ্রামের সিনট্যাকটিক রূপকে একটি এক্সিকিউটেবলে রূপান্তরিত করে, যা প্রোগ্রামটির মূল অর্থ, এবং কেবল একটি সূচনা চিহ্ন হিসাবে নয়) ব্যাকরণ।)


4

কেবল যোগ করতে:

একটি খাঁটি লজিক প্রোগ্রামে ঘোষণামূলক পাঠ এবং পদ্ধতিগত পাঠ রয়েছে। এই প্রতিবেদনটি ব্যাকরণগত পাঠ দ্বারা পরিপূরক হতে পারে এমন ধারণাটি নিয়ে আলোচনা করেছে, যেখানে ধারাগুলি ব্যাকরণের নিয়মকে পুনর্লিখনের জন্য বিবেচনা করা হয়। উদ্দেশ্যটি দেখানো হচ্ছে যে এই দৃষ্টিকোণটি লজিক প্রোগ্রামিং থেকে দক্ষতা এবং প্রোগ্রামিং ভাষাগুলির উপর অন্যান্য গবেষণায় স্থানান্তর করতে সহায়তা করে। এই জাতীয় স্থানান্তর সম্পর্কে কয়েকটি উদাহরণ আলোচনা করা হয়েছে। অন্যদিকে উপস্থাপিত ব্যাকরণগত দৃষ্টিভঙ্গি খাঁটি লজিক প্রোগ্রামিংয়ে কিছু অ্যাডহক এক্সটেনশনকে ন্যায্যতা দেয় এবং এ জাতীয় সম্প্রসারণের জন্য তাত্ত্বিক ভিত্তির বিকাশকে সহজতর করে তোলে।

পিয়েরে ডেরানসার্ট এবং জান মালুজেঞ্জিস্কি দ্বারা যুক্তিযুক্ত প্রোগ্রামিংয়ের ব্যাকরণগত দর্শন


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

1

পেনো সংখ্যার মতো কি সম্পর্কে:

S    -> int
int  -> zero
int  -> succ
zero -> "0"
succ -> "#" int

এটি এই ফর্মের যে কোনও স্ট্রিং (নম্বর) সনাক্ত করবে:

0   // zero
#0  // one
##0 // two

এবং এটি একটি নেস্টেড কাঠামোটি ফিরিয়ে আনবে, গভীরতা সংখ্যা হবে।

এটি জটিল হতে শুরু করে যখন কেউ প্রয়োগ করতে চান কেবল যোগ করুন:

S    -> int
int  -> sum
int  -> zero
int  -> succ
zero -> "0"
succ -> "#" int
sum  -> int "+" int

এটি পুরোপুরি অনুভূতি তৈরি করে যে এটি কেবল এই জাতীয়ভাবে সুগঠিত ইনটগুলিকেই চিনতে পারে:

#####0 + ####0

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

1) Nat = Zero
2) Nat = Succ Nat
3) Sum ( Succ X ) ( Y ) = Succ ( X + Y )
4) Sum Zero X = X

তৃতীয় নিয়ম স্পষ্টভাবে একটি রূপান্তরকে জানিয়েছে। যে কেউ প্রসঙ্গ-মুক্ত ব্যাকরণ নিয়মে একই পরিমাণে অর্থ বহন করতে কল্পনা করতে পারে। আর যদি তাই হয়, কিভাবে !?

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.