তারা কি একটি সংকলন প্রক্রিয়ার বিভিন্ন পর্যায় দ্বারা উত্পন্ন? বা তারা কি একই জিনিসটির জন্য কেবল আলাদা নাম?
তারা কি একটি সংকলন প্রক্রিয়ার বিভিন্ন পর্যায় দ্বারা উত্পন্ন? বা তারা কি একই জিনিসটির জন্য কেবল আলাদা নাম?
উত্তর:
এটি টেরেন্স পারর দ্বারা প্রকাশিত মূল্যায়ন ব্যাকরণের উপর ভিত্তি করে ।
উদাহরণস্বরূপ ব্যাকরণ:
grammar Expr002;
options
{
output=AST;
ASTLabelType=CommonTree; // type of $stat.tree ref etc...
}
prog : ( stat )+ ;
stat : expr NEWLINE -> expr
| ID '=' expr NEWLINE -> ^('=' ID expr)
| NEWLINE ->
;
expr : multExpr (( '+'^ | '-'^ ) multExpr)*
;
multExpr
: atom ('*'^ atom)*
;
atom : INT
| ID
| '('! expr ')'!
;
ID : ('a'..'z' | 'A'..'Z' )+ ;
INT : '0'..'9'+ ;
NEWLINE : '\r'? '\n' ;
WS : ( ' ' | '\t' )+ { skip(); } ;
ইনপুট
x=1
y=2
3*(x+y)
পার্স গাছ
পার্স গাছটি ইনপুটটির একটি দৃ a় প্রতিনিধিত্ব। পার্স গাছটি ইনপুটটির সমস্ত তথ্য ধরে রাখে। খালি বাক্সগুলি হোয়াইটস্পেসের প্রতিনিধিত্ব করে, মানে লাইনের শেষ।
এএসটি
এএসটি ইনপুটটির একটি বিমূর্ত উপস্থাপনা। লক্ষ করুন যে পেরেনগুলি এএসটিতে উপস্থিত নেই কারণ সমিতিগুলি গাছের কাঠামো থেকে উদ্ভূত।
ব্যাখ্যার মাধ্যমে আরও তথ্যের জন্য কম্পাইলার এবং সংকলক জেনারেটর pg দেখুন। পৃষ্ঠাতে 23
বা বিমূর্ত সিনট্যাক্স গাছ T প্রোগ্রামিং ভাষার সিনট্যাক্স এবং শব্দার্থবিজ্ঞানের মধ্যে 21
আমি যা বুঝতে পেরেছি তা থেকে, এএসটি উত্স কোডের উপাদানগুলির মধ্যে বিমূর্ত সম্পর্কের দিকে আরও বেশি জোর দেয়, যখন পার্স গাছটি নাইটপিকির বিবরণ সহ ভাষা দ্বারা ব্যবহৃত ব্যাকরণটির প্রকৃত বাস্তবায়নের দিকে মনোনিবেশ করে। এগুলি অবশ্যই এক নয়, যেহেতু "পার্স ট্রি" এর আরেকটি শব্দ হ'ল "কংক্রিট সিনট্যাক্স ট্রি"।
আমি এই পৃষ্ঠাটি পেয়েছি যা এই সঠিক প্রশ্নটি সমাধান করার চেষ্টা করে।
ডিএসএল বই মার্টিন জালিয়া থেকে এই চমত্কারভাবে ব্যাখ্যা করে। এএসটিটিতে কেবলমাত্র সমস্ত 'দরকারী' উপাদান রয়েছে যা আরও প্রক্রিয়াজাতকরণের জন্য ব্যবহৃত হবে, যখন পার্স ট্রিটিতে আপনি যে মূল নথিটি পার্স করেন সেগুলি থেকে সমস্ত শিল্পকর্ম (স্পেস, বন্ধনী, ...) থাকে while
পাস্কাল অ্যাসাইনমেন্ট বয়সটি নিন: = 42;
সিনট্যাক্স ট্রিটি উত্স কোডের মতো দেখায়। নীচে আমি নোডের চারপাশে বন্ধনী রাখছি। [বয়স] [: =] [42] [;]
একটি বিমূর্ত গাছটি দেখতে দেখতে [=] [বয়স] [42]
অ্যাসাইনমেন্টটি 2 উপাদান, বয়স এবং 42 এর সাথে নোডে পরিণত হয় idea ধারণাটি হ'ল আপনি অ্যাসাইনমেন্টটি কার্যকর করতে পারেন।
এছাড়াও নোট করুন যে প্যাসকাল সিনট্যাক্স অদৃশ্য হয়ে যায়। সুতরাং একাধিক ভাষা একই এএসটি তৈরি করা সম্ভব। এটি ক্রস ল্যাঙ্গুয়েজ স্ক্রিপ্ট ইঞ্জিনগুলির জন্য দরকারী।
পার্স ট্রি গাছের অভ্যন্তর নোডগুলি নন টার্মিনাল, পাতাগুলি টার্মিনাল। সিনট্যাক্স ট্রি এন্টিরির নোডগুলি অপারেটর হয়, পাতাগুলি অপারেশন হয়।