নিজের সাথে একটি প্রোগ্রামিং ভাষা সংকলন করুন


10

আমি কম্পিউটার বিজ্ঞানের ছাত্র। আমি নিজের প্রোগ্রামিং ভাষা তৈরি করতে চাই (কয়েকটি নির্দেশাবলীর একটি প্রাথমিক ভাষা)।

আমি জানি সিন্ট্যাকটিক বিশ্লেষক কীভাবে করবেন, আমি পার্লে ইতিমধ্যে এটি করেছি। একটি নিবন্ধে, আমি সংকলক সম্পর্কে কিছু পড়েছি, একটি সংকলক নিজেই করা হয়।

উদাহরণস্বরূপ সি সংকলক সি লিখেছে এটি কিভাবে সম্ভব? আমি নিজের ভাষা তৈরি করতে পারি তবে আমি কীভাবে এটি কার্যকর করতে পারি জানি না? কোন ধারণা?

এটি সত্যিই একটি ভাল প্রশ্ন এবং আমি একটি ব্লগ প্রকল্প লিখতে পারি।


লোকেরা কীভাবে বুটস্ট্র্যাপ করবেন তা ব্যাখ্যা করেছেন তবে আপনার প্রয়োজন কেন? সি, পার্ল বা অন্য কোনও কিছুতে লিখিত সংকলকটি ব্যবহার করে আপনি আপনার ভাষা সংকলন করতে পারবেন না। অবশ্যই, নিজের ভাষায় নিজের লেখার জন্য একটি সংকলক তৈরি করা ভাল তবে এটি অনেক কাজ হবে - আপনাকে এটি পেতে কমপক্ষে দুটি সংকলক লিখতে হবে (একটি / সি / পার্ল / যে কোনও ক্ষেত্রে, একটিতে) তোমার ভাষা).
ডেভিড রিচার্বি 20:33

হুম .. আমি মনে করি আমি সিতে আমার প্রথম সংকলক লিখব এবং আমার ভাষায় একটি সেকেন্ড লিখব। এটি একটি সামান্য প্রোগ্রামিং ভাষা তৈরি করা সত্যই আকর্ষণীয়, আমরা কম্পিউটার বিজ্ঞান অনেক কিছু শিখতে পারি
BaptisteL

উত্তর:


13

কৌশলটি বুটস্ট্র্যাপিং । আপনি প্রথমে অন্য কোনও ভাষায় আপনার ভাষার (বা এর একটি উপসেট) জন্য একটি সংকলক লিখুন। তারপরে আপনি নিজের ভাষায় একটি সংকলক লিখুন (বা আপনি ইতিমধ্যে পরিচালনা করতে পারেন তার একটি বৃহত উপসেট) আপনার ভাষায়। আপনি নতুন সংকলকটি সংকলন করতে প্রাক্তন সংকলকটি ব্যবহার করেন এবং তারপরে নতুন সংকলকটি নিজেই সংকলন করতে পারে।


সুতরাং, আমি সি ব্যবহার করে আমার প্রথম সংকলক তৈরি করতে পারি এবং পরের বার আমি আমার সংকলক v2 কে ভি 1 দিয়ে সংকলন করব? তবে একটি সমস্যা আছে, আমি কীভাবে জানতে পারি যে সংকলকটির কোনও সমস্যা নেই? আমার উত্স কোডটি এসেম্বলারে রূপান্তর করতে হবে? নাকি অন্য কোন বিষয়?
ব্যাপটিস্টেল

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

ঠিক আছে আমাকে আমার দক্ষতার উপর বিশ্বাস রাখতে হবে ^^ আমি প্রক্রিয়াটি সংকলকটি করতে চেয়েছিলাম। সংকলক কী করে তা আমি সত্যিই বুঝতে পারি না, সিনট্যাক্সিক এবং লেক্সিকাল অ্যানালাইজার ঠিক আছে তবে পরের ??
ব্যাপটিস্টেল

তারপরে আপনি কোড উত্পন্ন করুন। আপনি যদি মেশিন কোড উত্পন্ন করার বিশদে যেতে না চান তবে আপনি সর্বদা অন্য কোনও ভাষাতে কোড তৈরি করতে পারেন, সি কোডটি বলতে পারেন এবং মেশিন কোডে সংকলনের জন্য একটি বাহ্যিক সংকলক ব্যবহার করতে পারেন। (অথবা আপনি কোনও দোভাষী ভাষা ব্যবহার করতে পারেন এবং একজন দোভাষী চালাতে পারেন))
যুবাল ফিল্মাস

হুম না আমি এটিকে পছন্দ করি: আমার ভাষা প্রবেশ -> মেশিন কোডে। আমি আমার ভাষাকে অন্য ভাষায় রূপান্তর করতে চাই না (প্রথমবারের জন্য সংকলন করা) এটি কি সম্ভব?
ব্যাপটিস্টেল

2

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

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