Live data from Hacker News

Show HN: ShivyC – Hobby C compiler created in Python

github.com

1–10 of 13 posts

Re: Show HN: ShivyC – Hobby C compiler created in Python

#3
The parser has a somewhat unusual structure:

https://github.com/ShivamSarodia/ShivyC/blob/master/shivyc/p...

It's been a while since I've had to use the phrase "exception-oriented programming", but it fits that code well. While that might be a useful or even necessary pattern to parse something like C++ which can have almost unbounded ambiguities, AFAIK C can be parsed solely by branching on the next token in the stream except for one tiny case (typedefs).

Re: Show HN: ShivyC – Hobby C compiler created in Python

#4

The parser has a somewhat unusual structure: https://github.com/ShivamSarodia/ShivyC/blob/master/shivyc/p... It's been a while since I've had to use the phrase "exception-oriented programming", but it fits that code well. While that might be a useful or even necessary pattern to parse something like C++ which can have almost unbounded ambiguities, AFAIK C can be parsed solely by branching on the next token in the str…

So, is it issue? If so, please, report it for developer on Github[0]

Or you know how to fix it? Then just pull[1] it to 'master' ;-)

[0] https://github.com/ShivamSarodia/ShivyC/issues

[1] https://github.com/ShivamSarodia/ShivyC/pulls

Re: Show HN: ShivyC – Hobby C compiler created in Python

#5

The parser has a somewhat unusual structure: https://github.com/ShivamSarodia/ShivyC/blob/master/shivyc/p... It's been a while since I've had to use the phrase "exception-oriented programming", but it fits that code well. While that might be a useful or even necessary pattern to parse something like C++ which can have almost unbounded ambiguities, AFAIK C can be parsed solely by branching on the next token in the str…

That's not an uncommon practice in Python based on its (relatively) fast handling of exceptions. Maybe you could call it "break things and move fast."

Re: Show HN: ShivyC – Hobby C compiler created in Python

#7

The parser has a somewhat unusual structure: https://github.com/ShivamSarodia/ShivyC/blob/master/shivyc/p... It's been a while since I've had to use the phrase "exception-oriented programming", but it fits that code well. While that might be a useful or even necessary pattern to parse something like C++ which can have almost unbounded ambiguities, AFAIK C can be parsed solely by branching on the next token in the str…

It looks like that's what it is doing: https://github.com/ShivamSarodia/ShivyC/blob/156a71bce7f340d...

The exceptions seem to be how it signals failure if the token doesn't match, but they aren't being used for unbounded lookahead.

Re: Show HN: ShivyC – Hobby C compiler created in Python

#8

The parser has a somewhat unusual structure: https://github.com/ShivamSarodia/ShivyC/blob/master/shivyc/p... It's been a while since I've had to use the phrase "exception-oriented programming", but it fits that code well. While that might be a useful or even necessary pattern to parse something like C++ which can have almost unbounded ambiguities, AFAIK C can be parsed solely by branching on the next token in the str…

That's not an uncommon practice in Python based on its (relatively) fast handling of exceptions. Maybe you could call it "break things and move fast."

Using exceptions is totally common, but this seems to raise/catch/log 6 errors each time it tries to parse a `for` statement. I'm a noob when it comes to compilers, but maybe a token -> function dictionary would be a better approach?

Re: Show HN: ShivyC – Hobby C compiler created in Python

#9

The parser has a somewhat unusual structure: https://github.com/ShivamSarodia/ShivyC/blob/master/shivyc/p... It's been a while since I've had to use the phrase "exception-oriented programming", but it fits that code well. While that might be a useful or even necessary pattern to parse something like C++ which can have almost unbounded ambiguities, AFAIK C can be parsed solely by branching on the next token in the str…

EAFP - Easier to ask for forgiveness than permission - is a popular idiom in Pythonic code. Unlike languages like C++ or Java, where you usually check for condition first and then proceed (which can introduce race conditions in multithreaded code if done improperly).

Re: Show HN: ShivyC – Hobby C compiler created in Python

#10
post #8

Earlier quoted context omitted.

That's not an uncommon practice in Python based on its (relatively) fast handling of exceptions. Maybe you could call it "break things and move fast."

Using exceptions is totally common, but this seems to raise/catch/log 6 errors each time it tries to parse a `for` statement. I'm a noob when it comes to compilers, but maybe a token -> function dictionary would be a better approach?

That does sound a bit extreme. (I freely admit I went by this description and never looked at the parser code myself, though some other portions I did read were pretty normal Python.)
Post reply on HN