Hi,
   Seems like the C Target initializes unknown types to NULL. I made a rule
which returns enum value and the code generated by ANTLR C Target is nt
getting compiled in MSVC.

The code is as follows..

grammar Test1;

options
{
    language = C;
}

@includes
{
    enum ObjectType
    {
        OBJECT_A
        , OBJECT_B
        , OBJECT_C

        , OBJECT_TOTAL
    };
}

id_list returns [ObjectType result]:
    a=id  { $result = $a.result; }
    (',' b=id  { $result = OBJECT_C; } )*
    ;

id returns [ObjectType result]: ID+ '=' ID+ ';' NEWLINE { $result =
OBJECT_A; }
 | NEWLINE { $result = OBJECT_B; }
 ;

NEWLINE: '\r'? '\n' ;

ID: ('a' .. 'z' | 'A' .. 'Z')+ ;

WS: (' '|'\t'|'\r'|'\n')+ {skip();} ;


I actually tried writing a code returning C++ objects (not pointers) and i
found that ANTLR initializes it to NULL. Later found that it is doing the
same for enum values also. Is it possible to fix this, so that it works for
C++ objects also. Like when i return a std::string, it assigns NULL and the
compiler reports an error.

Thanks,
Gokul.

--

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.


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

Reply via email to