કમ્પાઇલર શું છે?


કમ્પાઇલરના તબક્કાઓ મહત્વપૂર્ણ છે.


Interpreters are an alternative to compilers.

ઇન્ટરપ્રીટર્સ કમ્પાઇલરનો વિકલ્પ છે.


કમ્પાઇલર વિશે શા માટે શીખવું?


This book is structured in a specific way.

આ પુસ્તક એક ચોક્કસ રીતે રચાયેલું છે.


The lecturer should be aware of the content.

વ્યાખ્યાતાએ સામગ્રીથી વાકેફ રહેવું જોઈએ.


We acknowledge the contributions of many.

અમે ઘણા લોકોના યોગદાનને સ્વીકારીએ છીએ.


Permission to use the material is granted.

સામગ્રીનો ઉપયોગ કરવાની પરવાનગી આપવામાં આવી છે.


લેક્સિકલ વિશ્લેષણ એ પ્રથમ પગલું છે.


Regular expressions are used for pattern matching.

નિયમિત અભિવ્યક્તિઓ પેટર્ન મેચિંગ માટે વપરાય છે.


Shorthands simplify regular expressions.

શોર્ટહેન્ડ નિયમિત અભિવ્યક્તિઓને સરળ બનાવે છે.


ચાલો કેટલાક ઉદાહરણો જોઈએ.


Nondeterministic finite automata are important.

બિન-નિર્ધારિત ફાઈનાઈટ ઓટોમેટા મહત્વપૂર્ણ છે.


Converting a regular expression to an NFA is a key process.

નિયમિત અભિવ્યક્તિને NFA માં રૂપાંતરિત કરવું એ એક મુખ્ય પ્રક્રિયા છે.


ઓપ્ટિમાઇઝેશન કામગીરીમાં સુધારો કરી શકે છે.


Deterministic finite automata are efficient.

નિર્ધારિત ફાઈનાઈટ ઓટોમેટા કાર્યક્ષમ છે.


Converting an NFA to a DFA is a crucial step.

NFA ને DFA માં રૂપાંતરિત કરવું એ એક નિર્ણાયક પગલું છે.


કદ વિરુદ્ધ ઝડપ એ એક સમાધાન છે.


Minimization of DFAs is important for efficiency.

કાર્યક્ષમતા માટે DFA નું લઘુત્તમકરણ મહત્વપૂર્ણ છે.


લેક્સર જનરેટર પ્રક્રિયાને સ્વચાલિત કરે છે.


કાર્યક્રમ ટૂંક સમયમાં શરૂ થશે.


મહેરબાની કરીને દરવાજો બંધ કરો.


હું બજારમાં જઈ રહ્યો છું.


આજનું હવામાન ખૂબ જ સુખદ છે.


શું તમે મને આમાં મદદ કરી શકો છો?


The company announced its quarterly results.

કંપનીએ તેના ત્રિમાસિક પરિણામોની જાહેરાત કરી.


The algorithm efficiently sorts the data.

અલ્ગોરિધમ ડેટાને કાર્યક્ષમ રીતે સૉર્ટ કરે છે.


He is a renowned scientist in the field.

તે આ ક્ષેત્રના જાણીતા વૈજ્ઞાનિક છે.


The government is implementing new policies.

સરકાર નવી નીતિઓ લાગુ કરી રહી છે.


The complex system requires careful analysis.

જટિલ સિસ્ટમ માટે સાવચેતીપૂર્વક વિશ્લેષણની જરૂર છે.


The economic forecast predicts a recession.

આર્થિક આગાહી મંદીની આગાહી કરે છે.


The philosophical debate explored existentialism.

તત્વજ્ઞાનની ચર્ચાએ અસ્તિત્વવાદની શોધ કરી.


The intricate design of the building is impressive.

બિલ્ડિંગની જટિલ ડિઝાઇન પ્રભાવશાળી છે.


The research paper presents novel findings.

સંશોધન પત્ર નવીન તારણો રજૂ કરે છે.


The implications of the treaty are far-reaching.

સંધિના પરિણામો દૂરગામી છે.


The algorithm's efficiency is crucial for large datasets.

મોટા ડેટાસેટ માટે અલ્ગોરિધમની કાર્યક્ષમતા નિર્ણાયક છે.


The company's strategic decisions will impact future growth.

કંપનીના વ્યૂહાત્મક નિર્ણયો ભાવિ વૃદ્ધિને અસર કરશે.


The nuances of the language are fascinating to study.

ભાષાની બારીકાઈઓનો અભ્યાસ કરવો રસપ્રદ છે.


The complex interplay of factors makes prediction difficult.

પરિબળોની જટિલ આંતરક્રિયા આગાહીને મુશ્કેલ બનાવે છે.


The historical context is essential for understanding the event.

ઘટનાને સમજવા માટે ઐતિહાસિક સંદર્ભ આવશ્યક છે.


The compiler translates high-level code into machine language.

કમ્પાઇલર ઉચ્ચ-સ્તરના કોડને મશીન ભાષામાં અનુવાદિત કરે છે.


Lexical analysis is the first phase of compilation.

લેક્સિકલ વિશ્લેષણ એ કમ્પાઇલરનું પ્રથમ તબક્કો છે.


The program is divided into tokens during lexical analysis.

લેક્સિકલ વિશ્લેષણ દરમિયાન પ્રોગ્રામને ટોકન્સમાં વિભાજિત કરવામાં આવે છે.


સિન્ટેક્સ વિશ્લેષણ એક સિન્ટેક્સ ટ્રી બનાવે છે.


Type checking ensures the program's consistency.

ટાઇપ ચેકિંગ પ્રોગ્રામની સુસંગતતા સુનિશ્ચિત કરે છે.


A compiler helps bridge the gap between high-level and low-level languages.

એક કમ્પાઇલર ઉચ્ચ-સ્તરની અને નીચા-સ્તરની ભાષાઓ વચ્ચેના અંતરને દૂર કરવામાં મદદ કરે છે.


High-level languages are easier for programmers to use.

ઉચ્ચ-સ્તરની ભાષાઓ પ્રોગ્રામરો માટે વાપરવા માટે સરળ છે.


The compiler identifies and reports programmer mistakes.

કમ્પાઇલર પ્રોગ્રામરની ભૂલોને ઓળખે છે અને તેનો અહેવાલ આપે છે.


Programs written in high-level languages are often shorter.

ઉચ્ચ-સ્તરની ભાષાઓમાં લખેલા પ્રોગ્રામ્સ ઘણીવાર ટૂંકા હોય છે.


The same program can run on different machines.

એક જ પ્રોગ્રામ વિવિધ મશીનો પર ચાલી શકે છે.


Some time-critical programs are written in machine language.

કેટલાક સમય-જરૂરી પ્રોગ્રામ્સ મશીન ભાષામાં લખાયેલા છે.


A good compiler can generate efficient code.

એક સારું કમ્પાઇલર કાર્યક્ષમ કોડ જનરેટ કરી શકે છે.


Compilers are structured into several phases.

કમ્પાઇલર્સને ઘણા તબક્કામાં માળખું આપવામાં આવે છે.


Each phase takes the output of the previous phase.

દરેક તબક્કો અગાઉના તબક્કાના આઉટપુટને લે છે.


Lexical analysis reads and analyzes the program text.

લેક્સિકલ વિશ્લેષણ પ્રોગ્રામના ટેક્સ્ટને વાંચે છે અને તેનું વિશ્લેષણ કરે છે.


Syntax analysis arranges tokens into a tree structure.

સિન્ટેક્સ વિશ્લેષણ ટોકન્સને ટ્રી સ્ટ્રક્ચરમાં ગોઠવે છે.


Type checking determines if the program violates consistency requirements.

ટાઇપ ચેકિંગ નક્કી કરે છે કે પ્રોગ્રામ સુસંગતતાની આવશ્યકતાઓનું ઉલ્લંઘન કરે છે કે નહીં.


The compiler attempts to spot and report programmer mistakes.

કમ્પાઇલર પ્રોગ્રામરની ભૂલોને શોધવાનો અને તેનો અહેવાલ આપવાનો પ્રયાસ કરે છે.


Using a high-level language speeds up program development.

ઉચ્ચ-સ્તરની ભાષાનો ઉપયોગ પ્રોગ્રામના વિકાસને ઝડપી બનાવે છે.


The compiler is a crucial tool for software development.

કમ્પાઇલર સોફ્ટવેર ડેવલપમેન્ટ માટે એક મહત્વપૂર્ણ સાધન છે.


The compiler translates the program into an intermediate language.

કમ્પાઇલર પ્રોગ્રામને મધ્યવર્તી ભાષામાં અનુવાદિત કરે છે.


Lexical analysis is the first phase of compilation.

લેક્સિકલ વિશ્લેષણ એ કમ્પાઇલરનું પ્રથમ તબક્કો છે.


Interpreters execute code directly from the syntax tree.

ઇન્ટરપ્રીટર્સ સીધા સિન્ટેક્સ ટ્રીમાંથી કોડ ચલાવે છે.


Understanding compilers helps programmers write more efficient code.

કમ્પાઇલર્સને સમજવાથી પ્રોગ્રામરો વધુ કાર્યક્ષમ કોડ લખી શકે છે.


Domain-specific languages are becoming increasingly popular.

ડોમેન-વિશિષ્ટ ભાષાઓ વધુને વધુ લોકપ્રિય થઈ રહી છે.


Regular expressions are used to define tokens in lexical analysis.

લેક્સિકલ વિશ્લેષણમાં ટોકન્સને વ્યાખ્યાયિત કરવા માટે નિયમિત અભિવ્યક્તિઓનો ઉપયોગ થાય છે.


The syntax tree is processed to evaluate expressions.

એક્સપ્રેશનનું મૂલ્યાંકન કરવા માટે સિન્ટેક્સ ટ્રીની પ્રક્રિયા કરવામાં આવે છે.


Assembly and linking are typically handled by the operating system.

એસેમ્બલી અને લિંકિંગ સામાન્ય રીતે ઓપરેટિંગ સિસ્ટમ દ્વારા સંચાલિત થાય છે.


The book discusses the structure of compilers.

પુસ્તક કમ્પાઇલર્સની રચનાની ચર્ચા કરે છે.


લેક્સર ઇનપુટને ટોકન્સમાં વિભાજિત કરે છે.


The compiler course is often mandatory in computer science.

કમ્પાઇલર કોર્સ ઘણીવાર કમ્પ્યુટર વિજ્ઞાનમાં ફરજિયાત હોય છે.


The author thanks the students for their help.

લેખક તેમના સહકાર બદલ વિદ્યાર્થીઓનો આભાર માને છે.


The book is intended for an introductory compiler course.

આ પુસ્તક પ્રારંભિક કમ્પાઇલર કોર્સ માટે બનાવાયેલ છે.


The book aims to bridge the gap in understanding.

પુસ્તક સમજણના અંતરને દૂર કરવાનો હેતુ ધરાવે છે.


The extended edition includes additional chapters.

વિસ્તૃત આવૃત્તિમાં વધારાના પ્રકરણોનો સમાવેશ થાય છે.


The book uses standard set notation and equations.

પુસ્તક પ્રમાણભૂત સેટ સંકેત અને સમીકરણોનો ઉપયોગ કરે છે.


The author welcomes feedback on any errors.

લેખક કોઈપણ ભૂલો પર પ્રતિસાદનું સ્વાગત કરે છે.


The book is language neutral in its approach.

પુસ્તક તેના અભિગમમાં ભાષા તટસ્થ છે.


The exercises support understanding of the concepts.

આ કસરતો ખ્યાલોની સમજણને સમર્થન આપે છે.


The book provides a foundation for advanced techniques.

પુસ્તક અદ્યતન તકનીકો માટે એક પાયો પૂરો પાડે છે.


The DFA constructed from the NFA has four states.

NFA માંથી બનાવેલ DFA માં ચાર રાજ્યો છે.


Algorithm 2.4 is used for DFA minimization.

DFA ન્યૂનતમતા માટે અલ્ગોરિધમ 2.4 નો ઉપયોગ થાય છે.


A dead state is a state from which no accepting state can be reached.

એક ડેડ સ્ટેટ એવું રાજ્ય છે જ્યાંથી કોઈ સ્વીકૃતિ રાજ્ય સુધી પહોંચી શકાતું નથી.


Lexical analysis involves breaking the input into tokens.

લેક્સિકલ વિશ્લેષણમાં ઇનપુટને ટોકન્સમાં વિભાજીત કરવાનો સમાવેશ થાય છે.


The lexer generator creates a DFA for each token definition.

લેક્સર જનરેટર દરેક ટોકન વ્યાખ્યા માટે એક DFA બનાવે છે.


We can decide equivalence of regular expressions by converting both to minimal DFAs.

બંનેને ન્યૂનતમ DFAs માં રૂપાંતરિત કરીને આપણે નિયમિત અભિવ્યક્તિઓની સમકક્ષતા નક્કી કરી શકીએ છીએ.


The principle of the longest match takes precedence over the order of definition of tokens.

સૌથી લાંબી મેચનો સિદ્ધાંત ટોકન્સની વ્યાખ્યાના ક્રમ કરતાં અગ્રતા લે છે.


A DFA can be run in time k * |v|, where |v| is the length of the input string.

DFA ને સમય k * |v| માં ચલાવી શકાય છે, જ્યાં |v| એ ઇનપુટ સ્ટ્રિંગની લંબાઈ છે.


The algorithm will treat these differently and may hence decree a group to be inconsistent even though it is not.

અલ્ગોરિધમ આને અલગ રીતે વર્તે છે અને તેથી એક જૂથને અસંગત જાહેર કરી શકે છે, ભલે તે ન હોય.


સંયુક્ત NFA ને DFA માં રૂપાંતરિત કરવામાં આવે છે.


The program is designed to analyze text.

પ્રોગ્રામ ટેક્સ્ટનું વિશ્લેષણ કરવા માટે રચાયેલ છે.


Please provide the necessary information.

કૃપા કરીને જરૂરી માહિતી આપો.


આજે હવામાન સુખદ છે.


હું એક નવી ભાષા શીખી રહ્યો છું.


The company announced its quarterly results.

કંપનીએ તેના ત્રિમાસિક પરિણામોની જાહેરાત કરી.


The government is implementing new policies.

સરકાર નવી નીતિઓ લાગુ કરી રહી છે.


The economy is showing signs of recovery.

