The syntax definition formalism SDF—reference manual—
ACM SIGPLAN Notices
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Science of Computer Programming - Special issue on mathematics of program construction
Macro instruction extensions of compiler languages
Communications of the ACM
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Template meta-programming for Haskell
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Meta-programming with Concrete Object Syntax
GPCE '02 Proceedings of the 1st ACM SIGPLAN/SIGSOFT conference on Generative Programming and Component Engineering
Stratego: A Language for Program Transformation Based on Rewriting Strategies
RTA '01 Proceedings of the 12th International Conference on Rewriting Techniques and Applications
Scripting the type inference process
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Why it's nice to be quoted: quasiquoting for haskell
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
The jastadd extensible java compiler
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Applicative programming with effects
Journal of Functional Programming
The architecture of the Utrecht Haskell compiler
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
Revised6 report on the algorithmic language scheme
Journal of Functional Programming
Silver: An extensible attribute grammar system
Science of Computer Programming
Polyglot: an extensible compiler framework for Java
CC'03 Proceedings of the 12th international conference on Compiler construction
The spoofax language workbench: rules for declarative specification of languages and IDEs
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Growing a language environment with editor libraries
Proceedings of the 10th ACM international conference on Generative programming and component engineering
SugarJ: library-based syntactic language extensibility
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Generalized type-based disambiguation of meta programs with concrete object syntax
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Preprocessing eden with template haskell
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Language composition untangled
Proceedings of the Twelfth Workshop on Language Descriptions, Tools, and Applications
Modular and automated type-soundness verification for language extensions
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Extending Erlang by utilising RefactorErl
Proceedings of the twelfth ACM SIGPLAN workshop on Erlang
A framework for extensible languages
Proceedings of the 12th international conference on Generative programming: concepts & experiences
A framework for extensible languages
Proceedings of the 12th international conference on Generative programming: concepts & experiences
Hi-index | 0.00 |
Programmers need convenient syntax to write elegant and concise programs. Consequently, the Haskell standard provides syntactic sugar for some scenarios (e.g., do notation for monadic code), authors of Haskell compilers provide syntactic sugar for more scenarios (e.g., arrow notation in GHC), and some Haskell programmers implement preprocessors for their individual needs (e.g., idiom brackets in SHE). But manually written preprocessors cannot scale: They are expensive, error-prone, and not composable. Most researchers and programmers therefore refrain from using the syntactic notations they need in actual Haskell programs, but only use them in documentation or papers. We present a syntactically extensible version of Haskell, SugarHaskell, that empowers ordinary programmers to implement and use custom syntactic sugar. Building on our previous work on syntactic extensibility for Java, SugarHaskell integrates syntactic extensions as sugar libraries into Haskell's module system. Syntax extensions in SugarHaskell can declare arbitrary context-free and layout-sensitive syntax. SugarHaskell modules are compiled into Haskell modules and further processed by a Haskell compiler. We provide an Eclipse-based IDE for SugarHaskell that is extensible, too, and automatically provides syntax coloring for all syntax extensions imported into a module. We have validated SugarHaskell with several case studies, including arrow notation (as implemented in GHC) and EBNF as a concise syntax for the declaration of algebraic data types with associated concrete syntax. EBNF declarations also show how to extend the extension mechanism itself: They introduce syntactic sugar for using the declared concrete syntax in other SugarHaskell modules.