ম্যাচড জুটির ভিতরে থাকলে কীভাবে সনাক্ত করব?


16

প্রশ্ন: কোনও মিলিত অক্ষরটির মধ্যে বিন্দু রয়েছে কিনা তা সনাক্ত করার কোনও সাধারণ উপায় আছে?

এটি হ'ল: কোনও সাধারণ প্রাকটিক ফাংশন (বা এমন কিছু) আছে যা নির্ধারণ করতে পারে যে কোনও পয়েন্টটি কোনও মিলিত জোড় বা কিছু নির্বিচারে-নির্বাচিত চরিত্রের মধ্যে রয়েছে কিনা? আমি এমন একটি সম্পর্কে ভাবছি tযা নীচের অবস্থার সাথে মূল্যায়ন করবে , বলার সাথে !উল্লেখ করুন:

"!"   (quotes in general)
``!'' (LaTeX quotes)
$!$   (LaTeX math)
(!)   (lisp parens)
*!*   (org emphasis)

সম্পাদনা : syntax-ppssএটি একটি ভাল সূচনা পয়েন্ট বলে মনে হচ্ছে, তবে এটি কীভাবে একাধিক চরিত্রের মিলিত জোড়গুলির (যেমন, `` ল্যাটেক্স কোটস '' বা এমনকি মিলে যাওয়া <b>html tags</b>) রূপান্তর করবে তা আমার কাছে স্পষ্ট নয় । আমি ভাবছি যে কোনও সাধারণ সমাধান আছে কিনা, অথবা যদি এটির জন্য উদ্দেশ্য-নির্মিত পার্সার প্রয়োজন হয়।

উত্তর:


16

syntax-ppssএখানে সাহায্য হতে পারে। এটি একটি তালিকা ফেরত দেয় এই যাতে এই উপাদানগুলিও রয়েছে:

  • উপাদান 0: পেরেন গভীরতা
  • উপাদান 3: একটি স্ট্রিং ভিতরে যদি অ-শূন্য

আপনি এটি এর মতো ব্যবহার করতে পারেন:

(or (> (nth 0 (syntax-ppss)) 0)
    (nth 3 (syntax-ppss)))

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


আমার উল্লেখ করা উচিত যে ডাস্ট্রিংয়ের ডেটাস্ট্রিংটি আমি সংযুক্ত এলিস্প ম্যানুয়াল বিভাগের চেয়ে আরও বিশদে বিশিষ্টভাবে parse-partial-sexpডেটা স্ট্রাকচারের ব্যাখ্যা syntax-ppssদিয়েছি।
পেপ্রিকা

2

আপনি যদি উদাহরণস্বরূপ কোঁকড়ানো ধনুর্বন্ধনীগুলির মধ্যে পরীক্ষা করতে চান তবে এটি ব্যবহার করুন:

(and (looking-back "{") (looking-at "}"))

অবশ্যই, আপনি যা খুশি তাই কোঁকড়া ধনুর্বন্ধনী প্রতিস্থাপন করতে পারেন।

সম্পাদনা করুন:

আরও কার্যকর ফাংশন এর কাছাকাছি কিছু হবে:

(defun test-inside-curly-braces ()
 (interactive)
 (when (and (looking-back "{\\(.*?\\)") (looking-at "\\(.*?\\)}"))
  (message "inside curly braces")))

2
এটি কেবল তখনই কাজ করে যদি পয়েন্টটি বন্ধের দিকে থাকে }এবং এর মধ্যে কিছুই নেই {}। রিজেক্সপসের সাথে জুড়ে ডিলিমেটারগুলি ঠিকঠাক করা জটিল হতে পারে। syntax-pps@ পেপ্রিকা প্রস্তাবিত হিসাবে ব্যবহার করা ভাল ।
টাইলার

@ টাইলার কেবল তখনই কাজ করে যদি বন্ধ হওয়ার }বিষয়টি আমার দেখা আচরণ না হয়: \ তবে হ্যাঁ, রিজেক্সপস ব্যবহার করে জোড়গুলি জটিল, সত্যই
নুসুকামী _

looking-atবিন্দু থেকে শুরু পাঠ্য পরীক্ষা করে। }উপরে আপনার প্রথম বিবৃতিতে বিন্দু না থাকলে কাজ করা উচিত নয়? ইমাস সংস্করণগুলির মধ্যে একটি পার্থক্য হতে পারে। : /
টাইলার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.