[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Reply on Marcus Rotzoll's questions




Hi Marcus,

Subject: questions about Centaur


First of all, you have to understand that 'Centaur' is used in one of the
following two ways:
- ASF+SDF system
- ctedit based system

These two configurations are used in a mutually exclusive way. The main 
difference is the use of the formalism for semantics. Summarizing:

ASF+SDF					ctedit based
------------------------------------------------------------------------------
semantics in ASF			semantics in Typol
syntax in SDF				syntax in Metal OR in SDF
editing with GSE			editing with ctedit
default pretty-printing           	pretty-printing with PPML
   (i.e., not specified at all)
incremental development of specs.       compilation based development of specs.

Now about you specific questions:

=> We used the "ctedit" and later on the "ASF+SDF" system. We found out
=> that there is no direct editing in the "ctedit". In the ASF+SDF system
=> (GSE) we couldn't make an editor as an executable program and we couldn't
=> find out, how to add a ppml-specification for pretty-printing. Can you
=> help us with this problem?
- you may edit a 'selection' in ctedit textually using emacs. Switching from
  "text mode" to "structure mode" is explicit, i.e., both modes are not
  fully integrated as in GSE. In the next version of GSE, emacs is fully
  integrated for text editing.
- GSE editor instances always need a parser that is generated from an SDF
  definition. There is no way to save the generated parser. Therefore, GSE
  can not be used as a "stand-alone" editor.
- GSE editors are equipped with a default pretty-printer, it is impossible
  to connect a pretty-printer generated from a PPML specification.
  (we're working on specification of pretty-printers for GSE at the moment,
   they will not be based on PPML but on ASF+SDF itself)

=> Also, is Centaur able to complete a syntactical structure like for instance
=> a 'begin/end'; i.e. if 'begin' has been typed then 'end' should automatically
=> be added and the user should go on typing in the space in between?
- In both GSE as well as ctedit, this is impossible.

=> Another question we have is: does Centaur allow for context-sensitive
=> information. For instance, is it possible to check that a variable used
=> somewhere in a program has been declared previously?
- But of course! You need to specify a 'typechecker' in either Typol or ASF.
  That is, a semantic function mapping a program to e.g. a list of error
  messages. There are many examples around in our project and elsewhere.
  (see below)

=> Perhaps there are already examples of structured editors being built
=> with Centaur. It would be helpful to get any examples of Centaur
=> applications. Surprisingly, the pico specification wasn't shippped with
=> the rest of the system.
- The missing pico specification is an ommission which I strongly regret.
  Sorry about that. You may ftp the pico specification from:
	cite: ftp.cwi.nl
	dir.: pub/gipe/spec
  You can also find the latest version of manuals etc. concerning ASF+SDF
  on the same cite, but in directory pub/gipe


Any other questions? Please let us know!


Regards, Wilco.
(GSE designer and implementor)