ഇംഗ്ലീഷ്ഫ്രഞ്ച്സ്പാനിഷ്

OnWorks ഫെവിക്കോൺ

lexposix - ക്ലൗഡിൽ ഓൺലൈനിൽ

ഉബുണ്ടു ഓൺലൈൻ, ഫെഡോറ ഓൺലൈൻ, വിൻഡോസ് ഓൺലൈൻ എമുലേറ്റർ അല്ലെങ്കിൽ MAC OS ഓൺലൈൻ എമുലേറ്റർ എന്നിവയിലൂടെ OnWorks സൗജന്യ ഹോസ്റ്റിംഗ് ദാതാവിൽ lexposix പ്രവർത്തിപ്പിക്കുക

Ubuntu Online, Fedora Online, Windows online emulator അല്ലെങ്കിൽ MAC OS ഓൺലൈൻ എമുലേറ്റർ എന്നിങ്ങനെയുള്ള ഞങ്ങളുടെ ഒന്നിലധികം സൗജന്യ ഓൺലൈൻ വർക്ക്സ്റ്റേഷനുകളിലൊന്ന് ഉപയോഗിച്ച് OnWorks സൗജന്യ ഹോസ്റ്റിംഗ് ദാതാവിൽ പ്രവർത്തിപ്പിക്കാവുന്ന കമാൻഡ് lexposix ആണിത്.

പട്ടിക:

NAME


lex — ലെക്സിക്കൽ ജോലികൾക്കായി പ്രോഗ്രാമുകൾ സൃഷ്ടിക്കുക (വികാസം)

സിനോപ്സിസ്


Lex [−t] [−n|−v] [ഫയല്...]

വിവരണം


ദി Lex സ്വഭാവത്തിന്റെ ലെക്സിക്കൽ പ്രോസസ്സിംഗിൽ ഉപയോഗിക്കുന്നതിന് യൂട്ടിലിറ്റി സി പ്രോഗ്രാമുകൾ സൃഷ്ടിക്കും
ഇൻപുട്ട്, അത് ഒരു ഇന്റർഫേസ് ആയി ഉപയോഗിക്കാം yac. സി പ്രോഗ്രാമുകൾ സൃഷ്ടിക്കപ്പെടും
നിന്ന് Lex സോഴ്സ് കോഡ് കൂടാതെ ISO C സ്റ്റാൻഡേർഡിന് അനുസൃതമായി, ഒന്നിനെയും ആശ്രയിക്കാതെ
നിർവചിക്കാത്ത, വ്യക്തമാക്കാത്ത, അല്ലെങ്കിൽ നടപ്പിലാക്കൽ-നിർവചിക്കപ്പെട്ട പെരുമാറ്റം, കോഡ് ഉള്ള സന്ദർഭങ്ങളിൽ ഒഴികെ
വിതരണം ചെയ്ത ഉറവിടത്തിൽ നിന്ന് നേരിട്ട് പകർത്തിയതാണ്, അല്ലെങ്കിൽ ഡോക്യുമെന്റ് ചെയ്ത കേസുകളിൽ
നടപ്പിലാക്കൽ. സാധാരണയായി, ദി Lex യൂട്ടിലിറ്റി അത് സൃഷ്ടിക്കുന്ന പ്രോഗ്രാം ഫയലിലേക്ക് എഴുതും
lex.yy.c; എങ്കിൽ ഈ ഫയലിന്റെ അവസ്ഥ വ്യക്തമാക്കിയിട്ടില്ല Lex പൂജ്യമല്ലാത്ത എക്സിറ്റ് സ്റ്റാറ്റസ് ഉപയോഗിച്ച് പുറത്തുകടക്കുന്നു.
എന്നതിന്റെ പൂർണ്ണമായ വിവരണത്തിന് വിപുലീകരിച്ച വിവരണം വിഭാഗം കാണുക Lex ഇൻപുട്ട് ഭാഷ.

ഓപ്ഷനുകൾ


ദി Lex യൂട്ടിലിറ്റി POSIX.1-2008-ന്റെ അടിസ്ഥാന നിർവ്വചന വോള്യവുമായി പൊരുത്തപ്പെടണം. വിഭാഗം
12.2, യൂട്ടിലിറ്റി പദവിന്യാസം മാർഗ്ഗനിർദ്ദേശങ്ങൾ, മാർഗ്ഗനിർദ്ദേശം 9 ഒഴികെ.

ഇനിപ്പറയുന്ന ഓപ്ഷനുകൾ പിന്തുണയ്ക്കും:

−n സാധാരണയായി എഴുതിയ സ്ഥിതിവിവരക്കണക്കുകളുടെ സംഗ്രഹം അടിച്ചമർത്തുക -വി ഓപ്ഷൻ. അല്ലെങ്കിൽ
പട്ടികയുടെ വലുപ്പങ്ങൾ ഇതിൽ വ്യക്തമാക്കിയിരിക്കുന്നു Lex സോഴ്സ് കോഡും -വി ഓപ്ഷൻ അല്ല
വ്യക്തമാക്കിയ, തുടർന്ന് −n സൂചിപ്പിക്കുന്നത്.

−t തത്ഫലമായുണ്ടാകുന്ന പ്രോഗ്രാം പകരം സാധാരണ ഔട്ട്പുട്ടിലേക്ക് എഴുതുക lex.yy.c.

-വി എന്നതിന്റെ ഒരു സംഗ്രഹം എഴുതുക Lex സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ടിലേക്കുള്ള സ്ഥിതിവിവരക്കണക്കുകൾ. (ഇതിന്റെ ചർച്ച കാണുക
Lex പട്ടികയുടെ വലുപ്പങ്ങൾ നിർവചനങ്ങൾ in Lex.) എങ്കിൽ −t ഓപ്ഷൻ വ്യക്തമാക്കിയിട്ടുണ്ട് ഒപ്പം −n is
വ്യക്തമാക്കിയിട്ടില്ല, ഈ റിപ്പോർട്ട് സാധാരണ പിശകിനാൽ എഴുതപ്പെടും. മേശയുടെ വലുപ്പമാണെങ്കിൽ
എന്നതിൽ വ്യക്തമാക്കിയിട്ടുണ്ട് Lex സോഴ്സ് കോഡ്, എങ്കിൽ −n ഓപ്ഷൻ വ്യക്തമാക്കിയിട്ടില്ല
-വി ഓപ്ഷൻ പ്രവർത്തനക്ഷമമാക്കിയേക്കാം.

പ്രവർത്തനങ്ങൾ


ഇനിപ്പറയുന്ന പ്രവർത്തനത്തെ പിന്തുണയ്ക്കും:

ഫയല് ഒരു ഇൻപുട്ട് ഫയലിന്റെ പാതനാമം. അത്തരത്തിലുള്ള ഒന്നിൽ കൂടുതൽ ആണെങ്കിൽ ഫയല് വ്യക്തമാക്കിയിരിക്കുന്നു, എല്ലാ ഫയലുകളും
ഒരു സിംഗിൾ നിർമ്മിക്കാൻ സംയോജിപ്പിക്കും Lex പ്രോഗ്രാം. അല്ലെങ്കിൽ ഫയല് പ്രവർത്തനങ്ങളാണ്
വ്യക്തമാക്കിയത്, അല്ലെങ്കിൽ എ എങ്കിൽ ഫയല് ഓപ്പറാൻറ് ആണ് '-', സ്റ്റാൻഡേർഡ് ഇൻപുട്ട് ഉപയോഗിക്കും.

STDIN


ഇല്ലെങ്കിൽ സ്റ്റാൻഡേർഡ് ഇൻപുട്ട് ഉപയോഗിക്കും ഫയല് പ്രവർത്തനരേഖകൾ വ്യക്തമാക്കിയിട്ടുണ്ട്, അല്ലെങ്കിൽ എ ഫയല് പ്രവർത്തിപ്പിക്കുക
is '-'. ഇൻപുട്ട് ഫയലുകൾ കാണുക.

ഇൻപുട്ട് ഫയലുകൾ


ഇൻപുട്ട് ഫയലുകൾ ടെക്സ്റ്റ് ഫയലുകളായിരിക്കും Lex സോഴ്സ് കോഡ്, വിവരിച്ചിരിക്കുന്നത് പോലെ
വിപുലീകരിച്ച വിവരണ വിഭാഗം.

ENVIRONMENT വ്യത്യാസങ്ങൾ


ഇനിപ്പറയുന്ന പരിസ്ഥിതി വേരിയബിളുകൾ നിർവ്വഹണത്തെ ബാധിക്കും Lex:

ലാംഗ് സജ്ജീകരിക്കാത്ത അല്ലെങ്കിൽ അന്തർദേശീയവൽക്കരണ വേരിയബിളുകൾക്ക് സ്ഥിരസ്ഥിതി മൂല്യം നൽകുക
ശൂന്യം. (POSIX.1-2008-ന്റെ അടിസ്ഥാന നിർവചനങ്ങളുടെ അളവ് കാണുക, വിഭാഗം 8.2,
അന്തർദേശീയവൽക്കരണം വേരിയബിളുകൾ അന്താരാഷ്ട്രവൽക്കരണത്തിന്റെ മുൻഗണനയ്ക്കായി
പ്രാദേശിക വിഭാഗങ്ങളുടെ മൂല്യങ്ങൾ നിർണ്ണയിക്കാൻ ഉപയോഗിക്കുന്ന വേരിയബിളുകൾ.)

LC_ALL ശൂന്യമല്ലാത്ത സ്‌ട്രിംഗ് മൂല്യത്തിലേക്ക് സജ്ജീകരിച്ചാൽ, മറ്റെല്ലാ മൂല്യങ്ങളുടെയും മൂല്യങ്ങൾ അസാധുവാക്കുക
അന്താരാഷ്ട്രവൽക്കരണ വേരിയബിളുകൾ.

LC_COLLATE
ശ്രേണികൾ, തുല്യതാ ക്ലാസുകൾ, മൾട്ടി-കളുടെ സ്വഭാവം എന്നിവയ്ക്കുള്ള ലൊക്കേൽ നിർണ്ണയിക്കുക
പതിവ് എക്‌സ്‌പ്രഷനുകൾക്കുള്ളിലെ ക്യാരക്ടർ കോൾട്ടിംഗ് ഘടകങ്ങൾ. ഈ വേരിയബിൾ ഇല്ലെങ്കിൽ
POSIX ലൊക്കേലിലേക്ക് സജ്ജമാക്കി, ഫലങ്ങൾ വ്യക്തമാക്കിയിട്ടില്ല.

LC_CTYPE ടെക്സ്റ്റ് ഡാറ്റയുടെ ബൈറ്റുകളുടെ സീക്വൻസുകളുടെ വ്യാഖ്യാനത്തിനുള്ള ലൊക്കേൽ നിർണ്ണയിക്കുക
പ്രതീകങ്ങളായി (ഉദാഹരണത്തിന്, മൾട്ടി-ബൈറ്റ് പ്രതീകങ്ങൾക്ക് വിരുദ്ധമായി സിംഗിൾ-ബൈറ്റ്
ആർഗ്യുമെന്റുകളും ഇൻപുട്ട് ഫയലുകളും), കൂടാതെ പതിവ് ഉള്ളിലെ പ്രതീക ക്ലാസുകളുടെ പെരുമാറ്റം
ഭാവങ്ങൾ. ഈ വേരിയബിൾ POSIX ലൊക്കേലിലേക്ക് സജ്ജീകരിച്ചിട്ടില്ലെങ്കിൽ, ഫലങ്ങൾ ഇതാണ്
വ്യക്തമാക്കിയിട്ടില്ല.

LC_MESSAGES
ഫോർമാറ്റിനെയും ഉള്ളടക്കത്തെയും ബാധിക്കാൻ ഉപയോഗിക്കേണ്ട ലൊക്കേൽ നിർണ്ണയിക്കുക
സാധാരണ പിശകിലേക്ക് എഴുതിയ ഡയഗ്നോസ്റ്റിക് സന്ദേശങ്ങൾ.

