Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Eric Van Wyk is active.

Publication


Featured researches published by Eric Van Wyk.


Science of Computer Programming | 2010

Silver: An extensible attribute grammar system

Eric Van Wyk; Derek Bodin; Jimin Gao; Lijesh Krishnan

Attribute grammar specification languages, like many domain-specific languages, offer significant advantages to their users, such as high-level declarative constructs and domain-specific analyses. Despite these advantages, attribute grammars are often not adopted to the degree that their proponents envision. One practical obstacle to their adoption is a perceived lack of both domain-specific and general purpose language features needed to address the many different aspects of a problem. Here we describe Silver, an extensible attribute grammar specification system, and show how it can be extended with general purpose features such as pattern matching and domain-specific features such as collection attributes and constructs for supporting data-flow analysis of imperative programs. The result is an attribute grammar specification language with a rich set of language features. Silver is implemented in itself by a Silver attribute grammar and utilizes forwarding to implement the extensions in a cost-effective manner.


compiler construction | 2002

Forwarding in Attribute Grammars for Modular Language Design

Eric Van Wyk; Oege de Moor; Kevin Backhouse; Paul J. Kwiatkowski

Forwarding is a technique for providing default attribute definitions in attribute grammars that is helpful in the modular implementation of programming languages. It complements existing techniques such as default copy rules. This paper introduces forwarding and shows how it is but a small extension of standard higher-order attribute grammars. The usual tools for manipulating higher-order attribute grammars, including the circularity check (which tests for cyclic dependencies between attribute values), carry over without modification. The closure test (which checks that each attribute has a defining equation) needs modification, however, because the resulting higher-order attribute grammars may contain spurious attributes that are never evaluated and indeed that need not be defined.


symposium on principles of programming languages | 2002

Proving correctness of compiler optimizations by temporal logic

David Lacey; Neil D. Jones; Eric Van Wyk; Carl Christian Frederiksen

Many classical compiler optimizations can be elegantly expressed using rewrite rules of form: <i>I</i> ⇒ <i>I</i>′ if <i>&phis;</i>, where <i>I</i>, <i>I</i>′ are intermediate language instructions and <i>&phis;</i> is a property expressed in a temporal logic suitable for describing program data flow. Its reading: If the current program π contains an instruction of form <i>I</i> at some control point <i>p</i>, and if flow condition <i>&phis;</i> is satisfied at <i>p</i>, then replace <i>I</i> by <i>I</i>′.The purpose of this paper is to show how such transformations may be proven correct. Our methodology is illustrated by three familiar optimizations, dead code elimination, constant folding and code motion. The meaning of correctness is that for any program π, if <i>Rewrite</i>(π, π′, <i>p</i>,<i>I</i> ⇒ <i>I</i>′ if &phis;) then [[π]] = [[π′]], i.e. π and π′ have exactly the same semantics.


european conference on object oriented programming | 2007

Attribute grammar-based language extensions for java

Eric Van Wyk; Lijesh Krishnan; Derek Bodin; August Schwerdfeger

This paper describes the ableJ extensible language framework, a tool that allows one to create new domain-adapted languages by importing domain-specific language extensions into an extensible implementation of Java 1.4. Language extensions may define the syntax, semantic analysis, and optimizations of new language constructs. Java and the language extensions are specified as higher-order attribute grammars. We describe several language extensions and their implementation in the framework. For example, one extension embeds the SQL database query language into Java and statically checks for syntax and type errors in SQL queries. The tool supports the modular specification of composable language extensions so that programmers can import into Java the unique set of extensions that they desire. When extensions follow certain restrictions, they can be composed without requiring any implementation-level knowledge of the language extensions. The tools automatically compose the selected extensions and the Java host language specification.


generative programming and component engineering | 2007

Context-aware scanning for parsing extensible languages

Eric Van Wyk; August Schwerdfeger

This paper introduces new parsing and context-aware scanning algorithms in which the scanner uses contextual information to disambiguate lexical syntax. The parser uses a slightly modified LR-style algorithm that passes to the scanner the set of valid symbols that the scanner may return at that point in parsing. This set is those terminals whose entries in the parse table for the current parse state are shift, reduce, or accept, but not error. The scanner then only returns tokens in this set. An analysis is given that can statically verify that the scanner will never return more than one token for a single input. Context-aware scanning is especially useful when parsing and scanning extensible languages in which domain specific languages can be embedded. It has been used in extensible versions of Java 1.4 and ANSI C. We illustrate this approach with a declarative specification of a subset of Java and extensions that embed SQL queries and Boolean expression tables into Java.


Electronic Notes in Theoretical Computer Science | 2008

Silver: an Extensible Attribute Grammar System

Eric Van Wyk; Derek Bodin; Jimin Gao; Lijesh Krishnan

