@@ -860,6 +860,12 @@ rule("SQLSelect").split(
860860 any ( )
861861) . branch ( ) . split (
862862 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 ( ")" ) ,
863869 call ( "SQLVar" ) . split (
864870 id ( { CI , value : "as" , class : "keyword" } ) . whitespace ( ) . id ( { class : "variable" } )
865871 . optWhitespace ( ) ,
@@ -869,24 +875,39 @@ rule("SQLSelect").split(
869875 any ( )
870876 )
871877) . 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+ ) ,
883891 any ( )
884892 ) ,
885893 any ( )
886894) . exit ( ) . end ( ) ;
887895
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 ( )
890911. branch ( )
891912. id ( { type : "sqlFieldName" , class : "variable" } ) . optWhitespace ( ) . char ( "=" ) . optWhitespace ( )
892913. call ( "SQLExpression" ) . optWhitespace ( ) . split (
@@ -919,6 +940,8 @@ rule("SQLExpression").split(
919940
920941 constant ( ) ,
921942
943+ id ( { CI , value : "null" , class : "constant" } ) ,
944+
922945 char ( "(" ) . optWhitespace ( ) . split (
923946 id ( { CI , value : "delete" , class : "keyword" } ) . whitespace ( ) . call ( "SQLDelete" ) . optWhitespace ( ) ,
924947 id ( { CI , value : "update" , class : "keyword" } ) . whitespace ( ) . call ( "SQLUpdate" ) . optWhitespace ( ) ,
@@ -939,9 +962,16 @@ rule("SQLExpression").split(
939962 ) . merge ( )
940963 ) ,
941964
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 (
943971 char ( { value : "_" , class : "variable" , type : "sqlFieldName" } )
944972 . id ( { class : "variable" , type : "sqlFieldName" } ) ,
973+ char ( { value : "." , class : "variable" , type : "sqlFieldName" } )
974+ . id ( { class : "variable" , type : "sqlFieldName" } ) . merge ( ) ,
945975 any ( )
946976 )
947977
@@ -958,7 +988,8 @@ rule("SQLExpression").split(
958988 ) ,
959989 id ( { CI , value : "and" , class : "keyword" } ) ,
960990 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" } )
962993 ) . optWhitespace ( ) . call ( "SQLExpression" ) ,
963994 any ( )
964995) . exit ( ) . end ( ) ;
0 commit comments