انتلر کیست؟ توضیح بده.
انتلر (زبان انگلیسی: ANTLR) یک ابزار مولد پارسر است که برای خواندن، پردازش، اجرا یا ترجمه متون ساختار یافته یا فایل‌ها باینری به کار می‌رود. این نرم‌افزار در ابتدا توسط از به وجود آمد و همچنان در حال توسعه است. انتلر در نسخه ۴ام خود از پارسر (*)LL تطبیقی استفاده می‌کند که یک فناوری جدید برای پارس کردن است که اولین بار توسط خود و سم هارول توسعه پیدا کرد. ویژگی جالب نسخه ۴ام انتلر این است که مشکل چپ گردی گرامر را حل می‌کند (مشروط بر اینکه چپ گردی غیر مستقیم نباشد یعنی مثلاً قاعده x به y و y به x ارجاع داشته باشد) بنابراین انتلر با گرامرهای چپ گرد هم مشکلی ندارد.انتلر ورودی را با توجه به گرامری که به آن می‌دهد توسط یک درخت پارس نمایش می دهد که با گردش روی آن می‌توانید تغیرات لازم را روی ورودی ایجاد کنید. انتلر همچنین در نسخه جدید خود گردش‌کننده درخت پارس را در دو قالب شنونده و بازدیدکننده را به صورت خودکار تولید می‌کند.کارکرد.نحوهٔ کارکرد انتلر به این صورت است که ابتدا یک گرامر برای زبان مورد نظرمان تعریف می‌کنیم سپس به کمک ابزار انتلر کدی به زبان مورد نظرمان تولید می‌کنیم که به کمک این کد می‌توانیم تغییرات مورد نظرمان را روی ورودی داشته باشیم. نسخه آخر این نرم‌افزار تولید کد به زبان های E Java, C#, C++ JavaScript, Python2, Python3, Swift و Go را پشتیبانی می‌کند.پروژه‌های نوشته شده به کمک انتلر.این نرم‌افزار به صورت گسترده‌ای در صنعت و دانشگاه برای ساختن انواع زبان‌ها، ابزارها و چارچوب‌های نرم‌افزاری استفاده شده‌است که نمونه‌های آن را در زیر می‌بینید:مثال و راه‌اندازی.ابتدا با دستورها زیر انتلر را دریافت کنید:$ cd /usr/local/lib$ curl -O http://www.antlr.org/download/antlr-4.7.1-complete.jarسپس دستور زیر را وارد کنید که انتلر به وسیله جاوا شناسایی شود:$ export CLASSPATH=".:/usr/local/lib/antlr-4.7.1-complete.jar:$CLASSPATH"در ادامه دستورها زیر را وارد کنید:$ alias antlr4='java -jar /usr/local/lib/antlr-4.7.1-complete.jar'$ alias grun='java org.antlr.v4.runtime.misc.TestRig'به عنوان یک مثال ابتدایی گرامر زیر را در نظر بگیرید و نام ان را Grammar.g4 بگذارید.// define a grammar called Hellogrammar Hello;r : 'hello' ID;ID : [a-z]+ ;WS : [\t\r\n]+ -&gt; skip ;ابتدا توابع enterR که با وارد شدن به قاعده R اجرا می‌شود بدین صورت بازنویسی می‌کنیمکه توکن ID قاعده R را بعد از متن :Entering R بنویسد و تابع exitR رابه این صورت کهعبارت Exiting R را برای ما چاپ کند.public class HelloWalker extends HelloBaseListener { public void enterR(HelloParser.RContext ctx ) { System.out.println( "Entering R : " + ctx.ID().getText() ); public void exitR(HelloParser.RContext ctx ) { System.out.println( "Exiting R" );کد نهایی به شکل زیر است.import org.antlr.v4.runtime.*;import org.antlr.v4.runtime.tree.*;public class HelloWalker extends HelloBaseListener { public void enterR(HelloParser.RContext ctx ) { System.out.println( "Entering R : " + ctx.ID().getText() ); public void exitR(HelloParser.RContext ctx ) { System.out.println( "Exiting R" );public class Hello { public static void main( String[] args) throws Exception HelloLexer lexer = new HelloLexer( new ANTLRFileStream(args[0])); CommonTokenStream tokens = new CommonTokenStream( lexer ); HelloParser parser = new HelloParser( tokens ); ParseTree tree = parser.r(); ParseTreeWalker walker = new ParseTreeWalker(); walker.walk( new HelloWalker(), tree );این را مثلاً در فایلی به نام Hello.java ذخیره کنیددر نهایت به صورت زیر می‌توانیم ان را اجرا کنید$ antlr4 Grammar.g4و سپس:$ javac Grammar*.java Hello.javaو$ java Helloحالا می‌توانید به صورت دستی ورودی بدهید و با CTRL+D به ورودی دادن خاتمه دهید. همچنین می‌توانید مثلاً توسط دستور زیر درخت عبارت را رسم کنید:$ grun Hello r -gui