www.pieroland.net
Giotto instructions
Giotto is a Java application, so you have to install JRE 1.5 (or upper).
It's distributed as a ZIP archive, containing a JAR file and a LIB directory.

Once unzipped, just double-click on Giotto.jar or type

java -jar Giotto.jar

from a console.
Each source file must be made of at least three sections:
With a "pageset" section you tell Giotto which pages to create.
For each page you shall specify a source, which is a text file with the page content.
You can also include a page into another, with the embed instruction. In example:
pageset MyPageset
{
    page Index source page_sources/index.txt
    page Login source page_sources/login.txt
    page Register source page_sources/register.txt
    
    embed Login into Index left
}
This will create three pages called "index.php", "login.php" and "register.php".
The first of them (index.php) will include login.php on its left side.
The "linkset" section is similar: you define here the way pages are connected.
You can specify links towards your website pages or to external URLs.
The links will be added at the bottom of the page, and the link text will be the link name.
In example:
linkset MyLinkset
{
    link Pieroland from Index to http://www.pieroland.net
    link Register from Login to Register
}
This will add to index.php a link like this: Pieroland and another link to login.php like this: Register pointing to register.php.
You can define as many pagesets and linksets as you want.
The "website" section tells Giotto which pageset and linkset to use.
In example:
website MyWebsite { MyPageset, MyLinkset }
To add images, you shall enter the #IMG: instruction in the page source.
In example, putting the following code into page_sources/index.php:
#IMG:img/photo.jpg
will include the image "$WebRoot/img/photo.jpg" into index.php.

Here's the grammar (EBNF notation).
VT is the set of terminal symbols (keywords), VT is the set of non-terminals, S is the grammar scope and P is the set of productions.
VT = {
	website,
	pageset,
	linkset,
	page,
	link,
	embed,
	source,
	into,
	from,
	to,
	bottom,
	left,
	right,
	top,
	"{", "}", ",",
	A-Z, a-z, 0-9, "_", "-", ".", "/", "\"
}

VN = {
	<grammar>,
	<website>,
	<pageset>,
	<linkset>,
	<page>,
	<embed>,
	<link>,
	<pagesource>,
	<position>,
	<linktarget>,
	<filename>,
	<url>,
	<website_id>,
	<pageset_id>,
	<linkset_id>,
	<page_id>,
	<link_id>,
	<id>
}


S = {
	<website> ( <pageset> )+ ( <linkset> )+
}


P = {
<grammar> ::= <website> ( <pageset> )+ ( <linkset> )+
<website> ::= website <website_id> { <pageset_id> , <linkset_id> }
<pageset> ::= pageset <pageset_id> { ( <page> | <embed> )+ }
<linkset> ::= linkset <linkset_id> { ( <link> )+ }
<page> ::= page <page_id> source <pagesource>
<embed> ::= embed <page_id> into <page_id> <position>
<link> ::= link <link_id> from <page_id> to <linktarget>
<position> ::= bottom | left | right | top
<pagesource> ::= <filename>
<linktarget> ::= <page_id> | <url>
<website_id> ::= <id>
<pageset_id> ::= <id>
<linkset_id> ::= <id>
<page_id> ::= <id>
<link_id> ::= <id>
<filename> ::= (["a"-"z"]|["A"-"Z"]|["0"-"9"]|["_"]|["-"]|["."]|["/"]|["\"])+
<url> ::= ("http://"|"ftp://"|"https://")(["a"-"z","A"-"Z","0"-"9","_","-",".","/","\"])+
<id> ::= ["A"-"Z"](["a"-"z","A"-"Z","0"-"9","_"])*
}
It's a regular grammar (type 3 in Chomsky classification).
Examples
Giotto home