EnglishFrenchSpanish

เรียกใช้เซิร์ฟเวอร์ | Ubuntu > | Fedora > |


ไอคอน Fav ของ OnWorks

fst-compiler - ออนไลน์ใน Cloud

เรียกใช้ fst-compiler ใน OnWorks ผู้ให้บริการโฮสต์ฟรีบน Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

นี่คือคำสั่ง fst-compiler ที่สามารถเรียกใช้ในผู้ให้บริการโฮสติ้งฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


fst-compiler, fst-compiler-utf8 - คอมไพเลอร์สองตัวสำหรับโปรแกรม SFST

เรื่องย่อ


fst-คอมไพเลอร์ grammar-file [ output-file ]
fst-คอมไพเลอร์-utf8 grammar-file [ output-file ]

OPTIONS


-c จัดเก็บทรานสดิวเซอร์ในรูปแบบกะทัดรัดซึ่งใช้โดย fst-infl2

-l จัดเก็บทรานสดิวเซอร์ในรูปแบบ lowmem

-s สลับพื้นผิวและชั้นวิเคราะห์ของทรานสดิวเซอร์ คุณต้องใช้สวิตช์นี้ใน
เพื่อใช้ fst-infl (fst-infl2, fst-infl3) สำหรับรุ่นมากกว่าการวิเคราะห์

DESCRIPTION


fst-คอมไพเลอร์ เป็นคอมไพเลอร์สำหรับโปรแกรมตัวแปลงสัญญาณแบบไฟไนต์สเตต มันสร้างย่อเล็กสุด
ตัวแปลงสัญญาณสถานะไฟไนต์ซึ่งสามารถใช้ได้กับ fst-หมอ, fst-infl, พิมพ์ fst, fst-เปรียบเทียบ
fst-แยกวิเคราะห์ และ fst-ตาข่าย การแสดงแทนทรานสดิวเซอร์ขนาดกะทัดรัดซึ่งสร้างขึ้นด้วย
แฟล็ก -c รองรับโดย fst-infl2, fst-รถไฟ, และ fst-การแข่งขัน หน่วยความจำที่มีประสิทธิภาพ
การแสดงแทนทรานสดิวเซอร์ซึ่งสร้างขึ้นด้วยแฟล็ก -l รองรับโดย .เท่านั้น fst-
infl3.

อาร์กิวเมนต์โปรแกรมแรกคือชื่อของไฟล์ที่มีโปรแกรมแปลงสัญญาณ
ภาษาโปรแกรมอธิบายไว้ด้านล่าง อาร์กิวเมนต์ที่สองคือชื่อของไฟล์
ซึ่งทรานสดิวเซอร์ที่ได้จะถูกเขียนในรูปแบบไบนารี ถ้าอาร์กิวเมนต์ที่สองคือ
หายไป ผลลัพธ์จะถูกเขียนถึง มาตรฐาน

fst-คอมไพเลอร์-utf8 แตกต่างจาก fst-คอมไพเลอร์ เฉพาะในการเข้ารหัสอักขระ fst-คอมไพเลอร์-
utf8 รองรับการเข้ารหัส UTF8 ของไฟล์ต้นฉบับในขณะที่ fst-คอมไพเลอร์ จะใช้สำหรับ
รหัสอักขระ 8 บิต เช่น latin1 ซึ่งเป็นส่วนขยายของรหัส ASCII ข้อมูล
เกี่ยวกับการเข้ารหัสจะถูกเก็บไว้ในไฟล์ตัวแปลงสัญญาณและใช้โดยโปรแกรม SFST อื่น

ไฟล์ รูปแบบ


โปรแกรมหัวโซน่าร์ประกอบด้วยลำดับ (ทางเลือก) ของ ตัวอักษร และ ตัวแปร
คำจำกัดความตามด้วยซิงเกิ้ล transducer การแสดงออก ซึ่งกำหนดผลลัพธ์
ตัวแปลงสัญญาณ

Alphabet

คำจำกัดความของตัวอักษรประกอบด้วยคำหลัก ALPHABET ตามด้วย = และตัวแปลงสัญญาณ
การแสดงออกเช่น

ALPHABET = [az]:[AZ]

