summaryrefslogtreecommitdiff
path: root/deprecated/doc/TODO
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2010-12-22 14:08:42 +0000
committeraarne <aarne@chalmers.se>2010-12-22 14:08:42 +0000
commitce15ec7b787479ca4c7295863ea7fa5cfdd16755 (patch)
treef47d9227ab535781d44d00e6232b8c62902167df /deprecated/doc/TODO
parentfb722fe8e2cedee3b42d7fb0c9da61ace74f3e22 (diff)
moved parts of doc to deprecated/doc
Diffstat (limited to 'deprecated/doc/TODO')
-rw-r--r--deprecated/doc/TODO231
1 files changed, 231 insertions, 0 deletions
diff --git a/deprecated/doc/TODO b/deprecated/doc/TODO
new file mode 100644
index 000000000..c92f4c8fa
--- /dev/null
+++ b/deprecated/doc/TODO
@@ -0,0 +1,231 @@
+
+* Some notes on the syntax of this file, making it possible to use todoo-mode.el:
+
+- Items start with "* "
+- Sub-items start with "- "
+- It should be noted somewhere in the item, who has reported the item
+ Suggestion: Add "[who]" at the beginning of the item title
+ (then one can use "assign item" in todoo-mode)
+- Each item should have a priority
+ Suggestion: Add "URGENT", "IMPORTANT" or "WISH" at the beginning of
+ the item title
+- Sort the items in priority order
+ (todoo-mode can move an item up or down)
+
+----------------------------------------------------------------------
+
+
+* [peb] URGENT: Error messages for syntax errors
+
+ When a syntax error is reported, it should be noted which file it
+ is. Otherwise it is impossible to know where the error is
+ (if one uses the -s flag):
+
+ > i -s Domain/MP3/Domain_MP_Semantics.gf
+ syntax error at line 33 before ve , Proposition ,
+
+ There's no problem with other kinds of errors:
+
+ > i -s Domain/MP3/Domain_MP_Semantics.gf
+ checking module Godis_Semantics
+ Happened in linearization of userMove :
+ product expected instead of {
+ pl : Str
+ }
+
+
+* [peb] IMPORTANT: Add the -path of a module to daughter modules
+
+ Then the main module does not have to know where all grandchildren are:
+
+ file A.gf:
+ abstract A = B ** {...}
+
+ file B.gf:
+ --# -path=./resource
+ abstract B = Lang ** {...}
+
+ I.e.: the file A.gf should not need to know that B.gf uses the
+ resource library.
+
+
+* [peb] IMPORTANT: incomplete concrete and interfaces
+
+- The following works in GF:
+
+ incomplete concrete TestDI of TestA = open (C=TestCI) in {
+ lincat A = TestCI.A ** {p : Str};
+ lin f = TestCI.f ** {p = "f"};
+ g = TestCI.g ** {p = "g"};
+ }
+
+ > i -src TestDE.gf
+
+- BUT, if we exchange "TestCI" for "C" we get an error:
+
+ incomplete concrete TestDI of TestA = open (C=TestCI) in {
+ lincat A = C.A ** {p : Str};
+ lin f = C.f ** {p = "f"};
+ g = C.g ** {p = "g"};
+ }
+
+ > i -src TestDE.gf
+ compiling TestDE.gf... failed to find C
+ OCCURRED IN
+ atomic term C given TestCE TestCI TestCE TestDE
+ OCCURRED IN
+ renaming definition of f
+ OCCURRED IN
+ renaming module TestDE
+
+- the other modules:
+
+ abstract TestA = {
+ cat A;
+ fun f, g : A;
+ }
+
+ instance TestBE of TestBI = {
+ oper hello = "hello";
+ bye = "bye";
+ }
+
+ interface TestBI = {
+ oper hello : Str;
+ bye : Str;
+ }
+
+ concrete TestCE of TestA = TestCI with (TestBI = TestBE);
+
+ incomplete concrete TestCI of TestA = open TestBI in {
+ lincat A = {s : Str};
+ lin f = {s = hello};
+ g = {s = bye};
+ }
+
+ concrete TestDE of TestA = TestDI with (TestCI = TestCE);
+
+* [peb] IMPORTANT: Missing things in the help command
+
+ > h -printer
+ (the flag -printer=cfgm is missing)
+
+ > h -cat
+ WARNING: invalid option: cat
+
+ > h -lang
+ WARNING: invalid option: lang
+
+ > h -language
+ WARNING: invalid option: language
+
+ > h -parser
+ WARNING: invalid option: parser
+
+ > h -aslkdjaslkdjss
+ WARNING: invalid option: aslkdjaslkdjss
+ Command not found.
+ (it should note: "option not found")
+
+ > h -optimize
+ WARNING: invalid option: optimize
+
+ > h -startcat
+ WARNING: invalid option: startcat
+
+ > h h
+ h, help: h Command?
+ (it should also mention "h -option")
+
+
+* [peb] IMPORTANT: Set GF_LIb-PATH within GF
+
+ > sf libpath=~/GF/lib
+
+
+* [peb] IMPORTANT: Set the starting category with "sf"
+
+ > sf startcat=X
+
+
+* [peb] IMPORTANT: import-flags
+
+- There are some inconsistencies when importing grammars:
+
+ 1. when doing "pg -printer=cfg", one must have used "i -conversion=finite",
+ since "pg" doesn't care about the flags that are set in the grammar file
+
+ 2. when doing "pm -printer=cfgm", one must have set the flag
+ "conversion=finite" within the grammar file, since "pm" doesn't
+ care about the flags to the import command
+
+ (I guess it's me (peb) who should fix this, but I don't know where
+ the different flags reside...)
+
+- Also, it must be decided in what cases flags can override other flags:
+
+ a) in the grammar file, e.g. "flags conversion=finite;"
+ b) on the command line, e.g. "> sf conversion=finite"
+ c) as argument to a command, e.g. "> i -conversion=finite file.gf"
+
+- A related issue is to decide the scope of flags:
+
+ Some flags are (or should be) local to the module
+ (e.g. -coding and -path)
+ Other flags override daughter flags for daughter modules
+ (e.g. -startcat and -conversion)
+
+* [bringert] IMPORTANT: get right startcat flag when printing CFGM
+ GF.CFGM.PrintCFGrammar.prCanonAsCFGM currently only gets the startcat
+ flag from the top-level concrete module. This might be easier
+ to fix if the multi grammar printers had access to more than just
+ the CanonGrammar.
+
+* [peb] WISH: generalizing incomplete concrete
+
+ I want to be able to open an incomplete concrete module
+ inside another incomplete conrete.
+ Then I can instantiate both incompletes at the same time.
+
+* [peb] WISH: _tmpi, _tmpo
+
+ The files _tmpi and _tmpo are never removed when quitting GF.
+ Further suggestion: put them in /tmp or similar.
+
+ peb: när man använder "|" till ett systemanrop, t.ex:
+ pg | ! sort
+ så skapas filerna _tmpi och _tmpo. Men de tas aldrig bort.
+
+ peb: Ännu bättre: ta bort filerna efteråt.
+
+ aarne: Sant: när GF quittas (om detta inte sker onormalt).
+ Eller när kommandot har kört färdigt (om det terminerar).
+
+ peb: Bäst(?): skapa filerna i /tmp eller liknande.
+
+ aarne: Ibland får man skrivrättighetsproblem - och det är
+ inte kul om man måste ange en tmp-path. Och olika
+ användare och gf-processer måste ha unika filnamn.
+ Och vet inte hur det funkar på windows...
+
+ aarne: Ett till alternativ skulle vara att använda handles
+ utan några tmp-filer alls. Men jag har inte hunnit
+ ta reda på hur det går till.
+
+ björn: Lite slumpmässiga tankar:
+ + man kan använda System.Directory.getTemporaryDirectory, så slipper man iaf bry sig om olika plattformsproblem.
+ + sen kan man använda System.IO.openTempFile för att skapa en temporär fil. Den tas dock inte bort när programmet avslutas, så det får man fixa själv.
+ + System.Posix.Temp.mkstemp gör nåt liknande, men dokumentationen är dålig.
+ + biblioteket HsShellScript har lite funktioner för sånt här, se
+ http://www.volker-wysk.de/hsshellscript/apidoc/HsShellScript.html#16
+
+
+* [peb] WISH: Hierarchic modules
+
+ Suggestion by peb:
+ The module A.B.C is located in the file A/B/C.gf
+
+ Main advantage: you no longer need to state "--# -path=..." in
+ modules
+
+- How can this be combined with several modules inside one file?