सीपीपीएचएस - क्लाउड में ऑनलाइन

यह कमांड सीपीपीएच है जिसे हमारे कई मुफ्त ऑनलाइन वर्कस्टेशन जैसे कि उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर का उपयोग करके ऑनवर्क्स फ्री होस्टिंग प्रदाता में चलाया जा सकता है।

कार्यक्रम:

नाम


सीपीपीएचएस - हास्केल के लिए उदारीकृत सीपीपी-ए-जैसा प्रीप्रोसेसर

SYNOPSIS


सी.पी.पी.एच.एस [फ़ाइल का नाम|विकल्प] ...

वर्णन


सी.पी.पी.एच.एस का उदारीकृत पुनः कार्यान्वयन है सीपीपी (1) सी प्री-प्रोसेसर, इन और फॉर
हास्केल.

सीपीपी को पुनः लागू क्यों करें? सही या ग़लत, सी प्री-प्रोसेसर का व्यापक रूप से हास्केल में उपयोग किया जाता है
सोर्स कोड। यह अलग-अलग कंपाइलरों के लिए सशर्त संकलन को सक्षम बनाता है
एक ही कंपाइलर के संस्करण, और विभिन्न OS प्लेटफ़ॉर्म। इसका प्रयोग भी कभी-कभी किया जाता है
इसकी मैक्रो भाषा के लिए, जो प्लेटफ़ॉर्म-विशिष्ट विवरण के कुछ रूपों को सक्षम कर सकती है-
भरना, जैसे उदाहरण परिभाषाओं और एफएफआई की थकाऊ बॉयलरप्लेट पीढ़ी
घोषणाएँ हालाँकि, स्पष्ट सौंदर्यबोध के अलावा, सीपीपी के साथ दो समस्याएं हैं
लोगों को:

कुछ हास्केल सिस्टमों के लिए, विशेष रूप से विंडोज़ पर हग्स के लिए, एक वास्तविक सीपीपी उपलब्ध नहीं है
चूक।

यहां तक ​​कि अन्य हास्केल सिस्टम के लिए भी, सामान्य सीपीपी जीसीसी 3.x श्रृंखला द्वारा प्रदान किया जाता है
उन तरीकों से सूक्ष्मता से बदल रहा है जो हास्केल के वाक्यविन्यास के साथ असंगत हैं। वहाँ है
उदाहरण के लिए, स्ट्रिंग अंतराल और प्रमुख पात्रों के साथ हमेशा समस्याएं रही हैं
पहचानकर्ता ये समस्याएँ और भी बदतर होने वाली हैं।

इसलिए, सीपीपी का एक विकल्प प्रदान करने का प्रयास करना सही लगा, जो दोनों के साथ अधिक संगत हो
हास्केल, और स्वयं हास्केल में लिखा गया है ताकि इसे कंपाइलरों के साथ वितरित किया जा सके।

सी.पी.पी.एच.एस काफी हद तक सुविधा-संपूर्ण है, और इसके साथ संगत है पारंपरिक सीपीपी की शैली.
इसके दो मोड हैं:

केवल सशर्त संकलन (--नोमैक्रो),

और पूर्ण मैक्रो-विस्तार (डिफ़ॉल्ट)।

In --नोमैक्रो मोड, सी.पी.पी.एच.एस केवल सशर्त संकलन क्रियाएँ करता है, अर्थात # शामिलकी,
#अगर'रेत #ifdefपाठ-प्रतिस्थापन परिभाषाओं के अनुसार संसाधित किया जाता है (दोनों कमांड-
लाइन और आंतरिक), लेकिन कोई पैरामीटरयुक्त मैक्रो विस्तार नहीं किया जाता है। पूरे में
संगतता मोड (डिफ़ॉल्ट), पाठ्य प्रतिस्थापन और मैक्रो विस्तार भी हैं
गैर-सीपीपी पाठ के शेष भाग में संसाधित किया गया।

कामकाजी विशेषताएं:

#ifdef सरल सशर्त संकलन

#अगर परिभाषित(), &&, ||, ==, आदि की पूर्ण बूलियन भाषा।

#एलिफ जंजीरदार सशर्त

#define
इन-लाइन परिभाषाएँ (पाठ प्रतिस्थापन और मैक्रोज़)

# कुंड परिभाषाओं का इन-लाइन निरसन

