summaryrefslogtreecommitdiff
path: root/doc/papers
diff options
context:
space:
mode:
authorDongHun Kwak <dh0128.kwak@samsung.com>2022-02-09 08:13:59 +0900
committerDongHun Kwak <dh0128.kwak@samsung.com>2022-02-09 08:13:59 +0900
commitbdda4e1daa86fb053ce6b2a00ffa411bab3b8c11 (patch)
treebf2ec135d590285f7de17ac99524535cbbdd34e4 /doc/papers
parentc2aa0313eddfdaa041e58dbbfb8020f90a1ea5e2 (diff)
downloadre2c-bdda4e1daa86fb053ce6b2a00ffa411bab3b8c11.tar.gz
re2c-bdda4e1daa86fb053ce6b2a00ffa411bab3b8c11.tar.bz2
re2c-bdda4e1daa86fb053ce6b2a00ffa411bab3b8c11.zip
Imported Upstream version 2.0.2upstream/2.0.2
Diffstat (limited to 'doc/papers')
-rw-r--r--doc/papers/2020_simpa/2020_trofimovich_re2c_a_lexer_generator_based_on_lookahead_tdfa.tex (renamed from doc/papers/2020_simpa/re2c_a_lexer_generator_based_on_lookahead_tdfa.tex)86
-rw-r--r--doc/papers/2020_simpa/Makefile2
2 files changed, 70 insertions, 18 deletions
diff --git a/doc/papers/2020_simpa/re2c_a_lexer_generator_based_on_lookahead_tdfa.tex b/doc/papers/2020_simpa/2020_trofimovich_re2c_a_lexer_generator_based_on_lookahead_tdfa.tex
index 546c56a3..18329b20 100644
--- a/doc/papers/2020_simpa/re2c_a_lexer_generator_based_on_lookahead_tdfa.tex
+++ b/doc/papers/2020_simpa/2020_trofimovich_re2c_a_lexer_generator_based_on_lookahead_tdfa.tex
@@ -197,12 +197,41 @@ for example, RE2C supports both the Perl leftmost-greedy policy and the POSIX lo
Disambiguation happens at the time of determinization (in $\epsilon$-closure construction),
and the resulting TDFA does not perform any disambiguation at run-time: ambiguity-resolving decisions are embedded into its structure.
+\section{Impact}
+
+\noindent
+RE2C is a lexer generator of choice for projects that need \emph{fast} lexical analyzers.
+It has a flexible user interface that allows one to customize the generated code for a particular environment and input model.
+Submatch extraction is yet another feature that makes RE2C a good alternative to other lexer generators.
+Notable projects that use RE2C are the following:
+
+\begin{itemize}
+\item Ninja, a build system with a focus on speed. \cite{Ninja}
+ Ninja is used in a great number of open-source projects,
+ and it is a necessary building block in many operating systems and platforms.
+
+\item PHP, a popular general-purpose scripting language. \cite{PHP}
+
+\item BRL-CAD, a constructive solid geometry solid modeling computer-aided design system. \cite{BRLCAD}
+
+\item STEPCode, an implementation of ISO 10303 standard. \cite{STEPCode}
+
+\item Apache SpamAssassin, a program for e-mail spam filtering. \cite{SpamAssassin}
+
+\item Yasm, the Modular Assembler Project. \cite{Yasm}
+
+\item Wake, the SiFive build tool. \cite{Wake}
+\end{itemize}
+
+\noindent
+RE2C has a permissive license, which allows it to be used in proprietary software as well.
+The project has been ported to many operating systems;
+according to Repology \cite{Repology}, it is packaged in more than 60 distributions.
+Besides being a useful practical tool, RE2C is a research playground for the development of new algorithms in the field of automata and formal languages.
+
\section{Conclusion and future work}
\noindent
-RE2C is a tool used in open-source projects such as Ninja \cite{Ninja}, PHP \cite{PHP} and others;
-it is often chosen for its fast lexers and flexible user interface.
-%
Submatch extraction algorithm implemented in RE2C
is both an important theoretical development and a useful practical improvement.
It allows one to program lexical analyzers capable of submatch extraction
@@ -220,7 +249,7 @@ and investigate the possibility of using tagged counter automata for counted rep
\label{}
\noindent
I want to thank my parents Vladimir and Elina,
-my fellow researcher and friend Angelo Borsotti,
+my friend and fellow researcher Angelo Borsotti,
my school math teachers Tatyana Leonidovna and Demian Vladimirovich,
and, most of all, Sergei.
@@ -261,15 +290,38 @@ and, most of all, Sergei.
URL: \url{https://re2c.org/2019_borsotti_trofimovich_efficient_posix_submatch_extraction_on_nfa.pdf}.
\bibitem{Ninja}
- Ninja build system.
- Website: \url{https://ninja-build.org},
+ Ninja build system,
+ URL: \url{https://ninja-build.org},
build files that use RE2C: \url{https://ninja-build.org/build.ninja.html}.
\bibitem{PHP}
- PHP programming language.
- \textit{Building PHP},
PHP Internals Book,
- URL: \url{http://www.phpinternalsbook.com/php5/build_system/building_php.html}.
+ chapter \textit{Building PHP},
+ URL: \url{http://www.phpinternalsbook.com/php7/build_system/building_php.html}.
+
+\bibitem{BRLCAD}
+ BRL-CAD: Tools,
+ URL: \url{http://sourceforge.net/p/brlcad/code/HEAD/tree/brlcad/trunk/misc/tools/re2c}.
+
+\bibitem{STEPCode}
+ STEPCode: Build Process,
+ URL: \url{https://stepcode.github.io/docs/build_process}.
+
+\bibitem{SpamAssassin}
+ SpamAssassin (sa-compile),
+ URL: \url{https://spamassassin.apache.org/full/3.2.x/doc/sa-compile.html}.
+
+\bibitem{Yasm}
+ Yasm,
+ URL: \url{https://yasm.tortall.net}.
+
+\bibitem{Wake}
+ Wake,
+ URL: \url{https://github.com/sifive/wake}.
+
+\bibitem{Repology}
+ Repology: RE2C information
+ URL: \url{https://repology.org/project/re2c/information}.
\bibitem{Gra15}
Niels Bj{\o}rn Bugge Grathwohl,
@@ -299,7 +351,8 @@ and, most of all, Sergei.
\label{}
\begin{table}[!h]
-\begin{tabular}{|l|p{6.5cm}|p{6.5cm}|}
+\begin{tabular}{|l|p{5.7cm}|p{7.3cm}|}
+%\begin{tabular}{|l|p{6.5cm}|p{6.5cm}|}
\hline
\textbf{Nr.} & \textbf{Code metadata description} & \textbf{Please fill in this column} \\
\hline
@@ -308,23 +361,22 @@ C1 & Current code version & 2.0 \\
C2 & Permanent link to code/repository used for this code version &
\textit{https://github.com/skvadrik/re2c} \\
\hline
-C3 & Permanent link to Reproducible Capsule & \\
+C3 & Permanent link to Reproducible Capsule &
+ \textit{https://codeocean.com/capsule/7270e8e2-5b1b-4ee4-941e-6269cf09d542/} \\
\hline
C4 & Legal Code License & Public domain \\
\hline
C5 & Code versioning system used & Git \\
\hline
-C6 & Software code languages, tools, and services used &
- Source code is written in C++.
- Supports code generation into C and Go. \\
+C6 & Software code languages, tools, and services used & C++, Bison, RE2C (self-hosting) \\
\hline
C7 & Compilation requirements, operating environments \& dependencies &
- Supported operating systems: Linux, BSD, Nix/Guix, GNU Hurd, OS X, Windows; ports exist for IBM z/OS and old versions of Minix.
- Dependencies: C++ compiler supporting C++98, Bash, optionally CMake or Autotools (including Libtool), optional Bison, optional rst2man (for documentation). \\
+ OS: Linux, BSD, Nix/Guix, GNU Hurd, OS X, Windows.
+ Dependencies: C++ compiler, Bash, CMake or Autotools, optional Bison and Docutils. \\
\hline
C8 & If available Link to developer documentation/manual & \textit{https://re2c.org} \\
\hline
-C9 & Support email for questions & \textit{skvadrik@gmail.com} \\
+C9 & Support email for questions & \textit{re2c-general@lists.sourceforge.net} \\
\hline
\end{tabular}
\caption{Code metadata (mandatory)}
diff --git a/doc/papers/2020_simpa/Makefile b/doc/papers/2020_simpa/Makefile
index ad5b5972..ef070291 100644
--- a/doc/papers/2020_simpa/Makefile
+++ b/doc/papers/2020_simpa/Makefile
@@ -1,4 +1,4 @@
-re2c_a_lexer_generator_based_on_lookahead_tdfa.pdf : re2c_a_lexer_generator_based_on_lookahead_tdfa.tex example.pdf
+2020_trofimovich_re2c_a_lexer_generator_based_on_lookahead_tdfa.pdf : 2020_trofimovich_re2c_a_lexer_generator_based_on_lookahead_tdfa.tex example.pdf
pdflatex -shell-escape $< </dev/null > $<.log
example.pdf : example.tex