SDF2 o 2
SDF: Modular Syntax Definition Formalism
Proposed Changes
A summary of changes from SDf.2.1 to SDF.2.2 :
- The syntax of ATerms will be used for SDF attributes
for example:
A -> B {left}
B -> C {aap(noot,mies)}
- SDF layout is defined in a separate module and imported at the top. This allows other modules to be reused without inheriting the SDF layout and comment conventions.
- ATerm and SDF unquoted literals are distinguished using the sort UQSdfLiteral?.
- The "definition" keyword is removed. An SDF definition is just a sequence of SDF modules:
Module* -> Definition
- The following file extensions will be used for SDF modules and definitions:
- .sdf for SDF modules
- .def for SDF definitions
- The SDF grammar will contain constructor annotations which define the abstract syntax of SDF
- Three new constructors are introduced in AsFix?:
- qlit to represent quoted literals
- uqlit to represent unquoted literals
- flatlex to represent flattened lexicals
- The production sorts Symbols -> Grammar has been replaced bu sorts Sorts -> Grammar
Unresolved Issues
- Do we need directly visible kernel syntax?
- Are there convincing examples of kernel syntax?
- Why can these not be handled by lexical syntax?
- How do the sorts in kernel syntax and other sections relate?
- Why Symbols in parameter list following module name?
- Keyword "Set" should be "set"
- Do we need the "(" Symbol "=>" Symbol ")" syntax?
- Why are the lookaheads "" {Lookahead ","}* "?" visible? Should belong to kernel syntax.
- How to add GrammarAnnotations??