انگلیسیفرانسویاسپانیایی

فاویکون OnWorks

چوب شور - آنلاین در ابر

Pretzel را در ارائه دهنده هاست رایگان OnWorks از طریق Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا کنید.

این دستور پرتزل است که می تواند در ارائه دهنده میزبانی رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


چوب شور - ژنراتور زیبای چاپگر جهانی

خلاصه


چوب شور [-qtgdh] [-o outfile] پیشوند فایل

چوب شور [-qtgdh] [-o outfile] file1 file2

شرح


Pretzel برنامه ای است که یک ماژول زیبا چاپگر را از توضیحات رسمی تولید می کند
راهی که یک زبان خاص باید زیبا چاپ شود. آ زیبا چاپگر یک تابع یا
برنامه ای که کد منبع را مجدداً مرتب می کند تا خوانایی آن را افزایش دهد. چاپگرهای زیبا تولید شد
با خروجی چوب شور کد منبع LaTeX که می تواند در اسناد خود استفاده شود. توجه داشته باشید که
چوب شور تولید می کند ماژول ها، نه برنامه ها!

شما باید دو فایل ورودی به چوب شور ارائه دهید که نحوه کد منبع داده شده را مشخص می کند
باید زیبا چاپ شود به این دو فایل می گویند قالب بندی شده رمز پرونده (پسوند فوت)
و قالب بندی شده دستور زبان پرونده (پسوند fg).

از این ورودی، چوب شور دو چیز تولید می کند: معتبر خم کردن(1) فایلی که تشکیل می دهد
چاپ زیبا اسکنر و معتبر است گاومیش کوهان دار امریکایی(1) فایل ورودی که می توان از آن برای ساخت
چاپ زیبا تجزیه کننده (که چاپگر زیبای واقعی است). یک اسکریپت پوسته وجود دارد
چوب شور که استفاده از چوب شور را تسهیل می کند (نگاه کنید به چوب شور(1)). این صفحه مرد فقط منظور است
به عنوان یک مرجع سریع برای استفاده از چوب شور. اگر می خواهید به مستندات اصلی چوب شور نگاه کنید
برای همه اینها جدید هستند

فراخوانی پیشران
فراخوانی چوب شور می تواند به دو شکل باشد: یا آن را فراخوانی کنید و فقط پیشوند مشترک را مشخص کنید.
دو فایل ورودی، یا هر دو فایل را به طور جداگانه در خط فرمان مشخص کنید. اگر مشخص کنید
هر دو فایل، فایل توکن فرمت شده اول است.

مثال ها
بگویید فایل های ورودی شما فراخوانی شده اند فوت و foo.fg. اونوقت میتونی بگی

پیشران فو

برای فراخوانی چوب شور به درستی. اگر فایل های شما فراخوانی شود فوت و bar.fg سپس شما می خواهید
گفتن

پیشران فوت bar.fg

برای انجام کار

OPTIONS


Pretzel گزینه های زیر را تشخیص می دهد:

-q بی صدا بدوید

-t فقط فایل توکن فرمت شده را پردازش کنید.

-g فقط فایل گرامر فرمت‌شده را پردازش کنید (گزینه‌ها -t و -g متقابل هستند
انحصاری).

-d اطلاعات اشکال زدایی را روی صفحه چاپ کنید.

-h پیام استفاده کامل را چاپ کنید.

-o نام
استفاده کنید نام به عنوان پیشوند فایل های خروجی تولید شده

L' INPUT فایل ها


این بخش فرمت فایل های ورودی و فرمت را خلاصه می کند قالب فرمان بدوی
که چوب شور پشتیبانی می کند.

La قالب بندی شده رمز پرونده
فایل توکن فرمت شده حاوی لیستی از تعاریف نشانه با متناظر آنهاست
فرم "چاپی زیبا". شکل زیبای چاپ شده یک توکن، an نامیده می شود صفت یا یک
ترجمه.

طرح کلی فایل توکن فرمت شده است

اعلامیه ها

%%

رمز تعاریف

به طور معمول، اعلامیه ها قسمت خالی است می توانید توضیحات کلی فایل را قرار دهید
در اینجا (به عنوان یک نظر C) و تعریف مجدد رابط پیش فرض به اینجا نیز مراجعه کنید.

La رمز تعاریف بخش فایل توکن فرمت شده شامل یک سری نشانه است
تعاریف فرم:

الگو رمز صفت

