如何提高解析性能?

时间:2020-07-21 09:44:39

标签: parsing antlr

我已经在此链接中使用了presto语法,并尝试将其应用于我的需要: https://github.com/prestodb/presto/blob/master/presto-parser/src/main/antlr4/com/facebook/presto/sql/parser/SqlBase.g4

为了也支持雪花复制,我添加了以下内容: 在语句部分:


    COPY INTO target = qualifiedName
      ('(' qualifiedName (',' qualifiedName)*  ')' )?
      FROM (query | source = snowflakeLocations)
      ~(';')*?                                                                                #snowflakeCopyInto

和:


snowflakeLocations
    : internal_stage | external_stage | external_location
    ;

internal_stage
    : ((identifier '.')?  '@%'? identifier ('/'  identifier '/'?)? |
      '@' TILDE ('/' identifier)? )
    ;

external_stage
    : identifier ('/' identifier '/'?)?
    ;

external_location
    : string ~(';')*?
    ;

现在一切正常,我能够正确解析所有内容,但它们的运行速度要慢两倍以上。

有什么想法可以提高性能吗?

谢谢, 尼尔。

0 个答案:

没有答案