NLSPATH പ്രോസസ്സിംഗിനായി സന്ദേശ കാറ്റലോഗുകളുടെ സ്ഥാനം നിർണ്ണയിക്കുക LC_MESSAGES.

അസിൻക്രണസ് പരിപാടികൾ


സ്ഥിരസ്ഥിതി.

STDOUT


എങ്കില് −t ഓപ്ഷൻ വ്യക്തമാക്കിയിട്ടുണ്ട്, സി സോഴ്സ് കോഡിന്റെ ടെക്സ്റ്റ് ഫയൽ ഔട്ട്പുട്ട് Lex ആകും
സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ടിൽ എഴുതിയിരിക്കുന്നു.

എങ്കില് −t ഓപ്ഷൻ വ്യക്തമാക്കിയിട്ടില്ല:

* നടപ്പിലാക്കൽ-നിർവചിക്കപ്പെട്ട വിവരങ്ങൾ, പിശക്, മുന്നറിയിപ്പ് സന്ദേശങ്ങൾ
ഉള്ളടക്കം Lex സോഴ്സ് കോഡ് ഇൻപുട്ട് സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ടിലേക്കോ അല്ലെങ്കിൽ
സാധാരണ പിശക്.

* എങ്കിൽ -വി ഓപ്ഷൻ വ്യക്തമാക്കിയിട്ടുണ്ട് −n ഓപ്ഷൻ വ്യക്തമാക്കിയിട്ടില്ല, Lex സ്ഥിതിവിവരക്കണക്കുകൾ ചെയ്യും
ഒരു നടപ്പാക്കലിൽ സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ടിലേക്കോ സ്റ്റാൻഡേർഡ് പിശകിലേക്കോ എഴുതണം-
നിർവചിക്കപ്പെട്ട ഫോർമാറ്റ്. പട്ടികയുടെ വലുപ്പങ്ങൾ വ്യക്തമാക്കിയിട്ടുണ്ടെങ്കിൽ ഈ സ്ഥിതിവിവരക്കണക്കുകളും സൃഷ്ടിക്കപ്പെട്ടേക്കാം
ഒരു കൂടെ '%' ൽ ഓപ്പറേറ്റർ നിർവചനങ്ങൾ വിഭാഗം, ഉള്ളിടത്തോളം −n ഓപ്ഷൻ അല്ല
വ്യക്തമാക്കിയ.

എസ്.ടി.ഡി.ആർ.ആർ


എങ്കില് −t ഓപ്ഷൻ വ്യക്തമാക്കിയിരിക്കുന്നു, നടപ്പിലാക്കൽ-നിർവചിച്ചിരിക്കുന്ന വിവരങ്ങൾ, പിശക്, മുന്നറിയിപ്പ്
ഉള്ളടക്കം സംബന്ധിച്ച സന്ദേശങ്ങൾ Lex സോഴ്സ് കോഡ് ഇൻപുട്ട് സ്റ്റാൻഡേർഡിലേക്ക് എഴുതപ്പെടും
പിശക്.

എങ്കില് −t ഓപ്ഷൻ വ്യക്തമാക്കിയിട്ടില്ല:

1. നടപ്പിലാക്കൽ-നിർവചിക്കപ്പെട്ട വിവരങ്ങൾ, പിശക്, മുന്നറിയിപ്പ് സന്ദേശങ്ങൾ
ഉള്ളടക്കം Lex സോഴ്സ് കോഡ് ഇൻപുട്ട് സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ടിലേക്കോ അല്ലെങ്കിൽ
സാധാരണ പിശക്.

2. എങ്കിൽ -വി ഓപ്ഷൻ വ്യക്തമാക്കിയിട്ടുണ്ട് −n ഓപ്ഷൻ വ്യക്തമാക്കിയിട്ടില്ല, Lex സ്ഥിതിവിവരക്കണക്കുകൾ ചെയ്യും
ഒരു നടപ്പാക്കലിൽ സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ടിലേക്കോ സ്റ്റാൻഡേർഡ് പിശകിലേക്കോ എഴുതണം-
നിർവചിക്കപ്പെട്ട ഫോർമാറ്റ്. പട്ടികയുടെ വലുപ്പങ്ങൾ വ്യക്തമാക്കിയിട്ടുണ്ടെങ്കിൽ ഈ സ്ഥിതിവിവരക്കണക്കുകളും സൃഷ്ടിക്കപ്പെട്ടേക്കാം
ഒരു കൂടെ '%' ൽ ഓപ്പറേറ്റർ നിർവചനങ്ങൾ വിഭാഗം, ഉള്ളിടത്തോളം −n ഓപ്ഷൻ അല്ല
വ്യക്തമാക്കിയ.

ഔട്ട്പ് ഫയലുകൾ


സി സോഴ്സ് കോഡ് അടങ്ങിയ ഒരു ടെക്സ്റ്റ് ഫയൽ എഴുതപ്പെടും lex.yy.c, അല്ലെങ്കിൽ നിലവാരത്തിലേക്ക്
എങ്കിൽ ഔട്ട്പുട്ട് −t ഓപ്ഷൻ നിലവിലുണ്ട്.

വിപുലീകരിച്ചു വിവരണം


ഓരോ ഇൻപുട്ട് ഫയലിലും അടങ്ങിയിരിക്കണം Lex സോഴ്സ് കോഡ്, ഇത് സാധാരണ എക്സ്പ്രഷനുകളുടെ പട്ടികയാണ്
സി പ്രോഗ്രാം ശകലങ്ങളുടെ രൂപത്തിൽ അനുബന്ധ പ്രവർത്തനങ്ങൾക്കൊപ്പം.

എപ്പോൾ lex.yy.c എന്നതുമായി സമാഹരിക്കുകയും ലിങ്ക് ചെയ്യുകയും ചെയ്യുന്നു Lex ലൈബ്രറി (ഉപയോഗിക്കുന്നത് −l l കൂടെ പ്രവർത്തനം
C99), തത്ഫലമായുണ്ടാകുന്ന പ്രോഗ്രാം സ്റ്റാൻഡേർഡ് ഇൻപുട്ടിൽ നിന്ന് പ്രതീക ഇൻപുട്ട് വായിക്കുകയും ചെയ്യും
നൽകിയിരിക്കുന്ന പദപ്രയോഗങ്ങളുമായി പൊരുത്തപ്പെടുന്ന സ്ട്രിംഗുകളായി അതിനെ വിഭജിക്കുക.

ഒരു പദപ്രയോഗം പൊരുത്തപ്പെടുത്തുമ്പോൾ, ഈ പ്രവർത്തനങ്ങൾ സംഭവിക്കും:

* പൊരുത്തപ്പെടുന്ന ഇൻപുട്ട് സ്ട്രിംഗ് അവശേഷിക്കുന്നു yytext നൾ-ടെർമിനേറ്റഡ് സ്ട്രിംഗ് ആയി;
yytext ഒന്നുകിൽ ഒരു ബാഹ്യ പ്രതീക ശ്രേണി അല്ലെങ്കിൽ ഒരു പ്രതീക സ്ട്രിംഗിലേക്കുള്ള പോയിന്റർ ആയിരിക്കും.
വിശദീകരിച്ചു നിർവചനങ്ങൾ in Lex, ഉപയോഗിച്ച് തരം വ്യക്തമായി തിരഞ്ഞെടുക്കാം
%അറേ or % പോയിന്റർ പ്രഖ്യാപനങ്ങൾ, എന്നാൽ ഡിഫോൾട്ട് നടപ്പിലാക്കൽ-നിർവചിക്കപ്പെട്ടതാണ്.

* ബാഹ്യ int yyleng പൊരുത്തപ്പെടുന്ന സ്ട്രിംഗിന്റെ നീളം വരെ സജ്ജീകരിക്കും.

* എക്സ്പ്രഷന്റെ അനുബന്ധ പ്രോഗ്രാം ശകലം, അല്ലെങ്കിൽ പ്രവർത്തനം, എക്സിക്യൂട്ട് ചെയ്യപ്പെടും.

പാറ്റേൺ പൊരുത്തപ്പെടുത്തൽ സമയത്ത്, Lex ഏറ്റവും ദൈർഘ്യമേറിയ സിംഗിൾ പാറ്റേണുകൾക്കായി തിരയണം
സാധ്യമായ പൊരുത്തം. ഒരേ എണ്ണം പ്രതീകങ്ങളുമായി പൊരുത്തപ്പെടുന്ന നിയമങ്ങളിൽ, ആദ്യം നൽകിയിരിക്കുന്ന നിയമം
തിരഞ്ഞെടുക്കപ്പെടും.

യുടെ പൊതുവായ ഫോർമാറ്റ് Lex ഉറവിടം ഇതായിരിക്കും:

നിർവചനങ്ങൾ %% നിയമങ്ങൾ %% ഉപയോക്താവ്സബ്റൂട്ടീനുകൾ

ആദ്യത്തേത് "%%" നിയമങ്ങളുടെ തുടക്കം കുറിക്കാൻ ആവശ്യമാണ് (പതിവ് പദപ്രയോഗങ്ങളും
പ്രവർത്തനങ്ങൾ); രണ്ടാമത്തെ "%%" ഉപയോക്തൃ സബ്റൂട്ടീനുകൾ പിന്തുടരുകയാണെങ്കിൽ മാത്രമേ ഇത് ആവശ്യമുള്ളൂ.

ഇതിലെ ഏതെങ്കിലും വരി നിർവചനങ്ങൾ എയിൽ തുടങ്ങുന്ന വിഭാഗം ഒരു സി ആയി കണക്കാക്കും
പ്രോഗ്രാം ശകലം, അതിന്റെ ബാഹ്യ നിർവചന മേഖലയിലേക്ക് പകർത്തപ്പെടും lex.yy.c ഫയൽ.
അതുപോലെ, ഇതിലെ എന്തും നിർവചനങ്ങൾ ഉൾപ്പെടുന്ന ഡിലിമിറ്റർ ലൈനുകൾക്കിടയിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന ഭാഗം
മാത്രം "%{" ഒപ്പം "%}" യുടെ ബാഹ്യ നിർവചന മേഖലയിലേക്ക് മാറ്റമില്ലാതെ പകർത്തുകയും ചെയ്യും
lex.yy.c ഫയൽ.

അത്തരത്തിലുള്ള ഏതെങ്കിലും ഇൻപുട്ട് (ഒരു മുതൽ ആരംഭിക്കുന്നു അല്ലെങ്കിൽ ഉള്ളിൽ "%{" ഒപ്പം "%}" ഡിലിമിറ്റർ ലൈനുകൾ)
യുടെ തുടക്കത്തിൽ പ്രത്യക്ഷപ്പെടുന്നു നിയമങ്ങൾ ഏതെങ്കിലും നിയമങ്ങൾ വ്യക്തമാക്കുന്നതിന് മുമ്പുള്ള സെക്ഷൻ ആയിരിക്കും
എഴുതിയത് lex.yy.c എന്നതിനായുള്ള വേരിയബിളുകളുടെ പ്രഖ്യാപനങ്ങൾക്ക് ശേഷം yylex() പ്രവർത്തനം ഒപ്പം
ഇൻ കോഡിന്റെ ആദ്യ വരിക്ക് മുമ്പ് yylex(). അങ്ങനെ, ഉപയോക്തൃ വേരിയബിളുകൾ ലോക്കൽ ടു yylex() ആകാം
ഇവിടെ പ്രഖ്യാപിച്ചിരിക്കുന്നു, കൂടാതെ എൻട്രി ചെയ്യുമ്പോൾ എക്സിക്യൂട്ട് ചെയ്യാനുള്ള ആപ്ലിക്കേഷൻ കോഡും yylex().

