కంపైలర్: కూర్పుల మధ్య తేడాలు
Content deleted Content added
దిద్దుబాటు సారాంశం లేదు |
దిద్దుబాటు సారాంశం లేదు |
||
పంక్తి 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)
వ్యాకరణ విశ్లేషణ
===నైఘంటిక విశ్లేషణ (lexical analysis)===
చిన్న ఉదాహరణతో మొదలు పెడదాం. క్రమణికలు ఇంగ్లీషు మాటలలోనే రాయాలని నిబంధన లేదు కాని, సౌలభ్యానికి
String
ఈ వాక్యంలో అయిదు "ఆనవాళ్లు" (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)===
|