@@ -860,6 +860,12 @@ rule("SQLSelect").split(
860
860
any ( )
861
861
) . branch ( ) . split (
862
862
char ( { value : "*" , class : "special" } ) ,
863
+ split (
864
+ id ( { CI , value : "avg" , class : "keyword" } ) ,
865
+ id ( { CI , value : "count" , class : "keyword" } ) ,
866
+ id ( { CI , value : "max" , class : "keyword" } ) ,
867
+ id ( { CI , value : "min" , class : "keyword" } )
868
+ ) . char ( "(" ) . optWhitespace ( ) . call ( "SQLVar" ) . optWhitespace ( ) . char ( ")" ) ,
863
869
call ( "SQLVar" ) . split (
864
870
id ( { CI , value : "as" , class : "keyword" } ) . whitespace ( ) . id ( { class : "variable" } )
865
871
. optWhitespace ( ) ,
@@ -869,24 +875,39 @@ rule("SQLSelect").split(
869
875
any ( )
870
876
)
871
877
) . whitespace ( ) . call ( "SQLFrom" ) . optWhitespace ( ) . split (
872
- id ( { CI , value : "where" , class : "keyword" } ) . whitespace ( ) . call ( "SQLExpression" ) ,
873
- any ( )
874
- ) . optWhitespace ( ) . split (
875
- id ( { CI , value : "order" , class : "keyword" } ) . whitespace ( )
876
- . id ( { CI , value : "by" , class : "keyword" } ) . whitespace ( )
877
- . branch ( ) . id ( { class : "variable" , type : "sqlFieldName" } ) . optWhitespace ( ) . split (
878
- id ( { CI , value : "desc" , class : "keyword" } ) . optWhitespace ( ) ,
879
- id ( { CI , value : "asc" , class : "keyword" } ) . optWhitespace ( ) ,
880
- any ( )
881
- ) . split (
882
- char ( "," ) . optWhitespace ( ) . merge ( ) ,
878
+ id ( { CI , value : "order" , class : "keyword" } ) . call ( "SQLOrder" ) ,
879
+ id ( { CI , value : "where" , class : "keyword" } ) . whitespace ( ) . call ( "SQLExpression" )
880
+ . optWhitespace ( ) . split (
881
+ id ( { CI , value : "order" , class : "keyword" } ) . call ( "SQLOrder" ) ,
882
+ any ( )
883
+ ) ,
884
+ id ( { class : "variable" } ) . whitespace ( ) . split (
885
+ id ( { CI , value : "order" , class : "keyword" } ) . call ( "SQLOrder" ) ,
886
+ id ( { CI , value : "where" , class : "keyword" } ) . whitespace ( ) . call ( "SQLExpression" )
887
+ . optWhitespace ( ) . split (
888
+ id ( { CI , value : "order" , class : "keyword" } ) . call ( "SQLOrder" ) ,
889
+ any ( )
890
+ ) ,
883
891
any ( )
884
892
) ,
885
893
any ( )
886
894
) . exit ( ) . end ( ) ;
887
895
888
- rule ( "SQLUpdate" ) . call ( "SQLClassName" ) . whitespace ( )
889
- . id ( { CI , value : "set" , class : "keyword" } ) . whitespace ( )
896
+ rule ( "SQLOrder" ) . whitespace ( )
897
+ . id ( { CI , value : "by" , class : "keyword" } ) . whitespace ( )
898
+ . branch ( ) . id ( { class : "variable" , type : "sqlFieldName" } ) . optWhitespace ( ) . split (
899
+ id ( { CI , value : "desc" , class : "keyword" } ) . optWhitespace ( ) ,
900
+ id ( { CI , value : "asc" , class : "keyword" } ) . optWhitespace ( ) ,
901
+ any ( )
902
+ ) . split (
903
+ char ( "," ) . optWhitespace ( ) . merge ( ) ,
904
+ any ( )
905
+ ) . exit ( ) . end ( ) ;
906
+
907
+ rule ( "SQLUpdate" ) . call ( "SQLClassName" ) . whitespace ( ) . split (
908
+ id ( { CI , value : "set" , class : "keyword" } ) ,
909
+ id ( { class : "variable" } ) . whitespace ( ) . id ( { CI , value : "set" , class : "keyword" } )
910
+ ) . whitespace ( )
890
911
. branch ( )
891
912
. id ( { type : "sqlFieldName" , class : "variable" } ) . optWhitespace ( ) . char ( "=" ) . optWhitespace ( )
892
913
. call ( "SQLExpression" ) . optWhitespace ( ) . split (
@@ -919,6 +940,8 @@ rule("SQLExpression").split(
919
940
920
941
constant ( ) ,
921
942
943
+ id ( { CI , value : "null" , class : "constant" } ) ,
944
+
922
945
char ( "(" ) . optWhitespace ( ) . split (
923
946
id ( { CI , value : "delete" , class : "keyword" } ) . whitespace ( ) . call ( "SQLDelete" ) . optWhitespace ( ) ,
924
947
id ( { CI , value : "update" , class : "keyword" } ) . whitespace ( ) . call ( "SQLUpdate" ) . optWhitespace ( ) ,
@@ -939,9 +962,16 @@ rule("SQLExpression").split(
939
962
) . merge ( )
940
963
) ,
941
964
942
- id ( { class : "variable" , type : "sqlFieldName" } ) . split (
965
+ split (
966
+ id ( { CI , value : "char" , class : "keyword" , type : "sqlFunc" } ) ,
967
+ id ( { CI , value : "ascii" , class : "keyword" , type : "sqlFunc" } )
968
+ ) . char ( "(" ) . optWhitespace ( ) . call ( "SQLExpression" ) . optWhitespace ( ) . char ( ")" ) ,
969
+
970
+ id ( { class : "variable" , type : "sqlFieldName" } ) . branch ( ) . split (
943
971
char ( { value : "_" , class : "variable" , type : "sqlFieldName" } )
944
972
. id ( { class : "variable" , type : "sqlFieldName" } ) ,
973
+ char ( { value : "." , class : "variable" , type : "sqlFieldName" } )
974
+ . id ( { class : "variable" , type : "sqlFieldName" } ) . merge ( ) ,
945
975
any ( )
946
976
)
947
977
@@ -958,7 +988,8 @@ rule("SQLExpression").split(
958
988
) ,
959
989
id ( { CI , value : "and" , class : "keyword" } ) ,
960
990
id ( { CI , value : "like" , class : "keyword" } ) ,
961
- id ( { CI , value : "or" , class : "keyword" } )
991
+ id ( { CI , value : "or" , class : "keyword" } ) ,
992
+ id ( { CI , value : "is" , class : "keyword" } )
962
993
) . optWhitespace ( ) . call ( "SQLExpression" ) ,
963
994
any ( )
964
995
) . exit ( ) . end ( ) ;
0 commit comments