# शामिल
फ़ाइल समावेशन

#रेखा पंक्ति संख्या निर्देश

\n सभी # निर्देशों के अंतर्गत पंक्ति निरंतरता

/ ** / मैक्रो परिभाषा के भीतर टोकन कैटेनेशन

## एएनएसआई-शैली टोकन कैटेनेशन

# एएनएसआई-शैली टोकन स्ट्रिंगाइजेशन

__FILE__
DIY त्रुटि संदेशों के लिए विशेष पाठ प्रतिस्थापन

__लाइन__
DIY त्रुटि संदेशों के लिए विशेष पाठ प्रतिस्थापन

__दिनांक__
विशेष पाठ प्रतिस्थापन

__समय__
विशेष पाठ प्रतिस्थापन

मैक्रो विस्तार पुनरावर्ती है. मैक्रो नाम की पुनर्परिभाषा कोई चेतावनी उत्पन्न नहीं करती है।
मैक्रोज़ को कमांड-लाइन पर परिभाषित किया जा सकता है -D बिल्कुल पाठ्य प्रतिस्थापन की तरह। मैक्रो
नामों को हास्केल पहचानकर्ता होने की अनुमति है उदाहरण के लिए प्राइम ` और बैकटिक ´ के साथ
अक्षर, जो C की तुलना में थोड़े ढीले हैं, लेकिन उनमें अभी भी ऑपरेटर शामिल नहीं हो सकता है
प्रतीकों।

आउटपुट में लाइनों की संख्या संरक्षित की जाती है ताकि कोई भी बाद वाला प्रोसेसर दे सके
सार्थक त्रुटि संदेश. जब कोई फ़ाइल होती है # शामिल'डी, सी.पी.पी.एच.एस आवेषण #रेखा के लिए निर्देश
वही कारण. पंक्ति निरंतरता की उपस्थिति में भी क्रमांकन सही होना चाहिए।
अगर आप नहीं चाहते #रेखा अंतिम आउटपुट में निर्देश, का उपयोग करें --कोई पंक्ति नहीं विकल्प.

सीपीपी निर्देशों में कोई भी सिंटैक्स त्रुटि stderr को एक संदेश देती है और प्रोग्राम को रोक देती है।
#include'd फ़ाइल खोजने में विफलता stderr को चेतावनी उत्पन्न करती है, लेकिन प्रसंस्करण जारी रहता है।

आप कमांड-लाइन पर कितनी भी संख्या में फ़ाइल नाम दे सकते हैं। परिणामों को श्रेणीबद्ध किया गया है
मानक आउटपुट।

-Dप्रतीक एक पाठ्य प्रतिस्थापन परिभाषित करें (डिफ़ॉल्ट मान 1 है)

-Dsym=लहर
एक विशिष्ट मान के साथ पाठ्य प्रतिस्थापन को परिभाषित करें

-Iपथ #include के लिए खोज पथ में एक निर्देशिका जोड़ें

-Oपट्टिका आउटपुट के लिए एक फ़ाइल निर्दिष्ट करें (डिफ़ॉल्ट stdout है)

--नोमैक्रो
केवल #ifdef's और #include's प्रोसेस करें,
मैक्रोज़ का विस्तार न करें

--कोई पंक्ति नहीं
आउटपुट से #लाइन ड्रॉपिंग हटाएं

--पट्टी
सी-शैली टिप्पणियों को रिक्त स्थान में परिवर्तित करें, यहां तक ​​कि बाहर भी
सीपीपी निर्देश

--हैश
एएनएसआई # स्ट्रिंग ऑपरेटर और ## को पहचानें
मैक्रोज़ के भीतर टोकन कैटेनेशन

--पाठ इनपुट को सादा पाठ मानें, हास्केल कोड नहीं

--विन्यास
मैक्रो विस्तार के भीतर नई लाइनें सुरक्षित रखें

- जला हुआ
साक्षर शैली की टिप्पणियाँ हटाएँ

--संस्करण
सीपीपीएच और स्टॉप की संस्करण संख्या की रिपोर्ट करें

डिफ़ॉल्ट रूप से कोई पाठ्य प्रतिस्थापन परिभाषित नहीं है। (सामान्य सीपीपी में आमतौर पर परिभाषाएं होती हैं
मशीन, ओएस आदि के लिए। यदि आप चाहें तो इन्हें आसानी से सीपीपीएचएस स्रोत कोड में जोड़ा जा सकता है।)
खोज पथ के क्रम में खोजा जाता है -I विकल्प, सिवाय इसके कि की निर्देशिका
कॉलिंग फ़ाइल, फिर वर्तमान निर्देशिका, हमेशा पहले खोजी जाती है। फिर, वहाँ नहीं है
डिफ़ॉल्ट खोज पथ (और फिर, इसे आसानी से बदला जा सकता है)।

मतभेद से सीपीपी


सामान्य तौर पर, cpphs पर आधारित है पारंपरिक व्यवहार, एएनएसआई सी नहीं, और है
मानक सीपीपी से मुख्य अंतर निम्नलिखित हैं।

सामान्य जानकारी

RSI # जो किसी भी सीपीपी निर्देश का परिचय देता है वह पंक्ति के पहले कॉलम में होना चाहिए (जबकि
एएनएसआई इससे पहले रिक्त स्थान की अनुमति देता है # ).

उत्पन्न करता है #रेखा n "फ़ाइल का नाम"वाक्यविन्यास, नहीं # n "फ़ाइल का नाम" वैरिएंट.

सी टिप्पणियाँ केवल सीपीपी निर्देशों के भीतर से हटाई जाती हैं। उन्हें दूसरे से अलग नहीं किया गया है
मूलपाठ। उदाहरण के लिए विचार करें कि हास्केल में, निम्नलिखित सभी वैध ऑपरेटर हैं
प्रतीक: /* */ * / * हालाँकि, आप इसके साथ सी-टिप्पणी हटाना चालू कर सकते हैं --पट्टी विकल्प.

मैक्रो भाषा

स्वीकार करता है / ** / मैक्रो परिभाषा में टोकन चिपकाने के लिए। हालाँकि, /* */ (किसी भी पाठ के साथ
खुली/बंद टिप्पणी के बीच) रिक्त स्थान सम्मिलित करता है।

एएनएसआई ## टोकन-पेस्टिंग ऑपरेटर उपलब्ध है --हैश झंडा। इससे बचना है
समान नाम के किसी भी वैध हास्केल ऑपरेटर की गलत व्याख्या करना।

मैक्रो औपचारिक पैरामीटर को वास्तविक पैरामीटर से बदल देता है, यहां तक ​​कि एक स्ट्रिंग के अंदर भी (डबल या सिंगल)।
उद्धृत)। यह -पारंपरिक व्यवहार है, एएनएसआई में समर्थित नहीं है।

को पहचानता है # मैक्रो परिभाषा में स्ट्रिंगाइज़ेशन ऑपरेटर केवल तभी जब आप इसका उपयोग करते हैं --हैश
विकल्प। (यह एक एएनएसआई जोड़ है, केवल इसलिए आवश्यक है क्योंकि उद्धृत स्ट्रिंगाइज़ेशन (ऊपर) है
एएनएसआई द्वारा निषिद्ध।)

पाठ्य प्रतिस्थापन परिभाषा के भीतर रिक्त स्थान को सटीक रूप से संरक्षित करता है (मॉड्यूलो न्यूलाइन्स),
लेकिन अग्रणी और अनुगामी स्थान समाप्त हो गया है।

मैक्रो परिभाषा के भीतर रिक्त स्थान को सुरक्षित रखता है (और उसके पीछे) बिल्कुल (modulo
न्यूलाइन्स), लेकिन अग्रणी स्थान समाप्त हो गया है।

मैक्रो कॉल तर्कों के भीतर रिक्त स्थान को सटीक रूप से संरक्षित करता है (न्यूलाइन सहित), लेकिन अग्रणी
और पीछे की जगह ख़त्म हो जाती है।

उसके साथ --विन्यास विकल्प, पाठ्य प्रतिस्थापन या मैक्रो परिभाषा में पंक्ति निरंतरता
मैक्रो कॉल में लाइन-ब्रेक के रूप में संरक्षित हैं। (लेआउट-संवेदनशील कोड के लिए उपयोगी
हास्केल।)

onworks.net सेवाओं का उपयोग करके ऑनलाइन cpphs का उपयोग करें



नवीनतम Linux और Windows ऑनलाइन प्रोग्राम