എടുത്ത നടപടി Lex a യിൽ തുടങ്ങുന്ന ഏതെങ്കിലും ഇൻപുട്ട് നേരിടുമ്പോൾ അല്ലെങ്കിൽ ഉള്ളിൽ
"%{" ഒപ്പം "%}" ഡിലിമിറ്റർ ലൈനുകൾ ദൃശ്യമാകുന്നു നിയമങ്ങൾ വിഭാഗം എന്നാൽ ഒന്നോ അതിലധികമോ ശേഷം വരുന്നു
നിയമങ്ങൾ നിർവചിക്കപ്പെട്ടിട്ടില്ല. അത്തരം ഇൻപുട്ടിന്റെ സാന്നിധ്യം തെറ്റായ നിർവചനത്തിന് കാരണമായേക്കാം
The yylex() പ്രവർത്തനം.

ഇൻപുട്ടിലെ സി-ലാംഗ്വേജ് കോഡിൽ സി-ലാംഗ്വേജ് ട്രൈഗ്രാഫുകൾ അടങ്ങിയിരിക്കരുത്. സി-ഭാഷാ കോഡ്
ഉള്ളിൽ "%{" ഒപ്പം "%}" ഡിലിമിറ്റർ ലൈനുകളിൽ മാത്രം ഉൾപ്പെടുന്ന ഒരു വരിയും അടങ്ങിയിരിക്കരുത് "%}",
അല്ലെങ്കിൽ മാത്രം "%%".

നിർവചനങ്ങൾ in Lex
നിർവചനങ്ങൾ ആദ്യത്തേതിന് മുമ്പ് പ്രത്യക്ഷപ്പെടുക "%%" ഡിലിമിറ്റർ. ഈ വിഭാഗത്തിലെ ഒരു വരിയും അടങ്ങിയിട്ടില്ല
തമ്മിലുള്ള "%{" ഒപ്പം "%}" വരികൾ, a യിൽ ആരംഭിക്കുന്നില്ല a നിർവചിക്കുമെന്ന് കരുതും
Lex സബ്സ്റ്റിറ്റ്യൂഷൻ സ്ട്രിംഗ്. ഈ വരികളുടെ ഫോർമാറ്റ് ഇതായിരിക്കും:

പേര് പകരം

അത് അങ്ങിനെയെങ്കിൽ പേര് ISO C സ്റ്റാൻഡേർഡിലെ ഐഡന്റിഫയറുകളുടെ ആവശ്യകതകൾ പാലിക്കുന്നില്ല, ഫലം
നിർവചിക്കപ്പെട്ടിട്ടില്ല. ചരട് പകരം സ്ട്രിംഗ് മാറ്റിസ്ഥാപിക്കും {പേര്} ഇത് എയിൽ ഉപയോഗിക്കുമ്പോൾ
ഭരണം. ദി പേര് ബ്രേസുകൾ ഉള്ളപ്പോൾ മാത്രമേ ഈ സന്ദർഭത്തിൽ സ്ട്രിംഗ് തിരിച്ചറിയൂ
ഒരു ബ്രാക്കറ്റ് എക്‌സ്‌പ്രഷനിലോ ഇരട്ട ഉദ്ധരണികളിലോ അത് ദൃശ്യമാകാത്തപ്പോൾ നൽകിയിരിക്കുന്നു.

നിർവചനങ്ങൾ വിഭാഗം, a യിൽ തുടങ്ങുന്ന ഏതെങ്കിലും വരി ('%') സ്വഭാവവും
ഒന്നുകിൽ ആരംഭിക്കുന്ന ഒരു ആൽഫാന്യൂമെറിക് വാക്ക് പിന്നാലെ 's' or 'എസ്' ഒരു കൂട്ടം നിർവ്വചിക്കും
ആരംഭ വ്യവസ്ഥകൾ. എയിൽ തുടങ്ങുന്ന ഏത് വരിയും '%' ഒന്നിൽ തുടങ്ങുന്ന ഒരു വാക്ക് പിന്നാലെ
'x' or 'എക്സ്' എക്സ്ക്ലൂസീവ് ആരംഭ വ്യവസ്ഥകളുടെ ഒരു കൂട്ടം നിർവ്വചിക്കും. സൃഷ്ടിച്ച സ്കാനർ ആയിരിക്കുമ്പോൾ
%s സംസ്ഥാനം, വ്യക്തമാക്കിയ സംസ്ഥാനങ്ങളില്ലാത്ത പാറ്റേണുകളും സജീവമായിരിക്കും; ഒരു %x സംസ്ഥാനം, അത്തരം
പാറ്റേണുകൾ സജീവമായിരിക്കില്ല. ആദ്യ വാക്കിന് ശേഷം വരിയുടെ ബാക്കി ഭാഗം ആയിരിക്കും
ഒന്നോ അതിലധികമോ ആയി കണക്കാക്കുന്നു -ആരംഭ വ്യവസ്ഥകളുടെ വേർതിരിച്ച പേരുകൾ. അവസ്ഥ ആരംഭിക്കുക
പേരുകൾ നിർവചന നാമങ്ങൾ പോലെ തന്നെ നിർമ്മിക്കപ്പെടും. ആരംഭ വ്യവസ്ഥകൾ ആകാം
വിവരിച്ചിരിക്കുന്നതുപോലെ ഒന്നോ അതിലധികമോ അവസ്ഥകളിലേക്ക് റെഗുലർ എക്സ്പ്രഷനുകളുടെ പൊരുത്തം നിയന്ത്രിക്കാൻ ഉപയോഗിക്കുന്നു
പതിവ് ഭാവങ്ങൾ in Lex.

നടപ്പിലാക്കലുകൾ ഇനിപ്പറയുന്ന രണ്ട് പരസ്പര വിരുദ്ധമായ പ്രഖ്യാപനങ്ങളിൽ ഏതെങ്കിലും ഒന്ന് സ്വീകരിക്കും
ലെ നിർവചനങ്ങൾ വിഭാഗം:

%അറേ തരം പ്രഖ്യാപിക്കുക yytext നൾ-ടെർമിനേറ്റഡ് ക്യാരക്ടർ അറേ ആയിരിക്കും.

% പോയിന്റർ തരം പ്രഖ്യാപിക്കുക yytext ഒരു അസാധുവായ പ്രതീകത്തിലേക്കുള്ള ഒരു പോയിന്റർ ആകാൻ
സ്ട്രിംഗ്.

സ്ഥിരസ്ഥിതി തരം yytext നടപ്പിലാക്കൽ-നിർവചിക്കപ്പെട്ടതാണ്. ഒരു ആപ്ലിക്കേഷൻ പരാമർശിക്കുകയാണെങ്കിൽ yytext
സ്കാനർ സോഴ്സ് ഫയലിന് പുറത്ത് (അതായത്, ഒരു വഴി ബാഹ്യ), അപേക്ഷയിൽ ഉൾപ്പെടും
അനുയോജ്യമായ %അറേ or % പോയിന്റർ സ്കാനർ സോഴ്സ് ഫയലിലെ പ്രഖ്യാപനം.

നടപ്പാക്കലുകൾ പ്രഖ്യാപനങ്ങൾ സ്വീകരിക്കും നിർവചനങ്ങൾ ചിലത് ക്രമീകരിക്കുന്നതിനുള്ള വിഭാഗം
ആന്തരിക പട്ടിക വലുപ്പങ്ങൾ. പ്രഖ്യാപനങ്ങൾ ഇനിപ്പറയുന്ന പട്ടികയിൽ കാണിച്ചിരിക്കുന്നു.

മേശ: മേശ വലുപ്പം പ്രഖ്യാപനങ്ങൾ in Lex

┌────────────┬──────────────────────────────────── ┬───────────────┐
പ്രഖ്യാപനംവിവരണംഏറ്റവും കുറഞ്ഞ വില
├────────────┼──────────────────────────────────── ┼───────────────┤
│%p n │ സ്ഥാനങ്ങളുടെ എണ്ണം │ 2500 │
│%n n │ സംസ്ഥാനങ്ങളുടെ എണ്ണം │ 500 │
│%a n │ സംക്രമണങ്ങളുടെ എണ്ണം │ 2000 │
│%e n │ പാർസ് ട്രീ നോഡുകളുടെ എണ്ണം │ 1000 │
│%k n │ പാക്ക് ചെയ്ത പ്രതീക ക്ലാസുകളുടെ എണ്ണം │ 1000 │
│%o n │ ഔട്ട്പുട്ട് അറേയുടെ വലിപ്പം │ 3000 │
└────────────┴──────────────────────────────────── ┴───────────────┘
മേശയിൽ, n ഒന്നോ അതിലധികമോ മുമ്പുള്ള ഒരു പോസിറ്റീവ് ദശാംശ പൂർണ്ണസംഖ്യയെ പ്രതിനിധീകരിക്കുന്നു
കഥാപാത്രങ്ങൾ. ഈ ടേബിൾ സൈസ് നമ്പറുകളുടെ കൃത്യമായ അർത്ഥം നടപ്പിലാക്കൽ-നിർവചിക്കപ്പെട്ടതാണ്. ദി
നടപ്പാക്കൽ ഈ സംഖ്യകൾ എങ്ങനെ ബാധിക്കുന്നു എന്ന് രേഖപ്പെടുത്തും Lex പ്രയോജനവും അവ എങ്ങനെയുമുണ്ട്
പരിമിതികളായിരിക്കണം നടപ്പാക്കൽ വഴി ജനറേറ്റുചെയ്യുന്ന ഏതെങ്കിലും ഔട്ട്‌പുട്ടുമായി ബന്ധപ്പെട്ടത്
യുടെ നിർവ്വഹണ വേളയിൽ നേരിട്ടു Lex. ഇതിൽ നിന്ന് നിർണ്ണയിക്കാൻ സാധിക്കും
ടേബിൾ സൈസ് മൂല്യങ്ങളിൽ ഏതൊക്കെയാണ് അനുവദനീയമാക്കാൻ മാറ്റം വരുത്തേണ്ടതെന്ന് ഔട്ട്പുട്ട് ചെയ്യുക Lex വിജയകരമായി
ഇൻപുട്ട് ഭാഷയ്ക്കായി പട്ടികകൾ സൃഷ്ടിക്കുക. കുറഞ്ഞ മൂല്യം എന്ന കോളത്തിലെ മൂല്യങ്ങൾ പ്രതിനിധീകരിക്കുന്നു
നടപ്പിലാക്കലുകൾക്ക് അനുയോജ്യമായ ഏറ്റവും കുറഞ്ഞ മൂല്യങ്ങൾ നൽകണം.

നിയമങ്ങൾ in Lex
ലെ നിയമങ്ങൾ Lex സോഴ്സ് ഫയലുകൾ എന്നത് ഇടത് കോളത്തിൽ റെഗുലർ അടങ്ങുന്ന ഒരു പട്ടികയാണ്
എക്‌സ്‌പ്രഷനുകളിലും വലത് കോളത്തിലും എക്‌സിക്യൂട്ട് ചെയ്യേണ്ട പ്രവർത്തനങ്ങൾ (സി പ്രോഗ്രാം ശകലങ്ങൾ) അടങ്ങിയിരിക്കുന്നു
ഭാവങ്ങൾ തിരിച്ചറിയുമ്പോൾ.

സമയം നടപടി
സമയം നടപടി
...

ഒരു വരിയുടെ വിപുലീകൃത റെഗുലർ എക്‌സ്‌പ്രഷൻ (ERE) ഭാഗം വേർതിരിക്കേണ്ടതാണ് നടപടി by
ഒന്നോ അതിലധികമോ കഥാപാത്രങ്ങൾ. അടങ്ങുന്ന ഒരു സാധാരണ പദപ്രയോഗം കഥാപാത്രങ്ങൾ ചെയ്യണം
ഇനിപ്പറയുന്ന വ്യവസ്ഥകളിൽ ഒന്നിന് കീഴിൽ തിരിച്ചറിയുക:

* മുഴുവൻ പദപ്രയോഗവും ഇരട്ട ഉദ്ധരണികൾക്കുള്ളിൽ ദൃശ്യമാകുന്നു.

