EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

fst-compiler - Online in der Cloud

Führen Sie den fst-compiler im kostenlosen OnWorks-Hosting-Provider über Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator aus

Dies ist der Befehl fst-compiler, der im kostenlosen OnWorks-Hosting-Provider mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


fst-compiler, fst-compiler-utf8 - Zwei Compiler für SFST-Programme

ZUSAMMENFASSUNG


fst-Compiler Grammatik-Datei [ Ausgabedatei ]
fst-compiler-utf8 Grammatik-Datei [ Ausgabedatei ]

OPTIONAL


-c Bewahren Sie den Transducer in einem kompakten Format auf, das von fst-infl2 verwendet wird.

-l Bewahren Sie den Schallkopf im Lowmem-Format auf.

-s Wechseln Sie Oberfläche und Analyseschicht des Wandlers. Sie müssen diesen Schalter in verwenden
zu verwenden fst-infl (fst-infl2, fst-infl3) für die Generierung statt für die Analyse.

BESCHREIBUNG


fst-Compiler ist ein Compiler für endliche Wandlerprogramme. Es erzeugt ein minimiertes
endlicher Wandler, der mit verwendet werden kann fst-mor, fst-infl, fst-Druck, fst-vergleichen,
erste Analyse, und fst-Gitter. Die kompakte Aufnehmerdarstellung, die mit
das Flag -c, wird unterstützt von fst-infl2, erster Zug, und erstes Spiel. Die speichereffiziente
Transducer-Darstellung, die mit dem Flag -l generiert wird, wird nur unterstützt von fst-
infl3.

Das erste Programmargument ist der Name einer Datei, die das Aufnehmerprogramm enthält.
Die Programmiersprache wird unten beschrieben. Das zweite Argument ist der Name der Datei
in die der resultierende Wandler in binärer Form geschrieben wird. Wenn ein zweites Argument ist
fehlt, wird die Ausgabe geschrieben an stdout.

fst-compiler-utf8 unterscheidet sich von fst-Compiler nur in der Zeichenkodierung. fst-Compiler-
utf8 unterstützt die UTF8-Kodierung der Quelldateien, während fst-Compiler ist zu verwenden für
8-Bit-Zeichencodes wie latin1, die eine Erweiterung des ASCII-Codes sind. Information
über die Kodierung wird in den Transducer-Dateien gespeichert und von den anderen SFST-Programmen verwendet.

FILE FORMATEN


Ein Transducer-Programm besteht aus einer (optionalen) Sequenz von Alphabet und Variable
Definitionen gefolgt von einem einzelnen Wandler Ausdruck was das Ergebnis definiert
Wandler.

Alphabet

Eine alphabetische Definition besteht aus dem Schlüsselwort ALPHABET gefolgt von = und einem Transducer
Ausdruck zB

ALPHABET = [az]:[AZ]

Dieser Befehl definiert das Alphabet neu als die Menge von Symbolpaaren, die auf dem
Übergänge des Wandlers. Vorkommen von zweistufigen Operatoren, Negationsoperatoren und
nicht in Anführungszeichen gesetzten Punkten muss immer eine alphabetische Definition vorangestellt werden.

Variablen

