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

اجرای سرورها | Ubuntu > | Fedora > |


فاویکون OnWorks

fst-compiler - آنلاین در ابر

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

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

برنامه:

نام


fst-compiler، fst-compiler-utf8 - دو کامپایلر برای برنامه های SFST

خلاصه


fst-compiler فایل گرامر [ فایل خروجی ]
fst-compiler-utf8 فایل گرامر [ فایل خروجی ]

OPTIONS


-c مبدل را در قالب فشرده ذخیره کنید که توسط fst-infl2 استفاده می شود.

-l مبدل را در قالب lowmem ذخیره کنید.

-s سطح سوئیچ و لایه تجزیه و تحلیل مبدل. شما باید از این سوئیچ در استفاده کنید
سفارش استفاده fst-infl (fst-infl2, fst-infl3) برای نسل به جای تجزیه و تحلیل

شرح


fst-compiler یک کامپایلر برای برنامه های مبدل حالت محدود است. به حداقل رساندن تولید می کند
مبدل حالت محدود که می توان با آن استفاده کرد fst-mor، fst-infl، fst-print، fst-compare,
fst-parse، و fst-lattice. نمایش مبدل فشرده که با
پرچم -c توسط fst-infl2، fst-train، و fst-match. حافظه کارآمد
نمایش مبدل که با پرچم -l تولید می شود، فقط توسط پشتیبانی می شود fst-
infl3.

اولین آرگومان برنامه نام فایلی است که حاوی برنامه مبدل است.
زبان برنامه نویسی در زیر توضیح داده شده است. آرگومان دوم نام فایل است
که مبدل به دست آمده به صورت دودویی روی آن نوشته می شود. اگر آرگومان دوم باشد
از دست رفته، خروجی در آن نوشته می شود stdout.

fst-compiler-utf8 متفاوت از fst-compiler فقط در رمزگذاری کاراکتر fst-compiler-
utf8 پشتیبانی از رمزگذاری UTF8 فایل های منبع در حالی که fst-compiler برای استفاده است
کدهای کاراکتر 8 بیتی مانند latin1 که پسوند کد ASCII هستند. اطلاعات
در مورد رمزگذاری در فایل های مبدل ذخیره می شود و توسط سایر برنامه های SFST استفاده می شود.

فایل فرمها


یک برنامه مبدل از یک دنباله (اختیاری) تشکیل شده است الفبا و متغیر
تعاریف به دنبال آن یک واحد مبدل بیان که نتیجه را مشخص می کند
مبدل

الفبا

یک تعریف الفبا از کلمه کلیدی ALPHABET و به دنبال آن = و مقداری مبدل تشکیل شده است
بیان به عنوان مثال

الفبا = [az]:[AZ]

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

متغیر

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

#UC# = AZ
#LC# = az

مبدل متغیرها توسط علائم دلار محصور شده و عبارات مبدل را به عنوان
ارزش های:

$MAP$ = [az]:[AZ]+
$MAP$ = [#LC#]:[#UC#]+

متغیرهایی که نام آنها با علامت "=" شروع می شود، خاص هستند توافق متغیرها اگر یک
متغیر توافق بیش از یک بار در یک عبارت مبدل رخ می دهد، همیشه خواهد داشت
همان مقدار برنامه مبدل زیر را در نظر بگیرید:

$=1$ = [abc]
$=1$ X $=1$

مبدل نتیجه رشته های aXa، bXb و cXc را تشخیص می دهد. فقط مبدل های غیر چرخه ای
(یعنی مبدل‌هایی با مجموعه محدودی از نگاشت رشته‌ای) را می‌توان به توافق اختصاص داد
متغیرها

نمادها

یک نماد یا است

- یک شخصیت واحد مانند A s 5،

- یک کاراکتر نقل قول مانند \* یا \_،

- یک نماد چند کاراکتری مانند یا (که همیشه هست
محصور در براکت های زاویه) یا

- یک اسلش به دنبال یک عدد که کد عددی آن است
شخصیت تعیین شده

- نماد تهی <>.

دنباله نماد

دنباله نماد، دنباله ای از شخصیت ها، نمادهای چند شخصیتی و شخصیت است
محدوده، به عنوان مثال az \. .

محدوده نماد

محدوده نماد هر دو است

- یک نماد واحد

- یک دنباله نماد محصور در پرانتز مربع مانند [A-Za-z] یا

- یک دنباله نماد که با ^ شروع می شود و در پرانتزهایی مانند [^A-Za-z] محصور می شود.
(تعیین متمم [a-zA-Z]) یا

- نقطه (که نشان دهنده هر نمادی از حروف الفبا است)

عبارات مبدل

یک عبارت مبدل (TE) به صورت بازگشتی به صورت زیر تعریف می شود:

- یک جفت از دو محدوده نماد که با دو نقطه از هم جدا شده اند یک TE است.

[az]:[aZ]

- یک محدوده نماد منفرد مانند [az] یک TE است.
شکل کوتاه [az]:[az] است.

- دو دنباله نماد محصور در پرانتز و با یک کولون از هم جدا شده اند
یک TE. {a[bc]}:{def} معادل a:db:e <>:f است | a:dc:e <>:f.

- اگر X و Y TE باشند، XY یک TE است.
(جاهای خالی نادیده گرفته می شوند مگر اینکه نقل قول شوند.)

- (X) یک TE است اگر X یک TE باشد.

- X op یک TE است، X یک TE است و op یا * (اپراتور ستاره Kleene)، +
(اپراتور Kleene's plus)، یا؟ (اپراتور اختیاری)

- عملیات X یک TE است X یک TE است و op هر دو است! (عملگر نفی)، ^
(عملگر استخراج زبان مقصد)، _ (عملگر استخراج زبان مبدأ)، یا ^_
(اپراتور سوئیچ منبع و هدف).

- X op Y یک TE است X و Y TE هستند و op یا & است (ارتباط
اپراتور)، | (اپراتور تفکیک)، || (عملگر ترکیب)، یا - (تفریق
اپراتور)

- L x op y R یک TE است اگر L و R TE هستند، x و y محدوده نماد هستند و
op یا => (محدودیت دو سطحی)، <= (اجبار دو سطحی)، یا <=> (دو سطحی) است.
محدودیت و اجبار).

- X op L__R یک TE است اگر X، L و R TE هستند و op یا ^-> (به سمت بالا
جایگزینی)، _-> (جایگزینی به سمت پایین)، /-> (جایگزینی به سمت چپ) یا \-> (جایگزینی به سمت راست)
جایگزینی). علاوه بر این، L و R باید اتومات ها را تعریف کنند (یعنی کدام رشته ها را نقشه می کشند
روی خودشان). این اپراتورها با عملگرهای جایگزین Karttunen مطابقت دارند. اگر
فلش با علامت سوال (؟) دنبال می شود، جایگزینی اختیاری می شود.

