[Haskell-beginners] A Pascal-like Language Compiler

Joel Björnson joel.bjornson at gmail.com
Mon Oct 20 09:47:44 EDT 2008


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 <spranesh at gmail.com> wrote:
> 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/


More information about the Beginners mailing list