-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Numbers are very restricted, inconsistent #29
Comments
@anko A patch I'm working on for sexpr-plus is actually going to trash the PEG.js dependency, by doing its own dedicated parsing. I'm writing it in pure LiveScript, and once I'm ready, it'll be sent. I found that writing the parser with locations and everything turned out to be only about 50% longer than the PEG.js version. Part of the reason I'm writing a new parser is because PEG.js was failing to recognize my new escape sequences correctly, and I had to use a lot of boilerplate and repetition just to get the sequences parsed initially. |
Have you considered #24 (reader macros)? Something like @lhorie's read-table-based parser might get 2 birds with 1 stone. |
Good point. It's already mostly written, though, and I used a very similar method for the parsing. Here's what I have so far, although it's not yet tested. I wouldn't have to modify it much to allow for readtable parsing. |
My two cents: when I added support for this to my toy compiler last week, I actually didn't need to change the parser all that much, because, as you can see from @anko's link, it's extremely lenient with tokens (e.g it'll happily tokenize insane things like I have a theory that overkill leniency is a good property to have in a parser when you have a language that is designed to have extensible syntax. What I did to add support for obscure number syntax was add validation in the estree building step. This way, I can keep the parser untouched and I can eventually write different backends to handle language variants (e.g. ES5 vs ES6 vs ES7), or even different languages. |
That's pretty close to what I was planning on doing for Eslisp when I get On Sun, Oct 25, 2015, 23:55 Leo Horie [email protected] wrote:
|
Numbers are crudely checked against the regex
/-?\d+(\.\d+)/
(accounting for two regexes with identical meaning. This is very restrictive compared to most languages. Example of the full ES6 offering:0b1010 === 10
0o17 ==== 13
0xf0 === 240
42. === 42
This probably should be improved (and is on my TODO list if I can get time).
The text was updated successfully, but these errors were encountered: