\documentclass[a4paper]{article} \input{macros.ltx} \usepackage{palatino} \setlength{\parindent}{0cm} \setlength{\parskip}{1ex} \begin{document} \title{The \Kaya{} Programming Language, Version \input{../VERSION}} % Note: Please add yourself as an author if you add anything else! \author{Edwin Brady \and Chris Morris \and [Your Name Here!] \\ email: \texttt{kaya@compsoc.dur.ac.uk}} \maketitle \section{Introduction} This document is eventually intended to evolve into reference documentation for the \Kaya{} programming language. It is not intended to be a tutorial, but rather an accurate description of the language and compiler features. The language itself, its type system and its data and execution models are introduced. At present, there is no formal and unambiguous definition of the language, besides the implementation itself. The lexical structure is implemented by \texttt{Lexer.hs} and the grammar by \texttt{Parser.y}. Since the implementation is constantly evolving, so is this document. If you find any errors or inconsistencies, please let us know. %One day, of course, it would be nice to have a document %describing the precise language details, but that will have to wait! %\TODO{At the very least, we might add the type inference rules at some %point.} Throughout, code is presented in \CD{this style} and meta-code (i.e., something standing for code) is presented in \MC{this style}. We use the convention that \oneplus{\MC{x}} means a sequence of at least one \MC{x}, and \zeroplus{\MC{x}} means a sequence of zero or more \MC{x}s. \oneplus{\MC{x},} means a delimited sequence of one or more \MC{x}s (where the delimiter is an arbitrary symbol), and correspondingly \zeroplus{\MC{x},}. \maybe{\MC{x}} denotes an optional \MC{x}. Complex BNF expressions may be enclosed in angle brackets, e.g. \zeroplus{$\langle$\MC{type} \MC{identifier}$\rangle$,} denotes a comma separated list of types followed by identifiers. \input{lexical.tex} \input{types.tex} \input{structure.tex} \input{functions.tex} \input{expressions.tex} \input{builtins.tex} \input{progtypes.tex} \input{modules.tex} \input{foreign.tex} \input{internals.tex} \input{future.tex} \nocite{pj-imp} \nocite{compilers} \bibliographystyle{alpha} \bibliography{references} \end{document}