137 Finally, there are millions of other pointers about regular expression |
137 Finally, there are millions of other pointers about regular expression |
138 matching on the Web. I found the chapter on Lexing in this |
138 matching on the Web. I found the chapter on Lexing in this |
139 <A HREF="http://www.diku.dk/~torbenm/Basics/">online book</A> very helpful. |
139 <A HREF="http://www.diku.dk/~torbenm/Basics/">online book</A> very helpful. |
140 Test cases for “<A HREF="http://en.wikipedia.org/wiki/ReDoS#Examples">evil</A>” |
140 Test cases for “<A HREF="http://en.wikipedia.org/wiki/ReDoS#Examples">evil</A>” |
141 regular expressions can be obtained from <A HREF="http://www.haskell.org/haskellwiki/Regex_Posix">here</A>. |
141 regular expressions can be obtained from <A HREF="http://www.haskell.org/haskellwiki/Regex_Posix">here</A>. |
142 |
|
143 </p> |
142 </p> |
144 |
143 |
145 <p> |
144 <p> |
146 <B>Skills:</B> |
145 <B>Skills:</B> |
147 This is a project for a student with an interest in theory and some |
146 This is a project for a student with an interest in theory and some |
148 good programming skills. The project can be easily implemented |
147 good programming skills. The project can be easily implemented |
149 in functional languages like |
148 in functional languages like |
150 <A HREF="http://www.scala-lang.org/">Scala</A>, |
149 <A HREF="http://www.scala-lang.org/">Scala</A>, |
151 F#, |
150 <A HREF="http://fsharp.org">F#</A>, |
152 <A HREF="http://en.wikipedia.org/wiki/Standard_ML">ML</A>, |
151 <A HREF="http://en.wikipedia.org/wiki/Standard_ML">ML</A>, |
153 <A HREF="http://haskell.org/haskellwiki/Haskell">Haskell</A>, etc. Python and other non-functional languages |
152 <A HREF="http://haskell.org/haskellwiki/Haskell">Haskell</A>, etc. Python and other non-functional languages |
154 can be also used, but seem much less convenient. If you attend my Formal Languages and |
153 can be also used, but seem much less convenient. If you attend my Formal Languages and |
155 Automata module, that would obviously give you a head-start with this project. |
154 Automata module, that would obviously give you a head-start with this project. |
156 </p> |
155 </p> |
194 for translating programs from other languages. In particular there are two |
193 for translating programs from other languages. In particular there are two |
195 very optimised subsets of JavaScript that can be used for this purpose: |
194 very optimised subsets of JavaScript that can be used for this purpose: |
196 one is <A HREF="http://asmjs.org">asm.js</A> and the other is |
195 one is <A HREF="http://asmjs.org">asm.js</A> and the other is |
197 <A HREF="https://github.com/kripken/emscripten/wiki">emscripten</A>. |
196 <A HREF="https://github.com/kripken/emscripten/wiki">emscripten</A>. |
198 There is a <A HREF="http://kripken.github.io/emscripten-site/docs/getting_started/Tutorial.html">tutorial</A> for emscripten |
197 There is a <A HREF="http://kripken.github.io/emscripten-site/docs/getting_started/Tutorial.html">tutorial</A> for emscripten |
199 and an impressive <A HREF="http://www.unrealengine.com/html5/">demo</A> which runs the |
198 and an impressive <A HREF="https://youtu.be/c2uNDlP4RiE">demo</A> which runs the |
200 <A HREF="http://en.wikipedia.org/wiki/Unreal_Engine">Unreal Engine 3</A> |
199 <A HREF="http://en.wikipedia.org/wiki/Unreal_Engine">Unreal Engine 3</A> |
201 in a browser with spectacular speed. This was achieved by compiling the |
200 in a browser with spectacular speed. This was achieved by compiling the |
202 C-code of the Unreal Engine to the LLVM intermediate language and then translating the LLVM |
201 C-code of the Unreal Engine to the LLVM intermediate language and then translating the LLVM |
203 code to JavaScript. |
202 code to JavaScript. |
204 </p> |
203 </p> |