Ubuntu Online, Fedora Online, Windows online emulator അല്ലെങ്കിൽ MAC OS ഓൺലൈൻ എമുലേറ്റർ എന്നിങ്ങനെയുള്ള ഞങ്ങളുടെ ഒന്നിലധികം സൗജന്യ ഓൺലൈൻ വർക്ക്സ്റ്റേഷനുകളിലൊന്ന് ഉപയോഗിച്ച് OnWorks സൗജന്യ ഹോസ്റ്റിംഗ് ദാതാവിൽ പ്രവർത്തിപ്പിക്കാവുന്ന fst-compiler എന്ന കമാൻഡാണിത്.
പട്ടിക:
NAME
fst-compiler, fst-compiler-utf8 - SFST പ്രോഗ്രാമുകൾക്കുള്ള രണ്ട് കമ്പൈലറുകൾ
സിനോപ്സിസ്
fst-കംപൈലർ grammar-file [ ഔട്ട്പുട്ട്-ഫയൽ ]
fst-compiler-utf8 grammar-file [ ഔട്ട്പുട്ട്-ഫയൽ ]
ഓപ്ഷനുകൾ
-c fst-infl2 ഉപയോഗിക്കുന്ന കോംപാക്റ്റ് ഫോർമാറ്റിൽ ട്രാൻസ്ഡ്യൂസർ സംഭരിക്കുക.
-l ലോമെം ഫോർമാറ്റിൽ ട്രാൻസ്ഡ്യൂസർ സംഭരിക്കുക.
-s ട്രാൻസ്ഡ്യൂസറിന്റെ ഉപരിതലവും വിശകലന പാളിയും മാറ്റുക. നിങ്ങൾ ഈ സ്വിച്ച് ഇൻ ഉപയോഗിക്കേണ്ടതുണ്ട്
ഉപയോഗിക്കാൻ ഓർഡർ fst-infl (fst-infl2, fst-infl3) വിശകലനത്തേക്കാൾ തലമുറയ്ക്കായി.
വിവരണം
fst-കംപൈലർ ഫിനിറ്റ്-സ്റ്റേറ്റ് ട്രാൻസ്ഡ്യൂസർ പ്രോഗ്രാമുകൾക്കുള്ള ഒരു കംപൈലറാണ്. ഇത് ഒരു മിനിമൈസ്ഡ് സൃഷ്ടിക്കുന്നു
ഉപയോഗിക്കാനാകുന്ന ഫിനിറ്റ് സ്റ്റേറ്റ് ട്രാൻസ്ഡ്യൂസർ fst-mor, fst-infl, fst-print, fst-താരതമ്യം,
fst-parse, ഒപ്പം fst-lattice. ഉപയോഗിച്ച് ജനറേറ്റ് ചെയ്യുന്ന കോംപാക്റ്റ് ട്രാൻസ്ഡ്യൂസർ പ്രാതിനിധ്യം
-c ഫ്ലാഗ്, പിന്തുണയ്ക്കുന്നു fst-infl2, ആദ്യ ട്രെയിൻ, ഒപ്പം fst-മാച്ച്. മെമ്മറി കാര്യക്ഷമത
-l ഫ്ലാഗ് ഉപയോഗിച്ച് ജനറേറ്റ് ചെയ്യുന്ന ട്രാൻസ്ഡ്യൂസർ പ്രാതിനിധ്യം പിന്തുണയ്ക്കുന്നു ആദ്യം-
infl3.
ട്രാൻസ്ഡ്യൂസർ പ്രോഗ്രാം അടങ്ങുന്ന ഒരു ഫയലിന്റെ പേരാണ് ആദ്യത്തെ പ്രോഗ്രാം ആർഗ്യുമെന്റ്.
പ്രോഗ്രാമിംഗ് ഭാഷ താഴെ വിവരിച്ചിരിക്കുന്നു. രണ്ടാമത്തെ വാദം ഫയലിന്റെ പേരാണ്
തത്ഫലമായുണ്ടാകുന്ന ട്രാൻസ്ഡ്യൂസർ ബൈനറി രൂപത്തിൽ എഴുതപ്പെടും. രണ്ടാമത്തെ വാദം ആണെങ്കിൽ
കാണുന്നില്ല, ഔട്ട്പുട്ട് എഴുതപ്പെടും stdout.
fst-compiler-utf8 അതിൽ നിന്ന് വ്യത്യസ്തമാണ് fst-കംപൈലർ പ്രതീക എൻകോഡിംഗിൽ മാത്രം. fst-compiler-
utf8 സോഴ്സ് ഫയലുകളുടെ UTF8 എൻകോഡിംഗിനെ പിന്തുണയ്ക്കുന്നു fst-കംപൈലർ വേണ്ടി ഉപയോഗിക്കേണ്ടതാണ്
ASCII കോഡിന്റെ വിപുലീകരണമായ latin8 പോലുള്ള 1-ബിറ്റ് പ്രതീക കോഡുകൾ. വിവരങ്ങൾ
എൻകോഡിംഗിനെ കുറിച്ച് ട്രാൻസ്ഡ്യൂസർ ഫയലുകളിൽ സംഭരിക്കുകയും മറ്റ് SFST പ്രോഗ്രാമുകൾ ഉപയോഗിക്കുകയും ചെയ്യുന്നു.
FILE ഫോർമാറ്റുകൾ
ഒരു ട്രാൻസ്ഡ്യൂസർ പ്രോഗ്രാമിൽ ഒരു (ഓപ്ഷണൽ) സീക്വൻസ് അടങ്ങിയിരിക്കുന്നു അക്ഷരമാല ഒപ്പം വേരിയബിൾ
ഒരു സിംഗിൾ പിന്തുടരുന്ന നിർവചനങ്ങൾ ട്രാൻഡ്യൂസർ പദപ്രയോഗം ഫലം നിർവചിക്കുന്നത്
ട്രാൻസ്ഫ്യൂസർ.
അക്ഷരമാല
ഒരു അക്ഷരമാല നിർവചനത്തിൽ കീവേഡ് ALPHABET അടങ്ങിയിരിക്കുന്നു, തുടർന്ന് = കൂടാതെ കുറച്ച് ട്രാൻസ്ഡ്യൂസറും
പദപ്രയോഗം ഉദാ
അക്ഷരമാല = [az]:[AZ]
ഈ കമാൻഡ് അക്ഷരമാലയെ വീണ്ടും നിർവചിക്കുന്നു, അതിൽ സംഭവിക്കുന്ന ചിഹ്ന ജോഡികളുടെ കൂട്ടം
ട്രാൻസ്ഡ്യൂസറിന്റെ പരിവർത്തനങ്ങൾ. രണ്ട്-ലെവൽ ഓപ്പറേറ്റർമാരുടെ സംഭവങ്ങൾ, നിഷേധ ഓപ്പറേറ്റർമാർ കൂടാതെ
ഉദ്ധരിക്കാത്ത കാലയളവുകൾക്ക് എല്ലായ്പ്പോഴും അക്ഷരമാല നിർവചനം നൽകണം.
വേരിയബിളുകൾ
രണ്ട് വ്യത്യസ്ത തരം വേരിയബിളുകൾ ഉണ്ട്. ചിഹ്നം ഗണം വേരിയബിളുകൾ ഹാഷ് ഉപയോഗിച്ച് അടച്ചിരിക്കുന്നു
ചിഹ്നങ്ങൾ (#) കൂടാതെ ചിഹ്ന ശ്രേണികൾ (ചുവടെ കാണുക) മൂല്യങ്ങളായി എടുക്കുക:
#UC# = AZ
#LC# = az
ട്രാൻസ്ഡ്യൂഡർ വേരിയബിളുകൾ ഡോളർ ചിഹ്നങ്ങളാൽ ചുറ്റപ്പെട്ടിരിക്കുന്നു കൂടാതെ ട്രാൻസ്ഡ്യൂസർ എക്സ്പ്രഷനുകൾ ഇതുപോലെ എടുക്കുന്നു
മൂല്യങ്ങൾ:
$MAP$ = [az]:[AZ]+
$MAP$ = [#LC#]:[#UC#]+
`=' ചിഹ്നത്തിൽ പേര് ആരംഭിക്കുന്ന വേരിയബിളുകൾ സവിശേഷമാണ് കരാര് വേരിയബിളുകൾ. ഒരു എങ്കിൽ
എഗ്രിമെന്റ് വേരിയബിൾ ഒരു ട്രാൻസ്ഡ്യൂസർ എക്സ്പ്രഷനിൽ ഒന്നിലധികം തവണ സംഭവിക്കുന്നു, അത് എപ്പോഴും ഉണ്ടായിരിക്കും
ഒരേ മൂല്യം. ഇനിപ്പറയുന്ന ട്രാൻസ്ഡ്യൂസർ പ്രോഗ്രാം പരിഗണിക്കുക:
$=1$ = [abc]
$=1$ X $=1$
ഫല ട്രാൻസ്ഡ്യൂസർ aXa, bXb, cXc എന്നീ സ്ട്രിംഗുകളെ തിരിച്ചറിയുന്നു. അസൈക്ലിക് ട്രാൻസ്ഡ്യൂസറുകൾ മാത്രം
(അതായത്, പരിമിതമായ സ്ട്രിംഗ് മാപ്പിംഗുകളുള്ള ട്രാൻസ്ഡ്യൂസറുകൾ) എഗ്രിമെന്റിന് അസൈൻ ചെയ്യാവുന്നതാണ്
വേരിയബിളുകൾ.
ചിഹ്നങ്ങൾ
ഒരു ചിഹ്നം ഒന്നുകിൽ
- A s 5 പോലെയുള്ള ഒരൊറ്റ പ്രതീകം,
- \* അല്ലെങ്കിൽ \_ പോലെ ഉദ്ധരിച്ച പ്രതീകം,
- പോലെയുള്ള ഒന്നിലധികം പ്രതീക ചിഹ്നം അഥവാ (അത് എപ്പോഴും
ആംഗിൾ ബ്രാക്കറ്റുകളിൽ അടച്ചിരിക്കുന്നു) അല്ലെങ്കിൽ
- ഒരു ബാക്ക്സ്ലാഷിനെ തുടർന്ന് ഒരു സംഖ്യയുടെ സംഖ്യാ കോഡ്
നിയുക്ത കഥാപാത്രം
- ശൂന്യ ചിഹ്നം <>.
ചിഹ്ന ക്രമം
പ്രതീകങ്ങൾ, ഒന്നിലധികം പ്രതീകങ്ങൾ, പ്രതീകങ്ങൾ എന്നിവയുടെ ഒരു ശ്രേണിയാണ് ചിഹ്ന ശ്രേണി
ശ്രേണികൾ, ഉദാ az \. .
ചിഹ്ന ശ്രേണി
ഒരു ചിഹ്ന ശ്രേണി ഒന്നുകിൽ
- ഒരൊറ്റ ചിഹ്നം
- [A-Za-z] അല്ലെങ്കിൽ പോലുള്ള ചതുര ബ്രാക്കറ്റുകളിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന ഒരു ചിഹ്ന ശ്രേണി
- ^ ൽ ആരംഭിക്കുന്ന ഒരു ചിഹ്ന ശ്രേണി [^A-Za-z] പോലെയുള്ള ചതുര ബ്രാക്കറ്റുകളിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്നു
([a-zA-Z] എന്നതിന്റെ പൂരകത്തെ നിർവചിക്കുന്നു) അല്ലെങ്കിൽ
- കാലഘട്ടം (അക്ഷരമാലയിൽ നിന്നുള്ള ഏതെങ്കിലും ചിഹ്നത്തെ പ്രതിനിധീകരിക്കുന്നു)
ട്രാൻസ്ഡ്യൂസർ എക്സ്പ്രഷനുകൾ
ഒരു ട്രാൻസ്ഡ്യൂസർ എക്സ്പ്രഷൻ (ടിഇ) ആവർത്തനപരമായി ഇനിപ്പറയുന്ന രീതിയിൽ നിർവചിച്ചിരിക്കുന്നു:
- കോളൻ കൊണ്ട് വേർതിരിക്കുന്ന രണ്ട് ചിഹ്ന ശ്രേണികളുടെ ജോഡി ഒരു TE ആണ്.
[az]:[aZ]
- [az] പോലെയുള്ള ഒരൊറ്റ ചിഹ്ന ശ്രേണി ഒരു TE ആണ്.
ഇത് [az]:[az] എന്നതിന്റെ ഒരു ഹ്രസ്വ രൂപമാണ്.
- രണ്ട് ചിഹ്ന ശ്രേണികൾ ബ്രേസുകളിൽ പൊതിഞ്ഞ് ഒരു കോളൻ കൊണ്ട് വേർതിരിച്ചിരിക്കുന്നു
ഭക്ഷണം കഴിച്ചു. {a[bc]}:{def} എന്നത് a:db:e <>:f | a:dc:e <>:f.
- X, Y എന്നിവ TEകളാണെങ്കിൽ XY ഒരു TE ആണ്.
(ബ്ലാങ്കുകൾ അവ ഉദ്ധരിച്ചില്ലെങ്കിൽ അവ അവഗണിക്കപ്പെടും.)
- X ഒരു TE ആണെങ്കിൽ (X) ഒരു TE ആണ്.
- X op എന്നത് TE ആണ്, X എന്നത് TE ആണ്, op ഒന്നുകിൽ * (ക്ലീനിന്റെ സ്റ്റാർ ഓപ്പറേറ്റർ), +
(ക്ലീനിന്റെ പ്ലസ് ഓപ്പറേറ്റർ), അല്ലെങ്കിൽ ? (ഓപ്ഷണാലിറ്റി ഓപ്പറേറ്റർ)
- op X ഒരു TE ആണ്, X ഒരു TE ആണ്, op ഒന്നുകിൽ ആണ്! (നെഗേഷൻ ഓപ്പറേറ്റർ), ^
(ടാർഗെറ്റ് ലാംഗ്വേജ് എക്സ്ട്രാക്ഷൻ ഓപ്പറേറ്റർ), _ (സോഴ്സ് ലാംഗ്വേജ് എക്സ്ട്രാക്ഷൻ ഓപ്പറേറ്റർ), അല്ലെങ്കിൽ ^_
(ഉറവിടവും ലക്ഷ്യ സ്വിച്ച് ഓപ്പറേറ്ററും).
- X op Y എന്നത് TE ആണ് X, Y എന്നത് TEകൾ ആണ്, op ഒന്നുകിൽ & (സംയോജനം
ഓപ്പറേറ്റർ), | (ഡിസ്ജംഗ്ഷൻ ഓപ്പറേറ്റർ), || (കോമ്പോസിഷൻ ഓപ്പറേറ്റർ), അല്ലെങ്കിൽ - (കുറക്കൽ
ഓപ്പറേറ്റർ)
- L, R എന്നിവ TEകളാണെങ്കിൽ, x, y എന്നിവ ചിഹ്ന ശ്രേണികളാണെങ്കിൽ L x op y R ഒരു TE ആണ്.
op ഒന്നുകിൽ => (രണ്ട്-തല നിയന്ത്രണം), <= (രണ്ട്-തല നിർബന്ധം), അല്ലെങ്കിൽ <=> (രണ്ട്-നില
നിയന്ത്രണവും നിർബന്ധവും).
- X, L, R എന്നിവ TEകളാണെങ്കിൽ X op L__R ഒരു TE ആണ്, കൂടാതെ op ഒന്നുകിൽ ^-> (മുകളിലേക്ക്
മാറ്റിസ്ഥാപിക്കൽ), _-> (താഴേക്ക് മാറ്റിസ്ഥാപിക്കൽ), /-> (ഇടത്തോട്ട് മാറ്റിസ്ഥാപിക്കൽ) അല്ലെങ്കിൽ \-> (വലത്തേക്ക്
മാറ്റിസ്ഥാപിക്കൽ). കൂടാതെ, L ഉം R ഉം ഓട്ടോമാറ്റയെ നിർവചിക്കണം (അതായത് അവയുടെ സ്ട്രിംഗുകൾ മാപ്പ് ചെയ്യുന്നു
സ്വയം). ഈ ഓപ്പറേറ്റർമാർ കാർട്ടൂണന്റെ പകരം വയ്ക്കുന്ന ഓപ്പറേറ്റർമാരുമായി പൊരുത്തപ്പെടുന്നു. എങ്കിൽ
അമ്പടയാളത്തിന് ശേഷം ഒരു ചോദ്യചിഹ്നം (?), മാറ്റിസ്ഥാപിക്കൽ ഓപ്ഷണൽ ആയി മാറുന്നു.
- X ഒരു TE ആണെങ്കിൽ X << l എന്നത് TE ആണ്, കൂടാതെ l എന്നത് ഏതെങ്കിലും ഫോമാണ്
a അല്ലെങ്കിൽ a:b എന്ന ഫോം ഇവിടെ a, b എന്നിവ ഒറ്റ പ്രതീകങ്ങളോ ചിഹ്നങ്ങളോ ആണ്. ഫലം എ
ട്രാൻസ്ഡ്യൂസർ X-ലേക്ക് സ്വതന്ത്രമായി ചേർത്തിരിക്കുന്നു. ഉദാഹരണത്തിന് ട്രാൻസ്ഡ്യൂസർ ab << c
c*ac*bc* ന് തുല്യം.
- X op Y L1__R2, ... , LN, R1 വഴി X,Y, L1 ആണെങ്കിൽ LN__RN ഒരു TE ആണ്
RN മുഖേന TE-കൾ, op എന്നത് ഒന്നുകിൽ => (പൊതു നിയന്ത്രണം), <= (പൊതു നിർബന്ധം), ^=>
(പൊതു ഉപരിതല നിയന്ത്രണം), ^<= (പൊതു ഉപരിതല നിർബന്ധം), ^<=> (പൊതു ഉപരിതലം
നിയന്ത്രണവും നിർബന്ധവും), _=> (പൊതുവായ ആഴത്തിലുള്ള നിയന്ത്രണം), _<= (പൊതുവായ ആഴത്തിലുള്ള നിർബന്ധം),
_<=> (പൊതുവായ ആഴത്തിലുള്ള നിയന്ത്രണവും നിർബന്ധവും). (ഈ ഓപ്പറേറ്റർമാർ ഇനിപ്പറയുന്ന രീതിയിൽ നടപ്പിലാക്കി
Anssi Yli-Jyra യുടെ നിർദ്ദേശം.)
- "fname" എന്നത് ഒരു TE ആണ്. കംപൈലർ fname എന്ന് പേരുള്ള ഫയൽ വായിച്ച് തിരിയുന്നു
ഇത് ലൈൻ1|ലൈൻ2|ലൈൻ3|... എന്ന ഫോം ട്രാൻസ്ഡ്യൂസറാക്കി മാറ്റുന്നു.
ഫയല്. : കൂടാതെ \ ഒഴികെയുള്ള എല്ലാ പ്രതീകങ്ങളും അക്ഷരാർത്ഥത്തിൽ വ്യാഖ്യാനിക്കപ്പെടുന്നു (അതായത് അല്ല
ഓപ്പറേറ്റർമാർ). ഈ TE സാധാരണയായി ഒരു ഫയലിൽ നിന്ന് മോർഫീം ലിസ്റ്റ് വായിക്കാൻ ഉപയോഗിക്കുന്നു.
-" "ഒരു TE ആണ്. കംപൈലർ ഒരു പ്രീ-കംപൈൽഡ് ട്രാൻസ്ഡ്യൂസർ വായിക്കുന്നു
ഫയലിന് fname എന്ന് പേരിട്ടു. ഈ
കൂടുതൽ സവിശേഷതകൾ
കമന്റുകൾ % എന്ന ചിഹ്നത്തിൽ തുടങ്ങി വരിയുടെ അവസാനം വരെ നീളുന്നു. ശൂന്യത അവഗണിക്കപ്പെടുന്നു
അവ ഉദ്ധരിക്കാത്ത പക്ഷം. ഒരു വരിയുടെ അവസാനത്തിലല്ലാതെ എക്സ്പ്രഷനുകൾ അവസാനിക്കുന്നു
ഒരു ബാക്ക്സ്ലാഷ് മുമ്പാണ്. ആജ്ഞ
#"fname" ഉൾപ്പെടുത്തുക
fname എന്ന ഫയലിൽ നിന്ന് സോഴ്സ് കോഡ് ചേർക്കാൻ ഉപയോഗിക്കാം. ആജ്ഞ
RE >> "fname"
RE എന്ന റെഗുലർ എക്സ്പ്രഷൻ ഫയൽ fname-ൽ സംഭരിക്കുന്നു. ആജ്ഞ
#ഹോപ്ക്രോഫ്റ്റ് ഉപയോഗിക്കുക
ഇനി മുതൽ ഹോപ്ക്രോഫ്റ്റ് മിനിമൈസേഷൻ അൽഗോരിതം ഉപയോഗിക്കാൻ കമ്പൈലറോട് പറയുന്നു, കൂടാതെ
#ഡിഫോൾട്ട് ഉപയോഗിക്കുക
ഡിഫോൾട്ട് മിനിമൈസേഷൻ അൽഗോരിതം (Brzozowski) ലേക്ക് തിരികെ മാറുന്നു. ആജ്ഞ
ഉദാഹരണം
ഒരു ലളിതമായ ട്രാൻസ്ഡ്യൂസർ പ്രോഗ്രാമിന്റെ ഒരു ഉദാഹരണം ഇതാ. ഫയൽ "adj-stems" ആണെന്ന് കരുതുക
രണ്ട് വരികൾ അടങ്ങിയിരിക്കുന്നു
എളുപ്പമായ
വൈകി
വലിയ
എളുപ്പമുള്ളതും എളുപ്പമുള്ളതും എളുപ്പമുള്ളതും വൈകിയതുമായ നാമവിശേഷണ രൂപങ്ങളെ ഈ ട്രാൻസ്ഡ്യൂസർ ശരിയായി വിശകലനം ചെയ്യും,
പിന്നീട്, ഏറ്റവും പുതിയത്.
അക്ഷരമാല = [a-zA-Z] y:ie:<> :<>
$R$ = y<=>i ( :<> ഇ)
$R2$ = ഇ<=><> ( :<> ഇ)
$R$ = $R$ & $R2$
$Stems$ = "adj-stems"
$S$ = $Stems$ ( :<>| :{er}| :{EST})
$S$ || $R$
പുറത്ത് പദവി
fst-കംപൈലർ എന്തെങ്കിലും പിശക് സംഭവിച്ചില്ലെങ്കിൽ 0 നൽകുന്നു.
onworks.net സേവനങ്ങൾ ഉപയോഗിച്ച് fst-compiler ഓൺലൈനായി ഉപയോഗിക്കുക