Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Alessandro Warth

dblp:39/3392 · DBLP profile ↗
← Back
7ranked-venue papers
5as first author
0since 2021 · last 2017
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 7 · 5 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
2 papers
Programming languages and type systems · 97% Compilers and program optimization · 3%

Topics — the 7 heaviest of 8, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems
type systems
0.222009
Expressive and modular predicate dispatch for Java · ACM Trans. Program. Lang. Syst. 2009
Statically scoped object adaptation with expanders · OOPSLA 2006
Programming languages and type systems › method dispatch
dynamic dispatch
0.112009
Expressive and modular predicate dispatch for Java · ACM Trans. Program. Lang. Syst. 2009
Programming languages and type systems › type checking
modular typechecking
0.112009
Expressive and modular predicate dispatch for Java · ACM Trans. Program. Lang. Syst. 2009
Programming languages and type systems › method dispatch
predicate dispatch
0.112009
Expressive and modular predicate dispatch for Java · ACM Trans. Program. Lang. Syst. 2009
Programming languages and type systems
object-oriented programming
0.122009
Statically scoped object adaptation with expanders · OOPSLA 2006
Expressive and modular predicate dispatch for Java · ACM Trans. Program. Lang. Syst. 2009
Programming languages and type systems › type systems
type soundness
0.112006
Statically scoped object adaptation with expanders · OOPSLA 2006
Programming languages and type systems › object-oriented programming
java
0.012009
Expressive and modular predicate dispatch for Java · ACM Trans. Program. Lang. Syst. 2009

Methods — techniques the papers use, named apart from their topics

featherweight java · 0.2decision procedures · 0.1polyglot · 0.1
YearPublicationVenuePosition
2017 Incremental packrat parsing
abstract
Packrat parsing is a popular technique for implementing top-down, unlimited-lookahead parsers that operate in guaranteed linear time. In this paper, we describe a method for turning a standard packrat parser into an incremental parser through a simple modification to its memoization strategy. By 'incremental', we mean that the parser can perform syntax analysis without completely reparsing the input after each edit operation. This makes packrat parsing suitable for interactive use in code editors and IDEs - even with large inputs. Our experiments show that with our technique, an incremental packrat parser for JavaScript can outperform even a hand-optimized, non-incremental parser.
Patrick Dubroy, Alessandro Warth
SLE2
2016 Modular semantic actions
abstract
Parser generators give programmers a convenient and declarative way to write parsers and other language-processing applications, but their mechanisms for extension and code reuse often leave something to be desired. We introduce Ohm, a parser generator in which both grammars and their interpretations can be extended in safe and modular ways. Unlike many similar tools, Ohm completely separates grammars and semantic actions, avoiding the problems that arise when these two concerns are mixed. This paper describes the particular way in which Ohm achieves this separation, and discusses the resulting benefits to modularity and extensibility.
Alessandro Warth, Patrick Dubroy, Tony Garnock-Jones
DLS1
2011 Worlds: Controlling the Scope of Side Effects
Alessandro Warth, Yoshiki Ohshima, Ted Kaehler, Alan C. Kay
ECOOP1
2009 Expressive and modular predicate dispatch for Java
abstract
Predicate dispatch is an object-oriented (OO) language mechanism for determining the method implementation to be invoked upon a message send. With predicate dispatch, each method implementation includes a predicate guard specifying the conditions under which the method should be invoked, and logical implication of predicates determines the method overriding relation. Predicate dispatch naturally unifies and generalizes several common forms of dynamic dispatch, including traditional OO dispatch, multimethod dispatch, and functional-style pattern matching. Unfortunately, prior languages supporting predicate dispatch have had several deficiencies that limit the practical utility of this language feature. We describe JPred, a backward-compatible extension to Java supporting predicate dispatch. While prior languages with predicate dispatch have been extensions to toy or nonmainstream languages, we show how predicate dispatch can be naturally added to a traditional OO language. While prior languages with predicate dispatch have required the whole program to be available for typechecking and compilation, JPred retains Java's modular typechecking and compilation strategies. While prior languages with predicate dispatch have included special-purpose algorithms for reasoning about predicates, JPred employs general-purpose, off-the-shelf decision procedures. As a result, JPred's type system is more flexible, allowing several useful programming idioms that are spuriously rejected by those other languages. After describing the JPred language informally, we present an extension to Featherweight Java that formalizes the language and its modular type system, which we have proven sound. Finally, we discuss two case studies that illustrate the practical utility of JPred, including its use in the detection of several errors.
Todd D. Millstein, Christopher Frost 0001, Jason Ryder, Alessandro Warth
ACM Trans. Program. Lang. Syst.4
2008 Packrat parsers can support left recursion
abstract
Packrat parsing offers several advantages over other parsing techniques, such as the guarantee of linear parse times while supporting backtracking and unlimited look-ahead. Unfortunately, the limited support for left recursion in packrat parser implementations makes them difficult to use for a large class of grammars (Java's, for example). This paper presents a modification to the memoization mechanism used by packrat parser implementations that makes it possible for them to support (even indirectly or mutually) left-recursive rules. While it is possible for a packrat parser with our modification to yield super-linear parse times for some left-recursive grammars, our experimentsshow that this is not the case for typical uses of left recursion.
Alessandro Warth, James R. Douglass, Todd D. Millstein
PEPM1
2007 OMeta: an object-oriented language for pattern matching
abstract
This paper introduces OMeta, a new object-oriented language for pattern matching. OMeta is based on a variant of Parsing Expression Grammars (PEGs) [5]---a recognition-based foundation for describing syntax---which we have extended to handle arbitrary kinds of data. We show that OMeta's general-purpose pattern matching provides a natural and convenient way for programmers to implement tokenizers, parsers, visitors, and tree transformers, all of which can be extended in interesting ways using familiar object-oriented mechanisms. This makes OMeta particularly well-suited as a medium for experimenting with new designs for programming languages and extensions to existing languages.
Alessandro Warth, Ian Piumarta
DLS1
2006 Statically scoped object adaptation with expanders
abstract
This paper introduces the expander, a new object-oriented (OO) programming language construct designed to support object adaptation. Expanders allow existing classes to be noninvasively updated with new methods, fields, and superinterfaces. Each client can customize its view of a class by explicitly importing any number of expanders. This view then applies to all instances of that class, including objects passed to the client from other components. A form of expander overriding allows expanders to interact naturally with OO-style inheritance.We describe the design, implementation, and evaluation of eJava, an extension to Java supporting expanders. We illustrate eJava's syntax and semantics through several examples. The statically scoped nature of expander usage allows for a modular static type system that prevents several important classes of errors. We describe this modular static type system informally, formalize eJava and its type system in an extension to Featherweight Java, and prove a type soundness theorem for the formalization. We also describe a modular compilation strategy for eJava, which we have implemented using the Polyglot extensible compiler framework. Finally, we illustrate the practical benefits of eJava by using this compiler in two experiments.
Alessandro Warth, Milan Stanojevic, Todd D. Millstein
OOPSLA1