summaryrefslogtreecommitdiffhomepage
path: root/inform7.html.markdown
diff options
context:
space:
mode:
authorBoris Verkhovskiy <boris.verk@gmail.com>2024-05-17 00:10:34 -0600
committerBoris Verkhovskiy <boris.verk@gmail.com>2024-05-17 00:10:34 -0600
commit72d4fadaf0b625172ee3d4954b4d891262bc1ce0 (patch)
treece6fed325dc000aa7b29423460645f1558e39a7c /inform7.html.markdown
parent4f18651cb217909ec6cfa674b3be54e7d220735e (diff)
[inform7/en] syntax highlighting
Diffstat (limited to 'inform7.html.markdown')
-rw-r--r--inform7.html.markdown51
1 files changed, 25 insertions, 26 deletions
diff --git a/inform7.html.markdown b/inform7.html.markdown
index 7f1da0e0..53880d4c 100644
--- a/inform7.html.markdown
+++ b/inform7.html.markdown
@@ -4,20 +4,19 @@ contributors:
- ["Hyphz", "http://github.com/hyphz/"]
filename: LearnInform.Inform
---
-Inform 7 is a natural language based language created by Graham Nelson and Emily Short for writing text adventures, but also potentially usable for other text based applications, especially data backed ones.
-```
-"LearnInform" by Hyphz
+Inform 7 is a natural language based language created by Graham Nelson and Emily Short for writing text adventures, but also potentially usable for other text based applications, especially data backed ones.
+```inform7
[This is a comment.]
[Inform 7 is a language designed for building text adventures.
-It can be used for other purposes too, although the default
+It can be used for other purposes too, although the default
library builds a text adventure. Inform 7 is object oriented.]
[This creates a class by subclassing. "Value" is the universal subclass,
but "object" is the most basic that behaves like an OO object.]
-A datablock is a kind of object.
+A datablock is a kind of object.
[Classes can have properties.]
A datablock can be broken. [This creates a boolean property.]
@@ -36,18 +35,18 @@ The name of Block1 is "Block One."
[Functions and procedures are defined as "phrases".]
To do the thing everyone does with their first program:
say "Hello World.". [Full stop indicates the end, indent indicates the scope.]
-
+
To dump (the block - a datablock): [That's how we create a parameter.]
say the sequence number of the block;
say the name of the block;
if the block is broken, say "(Broken)".
-
+
To toggle (the block - a datablock):
if the block is broken: [Conditional.]
now the block is not broken; [Updating a property.]
else:
now the block is broken.
-
+
[Multiple parameters.]
To fix (the broken block - a datablock) using (the repair block - a datablock):
if the broken block is not broken, stop; [Comma for a non indented single command.]
@@ -56,8 +55,8 @@ To fix (the broken block - a datablock) using (the repair block - a datablock):
now the broken block is not broken.
[Because of its text adventure origins, Inform 7 doesn't generally allow objects
-to be created dynamically, although there's a language extension that enables it.]
-Block2 is a datablock.
+to be created dynamically, although there's a language extension that enables it.]
+Block2 is a datablock.
Block2 is broken.
The sequence number of Block2 is 2.
The name of Block2 is "Block two."
@@ -66,8 +65,8 @@ To demonstrate calling a phrase with two parameters:
Let the second block be block2; [Local pointer variable.]
fix the second block using Block1;
say the sequence number of the second block. [1.]
-
-[Lists.]
+
+[Lists.]
To show how to use list types:
let the list be a list of datablocks;
add Block1 to the list;
@@ -84,7 +83,7 @@ To show how to use list types:
dump X; ["1 Block two."]
remove X from the list;
say the list. [Block1]
-
+
[Here's how we define a function and do arithmetic.]
To decide which number is the sum of all numbers up to (X - a number) (this is summing up):
@@ -92,7 +91,7 @@ To decide which number is the sum of all numbers up to (X - a number) (this is s
repeat with the current number running from 1 to X:
now the total so far is the total so far + the current number;
decide on the total so far. [This is the return statement.]
-
+
[ We have higher order functions too. ]
To demonstrate a higher order function:
@@ -102,7 +101,7 @@ To decide which number is the result of applying (phrase - phrase A -> A) twice
let b1 be phrase applied to B;
let b2 be phrase applied to b1;
decide on b2.
-
+
To demonstrate defining a higher order function:
let X be 5;
say the result of applying summing up twice to X.
@@ -112,14 +111,14 @@ To demonstrate defining a higher order function:
Datablock validation rules is a datablock based rulebook.
A datablock validation rule for a broken datablock: rule fails.
-A datablock validation rule for a datablock (called the block):
+A datablock validation rule for a datablock (called the block):
dump the block;
rule succeeds.
-
+
To demonstrate invoking a rulebook:
follow datablock validation rules for Block1;
follow datablock validation rules for Block2.
-
+
[ Objects can also have relations, which resemble those in a relational database. ]
A dog is a kind of thing.
Rover is a dog.
@@ -136,7 +135,7 @@ Friendship relates various people to various people. [Many-to-many.]
The verb to own means the property ownership relation.
The verb to be the guide dog of means the guide dog ownership relation.
-The verb to be guided by means the reversed guide dog ownership relation.
+The verb to be guided by means the reversed guide dog ownership relation.
The verb to be friends with means the friendship relation.
Edward is a person. A person can be blind. Edward is blind.
@@ -156,18 +155,18 @@ The verb to be helpful to means the helpfulness relation.
To demonstrate using a procedural relation:
repeat with the helper running through people that are helpful to Edward:
say the helper.
-
+
[ Interface to the text adventure harness to allow the above code to be run. ]
-Tutorial room is a room.
+Tutorial room is a room.
"A rather strange room full of buttons. Push them to run the exercises, or turn on the robot to run them all."
-A button is a kind of thing. A button is fixed in place.
+A button is a kind of thing. A button is fixed in place.
-The red button is a button in tutorial room.
+The red button is a button in tutorial room.
Instead of pushing the red button, do the thing everyone does with their first program.
-The green button is a button in tutorial room.
+The green button is a button in tutorial room.
Instead of pushing the green button, demonstrate calling a phrase with two parameters.
-The blue button is a button in tutorial room.
+The blue button is a button in tutorial room.
Instead of pushing the blue button, show how to use list types.
The cyan button is a button in tutorial room.
Instead of pushing the cyan button, say the sum of all numbers up to 5.
@@ -190,6 +189,6 @@ Instead of switching on the robot:
try pushing button.
```
-##Ready For More?
+## Ready For More?
* [Inform 7](http://www.inform7.com/)