কীভাবে পার্স করবেন
if (a > b && foo(param)) {
doSomething();
} else {
doSomethingElse();
}
পার্স গাছটি সম্ভবত এরকম কিছু দেখাচ্ছে
if:
condition:
and:
lt:
left: a
right: b
function:
name: foo
param: param
true-block:
function:
name: doSomething
false-block:
function:
name: doSomethingElse
হুম ... চলুন এই গাছটিকে একটি তালিকাতে উপস্থাপন করুন
if(and(<(a, b), function(foo, param)), function(doSomething), function(doSomethingElse))
এই পার্স গাছের ফর্ম্যাটটি পরিচালনা করা বেশ সহজ, তবে আমার একটি সমস্যা আছে। আমি বিচ্ছেদকারীদের ঘৃণা করি। আমি টার্মিনেটর পছন্দ করি একই সাথে, আমি হোয়াইট স্পেসে ছিটানো পছন্দ করি।
if( and (<(a b) function(foo param)) function (doSomething) function ( doSomethingElse))
হুম ... অতিরিক্ত শ্বেত স্পেস কিছু নির্দিষ্ট জিনিস পার্স করা শক্ত করে তোলে ... সম্ভবত আমি কেবল একটি নিয়ম তৈরি করতে পারি যে গাছটি (মূল পাতা পাতার পাতা) হিসাবে উপস্থাপিত হয়েছে।
(if (and (< a b) (function foo param)) (function doSomething) (function doSomethineElse)
এখন আমার একটি পার্স গাছের সিরিয়ালাইজেশন হ'ল লিস্প (প্রয়োগের পুনরায় নামকরণ ফাংশন এবং এটি সম্ভবত চলমান)। যদি আমি প্রোগ্রামগুলি লিখি যেগুলি প্রোগ্রাম লিখতে পারে তবে এটি পার্স গাছগুলিকে ম্যানিপুলেট করা ভাল of
এটি সম্পূর্ণরূপে এস-এক্সপ্রেশনগুলি সম্পর্কে কীভাবে ঘটেছিল তা নয়, তবে এটি প্রাথমিকভাবে সনাক্ত করা হয়েছিল এবং এটি একটি বৈশিষ্ট্য যা লিস্প প্রোগ্রামাররা ব্যবহার করে। আমাদের প্রোগ্রামগুলি কিছুটা অর্থে প্রাক-পার্স করা হয়েছে এবং ফর্ম্যাটটির কারণে প্রোগ্রামগুলিকে ম্যানিপুলেট করার জন্য প্রোগ্রামগুলি লিখতে মোটামুটি সহজ। এজন্য সিন্টেক্সের অভাবকে মাঝে মাঝে একটি শক্তি হিসাবে বিবেচনা করা হয়।
তবে ডেভিড যেমন বলেছিলেন, একটি এস-এক্সপ্রেশন সচেতন সম্পাদক ব্যবহার করুন। এক্সএমএল-তে বন্ধ হওয়া বন্ধনীটির চেয়ে আপনি এস-এক্সপ্রেশনটিতে বন্ধ হয়ে যাওয়া বন্ধনীটির ট্র্যাক হারিয়ে যাওয়ার সম্ভাবনা বেশি ( </foo>
কেবল বন্ধ হয় <foo>
তবে ডান পেরেন কোনও এস-এক্সপ্রেশন বন্ধ করে)। র্যাকেটে, কিছু ভাল প্রকাশের শৈলীর সাথে কিছু অভিব্যক্তির জন্য বর্গাকার বন্ধনীর ব্যবহার বেশিরভাগ সমস্যার সমাধান করে।
লিস্প সংস্করণ:
(if (and (< a b) (foo param))
(doSomething)
(doSomethingElse))
এতোটা খারাপ না.