కంపైలర్: కూర్పుల మధ్య తేడాలు

దిద్దుబాటు సారాంశం లేదు
దిద్దుబాటు సారాంశం లేదు
పంక్తి 6:
మానవులు కంప్యూటర్లతో సంభాషించవలసి వచ్చినప్పుడు ఒక చిక్కు సమశ్య ఎదురవుతుంది. క్రమణికలు రాసే వ్యక్తులు వారికి అర్థం అయే భాషలో (అనగా ఇంగ్లీషులోనో, తెలుగులోనో) రాయడానికి మొగ్గు చూపుతారు. కాని కంప్యూటర్లకి మానవులు వాడే సహజ భాషలు (natural languages) అర్థం కావు. వాటికి అర్థం అయేది యాంత్రిక భాష (machine language). కనుక మనం మనకి అర్థం అయే భాషలో రాసిన క్రమణికలని కంప్యూటర్లకి అర్థం అయే భాషలోకి మార్చగలిగే సదుపాయం ఉండాలి. అటువంటి సదుపాయాలలో కూర్పరి (compiler) ఒకటి. <ref>https://www.baeldung.com/cs/how-compilers-work</ref>. <ref> Alfred V. Aho, Monica Lam, Ravi Sethi, and Jeffrey Ullman, Compilers: Principles, Techniques, & Tools. Second Edition. ISBN-13: 978-0321486813, ISBN-10: 0321486811</ref>
 
ప్రతి ఉన్నత స్థాయి భాషకి ఒక కూర్పరి ఉంటుంది. ఒక భాషకు కంపైలర్ తయారు చేయాలంటే ముందు ఆ భాషకు వ్యాకరణాన్ని (గ్రామర్) ను రూపొందించాలి. ఈ వ్యాకరణాన్ని అనుసరించి మనం రాసిన ప్రోగ్రాములను కంపైలర్ సరియైనదా? కాదా? అనేది నిర్ణయిస్తుంది. మెషీన్ భాష నుంచి హైలెవెల్ కంప్యూటర్ భాషకు మార్చే సాఫ్టువేర్లను డీకంపైలర్ అని వ్యవహరిస్తుంటారు.
 
==చరిత్ర==
కంప్యూటర్ కనుగొన్న తొలినాళ్ళలో కొన్ని సంవత్సరాలపాటు సాఫ్టువేర్ ను అసెంబ్లీ భాషలో రాసేవారు.
==కూర్పు దశలు==
ఒక కూర్పరి (కంపైలర్) ఉన్నత స్థాయి భాషలో రాసిన క్రమణికని (హై లెవల్ ప్రోగ్రామును) మెషీన్ భాషకు మార్చడంలోతర్జుమా చెయ్యడంలో వివిధ దశలున్నాయి.
# నైఘంటిక విశ్లేషణ (lexical analysis)
# వ్యాకరణ విశ్లేషణ (syntactic analysis)
Line 18 ⟶ 17:
ఈ దశలని ఇప్పుడు వివరంగా పరిశీలిద్దాం.
 
(1) నైఘంటిక విశ్లేషణ (lexical analysis): ఈ దశలో క్రమణికని ఆనవాళ్లు (tokens) గా విరగ్గొడతారు. (2)
వ్యాకరణ విశ్లేషణ లోదశలో పైన విభజించిన విడిభాగాలు, లేదా ఆనవాళ్ళు, వ్యాకరణ పరంగా సరియైన క్రమణికని ఏర్పరుస్తాయో లేదో నిర్ణయిస్తారు. అంతే కాకుండా ఆనవాళ్లని ఉపయోగించి వ్యాకరణ వృక్షాన్ని (syntax tree) నిర్మిస్తారు. (3) తరువాత అర్థ విశ్లేషణ చేసి క్రమణిక అర్థవంతంగా ఉందో లేదో పరీక్షిస్తారు. (4) క్రమణికల ఉత్ప్పత్తి దశలో వ్యాకరణ వృక్షాన్ని ఆధారంగా చేసుకుని ఒక మధ్యస్థ స్థాయి భాషలో ఆదేశాలు (instructions) గా మారుస్తారు. (4) సర్వోత్తమ క్రమణికల ఎంపిక దశలో క్రమణికల సామర్థ్యాన్ని పెంచడానికి ఆదేశాల నిర్మాణంలో మార్పులు చేస్తారు. ఇప్పుడు ఈ దశలని కమరి మకొంచెం లోతుగా పరిశీళిద్దాం.
===నైఘంటిక విశ్లేషణ (lexical analysis)===
చిన్న ఉదాహరణతో మొదలు పెడదాం. క్రమణికలు ఇంగ్లీషు మాటలలోనే రాయాలని నిబంధన లేదు కాని, సౌలభ్యానికి Iఈమన మొదటి ఆదేశం తరఫున ఈ దిగువ ఇంగ్లీషు వాక్యం వాడదాం.
 
String greetingsgreeting = "hello!";
 
ఈ వాక్యంలో అయిదు "ఆనవాళ్లు" (tokens) ఉన్నాయి. అవి:
Line 32 ⟶ 31:
# ;
===వ్యాకరణ విశ్లేషణ (syntactic analysis)===
పై దశలో తయారు చేసిన ఆనవాళ్ళతో ఒక వ్యాకరణ వృక్షాన్ని నిర్మిస్తారు. ఈ దశలో మనం రాసిన ఆదేశాలలో ఏవైనా వ్యాకరణ దోషాలు ఉన్నాయేమో చూసి, ఉంటే ఆ తప్పులని ఎత్తి చూపుతూ వినియోగదారులకి సలహాలు ఇస్తుంది కూర్పరి. (In this phase, the compiler checks the grammatic structure of the source code and its syntactic correctness.)
===అర్థ విశ్లేషణ (semantic analysis)===
మనం రాసిన ఆదేశాలు వ్యాకరణ యుక్తంగా ఉన్నంత మాత్రాన్న సరిపోదు; అవి అర్థభరితంగా కూడా ఉండాలి. ఉదాహరణకి a అనేది పూర్ణసంఖ్య అని ఒక ఆదేశంలో చెప్పిన తరువాత ఆ a = 3.2 అని మరొక ఆదేశంలో చెబితే కంప్యూటర్ మనం చెప్పేది అర్థం చేసుకోలేదు. ఇలాంటి తప్పులు ఎన్నో రకాలు ఎదురవుతూ ఉంటాయి. ఉదాహరణకి type checking, flow control checking, label checking anEvi.
 
===క్రమణికల ఉత్ప్పత్తి (code generation)===
"https://te.wikipedia.org/wiki/కంపైలర్" నుండి వెలికితీశారు