[climacs-cvs] CVS update: papers/ilc2005/syntax/barley.eps papers/ilc2005/syntax/barley.pdf papers/ilc2005/syntax/climacssyntax.bib papers/ilc2005/syntax/climacssyntax.tex
Christophe Rhodes
crhodes at common-lisp.net
Fri May 20 11:48:42 UTC 2005
Update of /project/climacs/cvsroot/papers/ilc2005/syntax
In directory common-lisp.net:/tmp/cvs-serv7313
Modified Files:
climacssyntax.bib climacssyntax.tex
Added Files:
barley.eps barley.pdf
Log Message:
Add a couple of editor references
Rearrange the introduction a little bit
add another figure of more complex tablature
Date: Fri May 20 13:48:41 2005
Author: crhodes
Index: papers/ilc2005/syntax/climacssyntax.bib
diff -u papers/ilc2005/syntax/climacssyntax.bib:1.2 papers/ilc2005/syntax/climacssyntax.bib:1.3
--- papers/ilc2005/syntax/climacssyntax.bib:1.2 Tue May 17 14:56:23 2005
+++ papers/ilc2005/syntax/climacssyntax.bib Fri May 20 13:48:40 2005
@@ -117,3 +117,23 @@
OPTannote = {}
}
+ at inproceedings{greenberg,
+ author = {Bernard S. Greenberg},
+ title = "{Multics Emacs (Prose and Cons): A commercial text-processing system in Lisp}",
+ booktitle = {LFP '80: Proceedings of the 1980 ACM conference on LISP and functional programming},
+ year = {1980},
+ pages = {6--12},
+ location = {Stanford University, California, United States},
+ publisher = {ACM Press},
+ address = {New York, NY, USA},
+}
+
+ at inproceedings{woodZ,
+ author = {Steven R. Wood},
+ title = "{Z -- the 95\% program editor}",
+ booktitle = {Proceedings of the ACM SIGPLAN SIGOA symposium on Text manipulation},
+ year = {1981},
+ isbn = {0-89791-050-8},
+ pages = {1--7},
+ location = {Portland, Oregon, United States}},
+ }
\ No newline at end of file
Index: papers/ilc2005/syntax/climacssyntax.tex
diff -u papers/ilc2005/syntax/climacssyntax.tex:1.6 papers/ilc2005/syntax/climacssyntax.tex:1.7
--- papers/ilc2005/syntax/climacssyntax.tex:1.6 Fri May 20 10:18:33 2005
+++ papers/ilc2005/syntax/climacssyntax.tex Fri May 20 13:48:41 2005
@@ -55,21 +55,55 @@
\keywords{Editors, Parsing, Tablature}
-\section{Overview}
+\section{Introduction}
+
+The field of advanced text editors is a crowded one, with a long
+history and an apparent ability to cause passionate argument.
+
+[ Does anyone know enough about the history of editors? ]
+
+\begin{itemize}
+\item ed
+\item vi (vim)
+\item emacs (Zmacs) (emacs time line) \cite{greenberg}
+\item some kind of interlispy/smalltalky structure editor?
+\item Z -- the 95\% text editor \cite{woodZ}. Note that WiB didn't
+ win!
+\end{itemize}
+
+Discuss lameness of emacs-like regexoid analysis in e.g. CL mode;
+maybe mention how it falls over dramatically in perl mode (where
+context starts really mattering)
+\begin{itemize}
+\item non-locality leading to confusion in \verb+#| |#+
+\item paren-in-column-1 hack (and its workaround in docstrings:
+ \verb+\(+)
+\end{itemize}
The Climacs text editor is a combination of frameworks for buffer
representation and buffer contents parsing with a CLIM-based display
-engine. The Flexichain library \cite{flexichain} provides an editable
-sequence representation and mark (cursor) management based on a
-circular gap buffer. This library is used by the buffer protocol,
-which provides a standard interface to common text editor buffer
-operations. The syntax protocol provides a method for interfacing a
-lexical analyzer and parser with the text editor. An implementation of
-the Earley parsing algorithm is provided to simplify the creation of
-syntaxes for common context-free grammars. Syntax modules also define
-methods to draw syntax objects in the Climacs window.
+engine. It includes the Flexichain library \cite{flexichain}, which
+provides an editable sequence representation and mark (cursor)
+management based on a circular gap buffer; and an implementation of a
+slight modification of the Earley parsing algorithm \cite{earley}, to
+assist in the creation of syntax-aware editing modes.
+
+The Climacs buffer protocol, which provides a standard interface to
+common text editor buffer operations, uses the Flexichain library; we
+discuss this protocol in more detail in section \ref{sec:buffer}. The
+syntax protocol, which we discuss in section \ref{sec:syntax},
+provides a method for interfacing a lexical analyzer and parser with
+the text editor, and provides for defining methods to draw syntax
+objects in the Climacs window. In section \ref{sec:syntaxes} we
+discuss the implementation of syntactic analysis for various
+programming languages, including Common Lisp; in section
+\ref{sec:tabeditor}, we discuss an application with Climacs at its
+core to support editing a textual representation of lute tablature.
+We discuss avenues for further development in section
+\ref{sec:conclusions}.
\section{Buffer Protocol}
+\label{sec:buffer}
The buffer protocol provides a set of methods for modifying and
reading the contents of a buffer which can contain arbitrary objects.
@@ -87,6 +121,7 @@
unspecialized.
\section{Syntax Protocol}
+\label{sec:syntax}
A syntax in Climacs is an incremental parser which creates and updates
a parse tree of a buffer's contents, and provides a mechanism for
@@ -103,16 +138,20 @@
other display or analysis of the text in the buffer.
Earley parser: discussion of generality and asymptotic efficiency (in
-general and for usual cases).
+general and for usual cases). Possibility of replacement in case of
+complicated grammars? (What was that parsing algorithm that someone
+mentioned on \verb+#lisp+?)
\section{Syntaxes}
+\label{sec:syntaxes}
We describe two different approaches to syntax analysis in the Climacs
editor. Per-window parsing is used by the provided modes for HTML,
Common Lisp, Prolog, and TTCN3. Each of these syntaxes is implemented
with the provided Earley parser \cite{earley}. The lute tablature
editor uses a per-buffer function for its syntax analysis and
-implements a simple recursive-descent parsing algorithm.
+implements a simple recursive-descent parsing algorithm. (FIXME: is
+this true? I don't know enough about parsing)
\subsection{Per-Window Syntaxes}
@@ -157,7 +196,8 @@
macro defines basic display functions for the syntax objects produced
by the parser, with language keywords appearing in a separate color.
-\subsection{Per-Buffer Syntax}
+\subsection{Per-Buffer Syntax: a tablature editor}
+\label{sec:tabeditor}
\begin{figure*}
\begin{center}
@@ -178,6 +218,26 @@
\end{center}
\end{figure*}
+\begin{figure*}
+ \begin{center}
+ \parbox{0.45\linewidth}{\includegraphics{barley}}
+ \parbox{0.25\linewidth}{\texttt{\\ [1cm]\noindent
+ Sa1(E)d5(C5:8)\\
+ a2.\\
+ d3\\
+ b3.\\
+ d3\\
+ a2.\\
+ a1:\\
+ d3.(C-5:4)\\
+ |}}
+ \caption{An extract from `Lachrime by I. D.' from \textit{A New
+ Booke of Tabliture}, published by William Barley (London,
+ 1596), E1r, and its \TabCode\ encoding.}
+ \label{fig:barley}
+ \end{center}
+\end{figure*}
+
\TabCode\ is a textual format for description of lute tablature. In
its simplest form, it is a sequence of whitespace-delimited
independent words, where each word represents either a set of frets to
@@ -186,7 +246,8 @@
demonstrates a fragment of manuscript, and its \TabCode encoding. It
is also possible to encode more complex elements of lute tablature
notation in \TabCode: ornaments, beaming, connecting lines and other
-complex elements can all be accommodated.
+complex elements can all be accommodated (see figure \ref{fig:barley}
+for examples of more these more complex elements).
\TabCode\ has been used to produce scholarly editions of lute works
\cite{Weiss} and to computer-based musicological studies (as in
@@ -216,9 +277,11 @@
MIDI feedback. At present, based on Apple's extremely badly
documented CoreMIDI framework; a port to alsalib is on the cards.
-\section{Conclusion}
+\section{Future Work and Conclusions}
+\label{sec:conclusions}
-I like Jello. Jello is good.
+I like Jello. Jello is good. We should enable people to make better
+Jello.
\nocite{*}
More information about the Climacs-cvs
mailing list