fst-compiler-utf8 - Trực tuyến trên đám mây

Đây là lệnh fst-compiler-utf8 có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


fst-compiler, fst-compiler-utf8 - Hai trình biên dịch cho các chương trình SFST

SYNOPSIS


trình biên dịch fst tập tin ngữ pháp [ tập tin đầu ra ]
fst-biên dịch-utf8 tập tin ngữ pháp [ tập tin đầu ra ]

LỰA CHỌN


-c Lưu trữ đầu dò ở định dạng nhỏ gọn được sử dụng bởi fst-Infl2.

-l Lưu trữ đầu dò ở định dạng lowmem.

-s Bề mặt chuyển mạch và lớp phân tích của đầu dò. Bạn phải sử dụng công tắc này trong
để sử dụng fst-Infl (fst-Infl2, fst-Infl3) cho thế hệ hơn là phân tích.

MÔ TẢ


trình biên dịch fst là một trình biên dịch cho các chương trình đầu dò trạng thái hữu hạn. Nó tạo ra một
đầu dò trạng thái hữu hạn có thể được sử dụng với fst-mor, fst-Infl, in fst, fst-so sánh,
fst-phân tích cú pháp,lưới fst. Biểu diễn đầu dò nhỏ gọn được tạo ra với
cờ -c, được hỗ trợ bởi fst-Infl2, tàu fst,fst-trận đấu. Bộ nhớ hiệu quả
biểu diễn đầu dò được tạo bằng cờ -l, chỉ được hỗ trợ bởi fst-
thổi phồng3.

Đối số chương trình đầu tiên là tên của tệp chứa chương trình đầu dò.
Ngôn ngữ lập trình được mô tả bên dưới. Đối số thứ hai là tên của tệp
mà đầu dò kết quả sẽ được viết ở dạng nhị phân. Nếu đối số thứ hai là
thiếu, đầu ra sẽ được ghi vào tiêu chuẩn.

fst-biên dịch-utf8 khác với trình biên dịch fst chỉ trong bảng mã ký tự. fst-trình biên dịch-
utf8 hỗ trợ mã hóa UTF8 của các tệp nguồn trong khi trình biên dịch fst được sử dụng cho
Mã ký tự 8-bit như latin1 là một phần mở rộng của mã ASCII. Thông tin
về mã hóa được lưu trữ trong các tệp đầu dò và được sử dụng bởi các chương trình SFST khác.

FILE M FORU ĐƠN


Một chương trình đầu dò bao gồm một trình tự (tùy chọn) của bảng chữ cáibiến
các định nghĩa theo sau bởi một bộ chuyển đổi biểu hiện cái nào xác định kết quả
đầu dò.

Bảng chữ cái

Định nghĩa bảng chữ cái bao gồm từ khóa ALPHABET theo sau là = và một số bộ chuyển đổi
biểu thức vd

ALPHABET = [az]: [AZ]

Lệnh này xác định lại bảng chữ cái dưới dạng tập hợp các cặp ký hiệu xuất hiện trên
quá trình chuyển đổi của đầu dò. Sự xuất hiện của toán tử hai cấp, toán tử phủ định và
các khoảng thời gian không được trích dẫn luôn phải được đặt trước định nghĩa bảng chữ cái.

Biến

