2 पॉइंट द्वारा GN⁺ 2024-11-03 | 1 टिप्पणियां | WhatsApp पर शेयर करें

अजीब lexical syntax

  • इस महीने मैंने 42 programming languages सीखी और llamafile के लिए एक नया syntax highlighter बनाया। Halloween के मौके पर मैं सबसे चौंकाने वाले syntax साझा करना चाहता हूँ।
  • समर्थित भाषाएँ हैं: Ada, Assembly, BASIC, C, C#, C++, COBOL, CSS, D, FORTH, FORTRAN, Go, Haskell, HTML, Java, JavaScript, Julia, JSON, Kotlin, ld, LISP, Lua, m4, Make, Markdown, MATLAB, Pascal, Perl, PHP, Python, R, Ruby, Rust, Scala, Shell, SQL, Swift, Tcl, TeX, TXT, TypeScript, Zig।

Syntax highlighter को कैसे कोड करें

  • Syntax highlighter को implement करना कठिन नहीं है। C++ और GNU gperf उपयोगी tools हैं।
  • gperf perfect hash table बनाता है, जिससे performance को अधिकतम किया जा सकता है।
  • एक बुनियादी syntax highlighter को finite-state machine के रूप में implement किया जा सकता है, जो strings, comments और keywords पर ध्यान देता है।

डेमो

  • llamafile का नया syntax highlighter, ollama की तुलना में एक मजबूत बढ़त रखता है।
  • Windows 10 पर Meta LLaMA 3.2 3B Instruct model का उपयोग करके अलग-अलग programming languages में code generate करने का डेमो दिया गया है।

चौंकाने वाले lexical syntax के उदाहरण

  • C: C language खुद को सरल बताती है, लेकिन इसमें trigraphs जैसे जटिल तत्व हैं।
  • Haskell: यह nested comments की अनुमति देती है।
  • Tcl: identifiers में quotation marks शामिल हो सकते हैं।
  • JavaScript: इसमें regular expression syntax है, और यह UNICODE characters को line break characters के रूप में उपयोग करता है।
  • Shell: heredoc syntax को कई तरीकों से इस्तेमाल किया जा सकता है।
  • String Interpolation: Kotlin, Scala, TypeScript strings के भीतर code insert करने की अनुमति देते हैं।
  • Swift: strings को कई # से घेरा जा सकता है।
  • C#: strings को कई quotation marks से wrap किया जा सकता है।
  • FORTH: यह हर चीज़ को whitespace boundaries के आधार पर tokenize करता है।
  • FORTRAN और COBOL: llamafile इन भाषाओं के syntax highlighting को support करता है।
  • Zig: multi-line strings दो backslashes से शुरू होती हैं।
  • Lua: multi-line strings के लिए square brackets और equals signs का उपयोग करता है।
  • Assembly: इसके कई dialects हैं, इसलिए syntax highlighting कठिन है।
  • Ada: single quotation mark का कई उद्देश्यों के लिए उपयोग करता है।
  • BASIC: strings के अंत में quotation mark होना ज़रूरी नहीं है।
  • Perl: regular expression syntax अनोखा है।
  • Ruby: इसका syntax जटिल है और समझना कठिन है।

समर्थित भाषाओं की जटिलता

  • FORTH सबसे सरल है और Ruby सबसे जटिल भाषा है।
  • हर भाषा के syntax highlighting के लिए code lines की संख्या के आधार पर जटिलता का आकलन किया गया है।

GN⁺ का सार

  • यह लेख विभिन्न programming languages के अनोखे syntax की पड़ताल करता है और syntax highlighter को implement करने के लिए जरूरी insights देता है।
  • llamafile का syntax highlighter कई भाषाओं को support करता है, और खासकर पुरानी भाषाओं के maintenance में उपयोगी हो सकता है।
  • यह programming languages की syntactic complexity को समझने में मदद करता है, और syntax highlighter development में रुचि रखने वालों के लिए लाभदायक होगा।
  • मिलती-जुलती सुविधाओं वाले projects में Pygments और Emacs शामिल हैं।

1 टिप्पणियां

 
GN⁺ 2024-11-03
Hacker News टिप्पणियाँ
  • कई भाषाएँ strings के भीतर code insertion को support करती हैं
    • इनमें C#, Python, JavaScript, Ruby, Shell, Make आदि शामिल हैं
  • Tcl भाषा की अनोखी विशेषताओं का वर्णन
    • code और data के बीच फ़र्क करना मुश्किल है
    • comments को code के रूप में पहचाना जा सकता है
  • PostgreSQL की सुविधाजनक dollar-quoted string feature का वर्णन
    • strings को कई तरीकों से व्यक्त किया जा सकता है
  • Vim की syntax highlighting feature का वर्णन
    • match और region घोषित करके syntax highlighting लागू की जाती है
    • complex syntax highlighting को support करती है
  • C भाषा में context-sensitive lexing का वर्णन
    • symbol table की आवश्यकता होती है
    • syntax highlighting के लिए पूरा parsing और symbol table information की आवश्यकता हो सकती है
  • C trigraphs का एक दिलचस्प उदाहरण
    • || logical operator का उपयोग करने वाले short-circuit rule का वर्णन
  • Lisp के syntax पर एक दृष्टिकोण
    • syntax भाषा का महत्वपूर्ण हिस्सा नहीं है, और यह simple व uniform होना चाहिए
  • Ruby के syntax को समझना कठिन होने की राय
  • Java के Unicode escape syntax highlighting को बिगाड़ सकते हैं
    • Unicode escape strings के बाहर भी इस्तेमाल किए जा सकते हैं
  • Joe की syntax highlighting implementation में रुचि
    • Python f-strings को ठीक से highlight करना संभव है
  • TeX की syntax highlighting कठिन होने के कारणों का वर्णन
    • TeX हर character के function को redefine कर सकता है
    • complete syntax highlighting असंभव है