通过‘语法配置’来‘解析JAVA代码’

0 阅读1分钟

开源软件 ZGLanguage 通过语法配置,便可以对JAVA代码进行解析,如下所示。 

此语法配置实例囊括了常见的Java语法结构,用户可以在此基础上根据具体情况进行修改使用。

__DEF_CASE_SENSITIVE__    Y
__DEF_FUZZY__             N
__DEF_DEBUG__             Y
 
__DEF_LINE_COMMENT__     //
__DEF_LINES_COMMENT__    /*      */
 
 
__DEF_STR__   __NAME__  
<1,200>
[1,1]ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_$??
[0,199]ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_??
[NO] import if else for while break continue class return try except finally final static public private
 
 
__DEF_STR__   __ONE_CHAR__
<1,1>
[1,1]ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`~!@#$%^&*()_-+=[]{}:";',.<>?/\
__DEF_STR__   __NUMBER__  
<1,200>
[1,100]0123456789
[1,1].
[1,100]0123456789
__DEF_STR__   __INT__
<1,200>
[1,200]0123456789
__DEF_STR__   __0XO_INT__
<1,200>
[1,1]0
[1,1]ox
[1,200]0123456789ABCDEFabcdef
__DEF_EXPR__    __EXPR__
__ELE__    class
__ELE__    __VAR__
__ELE__    __NAME__
__ELE__    __INT__
__ELE__    __NUMBER__
__ELE__    __STRING__
__ELE__    __FUNCTION__
__ELE__    __ARR_VAL__
__ELE__    __CHAR__
__OPR__    =         0
__OPR__    +=        0
__OPR__    -=        0
__OPR__    ==        30
__OPR__    <>        30
__OPR__    !=        30
__OPR__    >         30
__OPR__    >=        30
__OPR__    <         30
__OPR__    <=        30
__OPR__    !=        30
__OPR__    +         40
__OPR__    -         40
__OPR__    *         50
__OPR__    /         50
__OPR__    %         50
__OPR__    .         80
__BEF__    -
__BEF__   (int)
__//__            __SPL__    \
__DEF_SUB_PATH__    __CHAR__
1          : x1       @               | '
           : x2       @               + '\
           : x3       @               \ __ONE_CHAR__
           : x4       @               + __\b__
           : x5       @               + __\t__
           : x6       @               \ ' 
__DEF_SUB_PATH__    __STRING__
1          : x1       @               | "
           : x2       @               | __ANY__
           : x3       @               + \"
           : x4       @               | "
 
 
__DEF_PATH__    __IMPORT_PACKAGE__
1        : x1         @              | import
         : xa         @              + package
         : xb         @ CAN_SKIP     | static
N        : x2         @              | __NAME__
         : x3         @              | .
1        : x4         @              | __NAME__
         : x5         @              + *
1        : x6         @              | ;
 
 
__DEF_SUB_PATH__    __GENERICS__
1        : x1         @              | <
N        : x2         @              | __NAME__
e        : x3         @              | ,
1        : x4         @              | >
 
 
__DEF_SUB_PATH__    __PARMS__
11          : x1         @              | (
0N          : x2         @              | __EXPR__
            : x3         @              + __LAMBDA__
0e          : x4         @              | ,
11          : x5         @              | )
 
 
__DEF_SUB_PATH__    __ARR_VAL__
11          : x1         @              | {
0N          : xA         @ CAN_SKIP     | (short)      __//__ tmp
            : x2         @              | __STRING__
            : x3         @              + __NUMBER__
            : x4         @              + __INT__
            : x5         @              + __CHAR__
0e          : x6         @              | ,
11          : x7         @              | }
 
 
__DEF_SUB_PATH__    __DEF_VAR__
0011        : x1         @              | public
            : x2         @              + private
0101        : x3         @              | final
1 1         : x4         @              | __NAME__
            : x5         @ CAN_SKIP     | __GENERICS__
            : x6         @              + []
            : x7         @              | __NAME__
 
 
__DEF_SUB_PATH__    __COM_EXPR__
011         : x1         @              | __DEF_VAR__
00          : x2         @              | =
101         : x3         @              | __EXPR__
+0+         : x4         @              | new
 0          : x5         @              | __FUNCTION__
+0+         : x6         @              | __LAMBDA__
111         : x7         @              | ;
 
 
__DEF_SUB_PATH__    __ONE_ROW__
1         : x1      @               | __COM_EXPR__
+         : x2      @               | break
          : x3      @               + continue
          : x4      @               + return
          : x5      @               + raise
          : x6      @               | ;
+         : x7      @               | __IF__
          : x8      @               + __WHILE__
          : x9      @               + __FOR__
          : xa      @               + __TRY__
 
 
__DEF_SUB_PATH__    __ROWS__
1         : x1      @               | {
N         : x2      @ CAN_SKIP      | __ONE_ROW__
1         : x3      @               | }
 
 
__DEF_SUB_PATH__    __IF__
1         : x1          @        | if
          : x2          @        | (
          : x3          @        | __EXPR__
          : x4          @        | )
          : x5          @        | __ONE_ROW__
          : x6          @        + __ROWS__
 
 
__DEF_SUB_PATH__    __WHILE__
1         : x1          @        | while
          : x2          @        | (
          : x3          @        | __COM_EXPR__
          : x4          @        | )
          : x5          @        | __ONE_ROW__
          : x6          @        + __ROWS__
 
 
__DEF_SUB_PATH__    __FOR__
1         : x1          @           | for
          : x2          @           | (
          : x3          @ CAN_SKIP  | __COM_EXPR__
          : x4          @           | ;
          : x5          @ CAN_SKIP  | __EXPR__
          : x6          @           | ;
          : x7          @ CAN_SKIP  | __EXPR__
          : x8          @           | )
          : x9          @           | __ONE_ROW__
          : xa          @           + __ROWS__
 
 
__DEF_SUB_PATH__    __COMMENT__
11          : x1         @              | @
            : x2         @              / __NAME__
0           : x3         @              / (
0           : x4         @              | __EXPR__
0           : x5         @              | )
 
 
__DEF_SUB_PATH__    __LAMBDA__
11          : x1         @              | (
0N          : x2         @              | __NAME__
0           : x3         @ CAN_SKIP     | __NAME__
0e          : x4         @              | ,
11          : x5         @              | )
            : x6         @              | ->
            : x7         @              | __EXPR__     __//__ __COM_EXPR__
            : x8         @              + __ROWS__
 
 
__DEF_SUB_PATH__    __FUNCTION__
1          : x1         @              | __NAME__
           : x2         @              | __PARMS__
 
 
__DEF_SUB_PATH__    __FUNCTION_DEF__
0011          : x1         @              | __COMMENT__
010           : x2         @              | public
              : x3         @              + private
1 1           : x4         @              | __NAME__
              : x5         @              | __NAME__
              : x6         @              | (
NNNN          : x7         @ CAN_SKIP     | __NAME__
              : x8         @ CAN_SKIP     | __NAME__
eeee          : x9         @ CAN_SKIP     | ,
1111          : xa         @              | )
              : xb         @              | __ROWS__
 
 
__DEF_PATH__    __CLASS__
0011          : x1         @              | __COMMENT__
010           : x2         @              | public
              : x3         @              + private
111           : x4         @              | class
              : x5         @              | __NAME__
              : x6         @ CAN_SKIP     | extends
              : x7         @ CAN_SKIP     | __NAME__
              : x8         @              | {
NNNN          : x9         @              | __COM_EXPR__
              : xa         @              + __CLASS__
              : xb         @              + __FUNCTION_DEF__
1111          : xz         @              | }