- X << l یک TE است اگر X یک TE باشد و l یکی از این شکل ها باشد
a یا شکل a:b که در آن a و b نویسه ها یا نمادهای منفرد هستند. نتیجه یک است
مبدل که در آن l آزادانه در X قرار داده شده است. برای مثال مبدل ab << c است
معادل c*ac*bc*.

- X op Y L1__R2، ...، LN__RN یک TE است اگر X،Y، L1 از طریق LN و R1
از طریق RN TE هستند، و op یا => (محدودیت عمومی)، <= (اجبار عمومی)، ^=> است.
(محدودیت سطح عمومی)، ^<= (اجبار سطح عمومی)، ^<=> (سطح عمومی)
محدودیت و اجبار)، _=> (محدودیت عمیق عمومی)، _<= (اجبار عمیق عمومی)،
_<=> (محدودیت و اجبار عمیق عمومی). (این عملگرها به شرح زیر پیاده سازی شدند
پیشنهادی از Anssi Yli-Jyra.)

- "fname" یک TE است. کامپایلر فایلی به نام fname را می خواند و می چرخد
آن را به یک مبدل به شکل line1|line2|line3|... که در آن خط خط x-امین خط است
پرونده. همه کاراکترهای غیر از : و \ به معنای واقعی کلمه تفسیر می شوند (یعنی نه به عنوان
اپراتورها). این TE معمولاً به عنوان مثال برای خواندن لیست تکواژها از یک فایل استفاده می شود.

-" " یک TE است. کامپایلر یک مبدل از پیش کامپایل شده را می خواند
فایل با نام fname این

ویژگی های بیشتر

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

#include "fname"

می توان برای درج کد منبع از فایلی به نام fname استفاده کرد. فرمان

RE >> "fname"

عبارت منظم RE را در نام فایل ذخیره می کند. فرمان

#از هاپکرافت استفاده کنید

به کامپایلر می گوید که از این به بعد از الگوریتم کمینه سازی هاپکرافت استفاده کند و

#استفاده به طور پیش فرض

به الگوریتم کمینه سازی پیش فرض (Brzozowski) برمی گردد. فرمان

مثال


در اینجا یک مثال از یک برنامه مبدل ساده آورده شده است. با فرض اینکه فایل "adj-stems"
شامل دو خط است

ساده
دیر است
بزرگ

این مبدل به درستی فرم های صفت را آسان، آسان تر، آسان ترین و دیر تجزیه و تحلیل می کند.
بعد، و آخرین.

ALPHABET = [a-zA-Z] y:ie:<> :<>

$R$ = y<=>i ( :<> ه)

$R2$ = e<=><> ( :<> ه)

$R$ = $R$ و $R2$

$Stems$ = "adj-stems"

$S$ = $Stems$ ( :<>| :{er}| :{est})

$S$ || $ R$

خروج وضعیت


fst-compiler 0 را برمی گرداند مگر اینکه خطایی رخ دهد.

با استفاده از خدمات onworks.net از fst-compiler به صورت آنلاین استفاده کنید


Ad


Ad