Attribute grammar specification languages, like many domain specific languages, offer significant advantages to their users, such as high-level declarative constructs and domain-specific analyses. Despite these advantages, attribute grammars are often not adopted to the degree that their proponents envision. One practical obstacle to their adoption is a perceived lack of both domain-specific and general purpose language features needed to address the many different aspects of a problem. Here we describe Silver, an extensible attribute grammar specification language, and show how it can be extended with general purpose features such as pattern matching and domain specific features such as collection attributes and constructs for supporting data-flow analysis of imperative programs. The result is an attribute grammar specification language with a rich set of language features. Silver is implemented in itself by a Silver attribute grammar and utilizes forwarding to implement the extensions in a cost-effective manner.


programming language design and implementation | 2009

Verifiable composition of deterministic grammars

August Schwerdfeger; Eric Van Wyk

There is an increasing interest in extensible languages, (domain-specific) language extensions, and mechanisms for their specification and implementation. One challenge is to develop tools that allow non-expert programmers to add an eclectic set of language extensions to a host language. We describe mechanisms for composing and analyzing concrete syntax specifications of a host language and extensions to it. These specifications consist of context-free grammars with each terminal symbol mapped to a regular expression, from which a slightly-modified LR parser and context-aware scanner are generated. Traditionally, conflicts are detected when a parser is generated from the composed grammar, but this comes too late since it is the non-expert programmer directing the composition of independently developed extensions with the host language. The primary contribution of this paper is a modular analysis that is performed independently by each extension designer on her extension (composed alone with the host language). If each extension passes this modular analysis, then the language composed later by the programmer will compile with no conflicts or lexical ambiguities. Thus, extension writers can verify that their extension will safely compose with others and, if not, fix the specification so that it will. This is possible due to the context-aware scanners lexical disambiguation and a set of reasonable restrictions limiting the constructs that can be introduced by an extension. The restrictions ensure that the parse table states can be partitioned so that each state can be attributed to the host language or a single extension.


Higher-order and Symbolic Computation \/ Lisp and Symbolic Computation | 2003

Universal Regular Path Queries

Oege de Moor; David Lacey; Eric Van Wyk

Given are a directed edge-labelled graph G with a distinguished node n0, and a regular expression P which may contain variables. We wish to compute all substitutions Φ (of symbols for variables), together with all nodes n such that all paths n0 → n are in Φ(P). We derive an algorithm for this problem using relational algebra, and show how it may be implemented in Prolog. The motivation for the problem derives from a declarative framework for specifying compiler optimisations.


Higher-order and Symbolic Computation \/ Lisp and Symbolic Computation | 2004

Compiler Optimization Correctness by Temporal Logic

David Lacey; Neil D. Jones; Eric Van Wyk; Carl Christian Frederiksen

Rewrite rules with side conditions can elegantly express many classical compiler optimizations for imperative programming languages. In this paper, programs are written in an intermediate language and transformation-enabling side conditions are specified in a temporal logic suitable for describing program data flow.The purpose of this paper is to show how such transformations may be proven correct. Our methodology is illustrated by three familiar optimizations: dead code elimination, constant folding, and code motion. A transformation is correct if whenever it can be applied to a program, the original and transformed programs are semantically equivalent, i.e., they compute the same input-output function. The proofs of semantic equivalence inductively show that a transformation-specific bisimulation relation holds between the original and transformed program computations.


fundamental approaches to software engineering | 2007

Flexible and extensible notations for modeling languages

Jimin Gao; Mats Per Erik Heimdahl; Eric Van Wyk

In model-based development, a formal description of the software (the model) is the central artifact that drives other development activities. The availability of a modeling language well-suited for the system under development and appropriate tool support are of utmost importance to practitioners. Considering the diverse needs of different application domains, flexibility in the choice of modeling languages and tools may advance the industrial acceptance of formal methods. We describe a flexible modeling language framework by which language and tool developers may better meet the special needs of various users groups without incurring prohibitive costs. The framework is based on a modular and extensible implementation of languages features using attribute grammars and forwarding. We show a prototype implementation of such a framework by extending the host language Mini-Lustre, an example synchronous data-flow language, with a collection of features such as state transitions, condition tables, and events. We also show how new languages can be created in this framework by feature composition.

Collaboration


Dive into the Eric Van Wyk's collaboration.

Top Co-Authors

Avatar

Ted Kaminski

University of Minnesota

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Derek Bodin

University of Minnesota

View shared research outputs
Top Co-Authors

Avatar

Jimin Gao

University of Minnesota

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Yogesh Mali

University of Minnesota

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Eric Johnson

University of Minnesota

View shared research outputs
Researchain Logo
Decentralizing Knowledge