Es gibt zwei verschiedene Arten von Variablen. Symbol kompensieren Variablen sind von hash umschlossen
Zeichen (#) und nehmen Symbolfolgen (siehe unten) als Werte:

#UC# = AZ
#LC# = az

Transducer Variablen werden von Dollarzeichen eingeschlossen und nehmen Transducer-Ausdrücke als
Werte:

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

Variablen, deren Name mit dem Symbol `=' beginnt, sind etwas Besonderes Vereinbarung Variablen. Wenn ein
Die Übereinstimmungsvariable kommt in einem Transducer-Ausdruck mehr als einmal vor, sie hat immer
der gleiche Wert. Betrachten Sie das folgende Transducer-Programm:

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

Der Ergebniswandler erkennt die Saiten aXa, bXb und cXc. Nur azyklische Wandler
(dh Wandler mit einem endlichen Satz von String-Mappings) können der Übereinstimmung zugeordnet werden
Variablen.

Symbole

Ein Symbol ist entweder

- ein einzelnes Zeichen wie A s 5,

- ein Anführungszeichen wie \* oder \_,

- ein mehrstelliges Symbol wie oder (was immer ist
in spitzen Klammern eingeschlossen) oder

- ein umgekehrter Schrägstrich gefolgt von einer Zahl, die den numerischen Code des
bezeichnetes Zeichen

- das Nullsymbol <>.

Symbolfolge

Eine Symbolfolge ist eine Folge von Zeichen, Mehrzeichensymbolen und Zeichen
Bereiche, zB az \. .

Symbolbereich

Ein Symbolbereich ist entweder

- ein einzelnes Symbol

- eine in eckige Klammern eingeschlossene Symbolfolge wie [A-Za-z] oder

- eine Symbolfolge, die mit ^ beginnt und in eckige Klammern eingeschlossen ist, wie [^A-Za-z]
(bezeichnet das Komplement von [a-zA-Z]) oder

- der Punkt (der ein beliebiges Symbol aus dem Alphabet darstellt)

Wandlerausdrücke

Ein Transducer-Ausdruck (TE) wird rekursiv wie folgt definiert:

- Ein Paar von zwei durch einen Doppelpunkt getrennten Symbolbereichen ist ein TE.

[az]:[aZ]

- Ein einzelner Symbolbereich wie [az] ist ein TE.
Es ist eine Kurzform für [az]:[az].

- Zwei in geschweifte Klammern eingeschlossene und durch einen Doppelpunkt getrennte Symbolfolgen sind
aß. {a[bc]}:{def} entspricht a:db:e <>:f | a:dc:e <>:f.

- XY ist ein TE, wenn X und Y TEs sind.
(Leerzeichen werden ignoriert, sofern sie nicht in Anführungszeichen stehen.)

- (X) ist ein TE, wenn X ein TE ist.

- X op ist ein TE ist X ist ein TE und op ist entweder * (Kleenes Sternoperator), +
(Kleenes Plus-Operator) oder ? (Optionalitätsoperator)

- op X ist ein TE ist X ist ein TE und op ist entweder ! (Negationsoperator), ^
(Operator für die Extraktion der Zielsprache), _ (Operator für die Extraktion der Ausgangssprache) oder ^_
(Quell- und Ziel-Switch-Operator).

- X op Y ist ein TE ist X und Y sind TEs und op ist entweder & (Konjunktion
Operator), | (Disjunktionsoperator), || (Kompositionsoperator) oder - (Subtraktion
Operator)

- L x op y R ist ein TE, wenn L und R TEs sind, x und y Symbolbereiche sind und
op ist entweder => (zweistufige Einschränkung), <= (zweistufiger Zwang) oder <=> (zweistufige
Einschränkung und Zwang).

- X op L__R ist ein TE, wenn X, L und R TEs sind und op entweder ^-> (aufwärts
Ersetzung), _-> (Ersetzung nach unten), /-> (Ersetzung nach links) oder \-> (nach rechts)
Ersatz). Außerdem müssen L und R Automaten definieren (dh die ihre Strings abbilden
auf sich selbst). Diese Operatoren entsprechen den Ersetzungsoperatoren von Karttunen. Wenn die
Pfeil gefolgt von einem Fragezeichen (?), die Ersetzung wird optional.

- X << l ist ein TE, wenn X ein TE ist und l eine der Formen
a oder die Form a:b wobei a und b einzelne Zeichen oder Symbole sind. Das Ergebnis ist ein
Transducer, wobei l frei in X eingefügt wurde. Der Transducer ab << c ist zum Beispiel
entspricht c*ac*bc*.

- X op Y L1__R2, ... , LN__RN ist ein TE, wenn X,Y, L1 bis LN und R1
bis RN sind TEs, und op ist entweder => (allgemeine Einschränkung), <= (allgemeiner Zwang), ^=>
(allgemeine Flächenbeschränkung), ^<= (allgemeiner Flächenzwang), ^<=> (allgemeine Fläche
Einschränkung und Zwang), _=> (allgemeine tiefe Einschränkung), _<= (allgemeiner tiefer Zwang),
_<=> (allgemeine tiefe Einschränkung und Nötigung). (Diese Operatoren wurden wie folgt implementiert
ein Vorschlag von Anssi Yli-Jyra.)

- "fname" ist ein TE. Der Compiler liest die Datei mit dem Namen fname und dreht
es in einen Wandler der Form line1|line2|line3|... wobei linex die x-te Zeile von ist
die Datei. Alle Zeichen außer : und \ werden wörtlich interpretiert (dh nicht als
Betreiber). Dieses TE wird typischerweise verwendet, um zB eine Morphemliste aus einer Datei zu lesen.

- " " ist ein TE. Der Compiler liest einen vorkompilierten Transducer aus
die Datei namens fname. Dies

Weitere Funktionen

Kommentare beginnen mit dem Symbol % und reichen bis zum Zeilenende. Leerzeichen werden ignoriert
es sei denn, sie werden zitiert. Ausdrücke enden am Ende einer Zeile, es sei denn, das Zeilenende
ist ein Backslash vorangestellt. Der Befehl

#include "fname"

kann verwendet werden, um Quellcode aus einer Datei namens fname einzufügen. Der Befehl

RE >> "fname"

speichert den regulären Ausdruck RE in der Datei fname. Der Befehl

#Hopcroft verwenden

weist den Compiler an, von nun an den Hopcroft-Minimierungsalgorithmus zu verwenden, und

#verwende den Standard

schaltet zurück zum Standard-Minimierungsalgorithmus (Brzozowski). Der Befehl

BEISPIEL


Hier ist ein Beispiel für ein einfaches Wandlerprogramm. Angenommen, die Datei "adj-stems"
enthält die zwei Zeilen

Einfache
spät
groß

dieser Wandler wird die Adjektivformen einfach, leichter, einfach und spät richtig analysieren,
später und spätestens.

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

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

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

$R$ = $R$ & $R2$

$Stems$ = "adj-stämme"

$S$ = $Stämme$ ( :<>| :{äh}| :{Europäische Sommerzeit})

$S$ || $R$

EXIT STATUS


fst-Compiler gibt 0 zurück, es sei denn, es tritt ein Fehler auf.

Verwenden Sie den fst-compiler online mit den onworks.net-Diensten


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad