Hi all.

I'm trying to build a simple xhtml recognizer (for whitespace
compression) in the purpose of learning antlr. Here's a sample of what
I like to match :

<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
    <head>
        <title>
            XHTML
            Example
        </title>
    </head>
    <body>
        <p>
            Please Choose a Day:
            <br /><br />
            <select name="day">
                <option selected="selected">Monday</option>
                <option>Tuesday</option>
                <option>Wednesday</option>
            </select>
        </p>
    </body>
</html>


This is the grammar :

grammar Html;

options {
    output=AST;
    ASTLabelType=CommonTree;
}

prog    :       tag_element *
        ;

element :       tag_element
        |       text_element
        ;

tag_element
        :       open_tag element* close_tag
        |       empty_tag
        ;

open_tag:       OPEN_TAG name attribute* CLOSE_TAG
        ;
        
close_tag
        :       OPEN_TAG '/' name CLOSE_TAG
        ;

empty_tag
        :       OPEN_TAG name '/' CLOSE_TAG
        ;

attribute
        :       namespace? ID '=' '"' (options{greedy=false;}: .)* '"'
        ;

namespace
        :       ID ':'
        ;


name    :       ID
        ;
text_element    
        :       (~(OPEN_TAG) | WS)+
        ;


ID              : ('a'..'z'|'A'..'Z')+ ;
INT             : '0'..'9'+ ;
NEWLINE         : '\r'? '\n' ;
WS              : (' '|'\t'|'\n'|'\r')+ {skip();} ;
OPEN_TAG        : '<';
CLOSE_TAG       : '>';


My problem is with the text_element rule. I'd like to match everything
until the recognizer find a OPEN_TAG, including whitespaces. While the
actuale rule work, this give me this error :

[10:32:12] warning(200): Html.g:43:21: Decision can match input such
as "WS" using multiple alternatives: 1, 2, 3
As a result, alternative(s) 3,2 were disabled for that input
[10:32:12] warning(200): Html.g:43:21: Decision can match input such
as "{CLOSE_TAG..ID, INT..':'}" using multiple alternatives: 1, 3
As a result, alternative(s) 3 were disabled for that input
[10:32:12] error(201): Html.g:43:21: The following alternatives can
never be matched: 2

How could I handle this case properly ?

Regard,
Kabnot

List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe: 
http://www.antlr.org/mailman/options/antlr-interest/your-email-address

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"il-antlr-interest" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to