000200905 001__ 200905
000200905 005__ 20190316235958.0
000200905 0247_ $$2doi$$a10.1145/2637647.2637653
000200905 037__ $$aCONF
000200905 245__ $$aAccelerating parser combinators with macros
000200905 269__ $$a2014
000200905 260__ $$aNew York, New York, USA$$bACM Press$$c2014
000200905 336__ $$aConference Papers
000200905 520__ $$aParser combinators provide an elegant way of writing parsers: parser implementations closely follow the structure of the underlying grammar, while accommodating interleaved host language code for data processing. However, the host language features used for composition introduce substantial overhead, which leads to poor performance. In this paper, we present a technique to systematically eliminate this overhead. We use Scala macros to analyse the grammar specification at compile-time and remove composition, leaving behind an efficient top-down, recursive-descent parser. We compare our macro-based approach to a staging-based approach using the LMS framework, and provide an experience report in which we discuss the advantages and drawbacks of both methods. Our library outperforms Scala's standard parser combinators on a set of benchmarks by an order of magnitude, and is 2x faster than code generated by LMS.
000200905 6531_ $$aParser combinators
000200905 6531_ $$amacros
000200905 6531_ $$aScala
000200905 6531_ $$aoptimization
000200905 700__ $$aBéguet, Eric
000200905 700__ $$0246590$$aJonnalagedda, Manohar$$g170823
000200905 7112_ $$athe Fifth Annual Scala Workshop (SCALA '14)$$cUppsala, Sweden$$d28-29 07 2014
000200905 773__ $$q7-17$$tProceedings of the Fifth Anuual Scala Workshop on - SCALA '14
000200905 8564_ $$s281202$$uhttps://infoscience.epfl.ch/record/200905/files/p7-beguet.pdf$$yPublisher's version$$zPublisher's version
000200905 909C0 $$0252187$$pLAMP$$xU10409
000200905 909CO $$ooai:infoscience.tind.io:200905$$pconf$$pIC$$qGLOBAL_SET
000200905 917Z8 $$x170823
000200905 917Z8 $$x170823
000200905 917Z8 $$x170823
000200905 937__ $$aEPFL-CONF-200905
000200905 973__ $$aEPFL$$rREVIEWED$$sPUBLISHED
000200905 980__ $$aCONF