คำสั่งนี้กำหนดตัวอักษรใหม่เป็นชุดของคู่สัญลักษณ์ที่เกิดขึ้นบน
การเปลี่ยนแปลงของทรานสดิวเซอร์ การเกิดขึ้นของตัวดำเนินการสองระดับ ตัวดำเนินการปฏิเสธ และ
ช่วงเวลาที่ไม่ได้ระบุจะต้องนำหน้าด้วยคำจำกัดความของตัวอักษรเสมอ

ตัวแปร

มีตัวแปรสองประเภทที่แตกต่างกัน สัญลักษณ์ ชุด ตัวแปร ถูกปิดด้วย hash
เครื่องหมาย (#) และใช้ลำดับสัญลักษณ์ (ดูด้านล่าง) เป็นค่า:

#UC# = AZ
#LC# = az

transducer ตัวแปร ล้อมรอบด้วยเครื่องหมายดอลลาร์และใช้นิพจน์ตัวแปลงสัญญาณเป็น
ค่า:

$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]

- ลำดับสัญลักษณ์สองลำดับที่อยู่ในวงเล็บปีกกาและคั่นด้วยเครื่องหมายทวิภาคคือ
กิน. {a[bc]}:{def} เทียบเท่ากับ a:db:e <>:f | a:dc:e <>:f

- XY คือ TE ถ้า X และ Y เป็น TE
(ช่องว่างจะถูกละเว้นเว้นแต่จะมีการยกมา)

- (X) คือ TE ถ้า X คือ TE

- X op คือ TE คือ X คือ TE และ op เป็นอย่างใดอย่างหนึ่ง * (ตัวดำเนินการดาวของ Kleene) +
(ตัวดำเนินการของคลีนพลัส) หรือ ? (ตัวดำเนินการทางเลือก)

- op 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 เช่น is
เทียบเท่ากับ 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|... โดยที่ linex คือบรรทัดที่ x ของ
ไฟล์. อักขระทั้งหมดอื่นที่ไม่ใช่ : และ \ ถูกตีความตามตัวอักษร (เช่น ไม่ใช่เป็น
ผู้ประกอบการ) โดยทั่วไปจะใช้ TE นี้ เช่น เพื่ออ่านรายการหน่วยคำจากไฟล์

- " " เป็น TE คอมไพเลอร์อ่านตัวแปลงสัญญาณที่คอมไพล์ล่วงหน้าจาก
ไฟล์ชื่อ fname. นี้

คุณสมบัติเพิ่มเติม

ความคิดเห็นเริ่มต้นด้วยสัญลักษณ์ % และขยายไปถึงท้ายบรรทัด ช่องว่างจะถูกละเว้น
เว้นแต่จะมีการยกมา นิพจน์สิ้นสุดที่ส่วนท้ายของบรรทัด เว้นแต่สิ้นสุดบรรทัด
นำหน้าด้วยแบ็กสแลช คำสั่ง

#รวม "fname"

สามารถใช้เพื่อแทรกซอร์สโค้ดจากไฟล์ชื่อ fname คำสั่ง

RE >> "fname"

เก็บนิพจน์ทั่วไป RE ในไฟล์ fname คำสั่ง

#ใช้ฮอปครอฟท์

บอกคอมไพเลอร์ให้ใช้อัลกอริธึมการลดขนาด Hopcroft ต่อจากนี้และ

#ใช้ค่าเริ่มต้น

เปลี่ยนกลับไปเป็นอัลกอริธึมการย่อขนาดเริ่มต้น (Brzozowski) คำสั่ง

ตัวอย่าง


นี่คือตัวอย่างโปรแกรมทรานสดิวเซอร์อย่างง่าย สมมติว่าไฟล์ "adj-stems"
ประกอบด้วยสองบรรทัด

ง่าย
สาย
ใหญ่

ตัวแปลงสัญญาณนี้จะวิเคราะห์รูปแบบคำคุณศัพท์ได้อย่างถูกต้อง ง่าย ง่ายขึ้น ง่ายที่สุด และช้า
ในภายหลังและล่าสุด

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

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

$R2$ = อี<=><> ( :<> จ)

$R$ = $R$ & $R2$

$Stems$ = "adj-ลำต้น"

$S$ = $ต้นกำเนิด$ ( :<>| :{เอ๋อ}| :{est})

$S$ || $R$

EXIT สถานภาพ


fst-คอมไพเลอร์ คืนค่า 0 เว้นแต่จะมีข้อผิดพลาดเกิดขึ้น

ใช้ fst-compiler ออนไลน์โดยใช้บริการ onworks.net


Ad


Ad