અર્થતંત્ર પુનઃપ્રાપ્તિના સંકેતો દર્શાવે છે.


The team is working hard to achieve its goals.

ટીમ તેના લક્ષ્યોને હાંસલ કરવા સખત મહેનત કરી રહી છે.


The project requires careful planning and execution.

પ્રોજેક્ટને કાળજીપૂર્વક આયોજન અને અમલની જરૂર છે.


The research findings were published in a leading journal.

સંશોધન તારણો અગ્રણી જર્નલમાં પ્રકાશિત થયા હતા.


The program checks the input for validity.

પ્રોગ્રામ ઇનપુટની માન્યતા ચકાસે છે.


A nonterminal on the right-hand side is handled by calling the corresponding function.

જમણી બાજુએ આવેલ નોનટર્મિનલને અનુરૂપ ફંક્શનને બોલાવીને હેન્ડલ કરવામાં આવે છે.


The function match takes a symbol as an argument.

મેચ ફંક્શન એક પ્રતીકને દલીલ તરીકે લે છે.


Table-driven LL(1) parsing encodes the selection of productions into a table.

ટેબલ-ડ્રિવન LL(1) પાર્સિંગ પ્રોડક્શનની પસંદગીને ટેબલમાં એન્કોડ કરે છે.


The program uses a stack to perform the parsing.

પ્રોગ્રામ પાર્સિંગ કરવા માટે એક સ્ટેકનો ઉપયોગ કરે છે.


If the table-entry is empty, we report an error.

જો ટેબલ-એન્ટ્રી ખાલી હોય, તો અમે એક ભૂલની જાણ કરીએ છીએ.


The top of the stack contains a terminal.

સ્ટેકની ટોચમાં એક ટર્મિનલ છે.


Conflicts may be caused by ambiguous grammars.

વિરોધાભાસ અસ્પષ્ટ વ્યાકરણને કારણે થઈ શકે છે.


We will look at elimination of left-recursion.

આપણે ડાબી બાજુના પુનરાવર્તનની નાબૂદી જોઈશું.


The grammar is equivalent to the regular expression.

વ્યાકરણ નિયમિત અભિવ્યક્તિની સમકક્ષ છે.


We start by looking at direct left-recursion.

આપણે સીધા ડાબા પુનરાવર્તનથી શરૂઆત કરીએ છીએ.


Indirect left-recursion can have several faces.

પરોક્ષ ડાબા પુનરાવર્તનના ઘણા પાસા હોઈ શકે છે.


If two productions for the same nonterminal begin with the same sequence of symbols, they obviously have overlapping FIRST sets.

જો સમાન નોનટર્મિનલ માટેના બે ઉત્પાદનો સમાન પ્રતીકોના ક્રમથી શરૂ થાય છે, તો તેમની પાસે સ્પષ્ટપણે ઓવરલેપિંગ FIRST સેટ્સ છે.


We rewrite this in such a way that the overlapping productions are made into a single production.

આપણે આને એવી રીતે ફરીથી લખીએ છીએ કે ઓવરલેપિંગ પ્રોડક્શન્સને એક જ પ્રોડક્શનમાં બનાવવામાં આવે.


The equivalent unambiguous grammar can not easily be rewritten to a form suitable for LL(1).

સમકક્ષ અસ્પષ્ટ વ્યાકરણને સરળતાથી LL(1) માટે યોગ્ય સ્વરૂપમાં ફરીથી લખી શકાતું નથી.


અસ્પષ્ટતા દૂર કરો.


LR parsers accept a much larger class of grammars than LL(1) parsing.

LR પાર્સર્સ LL(1) પાર્સિંગ કરતાં વ્યાકરણના મોટા વર્ગને સ્વીકારે છે.


LR parsers are table-driven bottom-up parsers.

LR પાર્સર્સ ટેબલ-ડ્રિવન બોટમ-અપ પાર્સર્સ છે.


The stack holds the right-hand-side symbols.

સ્ટેક જમણી બાજુના પ્રતીકો ધરાવે છે.


If the input text does not conform to the grammar, there will be an error.

જો ઇનપુટ ટેક્સ્ટ વ્યાકરણને અનુરૂપ ન હોય, તો ભૂલ આવશે.


The syntax analysis phase of a compiler constructs a syntax tree.

એક કમ્પાઇલરનો સિન્ટેક્સ વિશ્લેષણ તબક્કો સિન્ટેક્સ ટ્રી બનાવે છે.


Predictive parsers always build the syntax tree from the root down.

પ્રિડિક્ટિવ પાર્સર્સ હંમેશા સિન્ટેક્સ ટ્રીને મૂળથી નીચે સુધી બનાવે છે.


We will look into SLR parsing in the next sections.

આપણે પછીના વિભાગોમાં SLR પાર્સિંગ જોઈશું.


The parser's job is to choose the production.

પાર્સરનું કામ ઉત્પાદન પસંદ કરવાનું છે.


If the input string is the one shown in the bottom line.

જો ઇનપુટ સ્ટ્રિંગ નીચેની લાઇન માં બતાવેલ છે.


We can not immediately choose a production based on this.

આના આધારે આપણે તરત જ કોઈ ઉત્પાદન પસંદ કરી શકતા નથી.


When all the bs are read and we are at the following c.

જ્યારે બધા 'બી' વાંચવામાં આવે છે અને આપણે નીચેના 'સી' પર હોઈએ છીએ.


If we can always choose a unique production based on the next input symbol, we are able to do predictive parsing without backtracking.

જો આપણે હંમેશા આગામી ઇનપુટ પ્રતીક પર આધારિત એક અનન્ય ઉત્પાદન પસંદ કરી શકીએ, તો આપણે બેકટ્રેકિંગ વિના પ્રિડિક્ટિવ પાર્સિંગ કરવામાં સક્ષમ છીએ.


We define the function FIRST, which returns the set of symbols.

આપણે ફંક્શન FIRST ને વ્યાખ્યાયિત કરીએ છીએ, જે પ્રતીકોનો સમૂહ પરત કરે છે.


A sequence of grammar symbols indicates whether or not that sequence can derive the empty string.

વ્યાકરણના પ્રતીકોનો ક્રમ એ સૂચવે છે કે તે ક્રમ ખાલી સ્ટ્રિંગ મેળવી શકે છે કે નહીં.


સમીકરણો તદ્દન સ્વાભાવિક છે.


આપણે આને લગભગ એ જ રીતે હલ કરી શકીએ છીએ.


We initially assume that Nullable is false for all nonterminals.

શરૂઆતમાં, આપણે ધારીએ છીએ કે બધા નોનટર્મિનલ્સ માટે નલબલ ખોટું છે.


The fixed-point iteration is shown in figure 3.14.

ફિક્સ્ડ-પોઇન્ટ પુનરાવર્તન આકૃતિ 3.14 માં બતાવવામાં આવ્યું છે.


The only nontrivial equation is that for αβ.

માત્ર બિન-તુચ્છ સમીકરણ αβ માટે છે.


When working with grammars by hand, it is usually quite easy.

જ્યારે જાતે વ્યાકરણ સાથે કામ કરો છો, ત્યારે તે સામાન્ય રીતે ખૂબ જ સરળ હોય છે.


We are now ready to construct predictive parsers.

હવે આપણે પ્રિડિક્ટિવ પાર્સર્સ બનાવવા માટે તૈયાર છીએ.


We can get unique choice of production even for some ambiguous grammars.

આપણે અમુક અસ્પષ્ટ વ્યાકરણ માટે પણ ઉત્પાદનની અનન્ય પસંદગી મેળવી શકીએ છીએ.


Predictive parsing makes a leftmost derivation.

પ્રિડિક્ટિવ પાર્સિંગ ડાબી બાજુનું વ્યુત્પન્ન બનાવે છે.


We introduce FOLLOW sets for nonterminals.

આપણે નોનટર્મિનલ્સ માટે FOLLOW સેટ્સ રજૂ કરીએ છીએ.


where φ is the regular expression for the empty language (see exercise 2.10).

જ્યાં φ ખાલી ભાષા માટેનું નિયમિત અભિવ્યક્તિ છે (વ્યાયામ 2.10 જુઓ).


a) Complete the definition of non empty by replacing the occurrences of “...” in the rules above by expressions similar to those shown in the rules for ε and s|t.

a) ઉપરના નિયમોમાં “...” ની જગ્યાએ ε અને s|t માટેના નિયમોમાં દર્શાવેલ અભિવ્યક્તિઓ જેવી જ અભિવ્યક્તિઓ મૂકીને નોન એમ્પ્ટીની વ્યાખ્યા પૂર્ણ કરો.


b) Use this definition to find non empty(a * b * ).

b) નોન એમ્પ્ટી(a * b * ) શોધવા માટે આ વ્યાખ્યાનો ઉપયોગ કરો.


Exercise 2.16 If L is a regular language, so is the set of all prefixes of strings in L (see section 2.10.3).

વ્યાયામ 2.16 જો L એક નિયમિત ભાષા છે, તો L માંની સ્ટ્રિંગ્સના તમામ પ્રીફિક્સનો સમૂહ પણ તે જ છે (વિભાગ 2.10.3 જુઓ).


So we should be able to transform a regular expression for L into a regular expression for the set of all prefixes of strings in L.

તેથી, આપણે L માટેની નિયમિત અભિવ્યક્તિને L માંની સ્ટ્રિંગ્સના તમામ પ્રીફિક્સના સમૂહ માટેની નિયમિત અભિવ્યક્તિમાં રૂપાંતરિત કરી શકવા જોઈએ.


We want to do this with a function prefixes that is recursive over the structure of the regular expression for L, i.e., of the form:

આપણે આ એક ફંક્શન પ્રીફિક્સ સાથે કરવા માંગીએ છીએ જે L માટેની નિયમિત અભિવ્યક્તિની રચના પર પુનરાવર્તિત છે, એટલે કે, આ સ્વરૂપનું:


પ્રીફિક્સ(ε) = ε


prefixes(a) = a? where a is an alphabet symbol

પ્રીફિક્સ(a) = a? જ્યાં a એક મૂળાક્ષર પ્રતીક છે


પ્રીફિક્સ(s|t) = પ્રીફિક્સ(s)|પ્રીફિક્સ(t)


પ્રીફિક્સ(s t) = ...


પ્રીફિક્સ(s * ) = ...


પ્રીફિક્સ(s + ) = ...


a) Complete the definition of prefixes by replacing the occurrences of “...” in the rules above by expressions similar to those shown in the rules for ε, a and s|t.

a) ઉપરના નિયમોમાં “...” ની જગ્યાએ ε, a અને s|t માટેના નિયમોમાં દર્શાવેલ અભિવ્યક્તિઓ જેવી જ અભિવ્યક્તિઓ મૂકીને પ્રીફિક્સની વ્યાખ્યા પૂર્ણ કરો.


b) Use this definition to find prefixes(ab * c).

b) પ્રીફિક્સ(ab * c) શોધવા માટે આ વ્યાખ્યાનો ઉપયોગ કરો.


Chapter 3 Syntax Analysis 3.1 Introduction Where lexical analysis splits the input into tokens, the purpose of syntax analysis (also known as parsing) is to recombine these tokens.

પ્રકરણ 3 સિન્ટેક્સ વિશ્લેષણ 3.1 પરિચય જ્યાં લેક્સિકલ વિશ્લેષણ ઇનપુટને ટોકન્સમાં વિભાજિત કરે છે, ત્યાં સિન્ટેક્સ વિશ્લેષણ (જેને પાર્સિંગ તરીકે પણ ઓળખવામાં આવે છે) નો હેતુ આ ટોકન્સને ફરીથી જોડવાનો છે.


Not back into a list of characters, but into something that reflects the structure of the text.

પાછા અક્ષરોની સૂચિમાં નહીં, પરંતુ કંઈક એવું કે જે ટેક્સ્ટની રચનાને પ્રતિબિંબિત કરે છે.


This “something” is typically a data structure called the syntax tree of the text.

આ “કંઈક” સામાન્ય રીતે ડેટા સ્ટ્રક્ચર છે જેને ટેક્સ્ટનું સિન્ટેક્સ ટ્રી કહેવામાં આવે છે.


As the name indicates, this is a tree structure.

જેમ નામ સૂચવે છે, આ એક વૃક્ષ માળખું છે.


The leaves of this tree are the tokens found by the lexical analysis, and if the leaves are read from left to right, the sequence is the same as in the input text.

આ વૃક્ષના પાંદડા લેક્સિકલ વિશ્લેષણ દ્વારા મળેલા ટોકન્સ છે, અને જો પાંદડા ડાબેથી જમણે વાંચવામાં આવે છે, તો ક્રમ ઇનપુટ ટેક્સ્ટમાં સમાન છે.


Hence, what is important in the syntax tree is how these leaves are combined to form the structure of the tree and how the interior nodes of the tree are labelled.

તેથી, સિન્ટેક્સ ટ્રીમાં શું મહત્વનું છે તે એ છે કે આ પાંદડા વૃક્ષની રચના બનાવવા માટે કેવી રીતે જોડાયેલા છે અને વૃક્ષના આંતરિક નોડ્સને કેવી રીતે લેબલ કરવામાં આવે છે.


At this point, it may stop reading the input or it may attempt continued lexical analysis.

આ બિંદુએ, તે ઇનપુટ વાંચવાનું બંધ કરી શકે છે અથવા તે સતત લેક્સિકલ વિશ્લેષણ કરવાનો પ્રયાસ કરી શકે છે.


The purpose of the latter approach is to try finding further lexical errors in the same input.

બાદના અભિગમનો હેતુ એ જ ઇનપુટમાં વધુ લેક્સિકલ ભૂલો શોધવાનો પ્રયાસ કરવાનો છે.


Some of these subsequent errors may, however, not be real errors but may be caused by the lexer not skipping enough characters.

જો કે, આમાંની કેટલીક અનુગામી ભૂલો વાસ્તવિક ભૂલો ન હોઈ શકે, પરંતુ લેક્સર દ્વારા પૂરતા અક્ષરોને છોડવામાં ન આવવાને કારણે થઈ શકે છે.


If, for example, the start of a comment is ill-formed, the lexer may try to interpret the contents of the comment as individual tokens.