La الگو باید یک عبارت منظم معتبر (از نظر خم کردن(1)) و باید باشد
بدون فرورفتگی در رمز نام نمادین نشانه را برای الگو مشخص می کند و شروع می شود
در اولین کاراکتر بدون فاصله بعد از الگو. نام رمز باید قانونی باشد
نام یک شناسه در نماد پاسکال و باید be تمام in بالا مورد. (زیرخط ها هستند
مجاز است اما نه در ابتدای کلمه.)

La صفت برای این نشانه، یعنی فرم زیبای چاپ شده آن، از تمام متن تشکیل شده است
بین دو براکت پیچش دار { و }. ویژگی ها می توانند رشته های ساده باشند
(که توسط دو نقل قول احاطه شده است)، دستورات قالب بندی (به زیر مراجعه کنید)، کد C++ خودتان (محصور در
براکت های زاویه دار [ و ]، به زیر مراجعه کنید) یا ترکیبی از هر دو که توسط یک به هم متصل شده اند
اختیاری + امضا کردن. تعاریف ویژگی می تواند چندین خط و شروع را پوشش دهد { نیازی نیست
در همان خط تعریف نشانه بایستید. با این حال خطوط بعدی باید تورفتگی داشته باشند
حداقل با یک برگه خالی یا یک برگه.

اگر رشته ها را به عنوان بخشی از تعریف ویژگی تعریف کنید، باید آنها را در یک C مشخص کنید
نوعی مد، یعنی می توانید خطوط جدید و تب ها را با آن وارد کنید \n و \t. اما اگر بخواهید
یک بک اسلش را در یک رشته قرار دهید، نباید فراموش کنید که دو بک اسلش قرار دهید \\ به
فایل ورودی. اگر از TeX به عنوان حروف‌نویس استفاده می‌کنید، این نکته قابل توجه است.

اگر تعریف مشخصه حذف شود، چوب شور یک ویژگی برای این ایجاد می کند
الگو به صورت پیش فرض ویژگی پیش فرض شامل رشته ای است که متن را در بر می گیرد
مطابق با الگوی مربوطه

خود کاربر نیز ممکن است با استفاده از دنباله به متن مطابقت داده شده مراجعه کند **. بدین ترتیب

"فو" BAR

"فو" BAR { ** }

"فو" BAR { "فو" }

همه یک معنی دارند

شما می توانید از یک | امضا به عنوان یک نام نمادین؛ این سیگنالی است که عبارت منظم فعلی دارد
همان نام رمز (و همچنین همان ویژگی) با نشانه مشخص شده در زیر
خط (خطوط خالی نادیده گرفته می شوند). تعریف ویژگی پشت a | غیر قانونی است با این حال
شما می توانید عبارات منظم را بدون نام رمز و یا ویژگی برای دادن a مشخص کنید
قانون پیش‌فرض یا برای خوردن فضای خالی.

اعلان‌ها و تعاریف نشانه‌ها باید با یک خط از هم جدا شوند
دو شخصیت %%.

مثال ها
نمونه‌های زیر همگی تعاریف رمز قانونی هستند:

[0-9] رقم

"{" باز کن { "\\{" تورفتگی مجبور }

[az][a-z0-9]* ID { "{\\آی تی " ** "}" }

"عملکرد" |

"روش" PROC_INTRO { نیروی_بزرگ + ** }

[\t\ \n] |

.

La قالب بندی شده دستور زبان پرونده
در فایل گرامر فرمت شده، کاربر گرامر کلی چاپ زیبایی را برای آن کد می کند
زبان برنامه نویسی. این کار با تعیین یک گرامر آزاد از زمینه زبان انجام می شود
و با افزودن اطلاعاتی در مورد ایجاد ویژگی های جدید در هر قانون. کلی آن
طرح کلی به این شکل است:

رمز اعلامیه ها

%%

دستور زبان قوانین

La رمز اعلامیه ها بخش ممکن است خالی باشد و جداکننده بین دو قسمت از
پرونده %% باید به تنهایی روی یک خط بدون فرورفتگی ظاهر شود.

La دستور زبان قوانین بخش شامل مجموعه ای از قوانین گرامر آزاد زمینه است
که می تواند با یک تعریف ویژگی همراه باشد. یک قانون با بیان این مشخص می شود
توکن حاصل، کولون و سپس مجموعه ای از توکن ها که با این قانون کاهش می یابد.
این قانون با نقطه ویرگول به پایان می رسد. برای مثال، تعریف بلوک در پاسکال ممکن است شبیه این باشد
این:

مسدود کردن : شروع stmt_list END ;

دنبال کردن لیست نشانه در سمت راست کولون می تواند یک تعریف ویژگی باشد.
این تعریف بیان می کند که چگونه ترجمه نماد تولید شده از
نشانه ها در سمت راست قانون.

یک تعریف مشخصه در میان براکت‌های پیچ‌دار پرانتز شده است { و } و دوباره می تواند تشکیل شود
از رشته ها (در دو گیومه)، دستورات قالب بندی یا کد C (محصور در براکت های زاویه دار [
و ]، به زیر مراجعه کنید) که توسط یک اختیاری به هم پیوسته اند +. اما در اینجا می توانید به آن نیز مراجعه کنید
ویژگی های نشانه ها در سمت راست قانون. این در یک کمی ناجور انجام می شود
علامت گذاری با عددی که قبل از a آمده است $ علامت دلار. اعداد به
ترتیب ظاهر نمادها در سمت راست قانون. بنابراین $1 اشاره به
اولین نشانه قانون، $2 به دومی و غیره.

مجدداً به تعاریف ویژگی اجازه داده می شود تا چندین خط را در بر بگیرد و رشته ها باید باشند
به روش C مشخص شده است.

تعریف ویژگی ممکن است حذف شود. اگر اینطور است، چوب شور به طور پیش فرض تشکیل می شود
ویژگی نماد تولید شده از الحاق ساده صفات بر روی
سمت راست قانون البته ممکن است سمت راست یک قانون نیز خالی باشد (به
چیزهایی را از هیچ تولید کنید) یا به سادگی دو یا چند قانون را به هم متصل کنید که منجر به
همان نماد با a |.

برای هر نشانه ترمینال که در قواعد دستور زبان ظاهر می شود، باید یک خط ویژه وجود داشته باشد
در بخش اعلامیه های فایل نوشته شده است. این تعاریف به شکلی هستند

٪ نشانه نام رمز

بسیار مهم است که این را فراموش نکنید.

مثال ها
به عنوان مثال، در اینجا دوباره تعریف احتمالی یک بلوک در پاسکال وجود دارد، اکنون با یک
مثال تعریف ویژگی:

مسدود کردن : شروع stmt_list END { $1 $2 مجبور $3 } ;

صفت الف مسدود کردن بنابراین شامل ویژگی های است شروع و
stmt_list نشانه‌ها، به هم پیوسته با a مجبور دستور و ترجمه از END
نشانه

این دو خط به همین معنی است:

stmt : مسدود کردن نیمه ;

stmt : مسدود کردن نیمه { $1 $2 } ;

اینها نیز قوانین قانونی هستند:

stmt_list : { مجبور }
| stmt_list stmt نیمه { $1 $2 $3 مجبور };

نظرات و رمز
یک راه بسیار ساده برای قرار دادن نظرات در توکن فرمت شده و فرمت شده وجود دارد
فایل های گرامر این کار به نوعی با C++ انجام می‌شود و قبل از کامنت یک علامت دوگانه قرار می‌گیرد
چاک //. همه کاراکترهای بین این علامت و انتهای خط توسط نادیده گرفته می شوند
چوب شور

در هر دو فایل می توانید کد C/C++ اضافی را قبل و بعد از تعاریف/گرامر قرار دهید
بخش ها اگر می خواهید کدی را در انتهای فایل خود وارد کنید، باید کد دوم را وارد کنید %%
روی یک خط به تنهایی و کد را پشت آن قرار دهید. کد C/C++ قبل از تعاریف/قوانین
بخش باید با a گره خورده باشد %{, %} جفت درج کد اضافی جالب است
افرادی که می خواهند از درون تعریف ویژگی به آن دسترسی داشته باشند.

رمز در داخل صفت تعاریف
از نسخه 2.0 به بعد چوب شور اجازه می دهد تا کد C++ را در تعاریف ویژگی ها وارد کنید.
به این ترتیب پرتزل از شما انتظار دارد که در فایل های ورودی چوب شور کد بنویسید:

قطعات کد در داخل پرانتزهای زاویه دار قرار می گیرند. هر براکت زاویه ای که ظاهر می شود
در کد C باید با یک اسلش فرار کرد. می توانید بلوک های کد قبل از و وجود دارد
پشت تعریف صفت که فراخوانی می شوند راه افتادن رمز و پایانرمز. فقط یک
بلوک کد شروع یا پایان مجاز است. هر دو کاملا اختیاری هستند، اما اگر بخواهید
یا را مشخص کنید، به یک تعریف ویژگی نیاز دارید. کد شروع قبل از اجرا اجرا می شود
ویژگی توکن جدید ساخته می شود، کد پایانی پس از ساخت ویژگی اجرا می شود
و قبل از بازگشت به تابع فراخوانی (در اسکنر).

قطعات کد در تعاریف ویژگی باید یک اشاره گر را به an برگردانند صفت شی کلاس
(به فایل مراجعه کنید attr/attr.nw در توزیع چوب شور برای جزئیات). در قالب بندی شده
فایل توکن، متن منطبق به شکل الف برای شما قابل مشاهده است کاراکتر* yytext متغیر. در
نام نمادین نشانه ها با همان نامی که چوب شور به آنها می دهد موجود است.
کد شروع، کد در تعاریف ویژگی و کد پایانی کاملا اختیاری است. ولی
در هر مکانی که آنها مجاز هستند، فقط یک بیت کد در پرانتز ممکن است قرار داده شود. اینجا یک
مثال از فایل گرامر فرمت شده:

id : ID { [جستجو ($1) ? ایجاد ("{\\bf ") :

اونو بساز ")] $1 "}" };

این مثال نشان می دهد که چگونه یک شناسه را بسته به اینکه آیا در جستجو است، قالب بندی کنید
جدول یا نه شناسه ها را می توان در جدول به عنوان مثال مانند زیر نصب کرد:

typedef : TYPEDEF_LIKE INT_LIKE ID

[ نصب (3 دلار)؛ ]

{ $1 $2 "{\\bf " $3 "}" };

نمونه‌های بیشتری را می‌توانید در Pretzelbook پیدا کنید. روال های رایج برای فرار از شناسه ها، به
ساخت و مدیریت جداول جستجو، برای تبدیل به و از صفت* یا برای خروجی اشکال زدایی
اطلاعات را می توان در فایل های متعلق به C beautifulprinter در فهرست پیدا کرد
زبان ها/cee از توزیع چوب شور

La تنظیم of قالب دستورات
در اینجا لیستی از دستورات قالب پشتیبانی شده توسط pretzel و معنای آنها آمده است:
تهی دستور خالی
تورفتگی خط بعدی را کمی بیشتر فرورفته می کند.
بیرون زده
آخرین تورفتگی (de-indent) را پس می گیرد.
مجبور مجبور به شکستن خط می شود.
break_space
نشان دهنده فضای احتمالی برای شکست خط است.
انتخاب 1...انتخاب 9
نشان دهنده یک گسست خط اختیاری با خط ادامه است که کمی با تورفتگی دارد
با توجه به موقعیت شروع عادی
پشتیبان نشان دهنده یک بک اسپیس کوچک است.
نیروی_بزرگ
مجبور به شکستن خط می شود و فضای کمی اضافه می کند.
no_indent
باعث می شود خروجی خط جریان به سمت چپ شود.
لغو هر کدام را محو می کند break_space, انتخاب کردن, مجبور or نیروی_بزرگ بلافاصله دستور دهید
مقدم یا به دنبال آن است و همچنین هر یک را لغو می کند پشتیبان دستوری که از آن پیروی می کند.

برای یک مرجع کامل در مورد نحوه نوشتن ورودی چوب شور، به کتاب چوب شور نگاه کنید
که در توزیع چوب شور گنجانده شده است.

قالب فرمان پیش پردازش
دستورات قالب طبق دو قانون زیر از قبل پردازش می شوند:

1. دنباله ای از متوالی
break_space, مجبور، و / یا نیروی_بزرگ دستورات با یک فرمان جایگزین می شوند (the
حداکثر موارد داده شده).

2. لغو دستور هر کدام را لغو می کند break_space, انتخاب کردن, مجبور or نیروی_بزرگ دستور بده که
فوراً از آن قبل یا پیروی می کند و همچنین هر یک را لغو می کند پشتیبان دستوری که در ادامه آمده است
آن است.

L' OUTPUT فایل ها


اگر پرتزل بدون خطا اجرا شود، تعریف کلاس زیبایی چاپگر C++ را دریافت خواهید کرد
در قالب دو فایل فایل اول معتبر است گاومیش کوهان دار امریکایی(1) فایلی که از آن واقعی است
کلاس تجزیه کننده زیبا چاپ را می توان به دست آورد. فایل دوم (تولید شده از فرمت شده
فایل توکن) را می توان با پردازش کرد خم کردن(1) مولد اسکنر برای تشکیل زیبایی چاپ
کلاس اسکنر مورد استفاده توسط تجزیه کننده.

La گاومیش کوهان دار امریکایی پرونده
فایل bison تولید شده حاوی تعاریف یک کلاس تجزیه کننده زیبا چاپ است که
یک زیر کلاس از کلاس پایه انتزاعی زیر است (موجود در فایل Pparse.h در داخل
چوب شور شامل فهرست):

#عبارتند از

#include "attr.h"

#include "output.h"

کلاس Pparse {

عمومی:
Pparse()

~Pparse()

مجازی INT زیبا چاپ(istream*, ostream*) = 0;

مجازی INT زیبا چاپ(istream*, خروجی*) = 0;
};

چاپگر زیبایی که توسط چوب شور تولید می شود، زیر کلاسی از فرم زیر خواهد بود:

#include Pparse.h // شامل چکیده پایه کلاس

کلاس PPARSE_NAME : عمومی Pparse {

عمومی:
PPARSE_NAME(); ~PPARSE_NAME();

INT زیبا چاپ(istream*, ostream*)؛

INT زیبا چاپ(istream*, خروجی*)؛

از درجه اعتبار ساقط debug_on(); از درجه اعتبار ساقط debug_off();
};

نام کلاس ممکن است با تعریف مجدد ماکرو پیش پردازنده تغییر کند PPARSE_NAME
در فایل گرامر فرمت شده عملکرد زیبای چاپ واقعی است زیبا چاپ که
متن را از یک جریان ورودی (به عنوان مثال C++) می خواند istream شی) و نتایج را به یک خروجی می دهد
جریان خروجی (یعنی C++ جریان شیء، ببینید ios (3C++)). نسخه دوم بارگذاری شده
of زیبا چاپ یک را می گیرد تولید شی (به فایل مراجعه کنید خروجی/خروجی.nw و کتاب چوب شور
در توزیع چوب شور برای جزئیات) و از این برای خروجی کد زیبا چاپ شده استفاده می کند.
La اشکال زدایی کردن توابع را می توان برای تبدیل خروجی اشکال زدایی به cerr روشن و خاموش.

La خم کردن پرونده
کلاس تجزیه کننده زیبایی چاپ به خدمات یک اسکنر زیبا چاپ متکی است که می تواند
با استفاده از فایل چوب شور دوم تولید شود. این شامل یک تعریف کامل از یک اسکنر است
زیر کلاس این کلاس پایه انتزاعی (به فایل مراجعه کنید Pscan.h در دایرکتوری شامل چوب شور):

#عبارتند از #include "attr.h"

کلاس Pscan {

عمومی:
Pscan (istream*) ~Pscan()

مجازی INT اسکن (ویژگی**) = 0;
};

اسکنر باید با C++ مقداردهی اولیه شود istream اشاره گر که ورودی خود را از آن می گیرد.
یک تماس به واقعی اسکن تابع یک عدد صحیح (کد توکن توکن just
اسکن شده یا 0 در انتهای فایل) به اضافه یک تماس با ویژگی مرجع حاوی محتویات
نشانه (به فایل مراجعه کنید attr/attr.nw از توزیع چوب شور).

کلاس اسکنر زیبا چاپ تولید شده یک زیر کلاس است و به شکل زیر است:

#include Pscan.h // شامل چکیده پایه کلاس

کلاس PSCAN_NAME : عمومی Pscan {

عمومی:
PSCAN_NAME(istream*);

~PSCAN_NAME();

INT اسکن (ویژگی**)؛

نام اسکنر را می توان در فایل توکن فرمت شده با تعریف مجدد تغییر داد
PSCAN_NAME ماکرو در بخش اعلامیه ها کلاس اسکنر انتظار دارد که رمز را پیدا کند
تعاریف مشترک برای اسکنر و تجزیه کننده در یک فایل به نام ptokdefs.h و تلاش خواهد کرد
برای گنجاندن این فایل یا باید خودتان این فایل را تهیه کنید یا از آن استفاده کنید -d انتخاب
از Bison برای ایجاد گرامر متناسب با دستور زبان (نگاه کنید به گاومیش کوهان دار امریکایی(1)). شما ممکن است تغییر دهید
نام فایلی که اسکنر با تعریف مجدد آن انتظار دارد PTOKDEFS_NAME ماکرو در
بخش اعلامیه های فایل توکن فرمت شده. فایل های هدر کامن برای چکیده
کلاس‌های پایه و زیر کلاس‌های پیش‌فرض در پرتزل شامل دایرکتوری هستند.

با استفاده از خدمات onworks.net از چوب شور استفاده کنید


سرورها و ایستگاه های کاری رایگان

دانلود برنامه های ویندوز و لینوکس

دستورات لینوکس

Ad