GOLD (parser)
این مقاله، GOLD (parser)، اخیراً بهواسطهٔ فرایند ایجاد مقاله ایجاد شدهاست. بازبینیکننده در حال بستن درخواست است و این برچسب احتمالاً بهزودی برداشته میشود.
ابزارهای بازبینی: پیشبارگیری بحث اعلان به نگارنده |
خطای اسکریپتی: پودمان «AfC submission catcheck» وجود ندارد. "این مقاله در حال ترجمه از ویکی انگلیسی است
لطفا حذف نشود."
GOLD یک سیستم تجزیه و تحلیل رایگان است که برای پشتیبانی از چندین زبان برنامه نویسی طراحی شده است.
طرح[ویرایش]
این سیستم از یک DFA برای تحلیل واژگانی و از الگوریتم LALR برای تجزیه استفاده می کند. هر دوی این الگوریتمها ماشینهای حالت هستند که از جداول برای تعیین اقدامات استفاده میکنند. GOLD بر اساس اصل جداسازی منطقی فرآیند تولید جداول تجزیه LALR و DFA از پیادهسازی واقعی خود الگوریتمهای تجزیه طراحی شده است. این اجازه می دهد تا تجزیه کننده ها در زبان های برنامه نویسی مختلف پیاده سازی شوند و در عین حال گرامرها و روند توسعه یکسانی حفظ شود.
سیستم GOLD از سه جزء منطقی تشکیل شده است، "Builder"، "Engine" و یک تعریف فایل "Compiled Grammar Table" که به عنوان یک واسطه بین سازنده و موتور عمل می کند.
سازنده[ویرایش]
Builder جزء اصلی و کاربرد اصلی سیستم است. Builder برای تجزیه و تحلیل نحو یک زبان (مشخص شده به عنوان گرامر) و ساخت جداول LALR و DFA استفاده می شود. در طی این فرآیند، هرگونه ابهام در گرامر گزارش خواهد شد. این در اصل همان وظیفه ای است که توسط کامپایلر-کامپایلرها مانند YACC و ANTLR انجام می شود .
هنگامی که جداول تجزیه LALR و DFA با موفقیت ساخته شدند، سازنده می تواند این داده ها را در یک فایل جدول گرامر کامپایل شده ذخیره کند. این اجازه می دهد تا اطلاعات بعداً توسط سازنده بازگشایی شود یا در یکی از موتورها استفاده شود. در حال حاضر کامپوننت Builder فقط برای سیستم عامل های ویندوز 32 بیتی موجود است.
برخی از ویژگی های سازنده عبارتند از:
- مجوز نرم افزار رایگان
- مرور حالت
- تست یکپارچه
- ویزارد چند فایل را تست کنید
- ایجاد صفحات وب (از جمله نمودارهای نحوی پیوند داده شده)
- برنامه های اسکلت را با استفاده از قالب ها تولید کنید
- گرامرها را به YACC صادر کنید
- جداول را به XML یا متن فرمت شده صادر کنید
فایل گرامر جدول کامپایل شده[ویرایش]
فایل Compiled Grammar Table برای ذخیره اطلاعات جدول تولید شده توسط Builder استفاده می شود.
موتورها[ویرایش]
بر خلاف Builder که فقط بر روی یک پلتفرم اجرا می شود، جزء Engine برای یک زبان برنامه نویسی خاص و/یا پلت فرم توسعه نوشته شده است. موتور الگوریتم های LALR و DFA را پیاده سازی می کند. از آنجایی که زبانهای برنامهنویسی مختلف از رویکردهای متفاوتی برای طراحی برنامهها استفاده میکنند، هر پیادهسازی Engine متفاوت خواهد بود. در نتیجه، پیادهسازی Engine نوشته شده برای ویژوال بیسیک 6 بسیار متفاوت از پیادهسازی نوشته شده برای ANSI C خواهد بود.
در حال حاضر، Engines for GOLD برای زبانها / پلتفرمهای برنامهنویسی زیر پیادهسازی شده است. موتورهای جدید را می توان با استفاده از کد منبع برای موتورهای موجود به عنوان نقطه شروع پیاده سازی کرد.
- مونتاژ - Intel x86
- ANSI C
- سی شارپ
- دی
- دلفی
- جاوا
- پاسکال
- پایتون
- ویژوال بیسیک
- ویژوال بیسیک . خالص
- ویژوال C++
گرامرها[ویرایش]
گرامرهای GOLD مستقیماً بر اساس فرم Backus-Naur ، عبارات منظم و نماد مجموعه هستند.
گرامر زیر، نحوی را برای یک زبان برنامه نویسی حداقل منظوره به نام "Simple" تعریف می کند.
"Name" = 'Simple' "Author" = 'Devin Cook' "Version" = '2.1' "About" = 'This is a very simple grammar designed for use in examples' "Case Sensitive" = False "Start Symbol" = <Statements> {String Ch 1} = {Printable} - [''] {String Ch 2} = {Printable} - ["] Identifier = {Letter}{AlphaNumeric}* ! String allows either single or double quotes StringLiteral = '' {String Ch 1}* '' | '"' {String Ch 2}* '"' NumberLiteral = {Number}+('.'{Number}+)? Comment Start = '/*' Comment End = '*/' Comment Line = '//'
<Statements> ::= <Statements> <Statement>
| <Statement>
<Statement> ::= display <Expression>
| display <Expression> read ID
| assign ID '=' <Expression>
| while <Expression> do <Statements> end
| if <Expression> then <Statements> end
| if <Expression> then <Statements> else <Statements> end
<Expression> ::= <Expression> '>' <Add Exp>
| <Expression> '<' <Add Exp>
| <Expression> '<=' <Add Exp>
| <Expression> '>=' <Add Exp>
| <Expression> '==' <Add Exp>
| <Expression> '<>' <Add Exp>
| <Add Exp>
<Add Exp> ::= <Add Exp> '+' <Mult Exp>
| <Add Exp> '-' <Mult Exp>
| <Add Exp> '&' <Mult Exp>
| <Mult Exp>
<Mult Exp> ::= <Mult Exp> '*' <Negate Exp>
| <Mult Exp> '/' <Negate Exp>
| <Negate Exp>
<Negate Exp> ::= '-' <Value>
| <Value>
<Value> ::= Identifier
| StringLiteral
| NumberLiteral
| '(' <Expression> ')'
مروری بر توسعه[ویرایش]
مرحله اول شامل نوشتن و آزمایش یک دستور زبان برای زبان مورد تجزیه است. گرامر را می توان با استفاده از هر ویرایشگر متنی نوشت - مانند Notepad یا ویرایشگری که در Builder تعبیه شده است. در این مرحله نیازی به کدنویسی نیست.
پس از تکمیل گرامر، توسط سازنده آنالیز می شود، جداول تجزیه LALR و DFA ساخته می شوند و هرگونه ابهام یا مشکل در گرامر گزارش می شود. پس از آن، جداول در یک فایل جدول گرامر کامپایل شده ذخیره می شوند تا بعداً توسط یک موتور تجزیه استفاده شود. در این مرحله دیگر نیازی به GOLD Parser Builder نیست.
در مرحله آخر جداول توسط یک موتور خوانده می شود. در این مرحله، فرآیند توسعه به زبان پیاده سازی انتخاب شده بستگی دارد.
منابع[ویرایش]
لینک های خارجی[ویرایش]
رده:پیادهسازی زبان برنامهنویسی رده:صفحات با ترجمه بازبینینشده
This article "GOLD (parser)" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:GOLD (parser). Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.