summaryrefslogtreecommitdiff
path: root/src/www/syntax-editor
diff options
context:
space:
mode:
authorjohn.j.camilleri <john.j.camilleri@chalmers.se>2012-11-21 15:24:44 +0000
committerjohn.j.camilleri <john.j.camilleri@chalmers.se>2012-11-21 15:24:44 +0000
commit381dc3900cbdef699ace67113c61adf2016eef17 (patch)
tree7a23fbcec8d19e462e619afb14bcabc4f5f2717a /src/www/syntax-editor
parent8bd58a02970d3650b5b3efb6298f40529737c2d8 (diff)
Syntax editor: start with initial AST
Note that the argument has been renamed to initial.abstr (Where abstr means an abstract syntax tree in string form, NOT an AST object)
Diffstat (limited to 'src/www/syntax-editor')
-rw-r--r--src/www/syntax-editor/README.md4
-rw-r--r--src/www/syntax-editor/editor.js35
-rw-r--r--src/www/syntax-editor/editor_menu.js40
3 files changed, 45 insertions, 34 deletions
diff --git a/src/www/syntax-editor/README.md b/src/www/syntax-editor/README.md
index 5da1f507f..04ae031b6 100644
--- a/src/www/syntax-editor/README.md
+++ b/src/www/syntax-editor/README.md
@@ -19,8 +19,7 @@ An improved version of the [old syntax editor][1].
grammar: "http://localhost:41296/grammars/Foods.pgf",
startcat: "Kind",
languages: ["Eng","Swe","Mlt"],
- ast: null,
- node_id: null
+ abstr: "Pred (That Fish) Expensive"
},
show: {
grammar_menu: true,
@@ -33,7 +32,6 @@ An improved version of the [old syntax editor][1].
## TODO
- Link to jump into minibar
-- Start with initial grammar, startcat, ast
- Compatibility with grammars with dependent category types
- Clicking on tokens to select tree node
- Use local caching
diff --git a/src/www/syntax-editor/editor.js b/src/www/syntax-editor/editor.js
index 9fa7ad737..df2a49da8 100644
--- a/src/www/syntax-editor/editor.js
+++ b/src/www/syntax-editor/editor.js
@@ -7,6 +7,22 @@
// }
/* --- Main Editor object --------------------------------------------------- */
+/* When creating the object, stuff gets called in this order:
+new EditorMenu
+ server.get_grammarlists
+ EditorMenu.show_grammarlist
+ EditorMenu.change_grammar
+ server.switch_to_other_grammar
+ server.get_grammar_info
+ EditorMenu.update_startcat_menu
+ EditorMenu.update_language_menu
+ Editor.change_grammar
+ Editor.get_grammar_constructors
+ Editor.start_fresh
+ Editor.update_current_node();
+ Editor.redraw_tree();
+ Editor.get_refinements();
+*/
function Editor(server,opts) {
var t = this;
/* --- Configuration ---------------------------------------------------- */
@@ -18,7 +34,7 @@ function Editor(server,opts) {
grammar: null,
startcat: null,
languages: null,
- ast: null,
+ abstr: null,
node_id: null
},
show: {
@@ -98,19 +114,20 @@ Editor.prototype.change_grammar=function(grammar_info) {
}
Editor.prototype.change_startcat=function(startcat) {
- this.startcat = startcat;
- this.start_fresh();
+ var t = this;
+ t.startcat = startcat;
+ t.start_fresh();
}
// Called after changing grammar or startcat
Editor.prototype.start_fresh=function () {
- with(this) {
- ast = new AST(null, get_startcat());
- redraw_tree();
- update_current_node();
- get_refinements();
- clear(ui.lin);
+ var t = this;
+ t.ast = new AST(null, t.get_startcat());
+ if (t.options.initial.abstr) {
+ t.import_ast(t.options.initial.abstr);
}
+ t.update_current_node();
+ clear(t.ui.lin);
}
/* --- Functions for handling tree manipulation ----------------------------- */
diff --git a/src/www/syntax-editor/editor_menu.js b/src/www/syntax-editor/editor_menu.js
index 3d813a79b..2caa5a658 100644
--- a/src/www/syntax-editor/editor_menu.js
+++ b/src/www/syntax-editor/editor_menu.js
@@ -59,9 +59,7 @@ function EditorMenu(editor,opts) {
this.server = editor.server;
/* --- Main program, this gets things going ----------------------------- */
- with(this) {
- server.get_grammarlists(bind(show_grammarlist,this));
- }
+ this.server.get_grammarlists(bind(this.show_grammarlist,this));
}
/* --- Grammar menu --------------------------------------------------------- */
@@ -75,25 +73,23 @@ EditorMenu.prototype.show_grammarlist=function(dir,grammar_names,dir_count) {
t.grammars=[];
t.grammar_dirs=[];
}
- with(t) {
- grammar_dirs.push(dir);
- grammars=grammars.concat(grammar_names.map(function(g){return dir+g}))
- function glabel(g) {
- return hasPrefix(dir,"/tmp/gfse.") ? "gfse: "+g : g
- }
- function opt(g) { return option(glabel(g),dir+g); }
- appendChildren(t.ui.grammar_menu,map(opt,grammar_names));
- function pick_first_grammar() {
- if(t.timeout) clearTimeout(t.timeout),t.timeout=null;
- var grammar0=t.options.initial.grammar;
- if(!grammar0) grammar0=t.grammars[0];
- t.ui.grammar_menu.value=grammar0;
- t.change_grammar();
- }
- // Wait at most 1.5s before showing the grammar menu.
- if(first_time) t.timeout=setTimeout(pick_first_grammar,1500);
- if(t.grammar_dirs.length>=dir_count) pick_first_grammar();
+ t.grammar_dirs.push(dir);
+ t.grammars=t.grammars.concat(grammar_names.map(function(g){return dir+g}))
+ function glabel(g) {
+ return hasPrefix(dir,"/tmp/gfse.") ? "gfse: "+g : g
}
+ function opt(g) { return option(glabel(g),dir+g); }
+ appendChildren(t.ui.grammar_menu, map(opt, grammar_names));
+ function pick_first_grammar() {
+ if(t.timeout) clearTimeout(t.timeout),t.timeout=null;
+ var grammar0=t.options.initial.grammar;
+ if(!grammar0) grammar0=t.grammars[0];
+ t.ui.grammar_menu.value=grammar0;
+ t.change_grammar();
+ }
+ // Wait at most 1.5s before showing the grammar menu.
+ if(first_time) t.timeout=setTimeout(pick_first_grammar,1500);
+ if(t.grammar_dirs.length>=dir_count) pick_first_grammar();
}
// Copied from minibar.js
@@ -102,8 +98,8 @@ EditorMenu.prototype.change_grammar=function() {
var grammar_url = t.ui.grammar_menu.value;
t.server.switch_to_other_grammar(grammar_url, function() {
t.server.grammar_info(function(grammar){
- t.update_language_menu(t.ui.to_menu, grammar);
t.update_startcat_menu(grammar);
+ t.update_language_menu(t.ui.to_menu, grammar);
// Call in main Editor object
t.editor.change_grammar(grammar);