1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-01 06:24:58 +03:00

Fix for Mantis bug 1874

This commit is contained in:
Graham Nelson 2022-04-13 09:02:01 +01:00
parent 54a21cb840
commit 365283e100
2 changed files with 0 additions and 88 deletions

View file

@ -31,7 +31,6 @@ Appraisal == OMIT
12. Complete playable scenario
*INFORMATION ONLY
Backus-Naur form for rules
Formal syntax of sentences
Mathematical view of relations
Graph-theory view of relations

View file

@ -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.