ઉદાહરણ તરીકે, જો ટિપ્પણીની શરૂઆત ખરાબ રીતે રચાયેલી હોય, તો લેક્સર ટિપ્પણીની સામગ્રીને વ્યક્તિગત ટોકન્સ તરીકે અર્થઘટન કરવાનો પ્રયાસ કરી શકે છે.


When the lexer finds an error, the consumer of the tokens that the lexer produces can not usually itself produce a valid result.

જ્યારે લેક્સર કોઈ ભૂલ શોધે છે, ત્યારે લેક્સર દ્વારા ઉત્પાદિત ટોકન્સનો ગ્રાહક સામાન્ય રીતે પોતે જ માન્ય પરિણામ ઉત્પન્ન કરી શકતો નથી.


However, the compiler may try to find other errors in the remaining input, again allowing the user to find several errors in one edit-compile cycle.

જો કે, કમ્પાઇલર બાકીના ઇનપુટમાં અન્ય ભૂલો શોધવાનો પ્રયાસ કરી શકે છે, ફરીથી વપરાશકર્તાને એક સંપાદન-સંકલન ચક્રમાં ઘણી ભૂલો શોધવાની મંજૂરી આપે છે.


Nevertheless, such error recovery has, when the input is so large that restarting the lexer from the start of input incurs a considerable time overhead, proven to be an aid in productivity.

તેમ છતાં, આવી ભૂલ પુનઃપ્રાપ્તિ, જ્યારે ઇનપુટ એટલું મોટું હોય છે કે ઇનપુટની શરૂઆતથી લેક્સરને ફરીથી શરૂ કરવાથી નોંધપાત્ર સમયનો ઓવરહેડ થાય છે, ત્યારે ઉત્પાદકતામાં સહાયક સાબિત થયું છે.


A lexer generator will typically use a notation for regular expressions similar to the one described in section 2.1.

લેક્સર જનરેટર સામાન્ય રીતે નિયમિત અભિવ્યક્તિઓ માટે વિભાગ 2.1 માં વર્ણવેલ સમાન સંકેતનો ઉપયોગ કરશે.


For example, an*intended to match a multiplication symbol in the input is distinguished from an*used to denote repetition by quoting the*symbol,e.g.as‘*‘.

ઉદાહરણ તરીકે, ઇનપુટમાં ગુણાકારના પ્રતીક સાથે મેળ ખાવા માટેનો ઇરાદો ધરાવતો * પ્રતીકને પુનરાવર્તન દર્શાવવા માટે વપરાતા * થી અલગ પાડવામાં આવે છે, દા.ત. ‘*‘.


Additionally, some lexer generators extend regular expressions in various ways,e.g., allowing a set of characters to be specified by listing the characters that arenotin the set.

વધુમાં, કેટલાક લેક્સર જનરેટર નિયમિત અભિવ્યક્તિઓને વિવિધ રીતે વિસ્તૃત કરે છે, દા.ત., અક્ષરોના સમૂહને તે અક્ષરોની સૂચિબદ્ધ કરીને સ્પષ્ટ કરવાની મંજૂરી આપે છે જે સમૂહમાં નથી.


The input to the lexer generator will normally contain a list of regular expres- sions that each denote a token.

લેક્સર જનરેટરનું ઇનપુટ સામાન્ય રીતે નિયમિત અભિવ્યક્તિઓની સૂચિ ધરાવશે જે દરેક ટોકનને દર્શાવે છે.


Each of these regular expressions has an associated action.

આમાંની દરેક નિયમિત અભિવ્યક્તિ સાથે સંકળાયેલ ક્રિયા છે.


The action describes what is passed on to the consumer (e.g., the parser), typically an element from a token data type.

ક્રિયા વર્ણવે છે કે ગ્રાહક (દા.ત., પાર્સર) ને શું પસાર કરવામાં આવે છે, સામાન્ય રીતે ટોકન ડેટા પ્રકારનું તત્વ.


Normally, the lexer generator requires white-space and comments to be de- fined by regular expressions.

સામાન્ય રીતે, લેક્સર જનરેટરને વ્હાઇટ-સ્પેસ અને ટિપ્પણીઓને નિયમિત અભિવ્યક્તિઓ દ્વારા વ્યાખ્યાયિત કરવાની જરૂર છે.


An action can be more than just returning a token.

એક ક્રિયા ફક્ત ટોકન પરત કરવા કરતાં વધુ હોઈ શકે છે.


If, for example, a language has a large number of keywords, then a DFA that recognises all of these individu- ally can be fairly large.

ઉદાહરણ તરીકે, જો કોઈ ભાષામાં મોટી સંખ્યામાં કીવર્ડ્સ હોય, તો પછી એક DFA જે આ બધાને વ્યક્તિગત રીતે ઓળખે છે તે એકદમ મોટું હોઈ શકે છે.


In such cases, the keywords are not described as separate regular expressions in the lexer definition but instead treated as special cases of the identifier token.

આવા કિસ્સાઓમાં, કીવર્ડ્સને લેક્સર વ્યાખ્યામાં અલગ નિયમિત અભિવ્યક્તિઓ તરીકે વર્ણવવામાં આવતા નથી, પરંતુ તેના બદલે ઓળખકર્તા ટોકનના વિશેષ કેસો તરીકે ગણવામાં આવે છે.


Another use of non-trivial lexer actions is for nested comments.

બિન-તુચ્છ લેક્સર ક્રિયાઓનો બીજો ઉપયોગ નેસ્ટેડ ટિપ્પણીઓ માટે છે.


In principle, a regular expression (or finite automaton) cannot recognise arbitrarily nested com- ments.

સિદ્ધાંતમાં, નિયમિત અભિવ્યક્તિ (અથવા મર્યાદિત ઓટોમેટોન) મનસ્વી રીતે નેસ્ટેડ ટિપ્પણીઓને ઓળખી શકતું નથી.


Sometimes lexer generators allow several different starting points.

કેટલીકવાર લેક્સર જનરેટર ઘણાં વિવિધ પ્રારંભિક બિંદુઓની મંજૂરી આપે છે.


Adding the epsilon transitions as arrows in figure 3.26 would produce a very cluttered picture.

આકૃતિ 3.26 માં એરો તરીકે એપ્સિલોન સંક્રમણો ઉમેરવાથી ખૂબ જ ગૂંચવણભર્યું ચિત્ર બનશે.


But this is for presentation purposes only: The transi- tions have the same meaning regardless of whether they are shown in the picture of the DFA or in the table.

પરંતુ આ ફક્ત પ્રસ્તુતિના હેતુ માટે છે: સંક્રમણોનો અર્થ DFA ના ચિત્રમાં કે કોષ્ટકમાં બતાવવામાં આવે છે કે કેમ તે ધ્યાનમાં લીધા વિના સમાન છે.


Together with these epsilon-transitions, the NFAs in figure 3.26 form a single, combined NFA.

આ એપ્સિલોન-સંક્રમણો સાથે, આકૃતિ 3.26 માં NFAs એકલ, સંયુક્ત NFA બનાવે છે.


This NFA has the starting state A (the starting state of the NFA for the added start production) and an accepting state for each production in the grammar.

આ NFA માં શરૂઆતની સ્થિતિ A છે (ઉમેરાયેલ શરૂઆતની પ્રોડક્શન માટે NFA ની શરૂઆતની સ્થિતિ) અને વ્યાકરણમાં દરેક પ્રોડક્શન માટે સ્વીકૃતિની સ્થિતિ છે.


We must now convert this NFA into a DFA using the subset construc- tion shown in section 2.5.

હવે આપણે વિભાગ 2.5 માં બતાવેલ પેટા સમૂહ બાંધકામનો ઉપયોગ કરીને આ NFA ને DFA માં કન્વર્ટ કરવું આવશ્યક છે.


Instead of showing the resulting DFA graphically, we construct a table where transitions on terminals are shown asshiftactions and tran- sitions on nonterminals asgoactions.

પરિણામી DFA ને ગ્રાફિકલી બતાવવાને બદલે, અમે એક કોષ્ટક બનાવીએ છીએ જ્યાં ટર્મિનલ્સ પરના સંક્રમણોને શિફ્ટક્રિયાઓ તરીકે અને નોનટર્મિનલ્સ પરના સંક્રમણોને ગોક્રિયાઓ તરીકે દર્શાવવામાં આવે છે.


Figure 3.28 shows the DFA constructed from the NFA made by adding epsilon-transitions in 3.27 to figure 3.26.

આકૃતિ 3.28 એ NFA માંથી બનેલ DFA દર્શાવે છે જે આકૃતિ 3.26 માં 3.27 માં એપ્સિલોન-સંક્રમણો ઉમેરીને બનાવવામાં આવેલ છે.


The sets of NFA states that form each DFA state is shown in the second column of the table in figure 3.28.

દરેક DFA સ્થિતિ બનાવતા NFA સ્થિતિઓના સમૂહો આકૃતિ 3.28 માં કોષ્ટકના બીજા સ્તંભમાં દર્શાવેલ છે.


We will need these below for addingreduceand acceptactions, but once this is done, we will not need them anymore, so we can remove them from the final table.

આપણે નીચે reduce અને accept ક્રિયાઓ ઉમેરવા માટે આની જરૂર પડશે, પરંતુ એકવાર આ થઈ જાય, પછી આપણે તેની વધુ જરૂર રહેશે નહીં, તેથી અમે તેને અંતિમ કોષ્ટકમાંથી દૂર કરી શકીએ છીએ.


To addreduceandacceptactions, we first need to compute theFOLLOWsets for each nonterminal, as described in section 3.10.

reduce અને accept ક્રિયાઓ ઉમેરવા માટે, આપણે પહેલા દરેક નોનટર્મિનલ માટે FOLLOW સમૂહોની ગણતરી કરવાની જરૂર છે, જેમ કે વિભાગ 3.10 માં વર્ણવવામાં આવ્યું છે.


For purpose of calculatingFOL- LOW, we add yet another extra start production:T ′′ →T ′ $, to handle end-of-text conditions as described in section 3.10.

FOL-LOW ની ગણતરી કરવાના હેતુ માટે, અમે હજી એક વધારાનું પ્રારંભિક ઉત્પાદન ઉમેરીએ છીએ: T ′′ → T ′ $, વિભાગ 3.10 માં વર્ણવ્યા પ્રમાણે, ટેક્સ્ટની અંતિમ સ્થિતિઓને હેન્ડલ કરવા માટે.


This gives us the following result: FOLLOW(T ′ ) ={$} FOLLOW(T) ={c,$} FOLLOW(R) ={c,$}

આ આપણને નીચેનું પરિણામ આપે છે: FOLLOW(T ′ ) ={$} FOLLOW(T) ={c,$} FOLLOW(R) ={c,$}


We then addreduceactions by the following rule: If a DFA statescontains the accepting NFA state for a productionp:N→α, we addreduce pas action toson 94CHAPTER 3. SYNTAX ANALYSIS DFANFATransitions statestatesa b cTR 0A, C, E, I, Js3s4g1g2 1B 2D 3F, C, E, I, Js3s4g5g2 4K, I, Js4g6 5Gs7 6L 7H Figure 3.28: SLR DFA for grammar 3.9 all symbols inFOLLOW(N).

પછી અમે નીચેના નિયમ દ્વારા reduce ક્રિયાઓ ઉમેરીએ છીએ: જો DFA સ્થિતિમાં પ્રોડક્શન p:N→α માટે સ્વીકાર્ય NFA સ્થિતિ છે, તો અમે 94CHAPTER 3. SYNTAX ANALYSIS DFANFATransitions statestatesa b cTR 0A, C, E, I, Js3s4g1g2 1B 2D 3F, C, E, I, Js3s4g5g2 4K, I, Js4g6 5Gs7 6L 7H આકૃતિ 3.28: વ્યાકરણ 3.9 માં SLR DFA માં તમામ પ્રતીકોમાં FOLLOW(N) તરીકે reduce pas ક્રિયા ઉમેરીએ છીએ.


Reduction on production 0 (the extra start production that was added before constructing the NFA) is written asaccept.

પ્રોડક્શન 0 (વધારાનું પ્રારંભિક પ્રોડક્શન જે NFA બનાવતા પહેલા ઉમેરવામાં આવ્યું હતું) પર ઘટાડો accept તરીકે લખાયેલ છે.


In figure 3.28, state 0 contains NFA state I, which accepts production 3.

આકૃતિ 3.28 માં, સ્થિતિ 0 માં NFA સ્થિતિ I છે, જે પ્રોડક્શન 3 સ્વીકારે છે.


Hence, we add r3 as actions at the symbolscand $ (as these are inFOLLOW(R)).

આમ, અમે પ્રતીકો c અને $ પર r3 ક્રિયાઓ ઉમેરીએ છીએ (કારણ કે આ FOLLOW(R) માં છે).


State 1 contains NFA state B, which accepts production 0.

સ્થિતિ 1 માં NFA સ્થિતિ B છે, જે પ્રોડક્શન 0 સ્વીકારે છે.


We add this at the symbol $ (FOLLOW(T ′ )).

આપણે આ પ્રતીક $ (FOLLOW(T ′ )) પર ઉમેરીએ છીએ.


As noted above, this is written asaccept(abbreviated to “a”).

ઉપર જણાવ્યા મુજબ, આને accept (ટૂંકમાં “a”) તરીકે લખવામાં આવે છે.


In the same way, we add reduce actions to state 3, 4, 6 and 7.

તે જ રીતે, અમે સ્થિતિ 3, 4, 6 અને 7 માં reduce ક્રિયાઓ ઉમેરીએ છીએ.


The simplest way to execute a program is interpretation.

પ્રોગ્રામ ચલાવવાનો સૌથી સરળ રસ્તો એ અર્થઘટન છે.


Interpretation is done by a program called an interpreter.

અર્થઘટન એક પ્રોગ્રામ દ્વારા કરવામાં આવે છે જેને ઇન્ટરપ્રીટર કહેવામાં આવે છે.


This is similar to how a human evaluates a mathematical expression.

આ તે રીતે સમાન છે જે રીતે કોઈ માનવી ગાણિતિક અભિવ્યક્તિનું મૂલ્યાંકન કરે છે.


We insert the values of variables in the expression and evaluate it bit by bit.

આપણે અભિવ્યક્તિમાં ચલોના મૂલ્યો દાખલ કરીએ છીએ અને તેનું બિટ બાય બિટ મૂલ્યાંકન કરીએ છીએ.


An interpreter will keep the formula unchanged and use a symbol table.

