Initial commit

This commit is contained in:
Thomas Avé 2016-11-02 13:19:36 +01:00
commit 99a9707448
3 changed files with 285 additions and 0 deletions

256
.gitignore vendored Normal file
View File

@ -0,0 +1,256 @@
# Created by https://www.gitignore.io/api/latex,vim,c++,cmake
### LaTeX ###
## Core latex/pdflatex auxiliary files:
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
## Intermediate documents:
*.dvi
*-converted-to.*
# these rules might exclude image files for figures etc.
# *.ps
# *.eps
# *.pdf
## Generated if empty string is given at "Please type another file name for output:"
.pdf
## Bibliography auxiliary files (bibtex/biblatex/biber):
*.bbl
*.bcf
*.blg
*-blx.aux
*-blx.bib
*.brf
*.run.xml
## Build tool auxiliary files:
*.fdb_latexmk
*.synctex
*.synctex(busy)
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync
## Auxiliary and intermediate files from other packages:
# algorithms
*.alg
*.loa
# achemso
acs-*.bib
# amsthm
*.thm
# beamer
*.nav
*.snm
*.vrb
# cprotect
*.cpt
# fixme
*.lox
#(r)(e)ledmac/(r)(e)ledpar
*.end
*.?end
*.[1-9]
*.[1-9][0-9]
*.[1-9][0-9][0-9]
*.[1-9]R
*.[1-9][0-9]R
*.[1-9][0-9][0-9]R
*.eledsec[1-9]
*.eledsec[1-9]R
*.eledsec[1-9][0-9]
*.eledsec[1-9][0-9]R
*.eledsec[1-9][0-9][0-9]
*.eledsec[1-9][0-9][0-9]R
# glossaries
*.acn
*.acr
*.glg
*.glo
*.gls
*.glsdefs
# gnuplottex
*-gnuplottex-*
# gregoriotex
*.gaux
*.gtex
# hyperref
# knitr
*-concordance.tex
# TODO Comment the next line if you want to keep your tikz graphics files
*.tikz
*-tikzDictionary
# listings
*.lol
# makeidx
*.idx
*.ilg
*.ind
*.ist
# minitoc
*.maf
*.mlf
*.mlt
*.mtc
*.mtc[0-9]
*.mtc[1-9][0-9]
# minted
_minted*
*.pyg
# morewrites
*.mw
# mylatexformat
# nomencl
*.nlo
# sagetex
*.sagetex.sage
*.sagetex.py
*.sagetex.scmd
# scrwfile
*.wrt
# sympy
*.sout
*.sympy
sympy-plots-for-*.tex/
# pdfcomment
*.upa
*.upb
# pythontex
*.pytxcode
pythontex-files-*/
# thmtools
*.loe
# TikZ & PGF
*.dpth
*.md5
*.auxlock
# todonotes
*.tdo
# easy-todo
*.lod
# xindy
*.xdy
# xypic precompiled matrices
*.xyc
# endfloat
*.ttt
*.fff
# Latexian
TSWLatexianTemp*
## Editors:
# WinEdt
*.bak
*.sav
# Texpad
.texpadtmp
# Kile
*.backup
# KBibTeX
*~[0-9]*
# auto folder when using emacs and auctex
/auto/*
### Vim ###
# swap
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
# session
Session.vim
# temporary
.netrwhist
*~
# auto-generated tag files
tags
### C++ ###
# Prerequisites
*.d
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
*.smod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.app
### CMake ###
CMakeCache.txt
CMakeFiles
CMakeScripts
Makefile
cmake_install.cmake
install_manifest.txt
CTestTestfile.cmake

BIN
docs/abstract.pdf Normal file

Binary file not shown.

29
docs/abstract.tex Normal file
View File

@ -0,0 +1,29 @@
\documentclass{article}
\usepackage[utf8]{inputenc}
\title{Projectvoorstel Machines en Berekenbaarheid\\
\large Parser generator: \texttt{\emph{Parsodus}}}
\author{Thomas Avé, Robin Jadoul, Kobe Wullaert}
\date{}
\begin{document}
\clearpage\maketitle
\thispagestyle{empty}
\clearpage
\paragraph{}
In fase \texttt{I} werd door deze groep reeds de omzetting van een CFG naar CNF\footnote{Kobe Wullaert}, van een CFG naar een PDA en het CYK algoritme\footnote{Thomas Avé}, PDA naar CFG, een SLR(1) en een LL(1) parser geïmplementeerd\footnote{Robin Jadoul}.
\paragraph{}
Voor fase \texttt{II} stellen we onszelf tot doel een programmeertaal agnostische generator voor parsers te maken. In tegenstelling tot de bekende en frequent gebruikte \emph{yacc} of \emph{bison} is het ons doel hierbij in de feitelijke specificatie voor de analysator geen specifieke programmeertaal te laten voorkomen (bij yacc/bison 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 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 context-vrije grammatica (die aanvaard wordt door het gewenste type parser) die de specificatie van een taal beschrijft om te zetten naar een \texttt{LR of LL parse table}, waarop een generisch LR/LL parse algoritme kan werken (het exacte type parse table is mogelijk variabel en specifieerbaar door de gebruiker), dat extra annotaties of code kan hebben om het aanmaken van een \emph{abstract syntax tree} of het uitvoeren van acties tijdens het parsen kan bevorderen. Een mogelijke uitbreiding voor het oplossen van ambiguïteiten in de grammatica zou het ondersteunen van voorrangsregels (zoals wiskundig gezien: eerst vermenigvuldiging, dan optelling), en associativiteitsspecificaties zijn.
\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 inputstroom (van tokens, dankzij de geplande integratie met Lexesis) zal kunnen parsen en verder verwerken. Bovendien zal de generator in staat zijn (dankzij de programmeertaal-onafhankelijkheid) een idiomatische interface vrij te geven, per programmeertaal.
\paragraph{}
Om verder ook het nut en de gebruiksvriendelijkheid van onze generator aan te tonen, zullen we mogelijk ook trachten een eenvoudige programmeertaal (bv. \emph{brainfuck}) te parsen en te interpreteren of compileren en de regex-parser van Lexesis te vervangen door een nieuwe gegenereerde parser.
\end{document}