
Oops, should have hit the replay-to-all button, so sorry Pranesh for
double posting.
Hi,
have you considered using BNCF[1]? With BNFC you can define a grammar
for your language then let the BNFC converter generate a Haskell
parser (along with an ADT representing syntax trees).
On Mon, Oct 20, 2008 at 2:09 PM, Pranesh Srinivasan
I looked around for similar things on the internet, in vain. I have several doubts at this stage some of which include,
* how the parser will determine the scope of the variables, i.e, how can a symbol table be implemented (in the state of the parser ?)
I think it is probably better to exclude the variable look up, type checking etc from the parsing phase. Here's an example of a general scheme: 1. Parse input file into an abstract syntax tree representation. 2. Perform type checking on your syntax tree. 3. Transform the syntax tree using re-write rules and optimisations. 4. Pretty print the syntax tree in order to output code of your target language.
* how easy or difficult will basic code optimisation (like unused variables, and loops with no side effects) and type checking be?
I would say probably easier then in many other languages since Haskell has such a great support for recursive data types, pattern matching etc.
* how would one go about implementing basic error recovery in the parser (make it skip the current line, or block) ?
Not really sure what you mean by error recovery but when using BNFC all of the tedious work of implementing the parsers is automated. Regards, Joel [1] http://www.cs.chalmers.se/Cs/Research/Language-technology/BNFC/