37 lines
3.3 KiB
TeX
37 lines
3.3 KiB
TeX
\documentclass{article}
|
|
\usepackage[utf8]{inputenc}
|
|
|
|
\title{Projectvoorstel Talen en Automaten\\
|
|
\large Lexical analyser generator: \texttt{\emph{Lexesis}}}
|
|
\author{Thomas Avé, Robin Jadoul}
|
|
\date{}
|
|
|
|
\begin{document}
|
|
\clearpage\maketitle
|
|
\thispagestyle{empty}
|
|
\clearpage
|
|
|
|
\paragraph{}
|
|
In fase \texttt{I} werd door deze groep reeds de omzetting van een reguliere expressie naar een \texttt{$\epsilon$-NFA}\footnote{Robin Jadoul} en beide \texttt{table filling} algoritmes\footnote{Thomas Avé en Robin Jadoul} geïmplementeerd.
|
|
|
|
\paragraph{}
|
|
Voor fase \texttt{II} stellen we onszelf tot doel een programmeertaal agnostische generator voor lexicale analysators te maken. In tegenstelling tot de bekende en frequent gebruikte \emph{flex} is het ons doel hierbij in de feitelijke specificatie voor de analysator geen specifieke programmeertaal te laten voorkomen (bij flex moet men specifieke code schrijven in de gewenste programmeertaal). Dit heeft tot voordeel dat eenzelfde input bestand eenvoudig hergebruikt kan worden in meerdere projecten, zonder verdere compatibiliteitsproblemen. Zo kan bijvoorbeeld een standaardcomité van een programmeertaal een voorbeeldspecificatie in dit inputformaat vrijgeven, en kunnen verschillende toepassingen\footnote{Voor enkele voorbeelden van toepassingen, zie onder} daarvan gebruik maken zonder op eender welke manier gerestricteerd te zijn, of van elkaar afhankelijk te zijn.
|
|
|
|
\paragraph{}
|
|
Intern zal de generator werken door een collectie van \emph{reguliere expressies}\footnote{De posix variant, niet de \emph{perl compatible regex}} die de gewenste \emph{tokens} beschrijven om te zetten naar een \texttt{$\epsilon$-NFA}, vervolgens middels \texttt{mssc} hier een \texttt{DFA} van te maken die (optioneel, te specifiëren door de eindgebruiker) ook nog met \texttt{table filling} geminimaliseerd kan worden. Wanneer er meerdere mogelijke \emph{tokens} zijn voor een bepaalde tekenreeks, zal deze ambiguïteit opgevangen worden door een voorrangsregel: de tekstueel vroegste \emph{reguliere expressie} in het inputbestand zal voorrang krijgen.
|
|
|
|
\paragraph{}
|
|
Voor een gegeven invoerbestand zal dan de mogelijkheid bestaan om dit om te zetten naar een sourcecode bestand naar keuze\footnote{Indien de gewenste taal geïmplementeerd is, initieel wordt enkel \texttt{C++} ondersteuning gepland}. Dit bestand kan dan mee gecompileerd worden (of geïnterpreteerd, afhankelijk van de taal) en op die manier een interface beschikbaar stellen waarmee de uiteindelijke toepassing een tekenreeks naar een stroom tokens kan omzetten. Bovendien zal de generator in staat zijn (dankzij de programmeertaal-onafhankelijkheid) een idiomatische interface vrij te geven, per programmeertaal.
|
|
|
|
\paragraph{}
|
|
Enkele van de toepassingen die mogelijk gemaakt worden met het gebruik van \texttt{Lexesis} zijn de volgende:
|
|
\begin{itemize}
|
|
\item Compiler frontends
|
|
\item Linting
|
|
\item Syntax highlighting
|
|
\item (Deel van) syntax checking
|
|
\end{itemize}
|
|
Om verder ook het nut en de gebruiksvriendelijkheid van onze generator aan te tonen, zullen we verder ook trachten een \emph{syntax highlighter} voor een voorlopig onbesliste taal te schrijven.
|
|
|
|
\end{document}
|