* ദി ഇരട്ട ഉദ്ധരണികൾ അല്ലെങ്കിൽ ചതുര ബ്രാക്കറ്റുകൾക്കുള്ളിൽ പ്രതീകങ്ങൾ ദൃശ്യമാകും.

* ഓരോന്നും a എന്നതിന് മുൻപുള്ളതാണ് സ്വഭാവം.

ഉപയോക്താവ് സബ്റൂട്ടീനുകൾ in Lex
ഉപയോക്തൃ സബ്റൂട്ടീനുകൾ വിഭാഗത്തിലെ എന്തും പകർത്തപ്പെടും lex.yy.c പിന്തുടരുന്ന yylex().

പതിവ് ഭാവങ്ങൾ in Lex
ദി Lex വിപുലീകൃത റെഗുലർ എക്‌സ്‌പ്രെഷനുകളുടെ കൂട്ടത്തെ യൂട്ടിലിറ്റി പിന്തുണയ്ക്കും (അടിസ്ഥാനം കാണുക
POSIX.1-2008-ന്റെ നിർവചനങ്ങളുടെ അളവ്, വിഭാഗം 9.4, വിപുലീകരിച്ച പതിവ് ഭാവങ്ങൾ), ഉപയോഗിച്ച്
വാക്യഘടനയിൽ ഇനിപ്പറയുന്ന കൂട്ടിച്ചേർക്കലുകളും ഒഴിവാക്കലുകളും:

"..." ഇരട്ട ഉദ്ധരണികളിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന ഏതൊരു സ്ട്രിംഗും അതിനുള്ളിലെ പ്രതീകങ്ങളെ പ്രതിനിധീകരിക്കും
അതൊഴിച്ചാൽ തങ്ങളെപ്പോലെ ഇരട്ട ഉദ്ധരണികൾ -രക്ഷപെടുന്നു (ഇതിൽ ദൃശ്യമാകുന്നു
ഇനിപ്പറയുന്ന പട്ടിക) അംഗീകരിക്കപ്പെടും. ഏതെങ്കിലും -എസ്കേപ്പ് സീക്വൻസ് ചെയ്യണം
ക്ലോസിംഗ് ഉദ്ധരണി ഉപയോഗിച്ച് അവസാനിപ്പിക്കും. ഉദാഹരണത്തിന്, "\01""1" ഒരൊറ്റയെ പ്രതിനിധീകരിക്കുന്നു
സ്ട്രിംഗ്: ഒക്ടൽ മൂല്യം 1 തുടർന്ന് പ്രതീകം "1".

<സംസ്ഥാനം>r,സംസ്ഥാനം1,സംസ്ഥാനം2,...>r
പതിവ് ആവിഷ്കാരം r പ്രോഗ്രാം ഒന്നിൽ ആയിരിക്കുമ്പോൾ മാത്രമേ പൊരുത്തപ്പെടുത്തുകയുള്ളൂ
ആരംഭ വ്യവസ്ഥകൾ സൂചിപ്പിച്ചിരിക്കുന്നു സംസ്ഥാനം, സംസ്ഥാനം1, ഇത്യാദി; കാണുക പ്രവർത്തനങ്ങൾ in Lex. (അതുപോലെ
ഈ വോള്യത്തിന്റെ ബാക്കി ഭാഗങ്ങളുടെ ടൈപ്പോഗ്രാഫിക്കൽ കൺവെൻഷനുകൾക്ക് ഒരു അപവാദം
POSIX.1-2008, ഈ സാഹചര്യത്തിൽസംസ്ഥാനം> ഒരു മെറ്റാവേരിയബിളിനെ പ്രതിനിധീകരിക്കുന്നില്ല, പക്ഷേ
ഒരു ചിഹ്നത്തെ ചുറ്റിപ്പറ്റിയുള്ള ലിറ്ററൽ ആംഗിൾ-ബ്രാക്കറ്റ് പ്രതീകങ്ങൾ.) ആരംഭ അവസ്ഥ
ഒരു റെഗുലർ എക്‌സ്‌പ്രെഷന്റെ തുടക്കത്തിൽ മാത്രമേ അങ്ങനെ തിരിച്ചറിയൂ.

r/x പതിവ് ആവിഷ്കാരം r എന്നതിന് ശേഷം മാത്രമേ പൊരുത്തപ്പെടൂ
പതിവ് ആവിഷ്കാരത്തിന്റെ സംഭവം x (x പിന്നിലുള്ള സന്ദർഭത്തിന്റെ ഉദാഹരണമാണ്,
താഴെ കൂടുതൽ നിർവചിച്ചിരിക്കുന്നു). ടോക്കൺ തിരികെ ലഭിച്ചു yytext മാത്രം പൊരുത്തപ്പെടും r. ആണെങ്കിൽ
പുറകിലുള്ള ഭാഗം r തുടക്കവുമായി പൊരുത്തപ്പെടുന്നു x, ഫലം വ്യക്തമാക്കിയിട്ടില്ല. ദി
r എക്സ്പ്രഷനിൽ കൂടുതൽ പിന്നിലുള്ള സന്ദർഭം ഉൾപ്പെടുത്താൻ കഴിയില്ല '$' (മത്സരത്തിന്റെ അവസാനം-
ലൈൻ) ഓപ്പറേറ്റർ; x ഉൾപ്പെടുത്താൻ കഴിയില്ല '^' (മാച്ച്-ബിഗിനിംഗ്-ഓഫ്-ലൈൻ) ഓപ്പറേറ്റർ, അല്ലെങ്കിൽ
പിന്നിലുള്ള സന്ദർഭം, അല്ലെങ്കിൽ '$' ഓപ്പറേറ്റർ. അതായത്, ട്രെയിലിംഗിന്റെ ഒരു സംഭവം മാത്രം
സന്ദർഭം അനുവദനീയമാണ് a Lex റെഗുലർ എക്സ്പ്രഷൻ, കൂടാതെ '^' ഓപ്പറേറ്റർക്ക് മാത്രമേ കഴിയൂ
അത്തരമൊരു പദപ്രയോഗത്തിന്റെ തുടക്കത്തിൽ ഉപയോഗിച്ചു.

{പേര്} എപ്പോൾ പേര് എന്നതിൽ നിന്നുള്ള പകരക്കാരന്റെ ചിഹ്നങ്ങളിൽ ഒന്നാണ് നിർവചനങ്ങൾ വിഭാഗം, ദി
ഇൻക്ലോസിംഗ് ബ്രേസുകൾ ഉൾപ്പെടെയുള്ള സ്ട്രിംഗ് മാറ്റിസ്ഥാപിക്കും പകരം
മൂല്യം. ദി പകരം വിപുലീകൃത റെഗുലർ എക്‌സ്‌പ്രഷനിൽ മൂല്യം പരിഗണിക്കും
അത് പരാൻതീസിസിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്നതുപോലെ. {പേര്}
ഒരു ബ്രാക്കറ്റ് എക്സ്പ്രഷനിലോ ഇരട്ട ഉദ്ധരണികളിലോ സംഭവിക്കുന്നു.

ഒരു ERE ഉള്ളിൽ, a ഒരു എസ്കേപ്പ് സീക്വൻസ് തുടങ്ങാൻ പ്രതീകം പരിഗണിക്കും
POSIX.1-2008-ന്റെ അടിസ്ഥാന നിർവ്വചന വോള്യത്തിലെ പട്ടികയിൽ വ്യക്തമാക്കിയിരിക്കുന്നു, അദ്ധ്യായം 5, ഫയല്
ഫോർമാറ്റ് നൊട്ടേഷനിലോ ('\\', '\a', '\b', '\f', '\n', '\r', '\t', '\v'). കൂടാതെ, രക്ഷപ്പെടൽ
ഇനിപ്പറയുന്ന പട്ടികയിലെ ക്രമങ്ങൾ തിരിച്ചറിയും.

ഒരു അക്ഷരാർത്ഥത്തിൽ ഒരു ERE ഉള്ളിൽ സംഭവിക്കാൻ കഴിയില്ല; രക്ഷപ്പെടൽ ക്രമം '\n' ഉപയോഗിക്കാം
എ പ്രതിനിധീകരിക്കുന്നു . എ ഒരു പിരീഡ് ഓപ്പറേറ്ററുമായി പൊരുത്തപ്പെടാൻ പാടില്ല.

മേശ: രക്ഷപ്പെടുക സീക്വൻസുകൾ in Lex

┌─────────┬──────────────────────────┬──────────── ──────────────┐
രക്ഷപ്പെടുക │ │ │
അനുക്രമംവിവരണംഅർത്ഥം
├─────────┼──────────────────────────┼──────────── ──────────────┤
│\അക്കങ്ങൾ │ എ കഥാപാത്രം │ ആരുടെ കഥാപാത്രം │
│ │ തുടർന്ന് ഏറ്റവും ദൈർഘ്യമേറിയ │ എൻകോഡിംഗിനെ പ്രതിനിധീകരിക്കുന്നു │
│ │ ഒന്ന്, രണ്ട്, അല്ലെങ്കിൽ │ ഒന്ന്, രണ്ട്, അല്ലെങ്കിൽ │ എന്നിവയുടെ ക്രമം
│ │ മൂന്ന് ഒക്ടൽ അക്കങ്ങൾ │ മൂന്ന് അക്ക ഒക്ടൽ │
│ │ പ്രതീകങ്ങൾ (01234567). │ പൂർണ്ണസംഖ്യ. മൾട്ടി-ബൈറ്റ് │
│ │ എല്ലാ അക്കങ്ങളും ആണെങ്കിൽ │ പ്രതീകങ്ങൾക്ക് │ ആവശ്യമാണ്
│ │ 0 (അതായത്, │ ഒന്നിലധികം, സംയോജിപ്പിച്ചത് │
ഇതിന്റെ │ എസ്കേപ്പ് സീക്വൻസുകളുടെ │ │ പ്രതിനിധാനം
│ │ NUL പ്രതീകം), │ തരം, │ ഉൾപ്പെടെ
│ │ പെരുമാറ്റം നിർവചിച്ചിട്ടില്ല. │ നയിക്കുന്നു വേണ്ടി │
│ │ │ ഓരോ ബൈറ്റും. │
├─────────┼──────────────────────────┼──────────── ──────────────┤
│\xഅക്കങ്ങൾ │ എ കഥാപാത്രം │ ആരുടെ കഥാപാത്രം │
│ │ തുടർന്ന് ഏറ്റവും ദൈർഘ്യമേറിയ │ എൻകോഡിംഗിനെ പ്രതിനിധീകരിക്കുന്നു │
│ │ ഹെക്സാഡെസിമലിന്റെ ക്രമം- │ ഹെക്സാഡെസിമൽ പ്രകാരം │
│ │ അക്ക പ്രതീകങ്ങൾ │ പൂർണ്ണസംഖ്യ. │
│ │ (01234567abcdefABCDEF). │ │
│ │ എല്ലാ അക്കങ്ങളും ആണെങ്കിൽ │ │
│ │ 0 (അതായത്, │ │
│ │ │ പ്രതിനിധാനം
│ │ NUL പ്രതീകം), │ │
│ │ പെരുമാറ്റം നിർവചിച്ചിട്ടില്ല. │ │
├─────────┼──────────────────────────┼──────────── ──────────────┤
│\c │ എ കഥാപാത്രം │ കഥാപാത്രം 'സി', │
│ │ ശേഷം ഏതെങ്കിലും │ മാറ്റമില്ല. │
│ │ പ്രതീകം വിവരിച്ചിട്ടില്ല │ │
│ │ ഈ പട്ടികയിൽ അല്ലെങ്കിൽ │ │
│ │ ബേസിലെ പട്ടിക │ │
│ │ നിർവചനങ്ങളുടെ അളവ് │ │
│ │ POSIX.1‐2008, അദ്ധ്യായം 5, │ │
│ │ ഫയല് ഫോർമാറ്റ് നൊട്ടേഷനിലോ │ │
│ │ ('\\', '\a', '\b', '\f', │ │
│ │ '\n', '\r', '\t', '\v'). │ │
└─────────┴──────────────────────────┴──────────── ──────────────┘
കുറിപ്പ്: അത് അങ്ങിനെയെങ്കിൽ '\x' ക്രമം ഉടനടി ഒരു ഹെക്സാഡെസിമൽ അക്കം നൽകേണ്ടതുണ്ട്
സ്വഭാവം, പോലുള്ള ഒരു ശ്രേണി "\x1""1" ഒരു പ്രതീകത്തെ പ്രതിനിധീകരിക്കുന്ന, ഉപയോഗിക്കാം
മൂല്യം 1 അടങ്ങിയിരിക്കുന്നു, തുടർന്ന് പ്രതീകം "1".

