summaryrefslogtreecommitdiff
path: root/src/editor/simple/about.html
blob: 5c9f88879f08a87904d37191a4b3a117b308c4f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
<!DOCTYPE HTML>
<html>
<head>
<title>About: GF online editor for simple multilingual grammars</title>
<link rel="stylesheet" type="text/css" href="editor.css" title="Cloud">
<link rel="alternate stylesheet" type="text/css" href="molto.css" title="MOLTO">

<link rel=author href="http://www.cse.chalmers.se/~hallgren/" title="Thomas Hallgren">

<meta name = "viewport" content = "width = device-width">
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<meta charset="UTF-8">

<script type="text/javascript" src="slideshow.js"></script>

</head>

<body>
<h1>GF online editor for simple multilingual grammars</h1>

<div class=right>
  <div class=slideshow>
    <img onload="start_slideshow(this,{delay:5,fade:0.3})" src="P/w1s.jpg" alt="[GF online editor screen shoot]">
    <img class=hidden src="P/w2s.jpg" alt="[GF online editor screen shoot]">
    <img class=hidden src="P/w3s.jpg" alt="[GF online editor screen shoot]">
    <img class=hidden src="P/w4s.jpg" alt="[GF online editor screen shoot]">
  </div>
</div>
<h2>About</h2>

Traditionally, <a href="http://www.grammaticalframework.org/">GF</a>
grammars are created in a text editor and tested in the
GF shell. Text editors know very little (if anything) about the syntax of
GF grammars, and thus provide little guidance for novice GF users. Also, the
grammar author has to download and install the GF software on his/her own
computer.

<p>
In contrast, the
<a href="."><em>GF online editor for simple multilingual grammars</em></a>
is available online, making it easier to get started. All that
is needed is a reasonably modern web browser. Even Android and iOS devices
can be used.
<p>
The editor
also guides the grammar author by showing a skeleton grammar file and
hinting how the parts should be filled in. When a new part is added to the
grammar, it is immediately checked for errors.

<p>
Editing operations are accessed by clicking on editing symbols embedded
in the grammar display:
<span class=more>+</span>=Add an item,
<span class=delete>×</span>=Delete an item,
<span class=edit>%</span>=Edit an item.
These are revealed when hovering over items. On touch devices, hovering is
in some cases simulated by tapping, but there is also a button at the bottom
of the display to "Enable editing on touch devices" that reveals all editing
symbols.

<p>
In spite of its name, the editor runs entierly in the web
browser, so once you have opened the web page, you can
<strong>continue editing</strong> grammars even while you are
<strong>offline</strong>.

<h3>Limitations</h3>

<p>
At the moment, the editor supports only a small subset of the GF grammar
notation.
Proper error checking is done for abstract syntax, but not (yet) for concrete
syntax.

<p>
The grammars created with this editor always consists of one file for the
abstract syntax, and one file for each concrete syntax.

<h4>Abstract syntax</h4>

The supported abstract syntax corresponds to context-free grammars
(no dependent types). The definition of an abstract syntax is limited to
<ul>
  <li>a list of <em>category names</em>,
  <var>Cat<sub>1</sub></var> ; ... ; <var>Cat<sub>n</sub></var>,
  <li>a list of <em>functions</em> of the form
  <var>Fun</var> : <var>Cat<sub>1</sub></var> -> ... ->
  <var>Cat<sub>n</sub></var>,
  <li>and a <em>start category</em>.
</ul>

Available editing operations:
<ul>
  <li>Categories can be added, removed and renamed. When renaming a category,
  occurences of it in function types will be updated accordingly.
  <li>Functions can be added, removed and edited. Concrete syntaxes are updated
  to reflect changes.
  <li>Functions can be reordered using drag-and-drop.
</ul>

Error checks:

<ul>
  <li>Syntactically incorrect function definitions are refused.
  <li>Semantic problem such as duplicated definitions or references to
  undefined categories, are highlighted.
</ul>

<h4>Concrete syntax</h4>

At the moment, the concrete syntax for a language <var>L</var> is limited to
<ul>
  <li>opening the Resource Grammar Library modules
  <code>Syntax</code><var>L</var> and <code>Paradigms</code><var>L</var>,
  <li><em>linearization types</em> for the categories in the abstract syntax,
  <li><em>linearizations</em> for the functions in the abstract syntax,
  <li><em>parameter type definitions</em>,
  <var>P</var> = <var>C<sub>1</sub></var> | ... |<var>C<sub>n</sub></var>,
  <li>and <em>operation definitions</em>, <var>op</var> = <var>expr</var>.
</ul>

Available editing operations:
<ul>
  <li>The LHSs of the linearization types and linearizations are determined by
  the abstract syntax and do not need to be entered manually.
  The RHSs can
  be edited.
  <li>Parameter types can be added, removed and edited.
  <li>Operation definitons can be added, removed and edited.
  <li>Definitions can be reordered (using drag-and-drop)
</ul>
Also,

<ul>
  <li>When a new concrete syntax is added to the grammar, a copy of the
  currently open concrete syntax is created, since copying and modifying
  is usually easier than creating something new from scratch.
  (If the abstract syntax is currently open, the new conrete syntax will
  start out empty.)
</ul>

Error checks:
<ul>
  <li>The RHSs in the concrete syntax are not checked for errors. Arbitrary
  strings can be entered.
</ul>

<h3>Testing grammars</h3>

By pressing the <strong>Upload</strong> button, a grammar can be uploaded to
the GF server.
It will then be compiled with GF, and any errors not detected by the editor
will be reported. If the grammar is free from errors, the user
can test the grammar by clicking on links to the online GF shell, the Minibar
or the Translation Quiz.

<h3>Future work</h3>

This prototype gives an idea of how a web based GF grammar editor could work.
While this editor is implemented in JavaScript and runs entirely in the
web browser,
we do not expect to create a full implementation of GF that runs in the
web browser, but let the editor communicate with a server running GF.
<p>
By developing a GF server with an appropriate API, it should
be possible to extend the editor to support a larger fragment of GF,
to do proper error checking and make more of the existing GF shell functionality
accessible directly from the editor.
<p>
Grammars are currently stored locally in the browser, but a future version
could allow grammars to be stored "in the cloud", allowing the same grammars
to be accessed from multiple devices.

<h3>Related documents</h3>
<ul>
  <li><a href="http://www.grammaticalframework.org/compiler-api">The GF Grammar
  Compiler API</a>.
  <li><a href="http://www.grammaticalframework.org/~hallgren/Talks/GF/gf-ide.html">Slides</a> from a presentation at the MOLTO meeting in Göteborg, March 2011.
</ul>

<hr>
<div class=modtime><small>
<!-- hhmts start --> Last modified: Mon Mar 28 16:24:24 CEST 2011 <!-- hhmts end -->
  </small></div>
<address>
<a href="http://www.cse.chalmers.se/~hallgren/">TH</a>
<img src="http://www.altocumulus.org/~hallgren/online.cgi?icon" alt="">
</address>
</body> </html>