Có hai loại biến khác nhau. định biến được bao bọc bởi hàm băm
dấu (#) và lấy chuỗi ký hiệu (xem bên dưới) làm giá trị:

# UC # = AZ
# LC # = az

Bộ chuyển đổi biến được bao quanh bởi các ký hiệu đô la và lấy biểu thức đầu dò là
các giá trị:

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

Các biến có tên bắt đầu bằng ký hiệu `= 'là đặc biệt thỏa thuận biến. Nếu một
biến thỏa thuận xuất hiện nhiều lần trong một biểu thức đầu dò, nó sẽ luôn có
cùng giá trị. Hãy xem xét chương trình đầu dò sau:

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

Bộ chuyển đổi kết quả nhận dạng các chuỗi aXa, bXb và cXc. Chỉ đầu dò xoay chiều
(tức là các bộ chuyển đổi với một tập hợp hữu hạn các ánh xạ chuỗi) có thể được gán cho thỏa thuận
biến.

Biểu tượng

Một biểu tượng là

- một ký tự như A s 5,

- một ký tự được trích dẫn như \ * hoặc \ _,

- một biểu tượng nhiều ký tự như hoặc (luôn luôn là
được đặt trong dấu ngoặc nhọn) hoặc

- một dấu gạch chéo ngược theo sau là một số là mã số của
nhân vật được chỉ định

- ký hiệu null <>.

Chuỗi ký hiệu

Chuỗi ký hiệu là một chuỗi các ký tự, ký hiệu nhiều ký tự và ký tự
phạm vi, ví dụ az \. .

dải ký hiệu

Một phạm vi ký hiệu là

- một biểu tượng duy nhất

- một chuỗi ký hiệu được đặt trong dấu ngoặc vuông như [A-Za-z] hoặc

- một chuỗi ký hiệu bắt đầu bằng ^ và được đặt trong dấu ngoặc vuông như [^ A-Za-z]
(chỉ định phần bổ sung của [a-zA-Z]) hoặc

- dấu chấm (đại diện cho bất kỳ ký hiệu nào trong bảng chữ cái)

Biểu thức đầu dò

Biểu thức đầu dò (TE) được định nghĩa đệ quy như sau:

- Một cặp hai dãy ký hiệu cách nhau bằng dấu hai chấm là TE.

[az]: [aZ]

- Một dải ký hiệu như [az] là TE.
Nó là một dạng viết tắt của [az]: [az].

- Hai chuỗi ký hiệu được đặt trong dấu ngoặc nhọn và ngăn cách nhau bằng dấu hai chấm là
ăn. {a [bc]}: {def} tương đương với a: db: e <>: f | a: dc: e <>: f.

- XY là TE nếu X và Y là TE.
(Khoảng trống được bỏ qua trừ khi chúng được trích dẫn.)

- (X) là TE nếu X là TE.

- X op là TE là X là TE và op là * (toán tử ngôi sao của Kleene), +
(Toán tử cộng của Kleene), hoặc? (toán tử tùy chọn)

- op X là TE là X là TE và op là một trong hai! (toán tử phủ định), ^
(toán tử trích xuất ngôn ngữ đích), _ (toán tử trích xuất ngôn ngữ nguồn) hoặc ^ _
(toán tử chuyển mạch nguồn và đích).

- X op Y là TE là X và Y là TE và op là & (kết hợp
toán tử), | (toán tử disjunction), || (toán tử tổng hợp), hoặc - (phép trừ
nhà điều hành)

- L x op y R là TE nếu L và R là TE, x và y là các dải ký hiệu và
op là => (hạn chế hai cấp), <= (ép buộc hai cấp) hoặc <=> (hai cấp
hạn chế và cưỡng chế).

- X op L__R là TE nếu X, L và R là TE và op là ^ -> (trở lên
thay thế), _-> (thay thế hướng xuống), / -> (thay thế sang trái) hoặc \ -> (sang phải
thay thế). Hơn nữa, L và R phải xác định tự động dữ liệu (tức là ánh xạ các chuỗi của chúng
lên chính họ). Các toán tử này tương ứng với các toán tử thay thế của Karttunen. Nếu
theo sau mũi tên là dấu chấm hỏi (?), việc thay thế trở thành tùy chọn.

- X << l là TE nếu X là TE và l là một trong hai dạng
a hoặc dạng a: b trong đó a và b là các ký tự hoặc ký hiệu đơn lẻ. Kết quả là một
đầu dò trong đó l được đưa tự do vào X. Ví dụ, đầu dò ab << c là
tương đương với c * ac * bc *.

- X op Y L1__R2, ..., LN__RN là TE nếu X, Y, L1 đến LN và R1
thông qua RN là TE và op là => (hạn chế chung), <= (cưỡng chế chung), ^ =>
(hạn chế bề mặt chung), ^ <= (cưỡng chế bề mặt chung), ^ <=> (bề mặt chung
hạn chế và cưỡng chế), _ => (hạn chế sâu chung), _ <= (cưỡng chế sâu chung),
_ <=> (hạn chế sâu chung và ép buộc). (Các toán tử này đã được triển khai sau đây
một gợi ý của Anssi Yli-Jyra.)

- "fname" là một TE. Trình biên dịch đọc tệp có tên fname và quay
nó thành một bộ chuyển đổi có dạng line1 | line2 | line3 | ... trong đó linex là dòng thứ x của
tập tin. Tất cả các ký tự ngoài: và \ đều được hiểu theo nghĩa đen (nghĩa là không phải là
toán tử). TE này thường được sử dụng, ví dụ như để đọc danh sách morpheme từ một tệp.

- " "là một TE. Trình biên dịch đọc một bộ chuyển đổi được biên dịch trước từ
tệp có tên fname. Cái này

Các tính năng khác

Nhận xét bắt đầu bằng ký hiệu% và kéo dài đến cuối dòng. Khoảng trống được bỏ qua
trừ khi chúng được trích dẫn. Biểu thức kết thúc ở cuối dòng trừ khi ở cuối dòng
đứng trước dấu gạch chéo ngược. Lệnh

#include "fname"

có thể được sử dụng để chèn mã nguồn từ một tệp có tên fname. Lệnh

RE >> "fname"

lưu trữ biểu thức chính quy RE trong tên tệp. Lệnh

#sử dụng hopcroft

yêu cầu trình biên dịch sử dụng thuật toán thu nhỏ Hopcroft từ bây giờ và

#sử dụng mặc định

chuyển về thuật toán thu nhỏ mặc định (Brzozowski). Lệnh

THÍ DỤ


Đây là một ví dụ về một chương trình đầu dò đơn giản. Giả sử rằng tệp "adj-stem"
chứa hai dòng

dễ dàng
muộn
to

bộ chuyển đổi này sẽ phân tích chính xác các dạng tính từ dễ dàng hơn, dễ dàng hơn, đơn giản nhất và muộn hơn,
muộn hơn và mới nhất.

ALPHABET = [a-zA-Z] y: tức là: <> : <>

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

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

$ R $ = $ R $ & $ R2 $

$ Stems $ = "adj-stem"

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

$ S $ || $ R $

EXIT TÌNH TRẠNG


trình biên dịch fst trả về 0 trừ khi một số lỗi xảy ra.

Sử dụng fst-compiler-utf8 trực tuyến bằng các dịch vụ onworks.net



Các chương trình trực tuyến Linux & Windows mới nhất