വിപുലീകൃത പതിവ് പദപ്രയോഗങ്ങൾക്ക് മുൻഗണനാക്രമം നൽകിയിരിക്കുന്നു Lex അതിൽ നിന്ന് വ്യത്യസ്തമാണ്
POSIX.1-2008-ന്റെ അടിസ്ഥാന നിർവ്വചന വോള്യത്തിൽ വ്യക്തമാക്കിയിട്ടുണ്ട്, വിഭാഗം 9.4, വിപുലീകരിച്ച പതിവ്
ഭാവങ്ങൾ. മുൻഗണന ക്രമം Lex ഇനിപ്പറയുന്ന പട്ടികയിൽ കാണിച്ചിരിക്കുന്നതുപോലെ ആയിരിക്കണം,
ഉയർന്നതിൽ നിന്ന് താഴ്ന്നതിലേക്ക്.

കുറിപ്പ്: രക്ഷപ്പെട്ട പ്രതീകങ്ങളുടെ പ്രവേശനം, ഇവർ ഓപ്പറേറ്റർമാരാണെന്ന് സൂചിപ്പിക്കാനല്ല, മറിച്ച്
സത്യവുമായുള്ള അവരുടെ ബന്ധങ്ങൾ കാണിക്കുന്നതിനാണ് അവ പട്ടികയിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്നത്
ഓപ്പറേറ്റർമാർ. ആരംഭ അവസ്ഥ, ട്രെയിലിംഗ് സന്ദർഭം, ആങ്കറിംഗ് നൊട്ടേഷനുകൾ എന്നിവയുണ്ട്
വിവരിച്ചിരിക്കുന്ന പ്ലേസ്‌മെന്റ് നിയന്ത്രണങ്ങൾ കാരണം പട്ടികയിൽ നിന്ന് ഒഴിവാക്കപ്പെട്ടു
ഈ വിഭാഗം; ഒരു ERE യുടെ തുടക്കത്തിലോ അവസാനത്തിലോ മാത്രമേ അവ ദൃശ്യമാകൂ.

മേശ: സമയം മുൻഗണന in Lex

┌──────────────────────────────────┬────────────── ────────┐
വിപുലീകരിച്ച പതിവ് ആശയംമുൻഗണന
├──────────────────────────────────┼────────────── ────────┤
സമാഹരണവുമായി ബന്ധപ്പെട്ട ബ്രാക്കറ്റ് ചിഹ്നങ്ങൾ │ [= =] [: :] [. .] │
രക്ഷപ്പെട്ടു പ്രതീകങ്ങൾ │ \പ്രത്യേക പ്രതീകം> │
ബ്രാക്കറ്റ് പദപ്രയോഗം │ [] │
ഉദ്ധരിക്കുന്നു │ "..." │
ഗ്രൂപ്പിംഗ് │ ( ) │
നിര്വചനം │ {പേര്} │
ഒറ്റ-കഥാപാത്രം RE പകര്പ്പ് │ * + ? │
ഒത്തുചേരൽ │ │
ഇടവേള പദപ്രയോഗം │ {m,n} │
ഇതരമാറ്റം │ | │
└──────────────────────────────────┴────────────── ────────┘
ERE ആങ്കറിംഗ് ഓപ്പറേറ്റർമാർ '^' ഒപ്പം '$' പട്ടികയിൽ ദൃശ്യമാകരുത്. കൂടെ Lex സ്ഥിരമായ
എക്സ്പ്രഷനുകൾ, ഈ ഓപ്പറേറ്റർമാർ അവയുടെ ഉപയോഗത്തിൽ പരിമിതപ്പെടുത്തിയിരിക്കുന്നു: '^' ഓപ്പറേറ്റർക്ക് മാത്രമേ കഴിയൂ
ഒരു മുഴുവൻ പതിവ് പദപ്രയോഗത്തിന്റെ തുടക്കത്തിൽ ഉപയോഗിച്ചു, കൂടാതെ '$' ഓപ്പറേറ്റർ മാത്രം
അവസാനിക്കുന്നു. മുഴുവൻ റെഗുലർ എക്‌സ്‌പ്രഷനിലേക്കും ഓപ്പറേറ്റർമാർ ബാധകമാണ്. അങ്ങനെ, ഉദാഹരണത്തിന്, പാറ്റേൺ
"(^abc)|(def$)" നിർവചിക്കപ്പെട്ടിട്ടില്ല; പകരം രണ്ട് വ്യത്യസ്ത നിയമങ്ങളായി എഴുതാം, ഒന്ന്
പതിവ് പദപ്രയോഗം "^abc" കൂടെ ഒന്ന് "def$", വഴി ഒരു പൊതു പ്രവർത്തനം പങ്കിടുന്നു
പ്രത്യേക '|' പ്രവർത്തനം (ചുവടെ കാണുക). പാറ്റേൺ എഴുതിയിരുന്നെങ്കിൽ "^abc|def$", അത് പൊരുത്തപ്പെടും
ഒന്നുകിൽ "abc" or "def" സ്വയം ഒരു വരിയിൽ.

പൊതു ERE നിയമങ്ങളിൽ നിന്ന് വ്യത്യസ്തമായി, ഉൾച്ചേർത്ത ആങ്കറിംഗ് മിക്ക ചരിത്രകാരന്മാരും അനുവദനീയമല്ല Lex
നടപ്പാക്കലുകൾ. ഉൾച്ചേർത്ത ആങ്കറിംഗിന്റെ ഒരു ഉദാഹരണം പോലുള്ള പാറ്റേണുകളായിരിക്കും
"(^| )foo( |$)" പൊരുത്തപ്പെടാൻ "foo" ഒരു പൂർണ്ണമായ പദമായി നിലനിൽക്കുമ്പോൾ. ഈ പ്രവർത്തനത്തിന് കഴിയും
നിലവിലുള്ളത് ഉപയോഗിച്ച് ലഭിക്കും Lex സവിശേഷതകൾ:

^foo/[ \n] |
" foo"/[ \n] /* കണ്ടെത്തി ഫൂ as a പ്രത്യേക വാക്ക്. */

അതും ശ്രദ്ധിക്കുക '$' പിന്നിലുള്ള സന്ദർഭത്തിന്റെ ഒരു രൂപമാണ് (ഇത് തുല്യമാണ് "/\n") അതുപോലെ
ഓപ്പറേറ്ററുടെ മറ്റൊരു ഉദാഹരണം അടങ്ങിയ പതിവ് എക്സ്പ്രഷനുകൾക്കൊപ്പം ഉപയോഗിക്കാൻ കഴിയില്ല (കാണുക
പിന്നിലുള്ള സന്ദർഭത്തെക്കുറിച്ചുള്ള മുൻ ചർച്ച).

അധിക റെഗുലർ എക്‌സ്‌പ്രെഷനുകൾ ട്രെയിലിംഗ്-സന്ദർഭ ഓപ്പറേറ്റർ '/' ഒരു ആയി ഉപയോഗിക്കാം
ഇരട്ട ഉദ്ധരണികൾക്കുള്ളിൽ അവതരിപ്പിച്ചാൽ സാധാരണ പ്രതീകം, "/"; മുമ്പായി എ ,
"\/"; അല്ലെങ്കിൽ ഒരു ബ്രാക്കറ്റ് എക്സ്പ്രഷനിൽ, "[/]". ആരംഭ-അവസ്ഥ '<' ഒപ്പം '>' ഓപ്പറേറ്റർമാർ
ഒരു റെഗുലർ എക്‌സ്‌പ്രെഷന്റെ തുടക്കത്തിൽ ഒരു ആരംഭ അവസ്ഥയിൽ മാത്രമേ പ്രത്യേകമായിരിക്കൂ;
പതിവ് പദപ്രയോഗത്തിൽ മറ്റെവിടെയെങ്കിലും അവ സാധാരണ കഥാപാത്രങ്ങളായി കണക്കാക്കും.

പ്രവർത്തനങ്ങൾ in Lex
ഒരു ERE പൊരുത്തപ്പെടുത്തുമ്പോൾ സ്വീകരിക്കേണ്ട നടപടി ഒരു C പ്രോഗ്രാം ശകലമോ പ്രത്യേകമോ ആകാം
ചുവടെ വിവരിച്ചിരിക്കുന്ന പ്രവർത്തനങ്ങൾ; പ്രോഗ്രാം ശകലത്തിൽ ഒന്നോ അതിലധികമോ C പ്രസ്താവനകൾ അടങ്ങിയിരിക്കാം, കൂടാതെ
പ്രത്യേക പ്രവർത്തനങ്ങളും ഉൾപ്പെടുത്താം. ശൂന്യമായ സി പ്രസ്താവന ';' സാധുവായ നടപടിയായിരിക്കും; ഏതെങ്കിലും
സ്ട്രിംഗ് lex.yy.c അത്തരമൊരു നിയമത്തിന്റെ പാറ്റേൺ ഭാഗവുമായി പൊരുത്തപ്പെടുന്ന ഇൻപുട്ട്
ഫലപ്രദമായി അവഗണിക്കുകയോ ഒഴിവാക്കുകയോ ചെയ്തു. എന്നിരുന്നാലും, ഒരു പ്രവർത്തനത്തിന്റെ അഭാവം സാധുതയുള്ളതല്ല, കൂടാതെ
നടപടി Lex അത്തരമൊരു അവസ്ഥയിൽ എടുക്കുന്നത് നിർവചിക്കപ്പെട്ടിട്ടില്ല.

C പ്രസ്താവനകളും പ്രത്യേക പ്രവർത്തനങ്ങളും ഉൾപ്പെടെ ഒരു പ്രവർത്തനത്തിനുള്ള സ്പെസിഫിക്കേഷൻ വിപുലീകരിക്കാം
ബ്രേസുകളിൽ ഘടിപ്പിച്ചിട്ടുണ്ടെങ്കിൽ നിരവധി വരികളിൽ:

സമയം <ഒന്ന് or കൂടുതൽ ശൂന്യമാണ്> { പ്രോഗ്രാം പ്രസ്താവന
പ്രോഗ്രാം പ്രസ്താവന }

പ്രോഗ്രാം പ്രസ്താവനകളിൽ അസന്തുലിതമായ ചുരുണ്ട ബ്രേസ് പ്രീപ്രോസസിംഗ് ടോക്കണുകൾ അടങ്ങിയിരിക്കരുത്.

a-ലേക്കുള്ള ഇൻപുട്ടിൽ ഒരു സ്ട്രിംഗ് ആയിരിക്കുമ്പോൾ ഡിഫോൾട്ട് പ്രവർത്തനം lex.yy.c പ്രോഗ്രാം ഒന്നുമായി പൊരുത്തപ്പെടുന്നില്ല
സ്ട്രിംഗ് ഔട്ട്പുട്ടിലേക്ക് പകർത്തുക എന്നതായിരിക്കും എക്സ്പ്രഷൻ. കാരണം a യുടെ ഡിഫോൾട്ട് സ്വഭാവം
പ്രോഗ്രാം സൃഷ്ടിച്ചത് Lex ഇൻപുട്ട് വായിച്ച് ഔട്ട്പുട്ടിലേക്ക് പകർത്തുക എന്നതാണ്, ഏറ്റവും കുറഞ്ഞത് Lex
ഉള്ള സോഴ്സ് പ്രോഗ്രാം "%%" ഇൻപുട്ട് ലളിതമായി പകർത്തുന്ന ഒരു സി പ്രോഗ്രാം സൃഷ്ടിക്കും
ഔട്ട്പുട്ടിലേക്ക് മാറ്റമില്ല.

