mirror of
https://github.com/ganelson/inform.git
synced 2024-07-02 23:14:57 +03:00
Fix for Mantis bug 1874
This commit is contained in:
parent
54a21cb840
commit
365283e100
|
@ -31,7 +31,6 @@ Appraisal == OMIT
|
||||||
12. Complete playable scenario
|
12. Complete playable scenario
|
||||||
|
|
||||||
*INFORMATION ONLY
|
*INFORMATION ONLY
|
||||||
Backus-Naur form for rules
|
|
||||||
Formal syntax of sentences
|
Formal syntax of sentences
|
||||||
Mathematical view of relations
|
Mathematical view of relations
|
||||||
Graph-theory view of relations
|
Graph-theory view of relations
|
||||||
|
|
|
@ -1,87 +0,0 @@
|
||||||
*** The preamble of a rule
|
|
||||||
(Backus-Naur form for rules)
|
|
||||||
The full grammar Inform uses to parse rule definitions, in a standard computer-science notation.
|
|
||||||
|
|
||||||
Backus-Naur form, or BNF, is a standard notation used by computer scientists to specify more or less precisely what the valid programs are for a given programming language. It tends to provide a good description for a language such as C or Pascal, where contextual rules are limited, but the authors of Inform are doubtful that it is such a good tool for a natural-language system. For those who are interested, though, the following gives a formal specification for Inform's rules.
|
|
||||||
|
|
||||||
<rule> ::=
|
|
||||||
Definition : A/an <kind> is <new adjectival name> if/unless <definition>
|
|
||||||
| <preamble> : <phrases>
|
|
||||||
| <preamble> , <phrase> (* only allowed for a few cases: see below)
|
|
||||||
|
|
||||||
<definition> ::=
|
|
||||||
<condition>
|
|
||||||
| its/his/her/their <value property name> is/are <value> or less/more
|
|
||||||
| : <phrases>
|
|
||||||
|
|
||||||
<preamble> ::=
|
|
||||||
To <phrase template>
|
|
||||||
| To decide if/whether <phrase template>
|
|
||||||
| To decide which/what <kind of value> is <phrase template>
|
|
||||||
| This is the <rule name>
|
|
||||||
| [[A] Rule for] <circumstances> [(this is the <rule name>)]
|
|
||||||
|
|
||||||
<circumstances> ::=
|
|
||||||
At <time>
|
|
||||||
| When <event name>
|
|
||||||
| [<placement>] <rulebook reference> [while/when <condition>] [during <scene name>]
|
|
||||||
|
|
||||||
<rulebook reference> ::=
|
|
||||||
<rulebook name> [about/for/of/on/rule] [<action pattern>]
|
|
||||||
| <object-based-rulebook name> [about/for/of/on/rule] [<description>]
|
|
||||||
|
|
||||||
<placement> ::=
|
|
||||||
a/an
|
|
||||||
| [the] first
|
|
||||||
| [the] last
|
|
||||||
|
|
||||||
<phrases> ::=
|
|
||||||
<phrase>
|
|
||||||
| <phrases> ; <phrase>
|
|
||||||
|
|
||||||
|
|
||||||
The following examples show how Inform breaks down some typical rules using the system above:
|
|
||||||
|
|
||||||
<rule> = At 2:09 PM: increase the score by 2; say "Progress!"
|
|
||||||
<preamble> = At 2:09 PM
|
|
||||||
<circumstances> = At 2:09 PM
|
|
||||||
At
|
|
||||||
<time> = 2:09 PM
|
|
||||||
:
|
|
||||||
<phrases> = increase the score by 2; say "Progress!"
|
|
||||||
<phrase> = increase the score by 2
|
|
||||||
;
|
|
||||||
<phrase> = say "Progress"
|
|
||||||
|
|
||||||
<rule> = Instead of eating the ostrich during Formal Dinner (this is the cuisine rule), say "It's greasy!"
|
|
||||||
<preamble> = Instead of eating the ostrich during Formal Dinner (this is the cuisine rule)
|
|
||||||
<circumstances> = Instead of eating the ostrich during Formal Dinner
|
|
||||||
<rulebook reference> = Instead of eating the ostrich
|
|
||||||
<rulebook name> = Instead
|
|
||||||
of
|
|
||||||
<action pattern> = eating the ostrich
|
|
||||||
during
|
|
||||||
<scene name> = Formal Dinner
|
|
||||||
(
|
|
||||||
this
|
|
||||||
is
|
|
||||||
the
|
|
||||||
<rule name> = cuisine rule
|
|
||||||
)
|
|
||||||
,
|
|
||||||
<phrases> = say "It's greasy!"
|
|
||||||
<phrase> = say "It's greasy!"
|
|
||||||
|
|
||||||
<rule> = After printing the name of a container: say "!"
|
|
||||||
<preamble> = After printing the name of a container
|
|
||||||
<circumstances> = After printing the name of a container
|
|
||||||
<rulebook reference> = After printing the name of a container
|
|
||||||
<object-based-rulebook name> = After printing the name
|
|
||||||
of
|
|
||||||
<description> = a container
|
|
||||||
:
|
|
||||||
<phrases> = say "!"
|
|
||||||
<phrase> = say "!"
|
|
||||||
|
|
||||||
|
|
||||||
(*) The colon dividing a rule preamble from its definition can be replaced by a comma only if the preamble begins with the words "Instead of", "Before", "After", "Every turn" or "When", and if the definition consists only of a single phrase.
|
|
Loading…
Reference in a new issue