নিয়মিত প্রকাশ ছাড়াই লেক্সিকাল বিশ্লেষণ


9

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

হ্যাঁ, কোনও আকারে নিয়মিত প্রকাশ না করে কোনও উচ্চ স্তরের ভাষায় কোনও ধরণের বেসিক লেক্সিং প্রয়োগ করা সম্ভব?

* উচ্চ স্তরের ভাষাগুলি পার্ল / পিএইচপি / পাইথন / জাভাস্ক্রিপ্ট ইত্যাদির মতো জিনিস, আমি নিশ্চিত যে সি তে করার উপায় আছে


2
দেখে মনে হচ্ছে "ক্যালকুলাসের উপর এমন কোনও বই আছে যা গ্রীক অক্ষর এবং অদ্ভুত সব কিছু ব্যবহার করে না?"
কেভিন ক্লিন

@ কেভিঙ্কলাইন আকাশে পুরোপুরি ভাল প্লেন রয়েছে কেন লোকেরা আটলান্টিক পেরোবে?
ধাক্কা

1
রোয়িং এবং রাইডিংয়ের বিভিন্ন পার্শ্ব-প্রতিক্রিয়া রয়েছে।
কেভিন ক্লিন

উত্তর:


3

প্রথমত, আপনার "উচ্চ-স্তরের" ভাষা উদ্ভাবনের আগে থেকেই সিটির জন্য নিয়মিত প্রকাশের গ্রন্থাগার রয়েছে। শুধু বলছি, সি প্রোগ্রামগুলি তেমন পডঙ্ক নয় যেমন কিছু লোক মনে করে।

বেশিরভাগ ব্যাকরণের ক্ষেত্রে লেকসিং হ'ল স্পেস এবং অন্যান্য কয়েকটি চরিত্র যেমন () [] {}; শব্দগুলি বিভক্ত করতে এবং তারপরে কোনও মিল আছে কিনা তা দেখার জন্য কীওয়ার্ডগুলির তালিকার সাথে মিল রেখে।


1
আমার অর্থ এই নয় যে সি রেজেজস করতে পারে না, আমার অর্থ ছিল এই ধরণের স্টাফ করার জন্য আরও শক্তিশালী বৈশিষ্ট্য রয়েছে has আমি ভাবতাম উচ্চতর স্তরের ভাষার চেয়ে সিতে উন্নত এবং পারফরম্যান্ট লেক্সার তৈরি করা আরও সহজ।
স্মুড

1
@ সাম যেমন লিক্সার বা পার্সারের জটিলতা এবং পারফরম্যান্স ল্যাঙ্গুয়ের পার্সার প্রয়োগ হওয়ার চেয়ে ভাষার পার্স করা জটিলতার আরও একটি কাজ, তাই না।
জে কে।

+1 টি। একটি লেক্সার অবিশ্বাস্যভাবে সহজ; আপনার কেবল একটি স্ট্রিং, আপনার টোকেনগুলির জন্য একটি ডেটা টাইপ এবং পূর্বনির্ধারিত কীওয়ার্ডগুলির একটি টেবিলের প্রয়োজন। সবচেয়ে জটিল অংশটি সাদা স্থান এবং মন্তব্যগুলির সাথে মোকাবিলা করছে: পি
ম্যাসন হুইলার

2

আপনি "স্ক্যানারবিহীন পার্সার" -তে আগ্রহী হতে পারেন, যার আলাদা টোকেনাইজেশন পদক্ষেপ নেই। স্ক্যানারলেস পার্সারগুলির সুবিধাগুলির একটি ব্যাখ্যা এই কাগজের শুরুতে দেওয়া হয়েছে: স্ক্যানারলেস জেনারেলাইজড এল আর পার্সারদের জন্য ডিসামম্বিগুয়েশন ফিল্টার । (যদিও এর অসুবিধাগুলিও রয়েছে।)

(অন্যান্য উত্তরগুলিতে উল্লিখিত পিইজিগুলি স্ক্যানারহীন পার্সার তৈরিতেও ব্যবহার করা যেতে পারে))


1

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


0

অবশ্যই আপনি অন্যান্য পার্সার ব্যবহার করতে পারেন, কারণ প্রতিটি নিয়মিত ভাষাও প্রসঙ্গমুক্ত। আপনি কেন চান তা প্রশ্নটি আসলেই নেমে আসে।

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

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


তাহলে রেইজেক্স কীভাবে এটি করে? এটি কি এখনও চরিত্র অনুসারে অক্ষরে যেতে হবে না (বেশিরভাগ নিদর্শন অন্তত লেক্সিংয়ের ক্ষেত্রে ব্যবহৃত হয়)?
জেটি

@ জেটি হ্যাঁ, অবশ্যই
পাব্বি

প্রতিটি চরিত্রটি পড়া ঠিক তত সহজ হবে এবং তারপরে কোনও টোকেন বের করার প্রয়োজন হলে ব্যাকট্র্যাক। এটি আরও কোড হবে তবে আরও কঠিন নয়।
জেটি

@ জেটি আমি কীভাবে নিষ্কলুষ ব্যাকট্র্যাকিং আরও ভাল তা দেখতে ব্যর্থ হয়েছি।
পাব্বি

আমি এর চেয়ে ভাল বলিনি। তবে ওপি জিজ্ঞাসা করেছিল যে অন্য উপায় আছে কি না এবং এটি অন্য উপায় যা উন্নত পার্সার নয়।
জেটি

0

এটি নিয়মিত প্রকাশের সাথে একটি শাব্দিক বিশ্লেষণ করা বা এই পাসটি একেবারে এড়িয়ে যাওয়া এবং পিইজি বা জিএলআর এর সাথে আরও অনেক নমনীয় এবং শক্তিশালী লেক্সারলেস পার্সিং করা বোধগম্য।

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