നാല് പ്രത്യേക പ്രവർത്തനങ്ങൾ ലഭ്യമാണ്:

| ECHO; നിരസിക്കുക; ആരംഭിക്കുന്നു

| നടപടി '|' അതിനർത്ഥം അടുത്ത നിയമത്തിനായുള്ള പ്രവർത്തനം ഇതിനുള്ള പ്രവർത്തനമാണ്
ഭരണം. മറ്റ് മൂന്ന് പ്രവർത്തനങ്ങളിൽ നിന്ന് വ്യത്യസ്തമായി, '|' ബ്രേസുകളിൽ ഉൾപ്പെടുത്താനോ അല്ലെങ്കിൽ ആകാനോ കഴിയില്ല
- അവസാനിപ്പിച്ചു; അപേക്ഷ അത് മാത്രം വ്യക്തമാക്കിയിട്ടുണ്ടെന്ന് ഉറപ്പാക്കും,
മറ്റ് പ്രവർത്തനങ്ങളൊന്നുമില്ലാതെ.

ECHO; സ്ട്രിംഗിന്റെ ഉള്ളടക്കം എഴുതുക yytext ഔട്ട്പുട്ടിൽ.

നിരസിക്കുക; ഇൻപുട്ടിൽ നൽകിയിരിക്കുന്ന സ്ട്രിംഗുമായി സാധാരണയായി ഒരൊറ്റ എക്സ്പ്രഷൻ മാത്രമേ പൊരുത്തപ്പെടൂ.
നിരസിക്കുക അർത്ഥമാക്കുന്നത് ``നിലവിലെ ഇൻപുട്ടുമായി പൊരുത്തപ്പെടുന്ന അടുത്ത എക്സ്പ്രഷനിലേക്ക് തുടരുക'',
നിലവിലുള്ള റൂളിനു ശേഷം രണ്ടാമത്തെ ചോയ്‌സ് എന്തായിരുന്നോ അത് ആവാൻ ഇടയാക്കും
ഒരേ ഇൻപുട്ടിനായി നടപ്പിലാക്കി. അങ്ങനെ, ഒന്നിലധികം നിയമങ്ങൾ പൊരുത്തപ്പെടുത്താനും നടപ്പിലാക്കാനും കഴിയും
ഒരു ഇൻപുട്ട് സ്ട്രിംഗ് അല്ലെങ്കിൽ ഓവർലാപ്പിംഗ് ഇൻപുട്ട് സ്ട്രിംഗുകൾക്കായി. ഉദാഹരണത്തിന്, നൽകിയിരിക്കുന്നത്
പതിവ് പദപ്രയോഗങ്ങൾ "xyz" ഒപ്പം "xy" ഇൻപുട്ടും "xyz", സാധാരണയായി സാധാരണ മാത്രം
പദപ്രയോഗം "xyz" പൊരുത്തപ്പെടും. അതിന് ശേഷമായിരിക്കും അടുത്ത ശ്രമം തുടങ്ങുക z. If
ലെ അവസാന പ്രവർത്തനം "xyz" ഭരണമാണ് നിരസിക്കുക, ഈ നിയമവും "xy" ഭരണം
വധിക്കപ്പെടും. ദി നിരസിക്കുക അത്തരം ഒരു രീതിയിൽ പ്രവർത്തനം നടപ്പിലാക്കാം
നിയന്ത്രണത്തിന്റെ ഒഴുക്ക് അതിന് ശേഷം തുടരുന്നില്ല, അത് a എന്നതിന് തുല്യമാണ് ഇതിലേക്ക്
മറ്റൊരു ഭാഗത്തേക്ക് yylex(). ഉപയോഗം നിരസിക്കുക കുറച്ചുകൂടി വലുതായേക്കാം
വേഗത കുറഞ്ഞ സ്കാനറുകൾ.

ആരംഭിക്കുന്നു നടപടി:

ആരംഭിക്കുന്നു ന്യൂസ്‌റ്റേറ്റ്;

സംസ്ഥാനം (ആരംഭ അവസ്ഥ) എന്നതിലേക്ക് മാറുന്നു ന്യൂസ്‌റ്റേറ്റ്. ചരട് എങ്കിൽ ന്യൂസ്‌റ്റേറ്റ് ഉണ്ട്
ഒരു ആരംഭ വ്യവസ്ഥയായി മുമ്പ് പ്രഖ്യാപിച്ചിരുന്നില്ല നിർവചനങ്ങൾ വിഭാഗം,
ഫലങ്ങൾ വ്യക്തമാക്കിയിട്ടില്ല. പ്രാരംഭ അവസ്ഥ അക്കത്താൽ സൂചിപ്പിച്ചിരിക്കുന്നു "0" or
ടോക്കൺ ആരംഭം.

താഴെ വിവരിച്ചിരിക്കുന്ന ഫംഗ്‌ഷനുകൾ അല്ലെങ്കിൽ മാക്രോകൾ ഇതിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന ഉപയോക്തൃ കോഡിന് ആക്‌സസ് ചെയ്യാവുന്നതാണ് Lex
ഇൻപുട്ട്. യുടെ സി കോഡ് ഔട്ട്‌പുട്ടിൽ അവ ദൃശ്യമാകുമോ എന്ന് വ്യക്തമാക്കിയിട്ടില്ല Lex, അല്ലെങ്കിൽ
മുഖേന മാത്രമേ പ്രവേശനം സാധ്യമാകൂ −l l പ്രവർത്തനം C99 (ദി Lex പുസ്തകശാല).

int yylex(ശൂന്യം)
ഇൻപുട്ടിൽ ലെക്സിക്കൽ വിശകലനം നടത്തുന്നു; ഇത് സൃഷ്ടിച്ച പ്രാഥമിക പ്രവർത്തനമാണ്
The Lex യൂട്ടിലിറ്റി. ഇൻപുട്ടിന്റെ അവസാനം എത്തുമ്പോൾ ഫംഗ്‌ഷൻ പൂജ്യത്തിലേക്ക് മടങ്ങും;
അല്ലെങ്കിൽ, അത് പ്രവർത്തനങ്ങളാൽ നിർണ്ണയിക്കപ്പെട്ട പൂജ്യമല്ലാത്ത മൂല്യങ്ങൾ (ടോക്കണുകൾ) നൽകും
തിരഞ്ഞെടുത്തു.

int ഇനി(ശൂന്യം)
വിളിക്കുമ്പോൾ, അടുത്ത ഇൻപുട്ട് സ്ട്രിംഗ് തിരിച്ചറിയുമ്പോൾ, അത് ആയിരിക്കണമെന്ന് സൂചിപ്പിക്കുന്നു
ന്റെ നിലവിലെ മൂല്യത്തിലേക്ക് ചേർത്തു yytext പകരം പകരം; മൂല്യം
yyleng അതിനനുസരിച്ച് ക്രമീകരിക്കും.

int yyless(int n)
നിലനിർത്തുന്നു n പ്രാരംഭ പ്രതീകങ്ങൾ yytext, NUL- അവസാനിപ്പിച്ചു, ശേഷിക്കുന്നവയെ പരിഗണിക്കുന്നു
വായിച്ചിട്ടില്ലാത്ത പോലെയുള്ള കഥാപാത്രങ്ങൾ; മൂല്യം yyleng ക്രമീകരിക്കും
അതനുസരിച്ച്.

int ഇൻപുട്ട്(ശൂന്യം)
ഇൻപുട്ടിൽ നിന്ന് അടുത്ത പ്രതീകം നൽകുന്നു, അല്ലെങ്കിൽ ഫയലിന്റെ അവസാനത്തിൽ പൂജ്യം. അത് ലഭിക്കും
സ്ട്രീം പോയിന്ററിൽ നിന്നുള്ള ഇൻപുട്ട് യിയിൻ, ഒരു ഇന്റർമീഡിയറ്റ് ബഫർ വഴിയാണെങ്കിലും.
അങ്ങനെ, സ്കാനിംഗ് ആരംഭിച്ചുകഴിഞ്ഞാൽ, മൂല്യം മാറ്റുന്നതിന്റെ ഫലം യിയിൻ is
നിർവചിക്കാത്തത്. സ്കാനറിന്റെ ഇൻപുട്ട് സ്ട്രീമിൽ നിന്ന് വായിച്ച പ്രതീകം നീക്കംചെയ്യപ്പെടും
സ്കാനർ വഴിയുള്ള പ്രോസസ്സിംഗ് ഇല്ലാതെ.

int അൺപുട്ട്(int c)
കഥാപാത്രത്തെ തിരികെ നൽകുന്നു 'സി' ഇൻപുട്ടിലേക്ക്; yytext ഒപ്പം yyleng വരെ നിർവചിച്ചിട്ടില്ല
അടുത്ത പദപ്രയോഗം പൊരുത്തപ്പെടുന്നു. ഉപയോഗിക്കുന്നതിന്റെ ഫലം അൺപുട്ട്() കൂടുതൽ പ്രതീകങ്ങൾക്ക്
നൽകിയിട്ടുള്ള ഇൻപുട്ട് വ്യക്തമാക്കിയിട്ടില്ല.

ഇനിപ്പറയുന്ന ഫംഗ്‌ഷനുകൾ ഇതിൽ മാത്രമേ ദൃശ്യമാകൂ Lex വഴി ലൈബ്രറി ആക്സസ് ചെയ്യാം −l l
ഓപ്പറാൻറ്; അതിനാൽ അവ ഒരു അനുരൂപമായ ആപ്ലിക്കേഷനിലൂടെ പുനർനിർവചിക്കാം:

int yywrap(ശൂന്യം)
വിളിച്ചത് yylex() ഫയലിന്റെ അവസാനത്തിൽ; സ്ഥിരസ്ഥിതി yywrap() എപ്പോഴും തിരികെ വരും 1. എങ്കിൽ
അപേക്ഷ ആവശ്യമാണ് yylex() ഇൻപുട്ടിന്റെ മറ്റൊരു ഉറവിടം ഉപയോഗിച്ച് പ്രോസസ്സിംഗ് തുടരാൻ,
അപ്പോൾ ആപ്ലിക്കേഷനിൽ ഒരു ഫംഗ്ഷൻ ഉൾപ്പെടുത്താം yywrap(), ഇത് മറ്റൊരു ഫയലുമായി ബന്ധപ്പെടുത്തുന്നു
ബാഹ്യ വേരിയബിളിനൊപ്പം FILE * യിയിൻ പൂജ്യത്തിന്റെ മൂല്യം തിരികെ നൽകും.

int പ്രധാന(int ആർജിസി, പ്രതീകം *argv[])
കോളുകൾ yylex() ലെക്സിക്കൽ വിശകലനം നടത്താൻ, തുടർന്ന് പുറത്തുകടക്കുക. ഉപയോക്തൃ കോഡിൽ അടങ്ങിയിരിക്കാം
പ്രധാന() ആപ്ലിക്കേഷൻ-നിർദ്ദിഷ്ട പ്രവർത്തനങ്ങൾ നടത്താൻ, കോളിംഗ് yylex() ബാധകമായത് പോലെ.

ഒഴികെ ഇൻപുട്ട്, അൺപുട്ട്(), ഒപ്പം പ്രധാന(), എല്ലാ ബാഹ്യവും സ്ഥിരവുമായ പേരുകൾ സൃഷ്ടിച്ചത് Lex
പ്രിഫിക്സിൽ തുടങ്ങും yy or YY.

പുറത്ത് പദവി


ഇനിപ്പറയുന്ന എക്സിറ്റ് മൂല്യങ്ങൾ തിരികെ നൽകും:

0 വിജയകരമായ പൂർത്തീകരണം.

