Hi Sam,

> The best way to handle this is add a lexer rule ANSI_QUOTED_ID_OPEN (or 
> similar) which matches the quoted string when it’s missing the final 
> character.

Thanks for the idea. I added a new lexer rule like this:

ANSI_QUOTED_ID_OPEN:
        DOUBLE_QUOTE 
        (
                ESCAPE_SEQUENCE 
                | ~(DOUBLE_QUOTE | '\\')
        )*
;

and my identifier parser rule is now:

identifier:
        IDENTIFIER
        | BACK_TICK_QUOTED_ID
        | ANSI_QUOTED_ID
        | ANSI_QUOTED_ID_OPEN
;

but unfortunately this works only for very few cases.

select 1 from "         gives no tree at all (just an error node) + error 
(extraneous input at "from")
select 1 from "a                works almost as I want it (except I don't get 
an error)
select 1 from "a""              AST + error saying everything starting with 
"from" is extraneous input
select 1 from "a" "             is the only case which really does what I need 
(AST + open id + error)

In case this matters: I have backtracking active for the entire grammar (I'll 
work later to get rid of this but for now I need it).

Mike
-- 
www.soft-gems.net

_______________________________________________
antlr-dev mailing list
antlr-dev@antlr.org
http://www.antlr.org/mailman/listinfo/antlr-dev

Reply via email to