Adrian D. Thurston
thurston -{@}- complang.org
Adrian Thurston

About

In December 2008 I received my Ph.D. in Computer Science from the School of Computing, Queen's University. I was a member of the Software Technology Lab. My supervisor was Dr. James R. Cordy. I did my M.Sc. also at Queen's and my B.Math (Computer Science) at the University of Waterloo.

My professional interests include parsing technology, source transformation and software development tools. I am currently working on a new source transformation system called Colm.

I live in Vancouver, BC. I work for eSentire, Inc., which is based in Cambridge, Ontario.

I try to capture things I figure out and find interesting. I also blather away on twitter.

My PGP Key. Use it, sign it, send me secrets!

Programs

  • Ragel. Ragel is a development tool that compiles regular language grammars into executable code. Ragel targets C, C++, Objective-C, D, Java and Ruby. It is unique in that it allows you to embed actions and control non-determinism in regular languages. Use it to build very fast parsers.

Testbed

  • Colm. COmputer Language Manipulation. A programming language for the analysis and transformation of computer languages. Colm is the result of Ph.D. research.
  • Kelbt. Kelbt generates backtracking LALR(1) parsers. Semantic undo actions given by the user are executed during backtracking. The strategy for parsing ambiguous constructs is user-controlled by way of ordering productions. Kelbt can be used to produce grammar-based parsers for languages that are both context-dependent and ambiguous (for example C++).
  • DSNP - Distributed Social Networking Protocol. Proof that we can abandon the silos and get back in control of our digital identities.

Inactive Projects

  • ETXL. ETXL is the prototype implementation of the ideas developed in my Master's Thesis. The prototype is itself a TXL program that transforms ETXL to pure TXL then runs the TXL engine on the result.
  • Aapl. Aapl is a C++ template library. It provides implementations of AVL Tree, Linked List, Vector, Binary Search Table and Sort. Aapl supports different generic programming paradigms by providing several variations of the standard data structures. Aapl data structures do not depend on heap memory allocation nor have data members that are hidden behind a strict abstraction layer.

Refereed Publications

[6] Thomas K. Chen, Adrian D. Thurston, Randy E. Ellis, Purang Abolmaesumi. A Real-Time Freehand Ultrasound Calibration System with Automatic Accuracy Feedback and Control. Ultrasound in Medicine and Biology, volume 35, issue 1, pp. 79-93, January 2009.
[5] Thomas K. Chen, Adrian D. Thurston, Mehdi H. Moghari, Randy E. Ellis, Purang Abolmaesumi. A Real-Time Ultrasound Calibration System with Automatic Accuracy Control and Incorporation of Ultrasound Beam Thickness. SPIE Medical Imaging 2008, San Diego, February 2008. pdf.
[4] Adrian D. Thurston and James R. Cordy. A Backtracking LR Algorithm for Parsing Ambiguous Context-Dependent Languages. In 2006 Conference of the Centre for Advanced Studies on Collaborative Research (CASCON 2006), pp. 39-53, Toronto, October 2006. pdf.
[3] Thomas K. Chen, Purang Abolmaesumi, Adrian D. Thurston and Randy E. Ellis. "Automated 3D Freehand Ultrasound Calibration with Real-Time Accuracy Control." In 9th International Conference on Medical Image Computing and Computer Assisted Intervention (MICCAI 2006), Lecture Notes in Computer Science, volume 4190, pp. 899-906, Copenhagen, Denmark, October 2006. pdf.
[2] Adrian D. Thurston and James R. Cordy, "Evolving TXL." In 6th IEEE International Workshop on Source Code Analysis and Manipulation (SCAM 2006), pp. 117-126, Philadelphia, September 2006. pdf.
[1] Adrian D. Thurston. "Parsing Computer Languages with an Automaton Compiled from a Single Regular Expression." In 11th International Conference on Implementation and Application of Automata (CIAA 2006), Lecture Notes in Computer Science, volume 4094, pp. 285-286, Taipei, Taiwan, August 2006. pdf.

Last changed: January 31, 2010