>0 ഒരു പിശക് സംഭവിച്ചു.

പരിസരം OF പിശകുകൾ


സ്ഥിരസ്ഥിതി.

ദി പിന്തുടരുന്ന വിഭാഗങ്ങൾ ആകുന്നു വിജ്ഞാനപ്രദമായ.

APPLICATION, USAGE


അനുരൂപമായ അപേക്ഷകൾക്ക് മുന്നറിയിപ്പ് നൽകുന്നു നിയമങ്ങൾ വിഭാഗം, ഒരു പ്രവർത്തനവുമില്ലാത്ത ഒരു ERE ആണ്
സ്വീകാര്യമല്ല, പക്ഷേ വഴി തെറ്റാണെന്ന് കണ്ടെത്തേണ്ടതില്ല Lex. ഇത് കാരണമായേക്കാം
കംപൈലേഷൻ അല്ലെങ്കിൽ റൺടൈം പിശകുകൾ.

ഇതിന്റെ ഉദ്ദേശ്യം ഇൻപുട്ട്() എന്നത് ഇൻപുട്ട് സ്ട്രീമിൽ നിന്ന് പ്രതീകങ്ങൾ എടുത്ത് അവ ദൂരത്തേക്ക് ഉപേക്ഷിക്കുക എന്നതാണ്
ലെക്സിക്കൽ വിശകലനത്തെ സംബന്ധിച്ചിടത്തോളം. ഒരു കമന്റിന്റെ ബോഡി നിരസിക്കുക എന്നതാണ് ഒരു പൊതു ഉപയോഗം
ഒരു കമന്റിന്റെ തുടക്കം തിരിച്ചറിഞ്ഞുകഴിഞ്ഞാൽ.

ദി Lex സാധാരണ പദപ്രയോഗങ്ങളുടെ ചികിത്സയിൽ യൂട്ടിലിറ്റി പൂർണ്ണമായും അന്തർദേശീയവൽക്കരിച്ചിട്ടില്ല
The Lex സോഴ്സ് കോഡ് അല്ലെങ്കിൽ ജനറേറ്റഡ് ലെക്സിക്കൽ അനലൈസർ. ഉള്ളത് അഭികാമ്യമാണെന്ന് തോന്നുന്നു
ലെക്‌സിക്കൽ അനലൈസർ എന്നതിൽ നൽകിയിരിക്കുന്ന പതിവ് പദപ്രയോഗങ്ങളെ വ്യാഖ്യാനിക്കുന്നു Lex ഉറവിടം അനുസരിച്ച്
ലെക്സിക്കൽ അനലൈസർ എക്സിക്യൂട്ട് ചെയ്യുമ്പോൾ പരിസ്ഥിതി വ്യക്തമാക്കിയിട്ടുണ്ട്, പക്ഷേ ഇത് സാധ്യമല്ല
കറന്റിനൊപ്പം Lex സാങ്കേതികവിദ്യ. കൂടാതെ, ലെക്സിക്കൽ അനലൈസറുകളുടെ സ്വഭാവം
നിര്മ്മിച്ചത് Lex ഇൻപുട്ട് ഭാഷയുടെ ലെക്സിക്കൽ ആവശ്യകതകളുമായി അടുത്ത് ബന്ധിപ്പിച്ചിരിക്കണം
ഏതുവിധേനയും പ്രാദേശിക-നിർദ്ദിഷ്ടമായ, വിവരിക്കുന്നു. (ഉദാഹരണത്തിന്, എഴുതുന്നത് ഒരു
ഫ്രഞ്ച് ടെക്‌സ്‌റ്റിനായി ഉപയോഗിക്കുന്ന അനലൈസർ മറ്റുള്ളവ പ്രോസസ്സ് ചെയ്യുന്നതിന് സ്വയമേവ ഉപയോഗപ്രദമല്ല
ഭാഷകൾ.)

ഉദാഹരണങ്ങൾ


താഴെ ഒരു ഉദാഹരണമാണ് Lex ഒരു അടിസ്ഥാന സ്കാനർ നടപ്പിലാക്കുന്ന പ്രോഗ്രാം
പാസ്കൽ പോലെയുള്ള വാക്യഘടന:

%{
/* ആവശ്യം വേണ്ടി The വിളി ലേക്ക് atof() താഴെ. */
# ഉൾപ്പെടുത്തുക
/* ആവശ്യം വേണ്ടി printf(), fopen(), ഒപ്പം stdin താഴെ. */
# ഉൾപ്പെടുത്തുക
%}

ഡിജിറ്റ് [0-9]
ഐഡി [a−z][a−z0−9]*

%%

{DIGIT}+ {
printf("ഒരു പൂർണ്ണസംഖ്യ: %s (%d)\n", yytext,
atoi(yytext));
}

{DIGIT}+"."{DIGIT}* {
printf("ഒരു ഫ്ലോട്ട്: %s (%g)\n", yytext,
atof(yytext));
}

എങ്കിൽ|പിന്നെ|തുടങ്ങുക|അവസാനം|നടപടിക്രമം|പ്രവർത്തനം {
printf("ഒരു കീവേഡ്: %s\n", yytext);
}

{ID} printf("ഒരു ഐഡന്റിഫയർ: %s\n", yytext);

"+"|"−"|"*"|"/" printf("ഒരു ഓപ്പറേറ്റർ: %s\n", yytext);

"{"[^}\n]*"}" /* ഒറ്റവരി കമന്റുകൾ കഴിക്കൂ. */

[ \t\n]+ /* ഈറ്റ് അപ്പ് വൈറ്റ് സ്പേസ്. */

. printf("തിരിച്ചറിയപ്പെടാത്ത പ്രതീകം: %s\n", yytext);

%%

int main(int argc, char *argv[])
{
++argv, --argc; /* പ്രോഗ്രാമിന്റെ പേര് ഒഴിവാക്കുക. */
എങ്കിൽ (argc > 0)
yin = fopen(argv[0], "r");
മറ്റാരെങ്കിലും
യ്യിൻ = stdin;

yylex();
}

യുക്തി


എന്നിരുന്നാലും -സി സി ഭാഷയിലേക്കുള്ള ഓപ്ഷനും റഫറൻസുകളും ഇതിൽ നിലനിർത്തിയിട്ടുണ്ട്
വിവരണം, Lex EFL-ന് ഒരു കാലത്ത് ചെയ്തതുപോലെ, മറ്റ് ഭാഷകളിലേക്ക് സാമാന്യവൽക്കരിക്കപ്പെട്ടേക്കാം,
വിപുലീകരിച്ച ഫോർട്രാൻ ഭാഷ. മുതൽ Lex ഇൻപുട്ട് സ്പെസിഫിക്കേഷൻ അടിസ്ഥാനപരമായി ഭാഷയാണ്-
സ്വതന്ത്രമായി, ഈ യൂട്ടിലിറ്റിയുടെ പതിപ്പുകൾ Ada, Modula-2, അല്ലെങ്കിൽ Pascal എന്നിവ നിർമ്മിക്കാൻ എഴുതാവുന്നതാണ്
കോഡ്, അങ്ങനെ ചെയ്യുന്ന ചരിത്രപരമായ നടപ്പാക്കലുകൾ ഉണ്ട്.

എന്നതിന്റെ നിലവിലെ വിവരണം Lex അന്തർദേശീയ ERE- കൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള പ്രശ്നം മറികടക്കുന്നു
ലെ Lex സോഴ്സ് കോഡ് അല്ലെങ്കിൽ ജനറേറ്റഡ് ലെക്സിക്കൽ അനലൈസർ. ഉപയോഗിച്ച മാതൃക പിന്തുടരുകയാണെങ്കിൽ ഉണരുക
(സോഴ്സ് കോഡ് POSIX ലൊക്കേലിൽ അവതരിപ്പിക്കുമെന്ന് കരുതപ്പെടുന്നു, എന്നാൽ ഇൻപുട്ടും ഔട്ട്പുട്ടും
എൻവയോൺമെന്റ് വേരിയബിളുകൾ വ്യക്തമാക്കിയ ലോക്കലിൽ), തുടർന്ന് ലെക്സിക്കലിലെ പട്ടികകൾ
അനലൈസർ നിർമ്മിച്ചത് Lex ൽ വ്യക്തമാക്കിയ ERE-കൾ വ്യാഖ്യാനിക്കും Lex എന്നതിന്റെ അടിസ്ഥാനത്തിൽ ഉറവിടം
എപ്പോൾ വ്യക്തമാക്കിയ പരിസ്ഥിതി വേരിയബിളുകൾ Lex വധിക്കപ്പെട്ടു. ആഗ്രഹിച്ച ഫലം ഉണ്ടാകും
ലെക്‌സിക്കൽ അനലൈസർ, യിൽ നൽകിയിരിക്കുന്ന ERE-കളെ വ്യാഖ്യാനിക്കുന്നു Lex ഉറവിടം അനുസരിച്ച്
ലെക്സിക്കൽ അനലൈസർ എക്സിക്യൂട്ട് ചെയ്യുമ്പോൾ പരിസ്ഥിതി വ്യക്തമാക്കിയിട്ടുണ്ട്, എന്നാൽ ഇത് സാധ്യമല്ല
നിലവിൽ Lex സാങ്കേതികവിദ്യ.

ഒക്ടൽ, ഹെക്സാഡെസിമൽ അക്ക എസ്കേപ്പ് സീക്വൻസുകളുടെ വിവരണം ഐഎസ്ഒ സിയുമായി യോജിക്കുന്നു
എസ്കേപ്പ് സീക്വൻസുകളുടെ സാധാരണ ഉപയോഗം.

ഈ സ്റ്റാൻഡേർഡിന്റെ മുൻ പതിപ്പുകൾ എട്ട് ഒഴികെയുള്ള ബൈറ്റുകൾ ഉപയോഗിച്ച് നടപ്പിലാക്കാൻ അനുവദിച്ചു
ബിറ്റുകൾ, എന്നാൽ ഈ പതിപ്പിൽ ഇത് പരിഷ്കരിച്ചിട്ടുണ്ട്.

വിശദമായ ഔട്ട്പുട്ട് ഫോർമാറ്റ് സ്പെസിഫിക്കേഷൻ ഇല്ല. യുടെ നിരീക്ഷിച്ച പെരുമാറ്റം Lex നാലിൽ താഴെ
വ്യത്യസ്തമായ ചരിത്ര നിർവഹണങ്ങൾ ഈ നടപ്പാക്കലുകളൊന്നും സ്ഥിരതയാർന്നില്ല എന്നതാണ്
പിശകുകൾക്കും മുന്നറിയിപ്പ് സന്ദേശങ്ങൾക്കുമായി ലൈൻ നമ്പറുകൾ റിപ്പോർട്ട് ചെയ്തു. കൂടാതെ, ഒരു ആഗ്രഹം ഉണ്ടായിരുന്നു
Lex അധിക ഡയഗ്നോസ്റ്റിക് സന്ദേശങ്ങൾ ഔട്ട്പുട്ട് ചെയ്യാൻ അനുവദിക്കുക. സന്ദേശ ഫോർമാറ്റുകൾ ഉപേക്ഷിക്കുന്നു
ഈ ഫോർമാറ്റിംഗ് ചോദ്യങ്ങളും അന്തർദേശീയവൽക്കരണവുമായി ബന്ധപ്പെട്ട പ്രശ്നങ്ങളും വ്യക്തമാക്കാത്തത് ഒഴിവാക്കുന്നു.

എന്നാലും %x എന്നതിനായുള്ള സ്പെസിഫയർ എക്സ്ക്ലൂസീവ് ആരംഭ വ്യവസ്ഥകൾ ചരിത്രപരമായ പ്രയോഗമല്ല, അത്
ചരിത്രപരമായ നിർവ്വഹണങ്ങളിൽ ഒരു ചെറിയ മാറ്റമാണെന്ന് വിശ്വസിക്കപ്പെടുന്നു, അത് വളരെയധികം മെച്ചപ്പെടുത്തുന്നു
ഉപയോഗക്ഷമത Lex പ്രോഗ്രാമുകൾ പ്രതീക്ഷിക്കുന്നത് ലഭിക്കാൻ ഒരു ആപ്ലിക്കേഷനെ അനുവദിക്കുന്നതിനാൽ
കുറച്ച് പ്രസ്താവനകളുള്ള പ്രവർത്തനക്ഷമത.

