Path: csiph.com!xmission!news.snarked.org!border2.nntp.dca1.giganews.com!nntp.giganews.com!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: luser droog Newsgroups: comp.compilers Subject: Re: Supporting multiple input syntaxes Date: Sat, 15 Aug 2020 15:20:06 -0700 (PDT) Organization: Compilers Central Lines: 23 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <20-08-010@comp.compilers> References: <20-08-002@comp.compilers> <20-08-009@comp.compilers> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="85278"; mail-complaints-to="abuse@iecc.com" Keywords: parse, errors Posted-Date: 15 Aug 2020 19:00:31 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com In-Reply-To: <20-08-009@comp.compilers> Xref: csiph.com comp.compilers:2562 On Saturday, August 15, 2020 at 9:46:47 AM UTC-5, David Lovemore wrote: > It may be useful to consider what you would like to happen if you encounter a > syntax that is ambiguous or works differently or is for another expected > syntax from what you are parsing: produce a warning, error or handle quietly, > or fall over, or don’t care. Very good points. The parser is backtracking, returning a list of results. That could conceivably be useful for dealing with ambiguity by looking at more than just the first result. Warnings and error messages are going to be trickier I fear. The parser is built around the idea of Monadic combinators. So my research suggests that I'll need Monad Transformers to add the state needed for good messages. There are a bunch of lectures I've found about using these in Haskell, but not much about how to build them from scratch. As it is, any error in parsing will just produce no results. I started a prototype where the input list of characters was instead a list of (character, line-number, line-position). But it got really confusing at the time so I stopped. And the few times I've tried to look at it, I can't figure out what I was thinking.