Eric Van Wyk

Eric Van Wyk portrait
Associate Professor
Phone Number: 
612-625-0329
Office Location: 
EE/CS 6-203
Education: 

Ph.D. 1998, Computer Science, University of Iowa

M.S. 1991, Computer Science, University of Iowa

B.A. 1989, Mathematics and Computer Science, Luther College

Biography: 

Associate Professor Van Wyk's research focuses on programming languages, in particular extensible programming languages and compilers, applications of temporal logic, and algebraic compilers. In 2005 he was awarded a McKnight Land-Grant Professorship and the National Science Foundation's CAREER award in 2004.

He has authored or co-authored more than 25 publications, including journal and conference papers, articles and technical reports. Van Wyk has developed various software packages including the Silver attribute grammar specification and evaluation system, extensible specifications of Java 1.4 and ANSI C written in Silver, and various domain-specific language extensions for these Java and C specifications. He is a member of ACM, ACM SIGPLAN, IEEE, the IEEE Computer Society, and is involved in numerous conference committees. Van Wyk also does outreach, serving as a member of the St. Louis Park High School School Business and Information Technology Advisory Board.

Research: 

In general, my research is on declarative specifications for programming language tools, such as compilers and optimizers, and the mechanisms for mapping these specifications into executable programs.

One area of interest is extendible programming languages and compiler designs that allow new language features to be imported into a language framework. These new features define their own syntax, semantics, and optimizations. In such a system, programmers do not choose which language to use for a particular task, but instead choose which set of language features to use and import these features into their programming environment thus creating a one-off language specific to their current problem domain.

Many program optimizations can be simply stated as rewrite rules but the data and control flow conditions which must be satisfied to safely apply the rules can be rather complex. I am interested in using temporal logic as a declarative specification language for these conditions since it is formal and concise. Also, temporal logic model checkers can automatically locate the points in a program flow graph where optimizations can be safely made.

I also work on algebraic compilers where programming languages are specified as Galois-connected syntax and semantic algebras and language translators are specified as (generalized) homomorphisms.

Recent Publications

Verifiable Parse Table Composition for Deterministic Parsing

Date of Publication: 
October 2009
Abstract: 
One obstacle to the implementation of modular extensions to programming languages lies in the problem of parsing extended languages. Specifically, the parse tables at the heart of traditional LALR(1) parsers are so monolithic and tightly constructed that, in the general case, it is impossible to extend them without regenerating them from the source grammar. Current extensible frameworks employ a variety of solutions, ranging from a full regeneration to using pluggable binary modules for each different extension.

Silver: an Extensible Attribute Grammar System

Date of Publication: 
August 2009
Authors: 
Eric Van Wyk
Authors: 
Derek Bodin
Authors: 
Jimin Gao
Abstract: 
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.

Verifiable Composition of Deterministic Grammars

Date of Publication: 
June 2009
Abstract: 
There is an increasing interest in domain-specific and extensible languages, and frameworks for developing extensions to them. One challenge is to develop tools that allow non-expert programmers to add an eclectic set of language extensions to a host language. In this paper we describe mechanisms for composing and analyzing syntactic specifications of a host language and extensions. 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.