ദി %അറേ ഒപ്പം % പോയിന്റർ ചരിത്രപരമായ ഒരു ഒത്തുതീർപ്പായി പ്രഖ്യാപനങ്ങൾ ചേർത്തു
സംവിധാനങ്ങൾ. സിസ്റ്റം വി അടിസ്ഥാനമാക്കിയുള്ളത് Lex പൊരുത്തപ്പെടുന്ന വാചകം a ലേക്ക് പകർത്തുന്നു yytext അറേ. ദി ഫ്ളക്സ്
BSD, GNU സിസ്റ്റങ്ങളിൽ പിന്തുണയ്ക്കുന്ന പ്രോഗ്രാം, ഒരു പോയിന്റർ ഉപയോഗിക്കുന്നു. പിന്നീടുള്ള കേസിൽ, പ്രാധാന്യമർഹിക്കുന്നു
ചില സ്കാനറുകൾക്ക് പ്രകടന മെച്ചപ്പെടുത്തലുകൾ ലഭ്യമാണ്. മിക്ക ചരിത്ര പരിപാടികളും വേണം
സ്ട്രിംഗ് ആയതിനാൽ ഒരു സിസ്റ്റത്തിൽ നിന്ന് മറ്റൊന്നിലേക്ക് പോർട്ടിംഗിൽ മാറ്റമൊന്നും ആവശ്യമില്ല
രണ്ട് സാഹചര്യങ്ങളിലും പരാമർശിച്ചത് അസാധുവാണ്. (ഉപയോഗിക്കുന്ന രീതി ഫ്ളക്സ് അതിന്റെ കാര്യത്തിൽ ആണ്
ശരിയായി വരുന്ന പ്രതീകം ഓർത്തുകൊണ്ട് ടോക്കൺ അസാധുവാക്കുക
ടോക്കണിന് ശേഷം അടുത്ത സ്കാനിലേക്ക് പോകുന്നതിന് മുമ്പ് അത് മാറ്റിസ്ഥാപിക്കുക.) മൾട്ടി-ഫയൽ
ബാഹ്യ റഫറൻസുകളുള്ള പ്രോഗ്രാമുകൾ yytext സ്കാനർ സോഴ്സ് ഫയലിന് പുറത്ത് വേണം
അവരുടെ ചരിത്രപരമായ സംവിധാനങ്ങളിൽ പ്രവർത്തിക്കുന്നത് തുടരുക, പക്ഷേ പുതിയതിൽ ഒന്ന് ആവശ്യമാണ്
പ്രഖ്യാപനങ്ങൾ കർശനമായി പോർട്ടബിൾ ആയി കണക്കാക്കണം.

ERE-കളുടെ വിവരണം ERE വിശദാംശങ്ങളുടെ അനാവശ്യ തനിപ്പകർപ്പ് ഒഴിവാക്കുന്നു, കാരണം അവയുടെ
എ ഉള്ളിലെ അർത്ഥങ്ങൾ Lex POSIX.1‐2008-ന്റെ ഈ വോള്യത്തിലെ ERE-യ്‌ക്ക് തുല്യമാണ് ERE.

എയിൽ തുടങ്ങുന്ന വാചകവുമായി ബന്ധപ്പെട്ട നിർവചിക്കപ്പെടാത്ത അവസ്ഥയുടെ കാരണം അഥവാ
ഉള്ളിൽ "%{" ഒപ്പം "%}" ഡിലിമിറ്റർ ലൈനുകൾ ദൃശ്യമാകുന്നു നിയമങ്ങൾ വിഭാഗം ചരിത്രപരമാണ്
പ്രാക്ടീസ്. ബിഎസ്ഡിയും സിസ്റ്റം വിയും Lex ഇൻഡന്റ് ചെയ്ത (അല്ലെങ്കിൽ അടച്ച) ഇൻപുട്ട് പകർത്തുക നിയമങ്ങൾ
സെക്ഷൻ (ആരംഭത്തിൽ ഒഴികെ) എത്തിച്ചേരാനാകാത്ത പ്രദേശങ്ങളിലേക്ക് yylex() പ്രവർത്തനം (കോഡ്
a ശേഷം നേരിട്ട് എഴുതിയിരിക്കുന്നു ഇടവേള പ്രസ്താവന). ചില സന്ദർഭങ്ങളിൽ, സിസ്റ്റം വി Lex ഒരു സൃഷ്ടിക്കുന്നു
ഇൻഡന്റ് ചെയ്ത ഇൻപുട്ടിന്റെ രൂപത്തെ ആശ്രയിച്ച് പിശക് സന്ദേശം അല്ലെങ്കിൽ ഒരു വാക്യഘടന പിശക്.

ഫംഗ്‌ഷനുകളുടെ ലിസ്‌റ്റ് ദൃശ്യമാകാനിടയുള്ളവയിലേക്ക് വിഭജിക്കാനുള്ള ഉദ്ദേശ്യം lex.yy.c
എതിരായി മാത്രം ദൃശ്യമാകുന്നവ libl.a അതിലെ ആ പ്രവർത്തനങ്ങൾ മാത്രമാണ് libl.a കഴിയും
ഒരു അനുരൂപമായ ആപ്ലിക്കേഷൻ വഴി വിശ്വസനീയമായി പുനർ നിർവചിച്ചിരിക്കുന്നു.

സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ടിന്റെയും സ്റ്റാൻഡേർഡ് പിശകിന്റെയും വിവരണങ്ങൾ കുറച്ച് സങ്കീർണ്ണമാണ്, കാരണം
ചരിത്രപരമായ Lex നടപ്പിലാക്കലുകൾ സാധാരണ ഔട്ട്‌പുട്ടിലേക്ക് ഡയഗ്നോസ്റ്റിക് സന്ദേശങ്ങൾ നൽകാൻ തിരഞ്ഞെടുത്തു
(അല്ലാതെ −t നല്കപ്പെട്ടു). POSIX.1‐2008 ഈ സ്വഭാവം അനുവദിക്കുന്നു, എന്നാൽ അതിനുള്ള ഒരു തുറന്ന് വിടുന്നു
ഡയഗ്നോസ്റ്റിക്സിനായി സ്റ്റാൻഡേർഡ് പിശക് ഉപയോഗിക്കുന്നതിന്റെ കൂടുതൽ പ്രതീക്ഷിക്കുന്ന പെരുമാറ്റം. കൂടാതെ, സിസ്റ്റം വി
ഏതെങ്കിലും ടേബിൾ വലുപ്പങ്ങൾ നൽകുമ്പോൾ സ്ഥിതിവിവരക്കണക്കുകൾ എഴുതുന്ന സ്വഭാവം അനുവദനീയമാണ്, അതേസമയം ബിഎസ്ഡി-
ഉരുത്തിരിഞ്ഞ സംവിധാനങ്ങൾക്ക് അത് ഒഴിവാക്കാനാകും. പ്രോഗ്രാമർക്ക് എല്ലായ്പ്പോഴും ആവശ്യമുള്ളത് കൃത്യമായി നേടാനാകും
ഒന്നുകിൽ ഉപയോഗിക്കുന്നതിലൂടെ ഫലങ്ങൾ −t or −n ഓപ്ഷനുകൾ.

OPERANDS വിഭാഗം ഉപയോഗത്തെക്കുറിച്ച് പരാമർശിക്കുന്നില്ല - സ്റ്റാൻഡേർഡ് ഇൻപുട്ടിന്റെ പര്യായമായി; അല്ല
എല്ലാ ചരിത്ര നിർവഹണങ്ങളും അത്തരം ഉപയോഗത്തെ പിന്തുണയ്ക്കുന്നു ഫയല് പ്രവർത്തനങ്ങൾ.

എന്നതിന്റെ ഒരു വിവരണം വിവർത്തനം മേശ അതിന്റെ കാരണം ആദ്യകാല നിർദ്ദേശങ്ങളിൽ നിന്ന് ഇല്ലാതാക്കി
ചരിത്രപരമായ പ്രയോഗങ്ങളിൽ താരതമ്യേന കുറഞ്ഞ ഉപയോഗം.

എന്നതിന്റെ നിർവചനത്തിലേക്കുള്ള മാറ്റം ഇൻപുട്ട്() ഇൻപുട്ടിന്റെ ബഫറിംഗ് അനുവദിക്കുന്ന പ്രവർത്തനം
ചില ആപ്ലിക്കേഷനുകളിൽ പ്രധാന പ്രകടന നേട്ടങ്ങൾക്കുള്ള അവസരം നൽകുന്നു.

ഇനിപ്പറയുന്ന ഉദാഹരണങ്ങൾ തമ്മിലുള്ള വ്യത്യാസങ്ങൾ വ്യക്തമാക്കുന്നു Lex പതിവ് ഭാവങ്ങളും ക്രമവും
POSIX.1-2008-ന്റെ ഈ വോള്യത്തിൽ മറ്റൊരിടത്ത് പദപ്രയോഗങ്ങൾ ദൃശ്യമാകുന്നു. എന്ന പതിവ് ഭാവങ്ങൾക്ക്
രൂപം "r/x", സ്ട്രിംഗ് പൊരുത്തം r എല്ലായ്പ്പോഴും തിരികെ നൽകുന്നു; എന്ന ആശയക്കുഴപ്പം ഉണ്ടാകാം
ആരംഭം x എന്നതിന്റെ പിന്നിലുള്ള ഭാഗവുമായി പൊരുത്തപ്പെടുന്നു r. ഉദാഹരണത്തിന്, പതിവ് നൽകിയിരിക്കുന്നു
പദപ്രയോഗം "a*b/cc" ഇൻപുട്ടും "aaabcc", yytext സ്ട്രിംഗ് അടങ്ങിയിരിക്കും "ആബ്" ഇതിൽ
പൊരുത്തം. എന്നാൽ പതിവ് എക്സ്പ്രഷൻ നൽകി "x*/xy" ഇൻപുട്ടും "xxxy", ടോക്കൺ XXX, അല്ല
xx, കാരണം ചില നിർവ്വഹണങ്ങൾ വഴി തിരിച്ചുനൽകുന്നു XXX മത്സരങ്ങൾ "x*".

ഭരണത്തിൽ "ab*/bc", "ബി*" അവസാനം r വിപുലീകരിക്കുന്നു rന്റെ തുടക്കത്തിലെ മത്സരം
സന്ദർഭം പിന്നിലായതിനാൽ ഫലം വ്യക്തമാക്കിയിട്ടില്ല. ഈ നിയമം ആയിരുന്നെങ്കിൽ "ab/bc"എന്നിരുന്നാലും, ദി
നിയമം ടെക്സ്റ്റുമായി പൊരുത്തപ്പെടുന്നു "ab" അതിനെ വാചകം പിന്തുടരുമ്പോൾ "ബിസി". ഈ രണ്ടാമത്തെ കേസിൽ, ദി
പൊരുത്തപ്പെടുത്തൽ r തുടക്കം വരെ നീട്ടാൻ കഴിയില്ല x, അതിനാൽ ഫലം വ്യക്തമാക്കിയിരിക്കുന്നു.

ഭാവി ദിശകൾ


ഒന്നുമില്ല.

onworks.net സേവനങ്ങൾ ഉപയോഗിച്ച് lexposix ഓൺലൈനായി ഉപയോഗിക്കുക


സൗജന്യ സെർവറുകളും വർക്ക്സ്റ്റേഷനുകളും

Windows & Linux ആപ്പുകൾ ഡൗൺലോഡ് ചെയ്യുക

ലിനക്സ് കമാൻഡുകൾ

Ad