statement;
]
-Routines return a single value, when execution reaches the final "\]"
+Routines return a single value, when execution reaches the final "]"
or an explicit return statement:
return expr;
string N "string";
Lowstring string_var "string";
- string N string_var;
\ No newline at end of file
+ string N string_var;
+
+Verbs and Actions
+-----------------
+
+To specify a new verb:
+
+ Verb 'verb ' 'verb ' ... 'verb '
+ * token token ... token -> action
+ * token token ... token -> action
+ ...
+ * token token ... token -> action;
+
+where instead "`Verb`" can be "`Verb meta`", "*action*" can be
+"`action reverse`"; *tokens* are optional and each is one of:
+
+ ----------------- ----------------------------------------------
+ 'word' that literal word
+ 'w1'/'w2'/... any one of those literal words
+ attribute an object with that attribute
+ creature an object with `animate` attribute
+ held an object held by the player
+ noun an object in scope
+ noun=`routine` an object for which *routine* returns `true`
+ scope=`routine` an object in this re-definition of scope
+ multiheld one or more objects held by the player
+ multi one or more objects in scope
+ multiexcept as multi, omitting the specified object
+ multiinside as multi, omitting those in specified object
+ topic any text
+ number any number
+ routine a general parsing routine
+ ----------------- ----------------------------------------------
+
+To add synonyms to an existing verb:
+
+ Verb 'verb ' 'verb ' ... = 'existing_verb';
+
+To modify an existing verb:
+
+ Extend 'existing_verb ' last
+ * token token ... token –> action
+ * token token ... token –> action
+ ...
+ * token token ... token –> action ;
+
+where instead "`Extend`" can be "`Extend only`" and "`last`" can be
+omitted, or changed to "`first`" or "`replace`"
+
+To explicitly trigger a defined action (both *noun* and *second* are
+optional, depending on the action):
+
+ <action noun second>;
+
+To explicitly trigger a defined action, then return `true` from the
+current routine:
+
+ <<action noun second >>;
+
+Other useful directives
+-----------------------
+
+To include a directive within a routine definition [...], insert a
+hash "#" as its first character.
+
+To conditionally compile:
+
+ Ifdef name; ! use any one of these
+ Ifndef name; !
+ Iftrue expr; !
+ Iffalse expr; !
+ ...
+ Ifnot;
+ ...
+ Endif;
+
+To display a compile-time message:
+
+ Message "string";
+
+To include the contents of a file, searching the Library path:
+
+ Include "source_file";
+
+To include the contents of a file in the same location as the current
+file:
+
+ Include ">source_file";
+
+To specify that a library routine is to be replaced:
+
+ Replace routine;
+
+To set the game's release number (default is 1), serial number
+(default is today's *yymmdd*) and status line format (default is
+`score`):
+
+ Release expr;
+ Serial "yymmdd";
+ Statusline score;
+ Statusline time;
+
+To declare a new attribute common to all objects:
+
+ Attribute attribute ;
+
+To declare a new property common to all objects:
+
+ Property property;
+ Property property expr;
+
+Uncommon and deprecated directives
+----------------------------------
+
+You're unlikely to need these; look them up if necessary.
+
+ Abbreviate "string " "string " ... "string ";
+ End;
+ Import variable variable ... variable;
+ Link "compiled_file";
+ Switches list_of_compiler_switches;
+ System_file;
+
+File structure
+--------------
+
+A minimal source file:
+
+ Constant Story "MYGAME";
+ Constant Headline "^My first Inform game.^";
+ Constant MANUAL_PRONOUNS;
+
+ Include "Parser";
+ Include "VerbLib";
+
+ [ Initialise; location = study; "^Hello!^"; ];
+
+ Class Room
+ with description "A bare room."
+ has light;
+
+ Class Furniture
+ with before [; Take,Pull,Push,Pushdir:
+ print_ret (The) self,
+ " is too heavy for that."; ]
+ has static supporter;
+
+ Room study "Your study';
+
+ Furniture "writing desk" study
+ with name 'writing' 'desk' 'table';
+
+ Object -> -> axe "rusty axe"
+ with name 'rusty' 'blunt' 'axe' 'hatchet'
+ description "It seems old and blunt.";
+
+ Include "Grammar";
\ No newline at end of file