Taming Context-Sensitive Languages with Principled Stateful Parsing
Historically, true context-sensitive parsing has seldom been applied to programming languages, due to its inherent complexity. However, many mainstream programming and markup languages (C, Haskell, Python, XML, and more) possess context-sensitive features. These features are traditionally handled with ad-hoc code (e.g., custom lexers), outside of the scope of parsing theory.
Current grammar formalisms struggle to express context-sensitive features. Most solutions lack context transparency: they make grammars hard to write, maintain and compose by hardwiring context through the entire grammar. Instead, we approach context-sensitive parsing through the idea that parsers may recall previously matched input (or data derived therefrom) in order to make parsing decisions. We make use of mutable parse state to enable this form of recall.
We introduce principled stateful parsing as a new transactional discipline that makes state changes transparent to parsing mechanisms such as backtracking and memoization. To enforce this discipline, users specify parsers using formally specified primitive state manipulation operations.
Our solution is available as a parsing library named Autumn. We illustrate our solution by implementing some practical context-sensitive grammar features such as significant whitespace handling and namespace classification.
Mon 31 OctDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
10:30 - 12:10 | |||
10:30 10mDay opening | Opening SLE | ||
10:40 25mTalk | Parsing and Reflective Printing, Bidirectionally SLE Zirun Zhu National University SOKENDAI, Japan, Yongzhe Zhang National University SOKENDAI, Japan, Hsiang-Shang ‘Josh’ Ko National Institute of Informatics, Pedro Martins University of California at Irvine, USA, João Saraiva University of Minho, Portugal, Zhenjiang Hu National University SOKENDAI, Japan DOI | ||
11:05 25mTalk | Taming Context-Sensitive Languages with Principled Stateful Parsing SLE Nicolas Laurent Université Catholique de Louvain, Belgium, Kim Mens Université Catholique de Louvain, Belgium DOI Pre-print | ||
11:30 15mTalk | MetaEdit+ for Collaborative Language Engineering and Language Use (Tool Demo) SLE Juha-Pekka Tolvanen MetaCase, Finland DOI Pre-print Media Attached | ||
11:45 25mTalk | Efficient Development of Consistent Projectional Editors using Grammar Cells SLE Markus Völter itemis, Germany, Tamás Szabó itemis AG / TU Delft, Sascha Lisson itemis AG, Bernd Kolb itemis AG, Sebastian Erdweg Delft University of Technology, Netherlands, Thorsten Berger Chalmers University of Technology, Sweden DOI Pre-print Media Attached |