[mercury-users] Mercury grammar definition

Richard O'Keefe ok at cs.otago.ac.nz
Mon Jul 2 10:41:32 AEST 2012

On 1/07/2012, at 10:39 AM, Bakos Gábor wrote:
> - The comments are not defined anywhere, (I guess it was handled by
> referring to ISO Prolog), could you confirm, that those are the % single
> line, and non-nesting /*, */ comments (and there is no more)?


> - Do the comments act as a whitespace? (I guess yes, but as comments
> not mentioned anywhere, this might be just an implementation choice.)


> - How could be the built-in , be distinguished from the argument's
> comma? (I tried to define the arguments as simple terms, but the
> precedence rules make it not working for the basic hello world program.
> See: https://gist.github.com/3025801 you can open it with AntlrWorks for
> syntax highlight, and navigation. When I tried to defined as simple left
> associative terms separated by comma, there were ambiguity errors
> because of the other alternative.)

I find it hard to imagine a parser that would confuse them.
Commas can occur in three contexts:

	f( .... , ... )

    where f is an atom immediately adjacent to a left parenthesis;

	[ ... , ... ]

    where the comma separates list elements;

	... , ...

    anywhere else.

> - I think the . has also double meaning, but maybe I do misunderstand
> something:

Yes.  A token that is a dot followed by white space is an end of term
token; other dots are not.  Tokens may be made of sequences of symbols
like ++, +*@, and even .. and ./* are possible tokens.  However, such
a sequence may not include %, so we'd expect "x.% foo!" to be a well
terminated clause as it is in Prolog.

Like Prolog, Mercury allows user-defined operators, so it is not clear
to me how you can build an LL(1) parser unless it can process those

mercury-users mailing list
Post messages to:       mercury-users at csse.unimelb.edu.au
Administrative Queries: owner-mercury-users at csse.unimelb.edu.au
Subscriptions:          mercury-users-request at csse.unimelb.edu.au

More information about the users mailing list