એક ઇન્ટરપ્રીટર ફોર્મ્યુલાને યથાવત રાખશે અને સિમ્બોલ ટેબલનો ઉપયોગ કરશે.


The interpreter is a function that takes an abstract syntax tree and a symbol table.

ઇન્ટરપ્રીટર એક એવું કાર્ય છે જે અમૂર્ત સિન્ટેક્સ ટ્રી અને સિમ્બોલ ટેબલ લે છે.


The function can call itself recursively on parts of the abstract syntax tree.

કાર્ય અમૂર્ત સિન્ટેક્સ ટ્રીના ભાગો પર પોતાને પુનરાવર્તિત રીતે બોલાવી શકે છે.


This process can be extended to also handle statements and declarations.

આ પ્રક્રિયાને વિધાનો અને ઘોષણાઓને પણ સંભાળવા માટે વિસ્તૃત કરી શકાય છે.


Some input and output may be done as side effects by the interpreter.

કેટલાક ઇનપુટ અને આઉટપુટ ઇન્ટરપ્રીટર દ્વારા સાઇડ ઇફેક્ટ તરીકે કરી શકાય છે.


We will in this chapter assume that the symbol tables are persistent.

આપણે આ પ્રકરણમાં ધારીશું કે સિમ્બોલ કોષ્ટકો કાયમી છે.


An intepreter will typically consist of one function per syntactic category.

એક ઇન્ટરપ્રીટર સામાન્ય રીતે દરેક સિન્ટેક્ટિક કેટેગરી માટે એક કાર્ય ધરાવે છે.


Each function will take as arguments an abstract syntax tree.

દરેક કાર્ય દલીલો તરીકે અમૂર્ત સિન્ટેક્સ ટ્રી લેશે.


Each function will return one or more results.

દરેક કાર્ય એક અથવા વધુ પરિણામો આપશે.


We will use a small language to show the principles of interpretation.

અમે અર્થઘટનના સિદ્ધાંતો બતાવવા માટે એક નાની ભાષાનો ઉપયોગ કરીશું.


The language is a first-order functional language with recursive definitions.

આ ભાષા પુનરાવર્તિત વ્યાખ્યાઓ સાથેની પ્રથમ-ક્રમની કાર્યાત્મક ભાષા છે.


સિન્ટેક્સ વ્યાકરણ 5.1 માં આપવામાં આવ્યું છે.


A program is a list of function declarations.

એક પ્રોગ્રામ એ ફંક્શન ઘોષણાઓની સૂચિ છે.


Functions and variables have separate name spaces.

કાર્યો અને ચલોમાં અલગ નામની જગ્યાઓ છે.


The body of a function is an expression.

એક ફંક્શનનું બોડી એક અભિવ્યક્તિ છે.


Execution of the program is by calling this function with the input.

પ્રોગ્રામનું અમલ ઇનપુટ સાથે આ ફંક્શનને બોલાવીને થાય છે.


The compiler translates high-level language code into machine code.

કમ્પાઇલર ઉચ્ચ-સ્તરની ભાષાના કોડને મશીન કોડમાં અનુવાદિત કરે છે.


Type checking ensures that the program's data types are used correctly.

ટાઈપ ચેકિંગ એ સુનિશ્ચિત કરે છે કે પ્રોગ્રામના ડેટા પ્રકારોનો યોગ્ય રીતે ઉપયોગ થાય છે.


The abstract syntax tree is used during the checking phase.

ચકાસણી તબક્કા દરમિયાન અમૂર્ત સિન્ટેક્સ ટ્રીનો ઉપયોગ થાય છે.


Synthesized attributes are passed upwards in the syntax tree.

સિન્થેસાઇઝ્ડ એટ્રિબ્યુટ્સ સિન્ટેક્સ ટ્રીમાં ઉપરની તરફ પસાર થાય છે.


Inherited attributes are passed downwards in the syntax tree.

વારસાગત લક્ષણો સિન્ટેક્સ ટ્રીમાં નીચેની તરફ પસાર થાય છે.


Symbol tables bind variables and functions to their types.

પ્રતીક કોષ્ટકો ચલો અને કાર્યોને તેમના પ્રકારો સાથે બાંધે છે.


Function types are written as a parenthesized list of argument types.

કાર્ય પ્રકારોને દલીલ પ્રકારોની કૌંસિત સૂચિ તરીકે લખવામાં આવે છે.


The type checker function uses a notation similar to the concrete syntax.

ટાઈપ ચેકર ફંક્શન કોંક્રિટ સિન્ટેક્સ જેવી જ નોટેશનનો ઉપયોગ કરે છે.


Error reporting allows the type checker to continue and report more than one error.

ભૂલની જાણ કરવાથી ટાઈપ ચેકર ચાલુ રહી શકે છે અને એક કરતાં વધુ ભૂલોની જાણ કરી શકે છે.


એક સંખ્યાનો પ્રકાર int છે.


The type of a variable is found by looking its name up in the symbol table.

ચલનો પ્રકાર તેના નામની પ્રતીક કોષ્ટકમાં શોધ કરીને મળી આવે છે.


A plus-expression requires both arguments to be integers.

પ્લસ-એક્સપ્રેશનને બંને દલીલો પૂર્ણાંકો હોવાની જરૂર છે.


Comparison requires that the arguments have the same type.

સરખામણી માટે જરૂરી છે કે દલીલો સમાન પ્રકારની હોય.


In a conditional expression, the condition must be of type bool.

શરતી અભિવ્યક્તિમાં, સ્થિતિ bool પ્રકારની હોવી જોઈએ.


At a function call, the function name is looked up in the function environment.

કાર્ય કૉલ પર, કાર્યના નામની કાર્ય પર્યાવરણમાં શોધ કરવામાં આવે છે.


A let-expression declares a new variable.

એક લેટ-એક્સપ્રેશન એક નવું ચલ જાહેર કરે છે.


The type of the body must match the declared result type of the function.

શરીરનો પ્રકાર કાર્યના જાહેર પરિણામ પ્રકાર સાથે મેળ ખાવું જોઈએ.


A program is deemed type correct if all the functions are type correct.

જો બધા કાર્યો પ્રકાર સાચા હોય તો પ્રોગ્રામને પ્રકાર સાચો માનવામાં આવે છે.


Intermediate code is a stepping-stone between the high-level language and machine code.

મધ્યવર્તી કોડ એ ઉચ્ચ-સ્તરની ભાષા અને મશીન કોડ વચ્ચેનું એક પગલું છે.


Using an intermediate language has several advantages.

મધ્યવર્તી ભાષાનો ઉપયોગ કરવાના ઘણા ફાયદા છે.


Context-free languages are capable of such counting, essentially using the stack for this purpose.

સંદર્ભ-મુક્ત ભાષાઓ આવી ગણતરી કરવામાં સક્ષમ છે, મૂળભૂત રીતે આ હેતુ માટે સ્ટેકનો ઉપયોગ કરે છે.


Even so, there are limitations: A context-free language can only keep count of one thing at a time.

તેમ છતાં, મર્યાદાઓ છે: સંદર્ભ-મુક્ત ભાષા એક સમયે ફક્ત એક જ વસ્તુની ગણતરી કરી શકે છે.


Context-free languages are, as regular languages, closed under union.

સંદર્ભ-મુક્ત ભાષાઓ, નિયમિત ભાષાઓની જેમ, સંઘ હેઠળ બંધ છે.


Context-free languages are also closed under prefix, suffix, subsequence and reversal.

સંદર્ભ-મુક્ત ભાષાઓ પૂર્વસર્ગ, પ્રત્યય, અનુક્રમ અને વિપરીતતા હેઠળ પણ બંધ છે.


However, context-free languages are not closed under intersection or complement.

જો કે, સંદર્ભ-મુક્ત ભાષાઓ આંતરછેદ અથવા પૂરક હેઠળ બંધ નથી.


Context-free grammars were first proposed as a notation for describing natural languages.

સંદર્ભ-મુક્ત વ્યાકરણો સૌપ્રથમ કુદરતી ભાષાઓનું વર્ણન કરવા માટેના સંકેત તરીકે પ્રસ્તાવિત કરવામાં આવ્યા હતા.


The qualifier “context-free” distinguishes this notation from the other two grammar notations.

ક્વોલિફાયર “સંદર્ભ-મુક્ત” આ સંકેતને અન્ય બે વ્યાકરણ સંકેતોથી અલગ પાડે છે.


Context-free grammars are actually too weak to describe natural languages.

સંદર્ભ-મુક્ત વ્યાકરણો વાસ્તવમાં કુદરતી ભાષાઓનું વર્ણન કરવા માટે ખૂબ જ નબળા છે.


Since then, variants of this notation has been used for defining or describing almost all programming languages.

ત્યારથી, આ સંકેતના પ્રકારોનો ઉપયોગ લગભગ તમામ પ્રોગ્રામિંગ ભાષાઓને વ્યાખ્યાયિત કરવા અથવા વર્ણવવા માટે કરવામાં આવે છે.


Most parser generators are based on LALR(1) parsing, but a few use LL(1) parsing.

મોટાભાગના પાર્સર જનરેટર LALR(1) પાર્સિંગ પર આધારિત છે, પરંતુ થોડા LL(1) પાર્સિંગનો ઉપયોગ કરે છે.


“The Dragon Book” tells more about parsing methods than the present book.

“ધ ડ્રેગન બુક” આ પુસ્તક કરતાં પાર્સિંગ પદ્ધતિઓ વિશે વધુ માહિતી આપે છે.


Several textbooks describe properties of context-free languages.

કેટલાક પાઠ્યપુસ્તકો સંદર્ભ-મુક્ત ભાષાઓના ગુણધર્મોનું વર્ણન કરે છે.


The methods presented here for rewriting grammars based on operator precedence uses only infix operators.

ઓપરેટર અગ્રતાના આધારે વ્યાકરણોને ફરીથી લખવા માટે અહીં રજૂ કરાયેલી પદ્ધતિઓ ફક્ત ઇન્ફિક્સ ઓપરેટર્સનો ઉપયોગ કરે છે.


If prefix or postfix operators have higher precedence than all infix operators, the method presented here will work.

જો પૂર્વસર્ગ અથવા પોસ્ટફિક્સ ઓપરેટર્સમાં તમામ ઇન્ફિક્સ ઓપરેટર્સ કરતાં વધુ અગ્રતા હોય, તો અહીં રજૂ કરાયેલી પદ્ધતિ કામ કરશે.


An important concept in programming languages is the ability to name objects such as variables, functions and types.

પ્રોગ્રામિંગ ભાષાઓમાં એક મહત્વપૂર્ણ ખ્યાલ એ ચલો, કાર્યો અને પ્રકારો જેવા પદાર્થોને નામ આપવાની ક્ષમતા છે.


Each such named object will have a declaration, where the name is defined as a synonym for the object.

આવા દરેક નામના પદાર્થમાં એક ઘોષણા હશે, જ્યાં નામ પદાર્થ માટે સમાનાર્થી તરીકે વ્યાખ્યાયિત થયેલ છે.


Each name will also have a number of uses, where the name is used as a reference to the object to which it is bound.

દરેક નામનો ઉપયોગ પણ ઘણી વખત કરવામાં આવશે, જ્યાં નામનો ઉપયોગ તે પદાર્થનો સંદર્ભ તરીકે થાય છે જેની સાથે તે બંધાયેલું છે.


Often, the declaration of a name has a limited scope: a portion of the program where the name will be visible.

ઘણીવાર, નામના ઘોષણામાં મર્યાદિત અવકાશ હોય છે: પ્રોગ્રામનો એક ભાગ જ્યાં નામ દૃશ્યમાન હશે.


Such declarations are called local declarations, whereas a declaration that makes the declared name visible in the entire program is called global.

આવી ઘોષણાઓને સ્થાનિક ઘોષણાઓ કહેવામાં આવે છે, જ્યારે એક ઘોષણા જે જાહેર કરેલા નામ સમગ્ર પ્રોગ્રામમાં દૃશ્યમાન બનાવે છે તેને વૈશ્વિક કહેવામાં આવે છે.


A compiler will need to keep track of names and the objects these are bound to, so that any use of a name will be attributed correctly to its declaration.

એક કમ્પાઇલરને નામો અને તે પદાર્થોનો ટ્રૅક રાખવાની જરૂર પડશે કે જેની સાથે આ બંધાયેલા છે, જેથી નામનો કોઈપણ ઉપયોગ તેની ઘોષણાને યોગ્ય રીતે આભારી હશે.


If translation is done directly, the number of compilers is equal to the product of the number of languages and the number of machines.

જો અનુવાદ સીધો કરવામાં આવે, તો કમ્પાઇલર્સની સંખ્યા ભાષાઓની સંખ્યા અને મશીનોની સંખ્યાના ગુણાકાર જેટલી હશે.


If a common intermediate language is used, one front-end is needed for every language and one back-end is needed for each machine.

જો સામાન્ય મધ્યવર્તી ભાષાનો ઉપયોગ કરવામાં આવે, તો દરેક ભાષા માટે એક ફ્રન્ટ-એન્ડ અને દરેક મશીન માટે એક બેક-એન્ડની જરૂર છે.


This way, there is no need to write a separate back-end for each machine.

આ રીતે, દરેક મશીન માટે અલગ બેક-એન્ડ લખવાની જરૂર નથી.


A compiled program can be distributed in a single intermediate form for all machines.

સંકલિત પ્રોગ્રામને તમામ મશીનો માટે એક જ મધ્યવર્તી સ્વરૂપમાં વિતરિત કરી શકાય છે.


The intermediate form may be more compact than machine code.

મધ્યવર્તી સ્વરૂપ મશીન કોડ કરતાં વધુ કોમ્પેક્ટ હોઈ શકે છે.


Interpreting the intermediate form will in most cases be a lot slower than executing translated code directly.

મધ્યવર્તી સ્વરૂપનું અર્થઘટન મોટાભાગના કિસ્સાઓમાં સીધા અનુવાદિત કોડ ચલાવવા કરતાં ઘણું ધીમું હશે.


Nevertheless, the approach has seen some success, e.g., with Java.

તેમ છતાં, આ અભિગમમાં કેટલીક સફળતા મળી છે, દા.ત., જાવા સાથે.


Some of the speed penalty can be eliminated by translating the intermediate code to machine code immediately before or during execution of the program.

