একটি স্ট্রিং বেড়া বা মন্তব্য বেড়া কি?


9

জন্য দস্তাবেজ modify-syntax-entryনিম্নলিখিত বলে:

(modify-syntax-entry CHAR NEWENTRY &optional SYNTAX-TABLE)
...
The first character of NEWENTRY should be one of the following:
...
  /           character-quote.      @   inherit from parent table.
  |           generic string fence. !   generic comment fence.

একটি বেড়া কী, এবং আমি কখন এটি ব্যবহার করব? তথ্য ম্যানুয়ালটিতে আমি কিছুই খুঁজে পাচ্ছি না।


এটি ইম্যাকস নিজেই উত্তর দেওয়া উচিত একটি প্রশ্ন। ডক স্ট্রিংয়ের সংজ্ঞা দেওয়া উচিত বা কমপক্ষে " বেড়া " শব্দটি বর্ণনা করা উচিত । একটি দস্তাবেজ বাগ দায়ের করার বিষয়ে বিবেচনা করুন: M-x report-emacs-bug
ড্র হয়েছে

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

উত্তর:


8

সেগুলি ম্যানুয়ালটিতে নথিভুক্ত করা হয়েছে তবে এটি "বেড়া" শব্দটি ব্যবহার করে না। অক্ষরগুলি !এবং সিনট্যাক্স শ্রেণির রেফারেন্সে| "জেনেরিক মন্তব্য ডেলিমিটার" এবং "জেনেরিক স্ট্রিং ডিলিমিটার" হিসাবে তালিকাভুক্ত ।

এই অক্ষরগুলি ইমাস 20.1 এ চালু হয়েছিল। নিউজ ফাইলটি উদ্ধৃত করে:

দুটি নতুন সিনট্যাক্স-কোড !এবং |(সংখ্যাগত মান 14 এবং 15) রয়েছে। একটি কোড সহ একটি অক্ষর !একটি মন্তব্য শুরু করে যা কেবল একই চরিত্রের সাথে অন্য কোনও অক্ষর দ্বারা শেষ হয় (উদ্ধৃতি ব্যতীত)। একটি কোড সহ একটি অক্ষর |একটি স্ট্রিং শুরু করে যা কেবল একই অক্ষর দিয়ে অন্য অক্ষর দ্বারা শেষ হয় (উদ্ধৃতি ব্যতীত)।

এই কোডগুলি মূলত `সিনট্যাক্স-টেবিলের পাঠ্য সম্পত্তির মান হিসাবে ব্যবহৃত হয়।

আমি !স্ট্যান্ডার্ড ইমাস মোডে কোনও ব্যবহার খুঁজে পাচ্ছি না । এর বেশ কয়েকটি ব্যবহার রয়েছে |। ইচ্ছাকৃত ব্যবহারের ক্ষেত্রে হ'ল ভাষাগুলি যা আক্ষরিক থাকে যা সাধারণত স্ট্রিং ডিলিমিটার ছাড়া অন্য ডিলিমিটার ব্যবহার করে, সাধারণত প্রসঙ্গে ভিত্তিতে ফন্ট লকিংয়ের মাধ্যমে যুক্ত ওভারলেগুলির মাধ্যমে সেট করা হয়। উদাহরণস্বরূপ, পার্লে, একটি নিয়মিত এক্সপ্রেশন ম্যাচ লেখা যেতে পারে /REGEXP/, বা m/REGEXP/বা m~REGEXP~অথবা m[REGEXP]বা বিভিন্ন সংখ্যা বিভিন্ন। একটি আক্ষরিক স্ট্রিং লেখা যেতে পারে 'STRING'কিন্তু q'STRING', q~STRING~, q[STRING], ইত্যাদি ফন্ট লক যেমন নির্মান স্বীকার, তখন তা উদ্ধৃতি অক্ষর (সেট করে // /অথবা '/ 'বা ~/ ~অথবা [/]আমি যে উদাহরণগুলি দিয়েছি) জেনেরিক স্ট্রিং ডিলিমিটার সিনট্যাক্সে। এমনকি যদি কোনও অভ্যাসগত স্ট্রিং ডিলিমিটার উপস্থিত থাকে (উদাঃ q[foo"bar]), তবে এই ডিলিমিটারটি স্ট্রিংয়ের একটি সাধারণ অংশ হিসাবে বিবেচিত হবে, এটি স্ট্রিংটি শেষ করবে না।

আমি স্বীকার করি যে আমি একটি চূড়ান্ত সুবিধা দেখতে পাচ্ছি না - উদাহরণস্বরূপ সিপিআরএল মোড কিছু অভিনব কাজ করে এবং এই সুবিধাটি ব্যবহার করে না।


2
হবি !হাইলাইট করার জন্য রুবি মোডের ব্যবহার =begin... =endব্লক।
লিন্ডাইড্যান্সার

5

সিনট্যাক্স h থেকে নেওয়া:

/* A syntax table is a chartable whose elements are cons cells
   (CODE+FLAGS . MATCHING-CHAR).  MATCHING-CHAR can be nil if the char
   is not a kind of parenthesis.

   The low 8 bits of CODE+FLAGS is a code, as follows:  */

enum syntaxcode
  {
    Swhitespace, /* for a whitespace character */
    Spunct,      /* for random punctuation characters */
    Sword,       /* for a word constituent */
    Ssymbol,     /* symbol constituent but not word constituent */
    Sopen,       /* for a beginning delimiter */
    Sclose,      /* for an ending delimiter */
    Squote,      /* for a prefix character like Lisp ' */
    Sstring,     /* for a string-grouping character like Lisp " */
    Smath,       /* for delimiters like $ in Tex.  */
    Sescape,     /* for a character that begins a C-style escape */
    Scharquote,  /* for a character that quotes the following character */
    Scomment,    /* for a comment-starting character */
    Sendcomment, /* for a comment-ending character */
    Sinherit,    /* use the standard syntax table for this character */
    Scomment_fence, /* Starts/ends comment which is delimited on the
                       other side by any char with the same syntaxcode.  */
    Sstring_fence,  /* Starts/ends string which is delimited on the
                       other side by any char with the same syntaxcode.  */
    Smax         /* Upper bound on codes that are meaningful */
  };

Assuming যে সিনট্যাক্স কোড এবং Regex সিনট্যাক্স শ্রেণীর একই জিনিস পড়ুন আমি তিলকিত ব্যবহার করেছি |মধ্যে cc-awk.elযা ব্যবহার "\\s|"ভারসাম্যহীন স্ট্রিং বিভেদক হাইলাইট জন্য।


2
এগুলি কয়েকটি জায়গায় ব্যবহৃত হয়, যেমন python-syntax-stringify, ruby-syntax-propertize-percent-literalএবং অন্যান্যSstringযদিও এখান থেকে এটি আলাদা হয় আমি তা দেখতে পাচ্ছি না ।
উইলফ্রেড হিউজেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.