Das Inform Beispiel, portiert nach Dialog
%% Im ovalen Büro soll die Größe geschätzt werden. Dazu ist ein wenig
%% Anpassung im Bereich der Grammatikschablonen notwenig und auch das
%% Abfangen unvollständiger Eingabe wie "schätze (person)"
(current player #player)
(#player is #in #room)
(height of #player is 1 m 75 cm)
(height of $ is $ m $ cm)
(fail)
#room
(room *)
(name *) Ovales Büro
(* is neutrum)
#josh
(male actor *)
(name *) Josh(-s)
(dict *) josh
(* is #in #room)
(proper *)
(appearance * $ $) Josh und Toby sind hier.
(height of * is 1 m 85 cm)
#toby
(male actor *)
(name *) Toby(-s)
(dict *) toby
(* is #in #room)
(proper *)
(height of * is 1 m 70 cm)
(describe action [guess $NPC to $Meter and $Zentimeter])
jemanden auf m und cm (zu) schätzen
(understand infinitve [schätzen] as [schätz])
(understand [schätz | $Words] as [guess $NPC to $Meter and $Zentimeter])
*(split $Words by [auf] into $Left and $Right)
*(understand $Left as single object $NPC)
*(split $Right by [m meter] into $First and $Rest)
*(understand $First as number $Meter)
*(split $Rest by [cm zentimeter] into $Second and $Unused)
*(understand $Second as number $Zentimeter)
(describe action [guess $NPC to $Meter])
jemanden auf m (zu) schätzen
(unlikely [guess $NPC to $Meter])
(understand [schätz | $Words] as [guess $NPC to $Meter])
*(split $Words by [auf] into $Left and $Rest)
*(understand $Left as single object $NPC)
*(split $Rest by [m meter] into $First and $Unused)
*(understand $First as number $Meter)
(understand [schätz | $Words] as [guess $Object])
*(understand $Words as single object $Object)
(understand [schätz] as [guess])
(describe action [guess $NPC])
jemanden (zu) schätzen
(very unlikely [guess $NPC])
(perform [guess])
Wen?
(asking for object in [guess []])
(perform [guess $NPC])
Auf wieviele m?
(get input $Input)
(understand $Input as number $Meter)
Und wieviele cm?
(get input $Input2)
(understand $Input2 as number $Zentimeter)
(try [guess $NPC to $Meter and $Zentimeter])
(perform [guess $NPC to $Meter])
Und wieviele cm?
(get input $Input)
(understand $Input as number $Zentimeter)
(try [guess $NPC to $Meter and $Zentimeter])
(perform [guess $NPC to $Meter and $Zentimeter])
(height of $NPC is $isMeter m $isZentimeter cm)
(if) ($Meter > $isMeter) (then)
(kleiner $NPC).
(stop)
(elseif) ($Meter < $isMeter) (then)
(größer $NPC).
(stop)
(elseif) ($Zentimeter > $isZentimeter) (then)
(kleiner $NPC).
(stop)
(elseif) ($Zentimeter < $isZentimeter) (then)
(größer $NPC).
(stop)
(endif)
Du liegst goldrichtig.
(kleiner $NPC)
Du liegst daneben, (der $NPC) (ist $NPC) kleiner
(größer $NPC)
Du liegst daneben, (der $NPC) (ist $NPC) größer