પ્રોગ્રામના અમલ પહેલાં અથવા તે દરમિયાન તરત જ મધ્યવર્તી કોડને મશીન કોડમાં અનુવાદિત કરીને કેટલીક સ્પીડ પેનલ્ટી દૂર કરી શકાય છે.


This hybrid form is called just-in-time compilation and is often used for executing the intermediate code for Java.

આ હાઇબ્રિડ સ્વરૂપને જસ્ટ-ઇન-ટાઇમ કમ્પાઇલેશન કહેવામાં આવે છે અને તેનો ઉપયોગ ઘણીવાર જાવા માટે મધ્યવર્તી કોડ ચલાવવા માટે થાય છે.


An intermediate language should, ideally, have the following properties:

એક મધ્યવર્તી ભાષામાં, આદર્શ રીતે, નીચેની લાક્ષણિકતાઓ હોવી જોઈએ:


It should be easy to translate from a high-level language to the intermediate language.

તેને ઉચ્ચ-સ્તરની ભાષામાંથી મધ્યવર્તી ભાષામાં અનુવાદિત કરવું સરળ હોવું જોઈએ.


It should be easy to translate from the intermediate language to machine code.

તેને મધ્યવર્તી ભાષામાંથી મશીન કોડમાં અનુવાદિત કરવું સરળ હોવું જોઈએ.


The intermediate format should be suitable for optimisations.

મધ્યવર્તી ફોર્મેટ ઑપ્ટિમાઇઝેશન માટે યોગ્ય હોવું જોઈએ.


A low-level intermediate language may make it easy to write back-ends, but puts more burden on the front-ends.

એક નીચા-સ્તરની મધ્યવર્તી ભાષા બેક-એન્ડ લખવાનું સરળ બનાવી શકે છે, પરંતુ ફ્રન્ટ-એન્ડ પર વધુ બોજ મૂકે છે.


A solution that may reduce the translation burden, though it does not address the other problems, is to have two intermediate levels.

એક એવો ઉકેલ જે અનુવાદના બોજને ઘટાડી શકે છે, જોકે તે અન્ય સમસ્યાઓનું સમાધાન કરતું નથી, તે બે મધ્યવર્તી સ્તરો ધરાવવાનું છે.


When the intermediate format is shared between many compilers, it makes sense to do as many optimisations as possible on the intermediate format.

જ્યારે મધ્યવર્તી ફોર્મેટ ઘણા કમ્પાઇલર્સ વચ્ચે શેર કરવામાં આવે છે, ત્યારે મધ્યવર્તી ફોર્મેટ પર શક્ય તેટલા ઑપ્ટિમાઇઝેશન કરવું અર્થપૂર્ણ છે.


Another thing to consider when choosing an intermediate language is the “granularity”.

મધ્યવર્તી ભાષા પસંદ કરતી વખતે ધ્યાનમાં લેવા જેવી બીજી બાબત એ છે “ગ્રેન્યુલારિટી”.


Should an operation in the intermediate language correspond to a large amount of work or to a small amount of work?

શું મધ્યવર્તી ભાષામાં એક ઑપરેશન મોટી માત્રામાં કામ અથવા થોડી માત્રામાં કામને અનુરૂપ હોવું જોઈએ?


The first of these approaches is often used when the intermediate language is interpreted, as the overhead of decoding instructions is amortised over more actual work.

આ અભિગમોમાંથી પ્રથમનો ઉપયોગ ઘણીવાર ત્યારે થાય છે જ્યારે મધ્યવર્તી ભાષાનું અર્થઘટન કરવામાં આવે છે, કારણ કે સૂચનાઓને ડીકોડ કરવાનો ઓવરહેડ વધુ વાસ્તવિક કાર્ય પર અમોર્ટાઇઝ થાય છે.


We will generate code using translation functions for each syntactic category.

અમે દરેક સિન્ટેક્ટિક કેટેગરી માટે અનુવાદ કાર્યોનો ઉપયોગ કરીને કોડ જનરેટ કરીશું.


We then extend the translation function for conditions as follows:

પછી, અમે શરતો માટે અનુવાદ કાર્યને નીચે પ્રમાણે વિસ્તારીએ છીએ:


The rule for relational operators is now actually superfluous.

સંબંધિત ઓપરેટર્સનો નિયમ હવે ખરેખર બિનજરૂરી છે.


However, we can consider it an optimisation.

જો કે, અમે તેને એક ઑપ્ટિમાઇઝેશન તરીકે ગણી શકીએ છીએ.


It will also be natural to keep it separate when we add sequential logical operators.

જ્યારે આપણે ક્રમિક લોજિકલ ઓપરેટર્સ ઉમેરીશું ત્યારે તેને અલગ રાખવું પણ સ્વાભાવિક રહેશે.


We will use the same names for sequential logical operators as C.

અમે ક્રમિક લોજિકલ ઓપરેટર્સ માટે C જેવા જ નામોનો ઉપયોગ કરીશું.


Note that we allow an expression to be a condition as well as a condition to be an expression.

ધ્યાન રાખો કે અમે અભિવ્યક્તિને સ્થિતિ તેમજ સ્થિતિને અભિવ્યક્તિ તરીકે મંજૂરી આપીએ છીએ.


આ વ્યાકરણ અત્યંત અસ્પષ્ટ છે.


As before, we assume such ambiguity to be resolved by the parser before code generation.

પહેલાની જેમ, અમે ધારીએ છીએ કે કોડ જનરેશન પહેલાં પાર્સર દ્વારા આવી અસ્પષ્ટતાનું નિરાકરણ કરવામાં આવશે.


We also assume that the last productions of Ex p and Cond are used as little as possible.

અમે એવું પણ ધારીએ છીએ કે Ex p અને Cond ના છેલ્લા ઉત્પાદનોનો ઉપયોગ શક્ય તેટલો ઓછો થાય છે.


The revised translation functions for Ex p and Cond are shown in figure 7.8.

Ex p અને Cond માટે સુધારેલા અનુવાદ કાર્યો આકૃતિ 7.8 માં દર્શાવેલ છે.


As expressions, true and false are the numbers 1 and 0.

અભિવ્યક્તિઓ તરીકે, સાચું અને ખોટું એ 1 અને 0 સંખ્યાઓ છે.


A condition Cond is translated into code that chooses between two labels.

એક સ્થિતિ Cond ને એવા કોડમાં અનુવાદિત કરવામાં આવે છે જે બે લેબલો વચ્ચે પસંદગી કરે છે.


When we want to use a condition as an expression, we must convert this choice into a number.

જ્યારે આપણે સ્થિતિને અભિવ્યક્તિ તરીકે વાપરવા માંગીએ છીએ, ત્યારે આપણે આ પસંદગીને સંખ્યામાં રૂપાંતરિત કરવી આવશ્યક છે.


We do this by first assuming that the condition is false and hence assign 0 to the target location.

આપણે પહેલા એવું ધારીને કરીએ છીએ કે સ્થિતિ ખોટી છે અને તેથી લક્ષ્ય સ્થાનને 0 સોંપીએ છીએ.


We could equally well have done things the other way around.

આપણે વસ્તુઓને બીજી રીતે પણ સારી રીતે કરી શક્યા હોત.


It gets a bit more interesting in Trans Cond, where we translate conditions.

Trans Cond માં તે થોડું વધુ રસપ્રદ બને છે, જ્યાં આપણે શરતોનું ભાષાંતર કરીએ છીએ.


The constant true condition just generates a jump to the label for true conditions.

અચળ સાચી સ્થિતિ ફક્ત સાચી સ્થિતિઓ માટેના લેબલ પર જ જમ્પ જનરેટ કરે છે.


Logical negation generates no code by itself.

લોજિકલ નકારાત્મકતા તેના દ્વારા કોઈ કોડ જનરેટ કરતી નથી.


Sequential logical and is translated as follows:

ક્રમિક લોજિકલ અને નીચે પ્રમાણે અનુવાદિત થાય છે:


If the first operand is true, we jump directly to the label for true conditions without testing the second operand.

જો પ્રથમ ઓપરેન્ડ સાચું હોય, તો આપણે બીજા ઓપરેન્ડનું પરીક્ષણ કર્યા વિના સીધા સાચી સ્થિતિઓ માટેના લેબલ પર જઈએ છીએ.


The compiler ensures the symbol table contains necessary information.

સંકલક એ સુનિશ્ચિત કરે છે કે પ્રતીક કોષ્ટકમાં જરૂરી માહિતી શામેલ છે.


When a variable is declared, the compiler stores its information.

જ્યારે કોઈ ચલ જાહેર કરવામાં આવે છે, ત્યારે સંકલક તેની માહિતી સંગ્રહિત કરે છે.


For integer variables, the intermediate-language variable is stored.

પૂર્ણાંક ચલો માટે, મધ્યવર્તી-ભાષા ચલ સંગ્રહિત થાય છે.


Array variables include base-address and dimensions.

એરે ચલોમાં બેઝ-એડ્રેસ અને પરિમાણો શામેલ છે.


Records store offsets for each field and the total size.

રેકોર્ડ્સ દરેક ક્ષેત્ર માટે ઓફસેટ્સ અને કુલ કદ સંગ્રહિત કરે છે.


The symbol table provides a type description for named types.

પ્રતીક કોષ્ટક નામવાળી પ્રકારો માટે એક પ્રકારનું વર્ણન પૂરું પાડે છે.


અનુવાદ કાર્યો આ કોષ્ટકોનો ઉપયોગ કરે છે.


First write translation functions for uses of names.

પ્રથમ નામોના ઉપયોગો માટે અનુવાદ કાર્યો લખો.


Then write translation functions for their declarations.

પછી તેમની ઘોષણાઓ માટે અનુવાદ કાર્યો લખો.


Function declaration translation will be in chapter 10.

કાર્ય ઘોષણાનું ભાષાંતર પ્રકરણ 10 માં હશે.


We can declare integer variables and arrays.

આપણે પૂર્ણાંક ચલો અને એરે જાહેર કરી શકીએ છીએ.


An integer variable should bind to a symbol table location.

એક પૂર્ણાંક ચલને પ્રતીક કોષ્ટક સ્થાન સાથે જોડવું જોઈએ.


An array should bind to a variable with its base address.

એક એરે તેના બેઝ એડ્રેસ સાથેના ચલ સાથે જોડાવું જોઈએ.


Code must be generated for allocating array space.

એરે જગ્યા ફાળવવા માટે કોડ જનરેટ થવો જોઈએ.


એરે હીપ ફાળવેલ છે.


HP points to the first free heap element.

HP પ્રથમ મફત હીપ તત્વ તરફ નિર્દેશ કરે છે.


No heap overflow check is done when allocating arrays.

એરે ફાળવતી વખતે હીપ ઓવરફ્લો તપાસ કરવામાં આવતી નથી.


એક વ્યાપક ચર્ચા [35] માં છે.


Functional and logic languages use high-level intermediate languages.

કાર્યલક્ષી અને તર્ક ભાષાઓ ઉચ્ચ-સ્તરની મધ્યવર્તી ભાષાઓનો ઉપયોગ કરે છે.


JVM has single instructions for complex operations.

JVM માં જટિલ કામગીરી માટે એકલ સૂચનાઓ છે.


આજે સૂર્ય તેજસ્વી રીતે ચમકી રહ્યો છે.


શું તમે મને મીઠું આપશો?


I am going to the market to buy some vegetables.

હું બજારમાં શાકભાજી ખરીદવા જઈ રહ્યો છું.


The news reported a major earthquake in Japan.

સમાચારમાં જાપાનમાં આવેલા મોટા ભૂકંપની જાણ કરવામાં આવી હતી.


She is a talented musician and plays the piano beautifully.

તે એક પ્રતિભાશાળી સંગીતકાર છે અને સુંદર રીતે પિયાનો વગાડે છે.


The company announced its quarterly earnings report.

કંપનીએ તેના ત્રિમાસિક કમાણીનો અહેવાલ જાહેર કર્યો.


The algorithm efficiently sorts the data.

એલ્ગોરિધમ ડેટાને કાર્યક્ષમ રીતે સૉર્ટ કરે છે.


Despite the challenges, they persevered and succeeded.

આ પડકારો હોવા છતાં, તેઓ ટકી રહ્યા અને સફળ થયા.


The government implemented new policies to boost the economy.

સરકારે અર્થતંત્રને વેગ આપવા માટે નવી નીતિઓ લાગુ કરી.


The research team conducted extensive experiments to validate the hypothesis.

સંશોધન ટીમે પૂર્વધારણાને માન્ય કરવા માટે વ્યાપક પ્રયોગો કર્યા.


The intricate details of the artwork captivated the audience.

કલાના જટિલ વિગતોએ પ્રેક્ષકોને મોહિત કર્યા.


The philosophical debate explored the nature of consciousness and existence.

તત્વજ્ઞાનની ચર્ચાએ ચેતના અને અસ્તિત્વના સ્વરૂપની શોધ કરી.


The complex geopolitical situation requires careful diplomacy.

જટિલ ભૂ-રાજકીય પરિસ્થિતિને કાળજીપૂર્વક રાજદ્વારીની જરૂર છે.


The company's innovative approach disrupted the industry.

કંપનીના નવીન અભિગમે ઉદ્યોગને વિક્ષેપિત કર્યો.


The scientist's groundbreaking discovery revolutionized the field.

વૈજ્ઞાનિકની અભૂતપૂર્વ શોધે ક્ષેત્રમાં ક્રાંતિ લાવી.


The economic downturn significantly impacted global markets.

આર્થિક મંદીએ વૈશ્વિક બજારોને નોંધપાત્ર અસર કરી.


The legal proceedings involved intricate arguments and evidence.

કાનૂની કાર્યવાહીમાં જટિલ દલીલો અને પુરાવા સામેલ હતા.


The historical analysis provided a nuanced understanding of the events.

ઐતિહાસિક વિશ્લેષણે ઘટનાઓની સૂક્ષ્મ સમજ આપી.


The technological advancements have transformed the way we communicate.

ટેકનોલોજીકલ પ્રગતિએ આપણે જે રીતે વાતચીત કરીએ છીએ તેમાં પરિવર્તન કર્યું છે.


The artist's use of color and light created a stunning visual effect.

કલાકારના રંગ અને પ્રકાશના ઉપયોગથી એક અદભૂત દ્રશ્ય અસર થઈ.


The algorithm uses different colors to solve the graph coloring problem.

આલ્ગોરિધમ ગ્રાફ કલરિંગ સમસ્યાને ઉકેલવા માટે વિવિધ રંગોનો ઉપયોગ કરે છે.


If a node has fewer than N edges, it can be placed on the stack.

જો કોઈ નોડમાં N કરતાં ઓછા એજ હોય, તો તેને સ્ટેક પર મૂકી શકાય છે.


The program needs to allocate registers efficiently to avoid spilling.

પ્રોગ્રામને સ્પિલિંગ ટાળવા માટે કાર્યક્ષમ રીતે રજિસ્ટર ફાળવવાની જરૂર છે.


Spilling occurs when a node cannot be assigned a color.

સ્પિલિંગ ત્યારે થાય છે જ્યારે કોઈ નોડને રંગ સોંપી શકાતો નથી.


The select phase chooses a color for a node from the stack.

પસંદગીનો તબક્કો સ્ટેકમાંથી નોડ માટે રંગ પસંદ કરે છે.


Heuristics can improve the coloring process.

યુક્તિઓ રંગ પ્રક્રિયાને સુધારી શકે છે.


The program is rewritten after spilling.

સ્પિલિંગ પછી પ્રોગ્રામ ફરીથી લખવામાં આવે છે.


The interference graph helps in register allocation.

ઇન્ટરફરન્સ ગ્રાફ રજિસ્ટર ફાળવણીમાં મદદ કરે છે.


The algorithm is applied to the graph by repeated spilling.

આલ્ગોરિધમનો ઉપયોગ વારંવાર સ્પિલિંગ દ્વારા ગ્રાફ પર થાય છે.


Function calls require careful handling of registers.

ફંક્શન કોલ્સને રજિસ્ટરની કાળજીપૂર્વક હેન્ડલિંગની જરૂર છે.


The activation record stores local variables.

એક્ટિવેશન રેકોર્ડ સ્થાનિક ચલોને સંગ્રહિત કરે છે.


The prologue sets up the function's environment.

પ્રોલોગ ફંક્શનના પર્યાવરણને સેટ કરે છે.


The epilogue restores the caller's state.

એપિલોગ કોલરની સ્થિતિને પુનઃસ્થાપિત કરે છે.


The call sequence saves registers and passes parameters.

કોલ સિક્વન્સ રજિસ્ટર સાચવે છે અને પરિમાણો પસાર કરે છે.


The compiler optimizes the code for better performance.

સારી કામગીરી માટે કમ્પાઇલર કોડને ઑપ્ટિમાઇઝ કરે છે.


Register allocation is a crucial part of compilation.

રજિસ્ટર ફાળવણી સંકલનનો એક મહત્વપૂર્ણ ભાગ છે.


The program uses a stack for function calls.

પ્રોગ્રામ ફંક્શન કોલ્સ માટે સ્ટેકનો ઉપયોગ કરે છે.


આલ્ગોરિધમનો હેતુ સ્પિલ્સને ઓછો કરવાનો છે.


The graph coloring problem is NP-complete.

ગ્રાફ કલરિંગ સમસ્યા NP-સંપૂર્ણ છે.


Understanding register allocation is essential for efficient code generation.

કાર્યક્ષમ કોડ જનરેશન માટે રજિસ્ટર ફાળવણીને સમજવી જરૂરી છે.


The company announced record profits this quarter.

કંપનીએ આ ત્રિમાસિક ગાળામાં વિક્રમી નફાની જાહેરાત કરી છે.


શું તમે મને મીઠું આપશો?


The weather forecast predicts rain for tomorrow.

હવામાન વિભાગના જણાવ્યા અનુસાર, આવતીકાલે વરસાદની સંભાવના છે.


તે ડોક્ટર બનવા માટે અભ્યાસ કરી રહી છે.


The new software update has several bug fixes.

નવા સોફ્ટવેર અપડેટમાં ઘણા બગ ફિક્સ છે.


He enjoys playing cricket with his friends every weekend.

તે દર સપ્તાહના અંતે તેના મિત્રો સાથે ક્રિકેટ રમવાનું પસંદ કરે છે.


The government is implementing new policies to boost the economy.

સરકાર અર્થતંત્રને વેગ આપવા માટે નવી નીતિઓ લાગુ કરી રહી છે.


Despite the challenges, they managed to complete the project on time.

આ પડકારો હોવા છતાં, તેઓ સમયસર પ્રોજેક્ટ પૂર્ણ કરવામાં સફળ રહ્યા.


The research team is analyzing the data to find a solution.

સંશોધન ટીમ ઉકેલ શોધવા માટે ડેટાનું વિશ્લેષણ કરી રહી છે.


The intricate design of the building is a marvel of modern architecture.

બિલ્ડિંગની જટિલ ડિઝાઇન આધુનિક સ્થાપત્યનો અજાયબી છે.


The complex algorithm requires significant computational resources.

જટિલ અલ્ગોરિધમને નોંધપાત્ર કમ્પ્યુટેશનલ સંસાધનોની જરૂર છે.


The philosophical debate explored the nature of consciousness.

તત્વજ્ઞાનની ચર્ચાએ ચેતનાના સ્વભાવની શોધ કરી.


The economic downturn has affected various industries.

આર્થિક મંદીએ વિવિધ ઉદ્યોગોને અસર કરી છે.


The company's innovative approach led to a breakthrough in the market.

કંપનીના નવીન અભિગમથી બજારમાં સફળતા મળી.


The scientist conducted a series of experiments to validate the hypothesis.

વૈજ્ઞાનિકે પૂર્વધારણાને માન્ય કરવા માટે પ્રયોગોની શ્રેણી હાથ ધરી.


The political situation remains volatile, with frequent protests and demonstrations.

રાજકીય પરિસ્થિતિ અસ્થિર છે, વારંવાર વિરોધ અને દેખાવો થઈ રહ્યા છે.


The artist's unique style is characterized by vibrant colors and bold strokes.

કલાકારની વિશિષ્ટ શૈલી તેજસ્વી રંગો અને બોલ્ડ સ્ટ્રોક દ્વારા વર્ગીકૃત થયેલ છે.


The legal team is preparing for a complex litigation process.

કાનૂની ટીમ જટિલ મુકદ્દમાની પ્રક્રિયા માટે તૈયારી કરી રહી છે.


The technological advancements have revolutionized the way we communicate.

ટેકનોલોજીકલ પ્રગતિએ આપણે જે રીતે વાતચીત કરીએ છીએ તેમાં ક્રાંતિ લાવી છે.


The economic reforms aim to stimulate growth and create new job opportunities.

આર્થિક સુધારાઓનો હેતુ વૃદ્ધિને ઉત્તેજીત કરવાનો અને નવી નોકરીની તકો ઊભી કરવાનો છે.


The program calculates the sum of numbers from 1 to 10.

આ પ્રોગ્રામ 1 થી 10 સુધીની સંખ્યાઓનો સરવાળો ગણે છે.


કૃપા કરીને તમારું નામ અને સરનામું દાખલ કરો.


The news reported a major earthquake in the region.

સમાચારમાં આ ક્ષેત્રમાં આવેલા મોટા ભૂકંપની જાણ કરવામાં આવી હતી.


કંપની નવું સોફ્ટવેર વિકસાવી રહી છે.


Could you please help me with this task?

શું તમે મને આ કાર્યમાં મદદ કરી શકશો?


The algorithm efficiently sorts the data.

અલ્ગોરિધમ ડેટાને કાર્યક્ષમ રીતે સૉર્ટ કરે છે.


The weather forecast predicts rain tomorrow.

હવામાન વિભાગના જણાવ્યા અનુસાર, આવતીકાલે વરસાદની આગાહી છે.


I am going to the market to buy groceries.

હું કરિયાણું ખરીદવા બજારમાં જઈ રહ્યો છું.


The research paper explores the impact of climate change.

સંશોધન પત્ર આબોહવા પરિવર્તનની અસરોનું અન્વેષણ કરે છે.


The government announced new economic policies.

સરકારે નવી આર્થિક નીતિઓની જાહેરાત કરી.


આ ફંક્શન એક બુલિયન મૂલ્ય પરત કરે છે.


Can you recommend a good restaurant nearby?

શું તમે નજીકમાં કોઈ સારા રેસ્ટોરન્ટની ભલામણ કરી શકો છો?


The system uses advanced machine learning techniques.

સિસ્ટમ અદ્યતન મશીન લર્નિંગ તકનીકોનો ઉપયોગ કરે છે.


The stock market experienced a sharp decline.

શેરબજારમાં તીવ્ર ઘટાડો જોવા મળ્યો.


મારે મારું સોફ્ટવેર અપડેટ કરવાની જરૂર છે.


ડૉક્ટરે મને આરામ કરવાની સલાહ આપી.


The complex algorithm optimizes resource allocation.

જટિલ અલ્ગોરિધમ સંસાધન ફાળવણીને ઑપ્ટિમાઇઝ કરે છે.


The political situation remains uncertain.

રાજકીય પરિસ્થિતિ અનિશ્ચિત રહે છે.


The program efficiently handles large datasets.

પ્રોગ્રામ મોટા ડેટાસેટને કાર્યક્ષમ રીતે હેન્ડલ કરે છે.


આ મીટિંગ આવતા અઠવાડિયે યોજાશે.


First, all registers that can be used to hold variables are stored in the frame.

સૌ પ્રથમ, ચલો કે જેનો ઉપયોગ ચલોને પકડી રાખવા માટે થઈ શકે છે, તેને ફ્રેમમાં સંગ્રહિત કરવામાં આવે છે.


In figure 10.3, R0-Rk are assumed to hold variables.

આકૃતિ 10.3 માં, એવું માનવામાં આવે છે કે R0-Rk ચલોને પકડી રાખે છે.


These are stored in the activation record just above the calling function’s own incoming parameters.

આ કોલિંગ ફંક્શનના પોતાના આવનારા પરિમાણોની બરાબર ઉપરના એક્ટિવેશન રેકોર્ડમાં સંગ્રહિત છે.


Then, the frame-pointer is advanced to point to the new frame and the parameters and the return address are stored in the prescribed locations in the new frame.

પછી, ફ્રેમ-પોઇન્ટરને નવા ફ્રેમ તરફ નિર્દેશ કરવા માટે આગળ ધપાવવામાં આવે છે અને પરિમાણો અને રીટર્ન એડ્રેસને નવા ફ્રેમમાં નિર્ધારિત સ્થાનોમાં સંગ્રહિત કરવામાં આવે છે.


Finally, a jump to the function is made.

છેવટે, ફંક્શન પર જમ્પ કરવામાં આવે છે.


When the function call returns, the result is read from the frame into the variable x, FP is restored to its former value and the saved registers are read back from the old frame.

જ્યારે ફંક્શન કોલ પાછો આવે છે, ત્યારે પરિણામ ફ્રેમમાંથી ચલ x માં વાંચવામાં આવે છે, FP ને તેના પહેલાના મૂલ્યમાં પુનઃસ્થાપિત કરવામાં આવે છે અને સંગ્રહિત રજિસ્ટરને જૂના ફ્રેમમાંથી પાછા વાંચવામાં આવે છે.


Keeping all the parameters in register-allocated variables until just before the call, and only then storing them in the frame can require a lot of registers to hold the parameters (as these are all live up to the point where they are stored).

કોલના થોડા સમય પહેલાં સુધી રજિસ્ટર-ફાળવેલા ચલોમાં બધા પરિમાણોને રાખવાથી, અને પછી જ તેમને ફ્રેમમાં સંગ્રહિત કરવાથી પરિમાણોને પકડી રાખવા માટે ઘણા રજિસ્ટરની જરૂર પડી શકે છે (કારણ કે આ બધા તે બિંદુ સુધી જીવંત છે જ્યાં સુધી તેઓ સંગ્રહિત નથી થતા).


An alternative is to store each parameter in the frame as soon as it is evaluated.

એક વિકલ્પ એ છે કે દરેક પરિમાણને ફ્રેમમાં સંગ્રહિત કરવું, જેટલું જલ્દી તેનું મૂલ્યાંકન થાય.


This way, only one of the variables a1,...,an will be live at any one time.

આ રીતે, ચલો a1,...,an માંથી ફક્ત એક જ કોઈપણ સમયે જીવંત રહેશે.


However, this can go wrong if a later parameter-expression contains a function call, as the parameters to this call will overwrite the parameters of the outer call.

જો કે, જો પછીનું પરિમાણ-એક્સપ્રેશન ફંક્શન કોલ ધરાવે છે, તો આ ખોટું થઈ શકે છે, કારણ કે આ કોલના પરિમાણો બાહ્ય કોલના પરિમાણોને ઓવરરાઇટ કરશે.


Hence, this optimisation must only be used if no parameter-expressions contain function calls or if nested calls use stack-locations different from those used by the outer call.

તેથી, આ ઑપ્ટિમાઇઝેશનનો ઉપયોગ ફક્ત ત્યારે જ થવો જોઈએ જો કોઈ પરિમાણ-એક્સપ્રેશનમાં ફંક્શન કોલ ન હોય અથવા જો નેસ્ટેડ કોલ બાહ્ય કોલ દ્વારા ઉપયોગમાં લેવાતા કરતા અલગ સ્ટેક-લોકેશનનો ઉપયોગ કરે.


In this simple call-sequence, we save on the stack all registers that can poten- tially hold variables, so these are preserved across the function call.

આ સરળ કોલ-સિક્વન્સમાં, અમે સ્ટેક પર તે બધા રજિસ્ટર સાચવીએ છીએ જે સંભવિત રીતે ચલોને પકડી શકે છે, તેથી આ ફંક્શન કોલ દરમિયાન જળવાઈ રહે છે.


This may save more registers than needed, as not all registers will hold values that are required after the call (i.e., they may be dead).

આ જરૂરી કરતાં વધુ રજિસ્ટર સાચવી શકે છે, કારણ કે બધા રજિસ્ટર એવા મૂલ્યોને પકડી રાખશે નહીં જે કોલ પછી જરૂરી છે (એટલે કે, તે ડેડ હોઈ શકે છે).


We will return to this issue in section 10.6.

આ મુદ્દા પર આપણે વિભાગ 10.6 માં પાછા આવીશું.


The convention used by the activation record layout in figure 10.1 is that, before a function is called, the caller saves all registers that must be preserved.

આકૃતિ 10.1 માં એક્ટિવેશન રેકોર્ડ લેઆઉટ દ્વારા ઉપયોગમાં લેવાતી સંમેલન એ છે કે, ફંક્શનને બોલાવતા પહેલા, કોલર તે બધા રજિસ્ટર સાચવે છે જે જાળવવા આવશ્યક છે.


Hence, this strategy is called caller-saves.

આમ, આ વ્યૂહરચનાને કોલર-સેવ્સ કહેવામાં આવે છે.


An alternative strategy is that the called function saves the contents of the registers that need to be preserved and restores these immediately before the function returns.

એક વૈકલ્પિક વ્યૂહરચના એ છે કે બોલાવવામાં આવેલ ફંક્શન તે રજિસ્ટરની સામગ્રીને સાચવે છે જેને જાળવવાની જરૂર છે અને ફંક્શન પાછા ફરતા પહેલાં તરત જ તેને પુનઃસ્થાપિત કરે છે.


આ વ્યૂહરચનાને કેલી-સેવ્સ કહેવામાં આવે છે.


So far, the only difference between caller-saves and callee-saves is when registers are saved.

અત્યાર સુધી, કોલર-સેવ્સ અને કેલી-સેવ્સ વચ્ચેનો એકમાત્ર તફાવત એ છે કે રજિસ્ટર ક્યારે સાચવવામાં આવે છે.


However, once we refine the strategies to save only a subset of the registers that may potentially hold variables, other differences emerge:

જો કે, એકવાર આપણે તે રજિસ્ટરના માત્ર એક પેટાસેટને સાચવવા માટેની વ્યૂહરચનાને સુધારીએ છીએ જે સંભવિત રીતે ચલોને પકડી શકે છે, ત્યારે અન્ય તફાવતો ઉભરી આવે છે:


When freeing a block, we subtract one from the size.

જ્યારે કોઈ બ્લોકને ખાલી કરવામાં આવે છે, ત્યારે આપણે તેના કદમાંથી એક બાદ કરીએ છીએ.


If so, we add the sizes and store the sum in the size field of the released block.

જો એમ હોય, તો આપણે કદ ઉમેરીએ છીએ અને સરવાળાને મુક્ત બ્લોકના કદના ક્ષેત્રમાં સંગ્રહિત કરીએ છીએ.


Note that the order of freeing blocks can determine if blocks are joined.

ધ્યાન રાખો કે બ્લોક્સને ખાલી કરવાનો ક્રમ નક્કી કરી શકે છે કે બ્લોક્સ જોડાયેલા છે કે નહીં.


With this modification, free() is again constant time, but we merge fewer blocks than otherwise.

આ ફેરફાર સાથે, free() ફરીથી સ્થિર સમય છે, પરંતુ આપણે અન્યથા કરતાં ઓછા બ્લોક્સને મર્જ કરીએ છીએ.


To reduce the time used for searching for a sufficiently large block when calling malloc(), we can keep free blocks sorted by size.

malloc() ને કૉલ કરતી વખતે પૂરતા મોટા બ્લોકની શોધમાં વપરાતા સમયને ઘટાડવા માટે, અમે મફત બ્લોક્સને કદ પ્રમાણે સૉર્ટ કરી શકીએ છીએ.


When malloc(n) is called, we find the nearest power of two that is at least n+wordsize, remove the first block in the free list for that size and return this.

જ્યારે malloc(n) ને બોલાવવામાં આવે છે, ત્યારે આપણે બેની નજીકની શક્તિ શોધીએ છીએ જે ઓછામાં ઓછી n+wordsize છે, તે કદ માટે મફત સૂચિમાં પ્રથમ બ્લોકને દૂર કરીએ છીએ અને આ પાછું કરીએ છીએ.


If the relevant free list is empty, we take the first block in the next free list and split this into two equal-size blocks, put one of these into the previous free list and return the other.

જો સંબંધિત મફત સૂચિ ખાલી હોય, તો અમે આગામી મફત સૂચિમાં પ્રથમ બ્લોક લઈએ છીએ અને તેને બે સમાન કદના બ્લોકમાં વિભાજીત કરીએ છીએ, તેમાંથી એકને અગાઉની મફત સૂચિમાં મૂકીએ છીએ અને બીજાને પાછું કરીએ છીએ.


To reduce fragmentation and allow fast joining of freed blocks, some memory managers restrict blocks to be aligned to block size.

વિભાજન ઘટાડવા અને મુક્ત બ્લોક્સના ઝડપી જોડાણને મંજૂરી આપવા માટે, કેટલાક મેમરી મેનેજરો બ્લોક્સને બ્લોક સાઇઝમાં સંરેખિત કરવા માટે પ્રતિબંધિત કરે છે.


Two blocks that can be joined are called “buddies”, and each block has an unique buddy.

જે બે બ્લોક્સને જોડી શકાય છે તેને “બડીઝ” કહેવામાં આવે છે, અને દરેક બ્લોકમાં એક અનોખો બડી હોય છે.


When we free a block, we clear this bit and look at the size field of the buddy.

જ્યારે આપણે કોઈ બ્લોકને ખાલી કરીએ છીએ, ત્યારે અમે આ બીટને સાફ કરીએ છીએ અને બડીના કદના ક્ષેત્રને જોઈએ છીએ.


With the buddy system, we get both malloc() and free() down to logarithmic time, but we use extra space by rounding allocation sizes up to powers of two.

બડી સિસ્ટમ સાથે, અમને malloc() અને free() બંને લોગેરિધમિક સમય સુધી મળે છે, પરંતુ આપણે ફાળવણીના કદને બેની શક્તિ સુધી ગોળાકાર કરીને વધારાની જગ્યાનો ઉપયોગ કરીએ છીએ.


This waste is sometimes called internal fragmentation, where having many small free blocks is called external fragmentation.

આ બગાડને ક્યારેક આંતરિક વિભાજન કહેવામાં આવે છે, જ્યાં ઘણા નાના મફત બ્લોક્સ હોવાને બાહ્ય વિભાજન કહેવામાં આવે છે.


For example, we might get a heap that alternates between four-word blocks that are in use and four-word blocks that are free.

ઉદાહરણ તરીકે, આપણને એક ઢગલો મળી શકે છે જે ચાર-શબ્દના બ્લોક્સ જે ઉપયોગમાં છે અને ચાર-શબ્દના બ્લોક્સ જે મફત છે તેની વચ્ચે ફેરબદલ કરે છે.


In a generalised Fibonacci sequence, the next number in the sequence is the sum of two previous numbers in the sequence, but not necessarily the immediately preceding numbers.

સામાન્યકૃત ફિબોનાકી શ્રેણીમાં, શ્રેણીમાં આગલો નંબર શ્રેણીમાંના બે અગાઉના નંબરોનો સરવાળો છે, પરંતુ જરૂરી નથી કે તરત જ અગાઉના નંબરો.


Manual memory management means that both allocation and deallocation of heap-allocated objects (arrays etc.) is explicit in the code.

મેન્યુઅલ મેમરી મેનેજમેન્ટનો અર્થ એ છે કે ઢગલા-ફાળવેલ ઑબ્જેક્ટ્સ (એરે વગેરે) ની ફાળવણી અને ડિએલોકેશન બંને કોડમાં સ્પષ્ટ છે.


