Ubuntu Online, Fedora Online, Windows online emulator അല്ലെങ്കിൽ MAC OS ഓൺലൈൻ എമുലേറ്റർ എന്നിങ്ങനെയുള്ള ഞങ്ങളുടെ ഒന്നിലധികം സൗജന്യ ഓൺലൈൻ വർക്ക്സ്റ്റേഷനുകളിലൊന്ന് ഉപയോഗിച്ച് OnWorks സൗജന്യ ഹോസ്റ്റിംഗ് ദാതാവിൽ പ്രവർത്തിപ്പിക്കാവുന്ന cpphs-hugs എന്ന കമാൻഡാണിത്.
പട്ടിക:
NAME
cpphs - ഹാസ്കെലിനായി ലിബറലൈസ് ചെയ്ത cpp-a-പോലുള്ള പ്രീപ്രൊസസർ
സിനോപ്സിസ്
cpps [ഫയലിന്റെ പേര്|ഓപ്ഷൻ]...
വിവരണം
cpps യുടെ ഉദാരവൽക്കരിച്ച പുനർനിർവഹണമാണ് സിപിപി (1), സി പ്രീ-പ്രോസസർ, അകത്തും
ഹാസ്കെൽ.
എന്തിനാണ് cpp വീണ്ടും നടപ്പിലാക്കുന്നത്? ശരിയോ തെറ്റോ, സി പ്രീ-പ്രൊസസർ ഹാസ്കലിൽ വ്യാപകമായി ഉപയോഗിക്കുന്നു
സോഴ്സ് കോഡ്. വ്യത്യസ്തമായ കംപൈലറുകൾക്ക് സോപാധികമായ സമാഹാരം ഇത് സാധ്യമാക്കുന്നു
ഒരേ കമ്പൈലറിന്റെ പതിപ്പുകളും വ്യത്യസ്ത OS പ്ലാറ്റ്ഫോമുകളും. അതും ഇടയ്ക്കിടെ ഉപയോഗിക്കാറുണ്ട്
പ്ലാറ്റ്ഫോം-നിർദ്ദിഷ്ട വിശദാംശങ്ങളുടെ ചില രൂപങ്ങൾ പ്രവർത്തനക്ഷമമാക്കാൻ കഴിയുന്ന അതിന്റെ മാക്രോ ഭാഷയ്ക്ക്-
മടുപ്പിക്കുന്ന ബോയിലർപ്ലേറ്റ് ജനറേഷൻ ഓഫ് ഇൻസ്റ്റൻസ് ഡെഫനിഷനുകളും എഫ്എഫ്ഐയും പോലെയുള്ള പൂരിപ്പിക്കൽ
പ്രഖ്യാപനങ്ങൾ. എന്നിരുന്നാലും, വ്യക്തമായ സൗന്ദര്യശാസ്ത്രം മാറ്റിനിർത്തിയാൽ സിപിപിയിൽ രണ്ട് പ്രശ്നങ്ങളുണ്ട്
ഒന്ന്:
ചില ഹാസ്കെൽ സിസ്റ്റങ്ങൾക്ക്, പ്രത്യേകിച്ച് വിൻഡോസിലെ ഹഗ്സ്, ഒരു യഥാർത്ഥ സിപിപി ലഭ്യമല്ല
സ്ഥിരസ്ഥിതിയായി.
മറ്റ് ഹാസ്കെൽ സിസ്റ്റങ്ങൾക്ക് പോലും, gcc 3.x സീരീസ് നൽകുന്ന പൊതുവായ cpp
ഹാസ്കലിന്റെ വാക്യഘടനയുമായി പൊരുത്തപ്പെടാത്ത രീതിയിൽ സൂക്ഷ്മമായി മാറുന്നു. അവിടെയുണ്ട്
എല്ലായ്പ്പോഴും പ്രശ്നങ്ങളായിരുന്നു, ഉദാഹരണത്തിന്, സ്ട്രിംഗ് ഗ്യാപ്പുകളിലും പ്രധാന പ്രതീകങ്ങളിലും
ഐഡന്റിഫയറുകൾ. ഈ പ്രശ്നങ്ങൾ കൂടുതൽ വഷളാക്കുകയേയുള്ളൂ.
അതിനാൽ, cpp- യ്ക്ക് ഒരു ബദൽ നൽകാൻ ശ്രമിക്കുന്നത് ശരിയാണെന്ന് തോന്നി, ഇവ രണ്ടും കൂടുതൽ അനുയോജ്യമാണ്
ഹാസ്കെൽ, കൂടാതെ ഹാസ്കെല്ലിൽ എഴുതിയിരിക്കുന്നതിനാൽ അത് കംപൈലറുകൾ ഉപയോഗിച്ച് വിതരണം ചെയ്യാൻ കഴിയും.
cpps വളരെയേറെ ഫീച്ചർ-പൂർണവും, ഇതുമായി പൊരുത്തപ്പെടുന്നതുമാണ് - പരമ്പരാഗത cpp ശൈലി.
ഇതിന് രണ്ട് മോഡുകൾ ഉണ്ട്:
സോപാധിക സമാഹാരം മാത്രം (--നോമാക്രോ),
കൂടാതെ പൂർണ്ണ മാക്രോ-വിപുലീകരണവും (സ്ഥിരസ്ഥിതി).
In --നോമാക്രോ മോഡ്, cpps സോപാധികമായ സമാഹാര പ്രവർത്തനങ്ങൾ മാത്രം ചെയ്യുന്നു, അതായത് # ഉൾപ്പെടുത്തുകന്റെ,
#എങ്കിൽ'മണല് #ifdefടെക്സ്റ്റ് റീപ്ലേസ്മെന്റ് നിർവചനങ്ങൾ അനുസരിച്ച് പ്രോസസ്സ് ചെയ്യപ്പെടുന്നു (രണ്ടും കമാൻഡ്-
ലൈനും ആന്തരികവും), എന്നാൽ പരാമീറ്ററൈസ്ഡ് മാക്രോ വിപുലീകരണമൊന്നും നടക്കുന്നില്ല. പൂർണ്ണമായി
കോംപാറ്റിബിലിറ്റി മോഡ് (സ്ഥിരസ്ഥിതി), ടെക്സ്ച്വൽ റീപ്ലേസ്മെന്റുകൾ, മാക്രോ വിപുലീകരണങ്ങൾ എന്നിവയും ഉണ്ട്
നോൺ-സിപിപി ടെക്സ്റ്റിന്റെ ശേഷിക്കുന്ന ബോഡിയിൽ പ്രോസസ്സ് ചെയ്തു.
പ്രവർത്തന സവിശേഷതകൾ:
#ifdef ലളിതമായ സോപാധിക സമാഹാരം
#എങ്കിൽ നിർവചിക്കപ്പെട്ട(), &&, ||, ==, മുതലായവയുടെ പൂർണ്ണ ബൂളിയൻ ഭാഷ.
#എലിഫ് ചങ്ങലയിട്ട വ്യവസ്ഥകൾ
# നിർവചിക്കുക
ഇൻ-ലൈൻ നിർവചനങ്ങൾ (ടെക്സ്റ്റ് റീപ്ലേസ്മെന്റുകളും മാക്രോകളും)
# undef നിർവചനങ്ങളുടെ ഇൻ-ലൈൻ അസാധുവാക്കൽ
# ഉൾപ്പെടുത്തുക
ഫയൽ ഉൾപ്പെടുത്തൽ
#ലൈൻ ലൈൻ നമ്പർ നിർദ്ദേശങ്ങൾ
\n എല്ലാ # നിർദ്ദേശങ്ങൾക്കകത്തും ലൈൻ തുടർച്ചകൾ
/**/ മാക്രോ നിർവചനത്തിനുള്ളിൽ ടോക്കൺ കാറ്റനേഷൻ
## ANSI-ശൈലി ടോക്കൺ കാറ്റനേഷൻ
# ANSI-ശൈലി ടോക്കൺ സ്ട്രിംഗൈസേഷൻ
__FILE__
DIY പിശക് സന്ദേശങ്ങൾക്കുള്ള പ്രത്യേക ടെക്സ്റ്റ് മാറ്റിസ്ഥാപിക്കൽ
__LINE__
DIY പിശക് സന്ദേശങ്ങൾക്കുള്ള പ്രത്യേക ടെക്സ്റ്റ് മാറ്റിസ്ഥാപിക്കൽ
__DATE__
പ്രത്യേക ടെക്സ്റ്റ് മാറ്റിസ്ഥാപിക്കൽ
__സമയം__
പ്രത്യേക ടെക്സ്റ്റ് മാറ്റിസ്ഥാപിക്കൽ
മാക്രോ വികാസം ആവർത്തനമാണ്. ഒരു മാക്രോ നാമത്തിന്റെ പുനർനിർവചനം ഒരു മുന്നറിയിപ്പ് സൃഷ്ടിക്കുന്നില്ല.
ഉപയോഗിച്ച് കമാൻഡ് ലൈനിൽ മാക്രോകൾ നിർവചിക്കാം -D ടെക്സ്റ്റ് മാറ്റിസ്ഥാപിക്കുന്നതുപോലെ. മാക്രോ
പേരുകൾ ഹാസ്കെൽ ഐഡന്റിഫയറാകാൻ അനുവദനീയമാണ് ഉദാ: പ്രൈം, ബാക്ക്ടിക്ക് ´
പ്രതീകങ്ങൾ, C യെക്കാൾ അൽപ്പം അയഞ്ഞതാണ്, പക്ഷേ അവയിൽ ഇപ്പോഴും ഓപ്പറേറ്ററെ ഉൾപ്പെടുത്തിയേക്കില്ല
ചിഹ്നങ്ങൾ.
ഔട്ട്പുട്ടിലെ ലൈനുകളുടെ എണ്ണം സംരക്ഷിച്ചിരിക്കുന്നതിനാൽ പിന്നീടുള്ള ഏത് പ്രോസസറിനും നൽകാൻ കഴിയും
അർത്ഥവത്തായ പിശക് സന്ദേശങ്ങൾ. ഒരു ഫയൽ ആയിരിക്കുമ്പോൾ # ഉൾപ്പെടുത്തുക'd, cpps ഇൻസേർട്ട്സ് #ലൈൻ എന്നതിനായുള്ള നിർദ്ദേശങ്ങൾ
അതേ കാരണം. വരി തുടർച്ചകളുടെ സാന്നിധ്യത്തിൽ പോലും നമ്പറിംഗ് ശരിയായിരിക്കണം.
നിങ്ങൾ ആഗ്രഹിക്കുന്നില്ലെങ്കിൽ #ലൈൻ അന്തിമ ഔട്ട്പുട്ടിലെ നിർദ്ദേശങ്ങൾ, ഉപയോഗിക്കുക --നോലിൻ ഓപ്ഷൻ.
cpp നിർദ്ദേശങ്ങളിലെ ഏതെങ്കിലും വാക്യഘടന പിശകുകൾ stderr-ലേക്ക് ഒരു സന്ദേശം നൽകുകയും പ്രോഗ്രാം നിർത്തുകയും ചെയ്യുന്നു.
#include'd ഫയൽ കണ്ടെത്തുന്നതിൽ പരാജയപ്പെടുന്നത് stderr-ന് ഒരു മുന്നറിയിപ്പ് നൽകുന്നു, പക്ഷേ പ്രോസസ്സിംഗ് തുടരുന്നു.
കമാൻഡ് ലൈനിൽ നിങ്ങൾക്ക് എത്ര ഫയലുകളുടെ പേരുകൾ വേണമെങ്കിലും നൽകാം. ഫലങ്ങൾ പട്ടികപ്പെടുത്തിയിരിക്കുന്നു
സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ട്.
-Dസിം ഒരു വാചക മാറ്റിസ്ഥാപിക്കൽ നിർവ്വചിക്കുക (സ്ഥിര മൂല്യം 1 ആണ്)
-ഡിസിം=Val
ഒരു നിർദ്ദിഷ്ട മൂല്യം ഉപയോഗിച്ച് ഒരു ടെക്സ്റ്റ് മാറ്റിസ്ഥാപിക്കൽ നിർവ്വചിക്കുക
-Iപാത #include's എന്നതിനായുള്ള തിരയൽ പാതയിലേക്ക് ഒരു ഡയറക്ടറി ചേർക്കുക
-Oഫയല് ഔട്ട്പുട്ടിനായി ഒരു ഫയൽ വ്യക്തമാക്കുക (സ്ഥിരസ്ഥിതി stdout ആണ്)
--നോമാക്രോ
#ifdef-ഉം #ഉൾപ്പെടുത്തുന്നതും മാത്രം പ്രോസസ്സ് ചെയ്യുക,
മാക്രോകൾ വികസിപ്പിക്കരുത്
--നോലിൻ
ഔട്ട്പുട്ടിൽ നിന്ന് #ലൈൻ തുള്ളികൾ നീക്കം ചെയ്യുക
--സ്ട്രിപ്പ്
പുറത്ത് പോലും സി-സ്റ്റൈൽ കമന്റുകൾ വൈറ്റ്സ്പെയ്സിലേക്ക് പരിവർത്തനം ചെയ്യുക
cpp നിർദ്ദേശങ്ങൾ
--ഹാഷുകൾ
ANSI # stringise ഓപ്പറേറ്ററെ തിരിച്ചറിയുക, ഒപ്പം ## എന്നതിനായി
ടോക്കൺ കാറ്റനേഷൻ, മാക്രോകൾക്കുള്ളിൽ
--വാചകം ഇൻപുട്ടിനെ ഹാസ്കെൽ കോഡല്ല, പ്ലെയിൻ ടെക്സ്റ്റായി പരിഗണിക്കുക
--ലേഔട്ട്
മാക്രോ വിപുലീകരണങ്ങൾക്കുള്ളിൽ പുതിയ ലൈനുകൾ സംരക്ഷിക്കുക
--വെളിച്ചമില്ലാത്തത്
സാക്ഷരതാ ശൈലിയിലുള്ള കമന്റുകൾ നീക്കം ചെയ്യുക
--പതിപ്പ്
cpps-ന്റെ പതിപ്പ് നമ്പർ റിപ്പോർട്ടുചെയ്ത് നിർത്തുക
സ്ഥിരസ്ഥിതിയായി നിർവചിച്ചിരിക്കുന്ന ടെക്സ്ച്വൽ റീപ്ലേസ്മെന്റുകളൊന്നുമില്ല. (സാധാരണ സിപിപിക്ക് സാധാരണയായി നിർവചനങ്ങൾ ഉണ്ട്
മെഷീൻ, ഒഎസ് മുതലായവയ്ക്ക്. നിങ്ങൾക്ക് വേണമെങ്കിൽ ഇവ cpphs സോഴ്സ് കോഡിലേക്ക് എളുപ്പത്തിൽ ചേർക്കാവുന്നതാണ്.)
എന്ന ക്രമത്തിലാണ് തിരയൽ പാത തിരയുന്നത് -I എന്ന ഡയറക്ടറി ഒഴികെയുള്ള ഓപ്ഷനുകൾ
കോളിംഗ് ഫയൽ, തുടർന്ന് നിലവിലെ ഡയറക്ടറി, എപ്പോഴും ആദ്യം തിരയുന്നു. വീണ്ടും, ഇല്ല
സ്ഥിരസ്ഥിതി തിരയൽ പാത (വീണ്ടും, ഇത് എളുപ്പത്തിൽ മാറ്റാവുന്നതാണ്).
വ്യത്യാസങ്ങൾ FROM സി.പി.പി.
പൊതുവേ, cpps അടിസ്ഥാനമാക്കിയുള്ളതാണ് - പരമ്പരാഗത പെരുമാറ്റം, ANSI C അല്ല, കൂടാതെ ഉണ്ട്
സ്റ്റാൻഡേർഡ് സിപിപിയിൽ നിന്നുള്ള പ്രധാന വ്യത്യാസങ്ങൾ പിന്തുടരുന്നു.
പൊതുവായ
ദി # ഏതെങ്കിലും cpp നിർദ്ദേശം അവതരിപ്പിക്കുന്നത് ഒരു വരിയുടെ ആദ്യ നിരയിലായിരിക്കണം (അതേസമയം
ANSI വൈറ്റ്സ്പെയ്സിന് മുമ്പ് അനുവദിക്കുന്നു # ).
സൃഷ്ടിക്കുന്നു #ലൈൻ n "ഫയലിന്റെ പേര്"വാക്യഘടന, അല്ല # n "ഫയലിന്റെ പേര്"വകഭേദം.
സി അഭിപ്രായങ്ങൾ cpp നിർദ്ദേശങ്ങളിൽ നിന്ന് മാത്രമേ നീക്കം ചെയ്യപ്പെടുകയുള്ളൂ. അവ മറ്റുള്ളവരിൽ നിന്ന് നീക്കം ചെയ്യപ്പെടുന്നില്ല
വാചകം. ഉദാഹരണത്തിന്, ഹാസ്കലിൽ, ഇനിപ്പറയുന്നവയെല്ലാം സാധുവായ ഓപ്പറേറ്ററാണ്
ചിഹ്നങ്ങൾ: /* */ */* എന്നിരുന്നാലും, ഇതുപയോഗിച്ച് നിങ്ങൾക്ക് സി-കമന്റ് നീക്കംചെയ്യൽ ഓണാക്കാനാകും --സ്ട്രിപ്പ് ഓപ്ഷൻ.
മാക്രോ ഭാഷ
അംഗീകരിക്കുന്നു /**/ മാക്രോ നിർവചനത്തിൽ ടോക്കൺ-പേസ്റ്റിംഗിനായി. എന്നിരുന്നാലും, /* */ (ഏതെങ്കിലും വാചകം ഉപയോഗിച്ച്
ഓപ്പൺ/ക്ലോസ് കമന്റിന് ഇടയിൽ) വൈറ്റ്സ്പേസ് ചേർക്കുന്നു.
എ.എൻ.എസ്.ഐ ## ടോക്കൺ-പേസ്റ്റിംഗ് ഓപ്പറേറ്റർ കൂടെ ലഭ്യമാണ് --ഹാഷുകൾ പതാക. ഒഴിവാക്കാനാണിത്
അതേ പേരിലുള്ള ഏതെങ്കിലും സാധുവായ ഹാസ്കെൽ ഓപ്പറേറ്ററെ തെറ്റായി വ്യാഖ്യാനിക്കുന്നു.
മാക്രോ ഫോർമൽ പാരാമീറ്റർ യഥാർത്ഥമായത് ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുന്നു, ഒരു സ്ട്രിംഗിനുള്ളിൽ പോലും (ഇരട്ട അല്ലെങ്കിൽ ഒറ്റ
ഉദ്ധരിച്ചത്). ഇതാണ് -പരമ്പരാഗത പെരുമാറ്റം, ANSI പിന്തുണയ്ക്കുന്നില്ല.
തിരിച്ചറിയുന്നു # നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ മാത്രം മാക്രോ ഡെഫനിഷനിൽ സ്ട്രിംഗൈസേഷൻ ഓപ്പറേറ്റർ --ഹാഷുകൾ
ഓപ്ഷൻ. (ഇതൊരു ANSI കൂട്ടിച്ചേർക്കലാണ്, ഉദ്ധരിച്ച സ്ട്രിംഗൈസേഷൻ (മുകളിൽ) ആയതിനാൽ മാത്രം ആവശ്യമാണ്
ANSI നിരോധിച്ചിരിക്കുന്നു.)
ഒരു ടെക്സ്ച്വൽ റീപ്ലേസ്മെന്റ് ഡെഫനിഷനിൽ കൃത്യമായി വൈറ്റ്സ്പെയ്സ് സംരക്ഷിക്കുന്നു (മൊഡ്യൂളോ ന്യൂലൈനുകൾ),
എന്നാൽ മുന്നിലും പിന്നിലും ഇടം ഇല്ലാതായി.
ഒരു മാക്രോ നിർവചനത്തിനുള്ളിൽ (അതിനെ പിന്നിലാക്കി) കൃത്യമായി (മൊഡ്യൂളോ) വൈറ്റ്സ്പെയ്സ് സംരക്ഷിക്കുന്നു
ന്യൂലൈനുകൾ), എന്നാൽ മുൻനിര ഇടം ഇല്ലാതായി.
മാക്രോ കോൾ ആർഗ്യുമെന്റുകൾക്കുള്ളിൽ വൈറ്റ്സ്പെയ്സ് കൃത്യമായി സംരക്ഷിക്കുന്നു (ന്യൂലൈനുകൾ ഉൾപ്പെടെ), എന്നാൽ ലീഡ് ചെയ്യുന്നു
ഒപ്പം ട്രെയിലിംഗ് സ്പേസ് ഒഴിവാക്കുകയും ചെയ്യുന്നു.
കൂടെ --ലേഔട്ട് ഓപ്ഷൻ, ഒരു ടെക്സ്ച്വൽ റീപ്ലേസ്മെന്റിലോ മാക്രോ ഡെഫനിഷനിലോ ഉള്ള ലൈൻ തുടർച്ചകൾ
മാക്രോ കോളിലെ ലൈൻ ബ്രേക്കുകളായി സംരക്ഷിക്കപ്പെടുന്നു. (ലേഔട്ട് സെൻസിറ്റീവ് കോഡിന് ഉപയോഗപ്രദമാണ്
ഹാസ്കെൽ.)
onworks.net സേവനങ്ങൾ ഉപയോഗിച്ച് cpphs-hugs ഓൺലൈനായി ഉപയോഗിക്കുക