Files
gf-core/doc/TODO
2006-04-21 13:13:28 +00:00

232 lines
6.5 KiB
Plaintext

* 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?