It is possible to get allocation (malloc() time down to logarithmic in the size of memory.

મેમરીના કદમાં લોગેરિધમિક સુધી ફાળવણી (malloc() સમય મેળવવો શક્ય છે.


Manual memory management has two serious problems.

મેન્યુઅલ મેમરી મેનેજમેન્ટમાં બે ગંભીર સમસ્યાઓ છે.


If memory is used after it is erroneously freed, the results can be unpredictable and compromise the security of a software system.

જો મેમરીને ભૂલથી ખાલી કર્યા પછી તેનો ઉપયોગ કરવામાં આવે છે, તો પરિણામો અણધારી હોઈ શકે છે અને સોફ્ટવેર સિસ્ટમની સુરક્ષા સાથે ચેડા થઈ શકે છે.


With automatic memory management, heap allocation is still done in the same way as with manual memory management.

ઓટોમેટિક મેમરી મેનેજમેન્ટ સાથે, ઢગલાની ફાળવણી હજી પણ મેન્યુઅલ મેમરી મેનેજમેન્ટની જેમ જ કરવામાં આવે છે.


The benefit of automatic memory management is, however, reduced if programmers spend much time considering when they can safely overwrite pointers with null.

જો કે, ઓટોમેટિક મેમરી મેનેજમેન્ટનો ફાયદો ઓછો થાય છે જો પ્રોગ્રામરો ઘણો સમય એ ધ્યાનમાં લે છે કે તેઓ ક્યારે સુરક્ષિત રીતે પોઇન્ટર્સને શૂન્યથી ઓવરરાઇટ કરી શકે છે.


આજે સૂર્ય તેજસ્વી રીતે ચમકી રહ્યો છે.


શું તમે મને મીઠું આપશો?


I am going to the market to buy some vegetables.

હું શાકભાજી ખરીદવા બજારમાં જઈ રહ્યો છું.


The weather forecast predicts rain for tomorrow.

હવામાન વિભાગની આગાહી મુજબ, આવતીકાલે વરસાદની સંભાવના છે.


She is a very talented musician and plays the piano beautifully.

તેણી એક ખૂબ જ પ્રતિભાશાળી સંગીતકાર છે અને સુંદર રીતે પિયાનો વગાડે છે.


The company announced its quarterly earnings report.

કંપનીએ તેના ત્રિમાસિક કમાણીનો અહેવાલ જાહેર કર્યો.


The algorithm efficiently sorts the data.

એલ્ગોરિધમ ડેટાને કાર્યક્ષમ રીતે સૉર્ટ કરે છે.


Despite the challenges, they persevered and achieved their goals.

આ પડકારો હોવા છતાં, તેઓએ હિંમત જાળવી રાખી અને તેમના લક્ષ્યો હાંસલ કર્યા.


The government is implementing new policies to boost the economy.

સરકાર અર્થતંત્રને વેગ આપવા માટે નવી નીતિઓ લાગુ કરી રહી છે.


The research paper explores the impact of climate change on agriculture.

સંશોધન પત્ર કૃષિ પર આબોહવા પરિવર્તનની અસરની ચર્ચા કરે છે.


The intricate design of the software required extensive testing.

સોફ્ટવેરની જટિલ ડિઝાઇન માટે વ્યાપક પરીક્ષણની જરૂર હતી.


The philosophical debate centered on the nature of consciousness.

તત્વજ્ઞાનની ચર્ચા ચેતનાના સ્વભાવ પર કેન્દ્રિત હતી.


The economic downturn significantly affected the global markets.

આર્થિક મંદીએ વૈશ્વિક બજારોને નોંધપાત્ર અસર કરી.


The artist's innovative techniques revolutionized the art world.

કલાકારની નવીન તકનીકોએ કલા જગતમાં ક્રાંતિ લાવી.


The complex interplay of factors contributed to the crisis.

પરિબળોની જટિલ ક્રિયાપ્રતિક્રિયાએ કટોકટીમાં ફાળો આપ્યો.


The company's strategic decisions led to a significant increase in revenue.

કંપનીના વ્યૂહાત્મક નિર્ણયોને કારણે આવકમાં નોંધપાત્ર વધારો થયો.


The scientific community is actively researching new treatments for the disease.

વૈજ્ઞાનિક સમુદાય આ રોગની નવી સારવાર માટે સક્રિયપણે સંશોધન કરી રહ્યો છે.


The judge's ruling was based on the evidence presented in court.

ન્યાયાધીશનો ચુકાદો કોર્ટમાં રજૂ કરાયેલા પુરાવા પર આધારિત હતો.


The rapid advancement of technology has transformed society.

ટેકનોલોજીના ઝડપી વિકાસથી સમાજમાં પરિવર્તન આવ્યું છે.


The historical significance of the event cannot be overstated.

આ ઘટનાનું ઐતિહાસિક મહત્વ વધારે પડતું ન કહી શકાય.


If we can eliminate all of the epilogue off except for the return-jump tof’s caller, we can instead make g return directly tof’s caller, hence skipping f’s epilogue entirely.

જો આપણે f ના એપિલોગના બધાને દૂર કરી શકીએ, f ના કૉલર પર પાછા ફરવા સિવાય, તો આપણે તેના બદલે g ને સીધું f ના કૉલર પર પાછા ફરવા માટે બનાવી શકીએ છીએ, આમ f ના એપિલોગને સંપૂર્ણપણે છોડી દઈએ છીએ.


Since there are no live variables after the call tog, we can eliminate the saving and restoring of R0,...,Rk, yielding the following simplified code:

g ને કૉલ કર્યા પછી કોઈ જીવંત ચલો ન હોવાથી, અમે R0,...,Rk ને સાચવવાનું અને પુનઃસ્થાપિત કરવાનું દૂર કરી શકીએ છીએ, જે નીચેના સરળ કોડને જન્મ આપે છે:


What we now want is to reuse f’s frame forg’s frame.

હવે આપણે જે જોઈએ છે તે f ના ફ્રેમને g ના ફ્રેમ માટે ફરીથી વાપરવાનું છે.


We do this by not adding and subtracting f ramesize from FP, so we get the following simplified code:

આપણે FP માંથી f ramesize ઉમેર્યા અને બાદ કર્યા વિના કરીએ છીએ, તેથી અમને નીચેનો સરળ કોડ મળે છે:


It is immediately evident that the two instructions that copy the result from and to the frame cancel out, so we can simplify further to

એ તરત જ સ્પષ્ટ છે કે બે સૂચનાઓ કે જે પરિણામને ફ્રેમમાંથી અને ફ્રેમમાં કૉપિ કરે છે તે રદ થાય છે, તેથી અમે વધુ સરળ બનાવી શકીએ છીએ


We also see an unfortunate problem: Just before the call tog, we overwrite f’s return address in M[FP] by g’s return address, so we will not return correctly tof’s caller (we will, instead, get an infinite loop).

આપણે એક કમનસીબ સમસ્યા પણ જોઈએ છીએ: g ને કૉલ કરતા પહેલાં, આપણે f ના રિટર્ન એડ્રેસને M[FP] માં g ના રિટર્ન એડ્રેસથી ઓવરરાઇટ કરીએ છીએ, તેથી આપણે f ના કૉલર પર યોગ્ય રીતે પાછા નહીં ફરીએ (તેના બદલે, આપણને અનંત લૂપ મળશે).


However, since all that happens after we return from g is a return from f, we can make g return directly tof’s caller.

જો કે, g માંથી પાછા ફર્યા પછી જે થાય છે તે f માંથી પાછા ફરવું છે, તેથી આપણે g ને સીધું f ના કૉલર પર પાછા ફરવા માટે બનાવી શકીએ છીએ.


We do this simply by not overwriting f’s return address.

આપણે ફક્ત f ના રિટર્ન એડ્રેસને ઓવરરાઇટ ન કરીને આ કરીએ છીએ.


This makes the instructions after the jump to g unreachable, so we can just delete them.

આ g પર જમ્પ કર્યા પછીની સૂચનાઓને પહોંચી ન શકાય તેવી બનાવે છે, તેથી આપણે તેને કાઢી શકીએ છીએ.


With this tail-call optimisation, we have eliminated the potential ill effects of reusing f’s frame forg.

આ ટેઇલ-કૉલ ઑપ્ટિમાઇઝેશન સાથે, અમે f ના ફ્રેમને g માટે ફરીથી વાપરવાની સંભવિત ખરાબ અસરોને દૂર કરી દીધી છે.


Not only have we shortened the combined call sequence forg and epilogue for f considerably, we have also saved stack space.

માત્ર આપણે g માટે સંયુક્ત કૉલ સિક્વન્સ અને f માટે એપિલોગને નોંધપાત્ર રીતે ટૂંકાવી દીધા છે, પણ આપણે સ્ટેક સ્પેસ પણ બચાવી છે.


Functional programming languages rely on this space saving, as they often use recursive tail calls where imperative languages use loops.

કાર્યલક્ષી પ્રોગ્રામિંગ ભાષાઓ આ જગ્યા બચાવવા પર આધાર રાખે છે, કારણ કે તે વારંવાર પુનરાવર્તિત ટેઇલ કૉલ્સનો ઉપયોગ કરે છે જ્યાં આજ્ઞાકારી ભાષાઓ લૂપનો ઉપયોગ કરે છે.


By doing tail-call optimisation, an arbitrarily long sequence of recursive tail calls can share the same stack frame, so only a constant amount of stack space is used.

ટેઇલ-કૉલ ઑપ્ટિમાઇઝેશન કરીને, પુનરાવર્તિત ટેઇલ કૉલ્સની મનસ્વી રીતે લાંબી સિક્વન્સ સમાન સ્ટેક ફ્રેમને શેર કરી શકે છે, તેથી માત્ર સતત માત્રામાં સ્ટેક સ્પેસનો ઉપયોગ થાય છે.


In the above, we relied on a pure caller-saves strategy, since the absence of live variables after the call meant that there would be no saving and restoring of caller-saves registers around the call.

ઉપરોક્તમાં, અમે શુદ્ધ કૉલર-સેવ્સ વ્યૂહરચના પર આધાર રાખ્યો હતો, કારણ કે કૉલ પછી જીવંત ચલોની ગેરહાજરીનો અર્થ એ હતો કે કૉલની આસપાસ કૉલર-સેવ્સ રજિસ્ટરને સાચવવાનું અને પુનઃસ્થાપિત કરવાનું રહેશે નહીં.


If a callee-saves strategy or a mixed caller- saves/callee-saves strategy is used, there will still be no saving and restoring around the call, but f’s epilogue would restore the callee-saves registers that f saved in its own prologue.

જો કેલી-સેવ્સ વ્યૂહરચના અથવા મિશ્ર કૉલર-સેવ્સ/કેલી-સેવ્સ વ્યૂહરચનાનો ઉપયોગ કરવામાં આવે છે, તો પણ કૉલની આસપાસ કોઈ બચત અને પુનઃસ્થાપના થશે નહીં, પરંતુ f નો એપિલોગ કેલી-સેવ્સ રજિસ્ટરને પુનઃસ્થાપિત કરશે જે f એ તેના પોતાના પ્રલોગમાં સાચવ્યા હતા.


This makes tail-call optimisation a bit more complicated, but it is normally possible (with a bit of care) to move the restoring of callee-saves registers to before the call to g instead of waiting until after g returns.

આ ટેઇલ-કૉલ ઑપ્ટિમાઇઝેશનને થોડું વધુ જટિલ બનાવે છે, પરંતુ સામાન્ય રીતે (થોડી કાળજી સાથે) કેલી-સેવ્સ રજિસ્ટરને g પર કૉલ કરતા પહેલાં ખસેડવું શક્ય છે, g પાછા ફરે તેની રાહ જોવાને બદલે.


This allows g to overwrite f’s frame, which no longer holds any useful information (except the return address, which we explicitly avoid overwriting).

આ g ને f ના ફ્રેમને ઓવરરાઇટ કરવાની મંજૂરી આપે છે, જે હવે કોઈ ઉપયોગી માહિતી ધરાવતું નથી (સિવાય કે રિટર્ન એડ્રેસ, જેને આપણે સ્પષ્ટપણે ઓવરરાઇટ કરવાનું ટાળીએ છીએ).


Modern programs consist mainly of calls to predefined library functions (or proce- dures or methods).

આધુનિક કાર્યક્રમો મુખ્યત્વે પૂર્વનિર્ધારિત લાઇબ્રેરી કાર્યો (અથવા પ્રક્રિયાઓ અથવા પદ્ધતિઓ) ને કૉલ્સથી બનેલા છે.


Calls to such library functions often fix some of the parameters to constants, as the function is written more generally than needed for the particular call.

આવી લાઇબ્રેરી કાર્યોને કૉલ્સ ઘણીવાર કેટલાક પરિમાણોને અચલ તરીકે ઠીક કરે છે, કારણ કે કાર્ય ચોક્કસ કૉલ માટે જરૂરી કરતાં વધુ સામાન્ય રીતે લખાયેલું છે.


For example, a function that raises a number to a power is often called with a constant as the power, say, power(x,5) which raises x to its fifth power.

ઉદાહરણ તરીકે, એક કાર્ય જે સંખ્યાને ઘાત સુધી વધારે છે તેને ઘણીવાર ઘાત તરીકે અચલ સાથે બોલાવવામાં આવે છે, કહો, power(x,5) જે x ને તેની પાંચમી ઘાત સુધી વધારે છે.


ટિપ્પણીઓ નેસ્ટેડ છે.


Common subexpression elimination is a key optimization technique.

સામાન્ય સબએક્સપ્રેશન દૂર કરવું એ એક મુખ્ય ઑપ્ટિમાઇઝેશન તકનીક છે.


સંકલનમાં ઘણા તબક્કાઓ સામેલ છે.


Compile-time errors are caught during the compilation process.

સંકલન પ્રક્રિયા દરમિયાન કમ્પાઇલ-ટાઇમ ભૂલો પકડાઈ જાય છે.


Compiling compilers are essential for software development.

સોફ્ટવેર ડેવલપમેન્ટ માટે કમ્પાઇલિંગ કમ્પાઇલર્સ આવશ્યક છે.


પાર્સિંગમાં સંઘર્ષો ઊભી થઈ શકે છે.


Reduce-reduce conflicts need careful handling.

ઘટાડો-ઘટાડો સંઘર્ષોને કાળજીપૂર્વક સંભાળવાની જરૂર છે.


Shift-reduce conflicts are common in parser design.

પાર્સર ડિઝાઇનમાં શિફ્ટ-રિડ્યુસ સંઘર્ષો સામાન્ય છે.


Consistent results are important in all computations.

બધા ગણતરીઓમાં સુસંગત પરિણામો મહત્વપૂર્ણ છે.


ઓપરેન્ડ્સમાં અચલો મૂકી શકાય છે.


Constant propagation is a useful optimization.

અચલ પ્રચાર એ એક ઉપયોગી ઑપ્ટિમાઇઝેશન છે.


Context-free grammars are fundamental to language design.

સંદર્ભ-મુક્ત વ્યાકરણ ભાષા ડિઝાઇન માટે મૂળભૂત છે.


The dangling-else problem is a classic parsing issue.

ડેંગલિંગ-એલ્સ સમસ્યા એ એક ક્લાસિક પાર્સિંગ સમસ્યા છે.


Data-flow analysis helps in code optimization.

ડેટા-ફ્લો વિશ્લેષણ કોડ ઑપ્ટિમાઇઝેશનમાં મદદ કરે છે.


Dead code elimination improves efficiency.

ડેડ કોડ દૂર કરવાથી કાર્યક્ષમતામાં સુધારો થાય છે.


A dead variable is one whose value is never used.

એક ડેડ ચલ એ છે જેનું મૂલ્ય ક્યારેય ઉપયોગમાં લેવાતું નથી.


Declarations define the meaning of identifiers.

ઘોષણાઓ ઓળખકર્તાઓના અર્થને વ્યાખ્યાયિત કરે છે.


Global declarations are accessible throughout the program.

ગ્લોબલ ઘોષણાઓ સમગ્ર પ્રોગ્રામમાં સુલભ છે.


Local declarations are specific to a block of code.

સ્થાનિક ઘોષણાઓ કોડના બ્લોક માટે વિશિષ્ટ છે.


Derivation is the process of generating strings from a grammar.

વ્યુત્પત્તિ એ વ્યાકરણમાંથી સ્ટ્રિંગ્સ જનરેટ કરવાની પ્રક્રિયા છે.


A common method is to write a QAD compiler using an existing language.

એક સામાન્ય પદ્ધતિ એ છે કે હાલની ભાષાનો ઉપયોગ કરીને QAD કમ્પાઇલર લખવો.


The important thing is that it allows programs in the new language to be executed.

મહત્વની બાબત એ છે કે તે નવી ભાષામાં પ્રોગ્રામ્સને ચલાવવાની મંજૂરી આપે છે.


Additionally, the “real” compiler is written in the new language and will be bootstrapped using the QAD compiler.

આ ઉપરાંત, “અસલી” કમ્પાઇલર નવી ભાષામાં લખાયેલું છે અને તે QAD કમ્પાઇલરનો ઉપયોગ કરીને બૂટસ્ટ્રેપ કરવામાં આવશે.


As an example, let us assume we design a new language “M+”.

ઉદાહરણ તરીકે, ધારો કે આપણે નવી ભાષા “M+” ની રચના કરીએ છીએ.


We, initially, write a compiler from M+ to ML in ML.

શરૂઆતમાં, અમે ML માં M+ થી ML માં કમ્પાઇલર લખીએ છીએ.


The first step is to compile this, so it can run on some machine.

પ્રથમ પગલું એ છે કે આને કમ્પાઇલ કરવું, જેથી તે કોઈ મશીન પર ચાલી શકે.


The QAD compiler can now be used to compile the “real” compiler.

હવે QAD કમ્પાઇલરનો ઉપયોગ “અસલી” કમ્પાઇલરને કમ્પાઇલ કરવા માટે થઈ શકે છે.


The result is an ML program, which we need to compile.

પરિણામ એક ML પ્રોગ્રામ છે, જેને આપણે કમ્પાઇલ કરવાની જરૂર છે.


The result of this is a compiler with the desired functionality, but it will probably run slowly.

આનું પરિણામ ઇચ્છિત કાર્યક્ષમતા સાથેનું કમ્પાઇલર છે, પરંતુ તે કદાચ ધીમું ચાલશે.


A better result can be obtained by letting the generated compiler compile itself.

જનરેટ થયેલા કમ્પાઇલરને પોતાની જાતને કમ્પાઇલ કરવા દેવાથી વધુ સારું પરિણામ મેળવી શકાય છે.


The need for this extra step might be a bit clearer if we had let the “real” compiler generate x86 code instead.

જો આપણે “અસલી” કમ્પાઇલરને બદલે x86 કોડ જનરેટ કરવા દીધો હોત તો આ વધારાના પગલાની જરૂરિયાત થોડી સ્પષ્ટ થઈ શકત.


We chose the target language to make a point: Bootstrapping might not be complete even if a compiler with the right functionality has been obtained.

આપણે એક મુદ્દો બનાવવા માટે લક્ષ્ય ભાષા પસંદ કરી: જો યોગ્ય કાર્યક્ષમતા સાથેનું કમ્પાઇલર મેળવવામાં આવ્યું હોય તો પણ બૂટસ્ટ્રેપિંગ પૂર્ણ ન પણ થઈ શકે.


એક ઇન્ટરપ્રિટરનો ઉપયોગ કરવો


In our example, we could write an M+ interpreter in ML.

આપણા ઉદાહરણમાં, આપણે ML માં M+ ઇન્ટરપ્રિટર લખી શકીએ છીએ.


આપણે પહેલા આને કમ્પાઇલ કરવાની જરૂર પડશે.


We can then use this to run the M+ compiler directly.

પછી આપણે M+ કમ્પાઇલરને સીધું ચલાવવા માટે આનો ઉપયોગ કરી શકીએ છીએ.


Since the “real” compiler has been used to do the compilation, nothing will be gained by using the generated compiler to compile itself, though this step can still be used as a test and for extensions.

કારણ કે “અસલી” કમ્પાઇલરનો ઉપયોગ કમ્પાઇલ કરવા માટે કરવામાં આવ્યો છે, તેથી જનરેટ થયેલા કમ્પાઇલરનો ઉપયોગ કરીને તેને કમ્પાઇલ કરવાથી કંઈપણ પ્રાપ્ત થશે નહીં, જોકે આ પગલાનો ઉપયોગ હજી પણ પરીક્ષણ અને એક્સ્ટેંશન માટે થઈ શકે છે.


Though using an interpreter requires fewer steps, this should not really be a consideration, as the computer(s) will do all the work in these steps.

જોકે ઇન્ટરપ્રિટરનો ઉપયોગ કરવાથી ઓછા પગલાંની જરૂર પડે છે, પરંતુ આ ખરેખર ધ્યાનમાં લેવું જોઈએ નહીં, કારણ કે કમ્પ્યુટર(ઓ) આ પગલાંમાં બધું જ કામ કરશે.


What is important is the amount of code that needs to be written by hand.

મહત્વનું એ છે કે હાથથી કેટલો કોડ લખવાની જરૂર છે.


For some languages, a QAD compiler will be easier to write than an interpreter, and for other languages an interpreter is easier.

કેટલીક ભાષાઓ માટે, QAD કમ્પાઇલર લખવું ઇન્ટરપ્રિટર કરતાં સરળ રહેશે, અને અન્ય ભાષાઓ માટે ઇન્ટરપ્રિટર સરળ છે.