Scannerless NSLR(1) parsing of programming languages
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
ANTLR: a predicated-LL(k) parser generator
Software—Practice & Experience
Making the future safe for the past: adding genericity to the Java programming language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
JFlow: practical mostly-static information flow control
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A readable TCP in the Prolac protocol language
Proceedings of the conference on Applications, technologies, architectures, and protocols for computer communication
What can we do about the unnecessary diversity of notation for syntactic definitions?
Communications of the ACM
An efficient context-free parsing algorithm
Communications of the ACM
Growing languages with metamorphic syntax macros
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Generalized L.R. Parsing
Packrat parsing:: simple, powerful, lazy, linear time, functional pearl
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Disambiguation Filters for Scannerless Generalized LR Parsers
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Monads for Functional Programming
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
A Toolkit for User-Level File Systems
Proceedings of the General Track: 2002 USENIX Annual Technical Conference
The tmg recognition schema
HydroJ: object-oriented pattern matching for evolvable distributed systems
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Parsing expression grammars: a recognition-based syntactic foundation
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
HOTOS'05 Proceedings of the 10th conference on Hot Topics in Operating Systems - Volume 10
MACEDON: methodology for automatically creating, evaluating, and designing overlay networks
NSDI'04 Proceedings of the 1st conference on Symposium on Networked Systems Design and Implementation - Volume 1
Devil: an IDL for hardware programming
OSDI'00 Proceedings of the 4th conference on Symposium on Operating System Design & Implementation - Volume 4
The metafront system: Safe and extensible parsing and transformation
Science of Computer Programming
Polyglot: an extensible compiler framework for Java
CC'03 Proceedings of the 12th international conference on Compiler construction
Program Transformation with Scoped Dynamic Rewrite Rules
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Context-aware scanning for parsing extensible languages
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Jeannie: granting java native interface developers their wishes
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
OMeta: an object-oriented language for pattern matching
Proceedings of the 2007 symposium on Dynamic languages
Packrat parsers can support left recursion
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Xoc, an extension-oriented compiler for systems programming
Proceedings of the 13th international conference on Architectural support for programming languages and operating systems
Modularity first: a case for mixing AOP and attribute grammars
Proceedings of the 7th international conference on Aspect-oriented software development
DLS '08 Proceedings of the 2008 symposium on Dynamic languages
ANTLRWorks: an ANTLR grammar development environment
Software—Practice & Experience
Designing Syntax Embeddings and Assimilations for Language Libraries
Models in Software Engineering
Sectional domain specific languages
Proceedings of the 4th workshop on Domain-specific aspect languages
Building language towers with ziggurat
Journal of Functional Programming
Software Language Engineering
Faster Scannerless GLR Parsing
CC '09 Proceedings of the 18th International Conference on Compiler Construction: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Verifiable composition of deterministic grammars
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
PADS: a policy architecture for distributed storage systems
NSDI'09 Proceedings of the 6th USENIX symposium on Networked systems design and implementation
Gel: A Generic Extensible Language
DSL '09 Proceedings of the IFIP TC 2 Working Conference on Domain-Specific Languages
Computer Languages, Systems and Structures
Debug all your code: portable mixed-environment debugging
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Silver: An extensible attribute grammar system
Science of Computer Programming
Matchete: paths through the pattern matching jungle
PADL'08 Proceedings of the 10th international conference on Practical aspects of declarative languages
DCGs + memoing = packrat parsing but is it worth it?
PADL'08 Proceedings of the 10th international conference on Practical aspects of declarative languages
Packrat parsers can handle practical grammars in mostly constant space
Proceedings of the 9th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
PEG-based transformer provides front-, middle-and back-end stages in a simple compiler
Workshop on Self-Sustaining Systems
MetaLexer: a modular lexical specification language
Proceedings of the tenth international conference on Aspect-oriented software development
LDT: a language definition technique
Proceedings of the Eleventh Workshop on Language Descriptions, Tools and Applications
LL(*): the foundation of the ANTLR parser generator
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Integrating OCL and textual modelling languages
MODELS'10 Proceedings of the 2010 international conference on Models in software engineering
Design and implementation of the Sweble Wikitext parser: unlocking the structured data of Wikipedia
Proceedings of the 7th International Symposium on Wikis and Open Collaboration
A role-based approach towards modular language engineering
SLE'09 Proceedings of the Second international conference on Software Language Engineering
An object-oriented framework for aspect-oriented languages
Proceedings of the 11th annual international conference on Aspect-oriented Software Development
SuperC: parsing all of C by taming the preprocessor
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
From a calculus to an execution environment for stream processing
Proceedings of the 6th ACM International Conference on Distributed Event-Based Systems
Domain-Specific languages in few steps: the neverlang approach
SC'12 Proceedings of the 11th international conference on Software Composition
Marco: safe, expressive macros for any language
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Honu: syntactic extension for algebraic notation through enforestation
Proceedings of the 11th International Conference on Generative Programming and Component Engineering
Natural and Flexible Error Recovery for Generated Modular Language Environments
ACM Transactions on Programming Languages and Systems (TOPLAS)
Adaptable parsing expression grammars
SBLP'12 Proceedings of the 16th Brazilian conference on Programming Languages
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
We explore how to make the benefits of modularity available for syntactic specifications and present Rats!, a parser generator for Java that supports easily extensible syntax. Our parser generator builds on recent research on parsing expression grammars (PEGs), which, by being closed under composition, prioritizing choices, supporting unlimited lookahead, and integrating lexing and parsing, offer an attractive alternative to context-free grammars. PEGs are implemented by so-called packrat parsers, which are recursive descent parsers that memoize all intermediate results (hence their name). Memoization ensures linear-time performance in the presence of unlimited lookahead, but also results in an essentially lazy, functional parsing technique. In this paper, we explore how to leverage PEGs and packrat parsers as the foundation for extensible syntax. In particular, we show how make packrat parsing more widely applicable by implementing this lazy, functional technique in a strict, imperative language, while also generating better performing parsers through aggressive optimizations. Next, we develop a module system for organizing, modifying, and composing large-scale syntactic specifications. Finally, we describe a new technique for managing (global) parsing state in functional parsers. Our experimental evaluation demonstrates that the resulting parser generator succeeds at providing extensible syntax. In particular, Rats! enables other grammar writers to realize real-world language extensions in little time and code, and it generates parsers that consistently out-perform parsers created by two GLR parser generators.