{-# LANGUAGE OverloadedStrings #-} module Skylighting.Syntax.SqlPostgresql (syntax) where import Skylighting.Types import Data.Map import Skylighting.Regex import qualified Data.Set syntax :: Syntax syntax = Syntax { sName = "SQL (PostgreSQL)" , sFilename = "sql-postgresql.xml" , sShortname = "SqlPostgresql" , sContexts = fromList [ ( "CreateFunction" , Context { cName = "CreateFunction" , cSyntax = "SQL (PostgreSQL)" , cRules = [ Rule { rMatcher = RegExpr RE { reString = "\\$([^\\$\\n\\r]*)\\$" , reCompiled = Nothing , reCaseSensitive = False } , rAttribute = FunctionTok , rIncludeAttribute = False , rDynamic = True , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "SQL (PostgreSQL)" , "FunctionBody" ) ] } , Rule { rMatcher = IncludeRules ( "SQL (PostgreSQL)" , "Normal" ) , rAttribute = NormalTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } ] , cAttribute = NormalTok , cLineEmptyContext = [] , cLineEndContext = [] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "FunctionBody" , Context { cName = "FunctionBody" , cSyntax = "SQL (PostgreSQL)" , cRules = [ Rule { rMatcher = RegExpr RE { reString = "\\$%1\\$" , reCompiled = Nothing , reCaseSensitive = False } , rAttribute = FunctionTok , rIncludeAttribute = False , rDynamic = True , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop , Pop ] } , Rule { rMatcher = IncludeRules ( "SQL (PostgreSQL)" , "Normal" ) , rAttribute = NormalTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } ] , cAttribute = NormalTok , cLineEmptyContext = [] , cLineEndContext = [] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = True } ) , ( "Identifier" , Context { cName = "Identifier" , cSyntax = "SQL (PostgreSQL)" , cRules = [ Rule { rMatcher = DetectChar '"' , rAttribute = OtherTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } ] , cAttribute = OtherTok , cLineEmptyContext = [] , cLineEndContext = [ Pop ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "MultiLineComment" , Context { cName = "MultiLineComment" , cSyntax = "SQL (PostgreSQL)" , cRules = [ Rule { rMatcher = LineContinue , rAttribute = CommentTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } , Rule { rMatcher = Detect2Chars '*' '/' , rAttribute = CommentTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } ] , cAttribute = CommentTok , cLineEmptyContext = [] , cLineEndContext = [] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "MultiLineString" , Context { cName = "MultiLineString" , cSyntax = "SQL (PostgreSQL)" , cRules = [ Rule { rMatcher = RegExpr RE { reString = "\\$%1\\$" , reCompiled = Nothing , reCaseSensitive = False } , rAttribute = NormalTok , rIncludeAttribute = False , rDynamic = True , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } ] , cAttribute = StringTok , cLineEmptyContext = [] , cLineEndContext = [] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = True } ) , ( "Normal" , Context { cName = "Normal" , cSyntax = "SQL (PostgreSQL)" , cRules = [ Rule { rMatcher = RegExpr RE { reString = "create\\s+(or\\s+replace\\s+)?function" , reCompiled = Just (compileRegex False "create\\s+(or\\s+replace\\s+)?function") , reCaseSensitive = False } , rAttribute = KeywordTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "SQL (PostgreSQL)" , "CreateFunction" ) ] } , Rule { rMatcher = RegExpr RE { reString = "do\\s+\\$([^\\$\\n\\r]*)\\$" , reCompiled = Just (compileRegex False "do\\s+\\$([^\\$\\n\\r]*)\\$") , reCaseSensitive = False } , rAttribute = KeywordTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "SQL (PostgreSQL)" , "FunctionBody" ) ] } , Rule { rMatcher = Keyword KeywordAttr { keywordCaseSensitive = False , keywordDelims = Data.Set.fromList "\t\n (),;[\\]{}" } (makeWordSet False [ "ABORT" , "ACCESS" , "ACTION" , "ADD" , "ADMIN" , "AFTER" , "AGGREGATE" , "ALIAS" , "ALL" , "ALLOCATE" , "ALTER" , "ANALYSE" , "ANALYZE" , "ANY" , "ARE" , "AS" , "ASC" , "ASENSITIVE" , "ASSERTION" , "ASSIGNMENT" , "ASYMMETRIC" , "AT" , "ATOMIC" , "AUTHORIZATION" , "BACKWARD" , "BEFORE" , "BEGIN" , "BETWEEN" , "BINARY" , "BOTH" , "BREADTH" , "BY" , "C" , "CACHE" , "CALL" , "CALLED" , "CARDINALITY" , "CASCADE" , "CASCADED" , "CASE" , "CAST" , "CATALOG" , "CATALOG_NAME" , "CHAIN" , "CHAR_LENGTH" , "CHARACTER_LENGTH" , "CHARACTER_SET_CATALOG" , "CHARACTER_SET_NAME" , "CHARACTER_SET_SCHEMA" , "CHARACTERISTICS" , "CHECK" , "CHECKED" , "CHECKPOINT" , "CLASS" , "CLASS_ORIGIN" , "CLOB" , "CLOSE" , "CLUSTER" , "COALESCE" , "COBOL" , "COLLATE" , "COLLATION" , "COLLATION_CATALOG" , "COLLATION_NAME" , "COLLATION_SCHEMA" , "COLUMN" , "COLUMN_NAME" , "COMMAND_FUNCTION" , "COMMAND_FUNCTION_CODE" , "COMMENT" , "COMMIT" , "COMMITTED" , "COMPLETION" , "CONDITION_NUMBER" , "CONNECT" , "CONNECTION" , "CONNECTION_NAME" , "CONSTRAINT" , "CONSTRAINT_CATALOG" , "CONSTRAINT_NAME" , "CONSTRAINT_SCHEMA" , "CONSTRAINTS" , "CONSTRUCTOR" , "CONTAINS" , "CONTINUE" , "CONVERT" , "COPY" , "CORRESPONDING" , "COUNT" , "CREATE" , "CREATEDB" , "CREATEUSER" , "CROSS" , "CUBE" , "CURRENT" , "CURRENT_DATE" , "CURRENT_PATH" , "CURRENT_ROLE" , "CURRENT_TIME" , "CURRENT_TIMESTAMP" , "CURRENT_USER" , "CURSOR" , "CURSOR_NAME" , "CYCLE" , "DATA" , "DATABASE" , "DATE" , "DATETIME_INTERVAL_CODE" , "DATETIME_INTERVAL_PRECISION" , "DAY" , "DEALLOCATE" , "DEC" , "DECIMAL" , "DECLARE" , "DEFAULT" , "DEFERRABLE" , "DEFERRED" , "DEFINED" , "DEFINER" , "DELETE" , "DELIMITERS" , "DEPTH" , "DEREF" , "DESC" , "DESCRIBE" , "DESCRIPTOR" , "DESTROY" , "DESTRUCTOR" , "DETERMINISTIC" , "DIAGNOSTICS" , "DICTIONARY" , "DISCONNECT" , "DISPATCH" , "DISTINCT" , "DO" , "DOMAIN" , "DOUBLE" , "DROP" , "DYNAMIC" , "DYNAMIC_FUNCTION" , "DYNAMIC_FUNCTION_CODE" , "EACH" , "ELSE" , "ENCODING" , "ENCRYPTED" , "END" , "END-EXEC" , "EQUALS" , "ESCAPE" , "EVERY" , "EXCEPT" , "EXCEPTION" , "EXCLUSIVE" , "EXEC" , "EXECUTE" , "EXISTING" , "EXISTS" , "EXPLAIN" , "EXTERNAL" , "FALSE" , "FETCH" , "FINAL" , "FIRST" , "FOR" , "FORCE" , "FOREIGN" , "FORTRAN" , "FORWARD" , "FOUND" , "FREE" , "FREEZE" , "FROM" , "FULL" , "FUNCTION" , "G" , "GENERAL" , "GENERATED" , "GET" , "GLOBAL" , "GO" , "GOTO" , "GRANT" , "GRANTED" , "GROUP" , "GROUPING" , "HANDLER" , "HAVING" , "HIERARCHY" , "HOLD" , "HOST" , "HOUR" , "IDENTITY" , "IGNORE" , "ILIKE" , "IMMEDIATE" , "IMMUTABLE" , "IMPLEMENTATION" , "IN" , "INCREMENT" , "INDEX" , "INDICATOR" , "INFIX" , "INHERITS" , "INITIALIZE" , "INITIALLY" , "INNER" , "INOUT" , "INPUT" , "INSENSITIVE" , "INSERT" , "INSTANCE" , "INSTANTIABLE" , "INSTEAD" , "INTERSECT" , "INTERVAL" , "INTO" , "INVOKER" , "IS" , "ISNULL" , "ISOLATION" , "ITERATE" , "JOIN" , "K" , "KEY" , "KEY_MEMBER" , "KEY_TYPE" , "LANCOMPILER" , "LANGUAGE" , "LARGE" , "LAST" , "LATERAL" , "LEADING" , "LEFT" , "LENGTH" , "LESS" , "LEVEL" , "LIKE" , "LIMIT" , "LISTEN" , "LOAD" , "LOCAL" , "LOCALTIME" , "LOCALTIMESTAMP" , "LOCATION" , "LOCATOR" , "LOCK" , "LOWER" , "M" , "MAP" , "MATCH" , "MAX" , "MAXVALUE" , "MESSAGE_LENGTH" , "MESSAGE_OCTET_LENGTH" , "MESSAGE_TEXT" , "METHOD" , "MIN" , "MINUTE" , "MINVALUE" , "MOD" , "MODE" , "MODIFIES" , "MODIFY" , "MODULE" , "MONTH" , "MORE" , "MOVE" , "MUMPS" , "NAME" , "NAMES" , "NATIONAL" , "NATURAL" , "NEW" , "NEXT" , "NO" , "NOCREATEDB" , "NOCREATEUSER" , "NONE" , "NOT" , "NOTHING" , "NOTIFY" , "NOTNULL" , "NULL" , "NULLABLE" , "NULLIF" , "NUMBER" , "NUMERIC" , "OBJECT" , "OCTET_LENGTH" , "OF" , "OFF" , "OFFSET" , "OIDS" , "OLD" , "ON" , "ONLY" , "OPEN" , "OPERATION" , "OPERATOR" , "OPTION" , "OPTIONS" , "ORDER" , "ORDINALITY" , "OUT" , "OUTER" , "OUTPUT" , "OVERLAPS" , "OVERLAY" , "OVERRIDING" , "OWNER" , "PAD" , "PARAMETER" , "PARAMETER_MODE" , "PARAMETER_NAME" , "PARAMETER_ORDINAL_POSITION" , "PARAMETER_SPECIFIC_CATALOG" , "PARAMETER_SPECIFIC_NAME" , "PARAMETER_SPECIFIC_SCHEMA" , "PARAMETERS" , "PARTIAL" , "PASCAL" , "PASSWORD" , "PATH" , "PENDANT" , "PLI" , "POSITION" , "POSTFIX" , "PRECISION" , "PREFIX" , "PREORDER" , "PREPARE" , "PRESERVE" , "PRIMARY" , "PRIOR" , "PRIVILEGES" , "PROCEDURAL" , "PROCEDURE" , "PUBLIC" , "READ" , "READS" , "REAL" , "RECURSIVE" , "REF" , "REFERENCES" , "REFERENCING" , "REINDEX" , "RELATIVE" , "RENAME" , "REPEATABLE" , "REPLACE" , "RESET" , "RESTRICT" , "RESULT" , "RETURN" , "RETURNED_LENGTH" , "RETURNED_OCTET_LENGTH" , "RETURNED_SQLSTATE" , "RETURNS" , "REVOKE" , "RIGHT" , "ROLE" , "ROLLBACK" , "ROLLUP" , "ROUTINE" , "ROUTINE_CATALOG" , "ROUTINE_NAME" , "ROUTINE_SCHEMA" , "ROW" , "ROW_COUNT" , "ROWS" , "RULE" , "SAVEPOINT" , "SCALE" , "SCHEMA" , "SCHEMA_NAME" , "SCOPE" , "SCROLL" , "SEARCH" , "SECOND" , "SECTION" , "SECURITY" , "SELECT" , "SELF" , "SENSITIVE" , "SEQUENCE" , "SERIALIZABLE" , "SERVER_NAME" , "SESSION" , "SESSION_USER" , "SET" , "SETOF" , "SETS" , "SHARE" , "SHOW" , "SIMILAR" , "SIMPLE" , "SIZE" , "SOME" , "SOURCE" , "SPACE" , "SPECIFIC" , "SPECIFIC_NAME" , "SPECIFICTYPE" , "SQL" , "SQLCODE" , "SQLERROR" , "SQLEXCEPTION" , "SQLSTATE" , "SQLWARNING" , "STABLE" , "START" , "STATE" , "STATEMENT" , "STATIC" , "STATISTICS" , "STDIN" , "STDOUT" , "STRUCTURE" , "STYLE" , "SUBCLASS_ORIGIN" , "SUBLIST" , "SUBSTRING" , "SUM" , "SYMMETRIC" , "SYSID" , "SYSTEM" , "SYSTEM_USER" , "TABLE" , "TABLE_NAME" , "TEMP" , "TEMPLATE" , "TEMPORARY" , "TERMINATE" , "THAN" , "THEN" , "TIMEZONE_HOUR" , "TIMEZONE_MINUTE" , "TO" , "TOAST" , "TRAILING" , "TRANSACTION" , "TRANSACTION_ACTIVE" , "TRANSACTIONS_COMMITTED" , "TRANSACTIONS_ROLLED_BACK" , "TRANSFORM" , "TRANSFORMS" , "TRANSLATE" , "TRANSLATION" , "TREAT" , "TRIGGER" , "TRIGGER_CATALOG" , "TRIGGER_NAME" , "TRIGGER_SCHEMA" , "TRIM" , "TRUE" , "TRUNCATE" , "TRUSTED" , "TYPE" , "UNCOMMITTED" , "UNDER" , "UNENCRYPTED" , "UNION" , "UNIQUE" , "UNKNOWN" , "UNLISTEN" , "UNNAMED" , "UNNEST" , "UNTIL" , "UPDATE" , "UPPER" , "USAGE" , "USER" , "USER_DEFINED_TYPE_CATALOG" , "USER_DEFINED_TYPE_NAME" , "USER_DEFINED_TYPE_SCHEMA" , "USING" , "VACUUM" , "VALID" , "VALUE" , "VALUES" , "VARIABLE" , "VARYING" , "VERBOSE" , "VERSION" , "VIEW" , "VOLATILE" , "WHEN" , "WHENEVER" , "WHERE" , "WHILE" , "WITH" , "WITHOUT" , "WORK" , "WRITE" , "YEAR" , "ZONE" ]) , rAttribute = KeywordTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = Keyword KeywordAttr { keywordCaseSensitive = False , keywordDelims = Data.Set.fromList "\t\n (),;[\\]{}" } (makeWordSet False [ "!" , "!!" , "!=" , "!~" , "!~*" , "#" , "##" , "%" , "&" , "&&" , "&<" , "&>" , "*" , "**" , "+" , "-" , ".." , "/" , ":=" , "<" , "<->" , "<<" , "<<=" , "<=" , "<>" , "<^" , "=" , "=>" , ">" , ">=" , ">>" , ">>=" , ">^" , "?#" , "?-" , "?-|" , "?|" , "?||" , "@" , "@-@" , "@@" , "^" , "^=" , "AND" , "NOT" , "OR" , "|" , "|/" , "||" , "||/" , "~" , "~*" , "~=" ]) , rAttribute = NormalTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = Keyword KeywordAttr { keywordCaseSensitive = False , keywordDelims = Data.Set.fromList "\t\n (),;[\\]{}" } (makeWordSet False [ "ABBREV" , "ABS" , "ACOS" , "AGE" , "AREA" , "ASCII" , "ASIN" , "ATAN" , "ATAN2" , "AVG" , "BIT_LENGTH" , "BOX" , "BROADCAST" , "BTRIM" , "CBRT" , "CEIL" , "CENTER" , "CHAR_LENGTH" , "CHARACTER_LENGTH" , "CHR" , "CIRCLE" , "COALESCE" , "COL_DESCRIPTION" , "CONVERT" , "COS" , "COT" , "COUNT" , "CURRVAL" , "DATE_PART" , "DATE_TRUNC" , "DECODE" , "DEGREES" , "DIAMETER" , "ENCODE" , "EXP" , "EXTRACT" , "FLOOR" , "HAS_TABLE_PRIVILEGE" , "HEIGHT" , "HOST" , "INITCAP" , "ISCLOSED" , "ISFINITE" , "ISOPEN" , "LENGTH" , "LN" , "LOG" , "LOWER" , "LPAD" , "LSEG" , "LTRIM" , "MASKLEN" , "MAX" , "MIN" , "MOD" , "NETMASK" , "NETWORK" , "NEXTVAL" , "NOW" , "NPOINT" , "NULLIF" , "OBJ_DESCRIPTION" , "OCTET_LENGTH" , "PATH" , "PCLOSE" , "PG_CLIENT_ENCODING" , "PG_GET_INDEXDEF" , "PG_GET_RULEDEF" , "PG_GET_USERBYID" , "PG_GET_VIEWDEF" , "PI" , "POINT" , "POLYGON" , "POPEN" , "POSITION" , "POW" , "RADIANS" , "RADIUS" , "RANDOM" , "REPEAT" , "ROUND" , "RPAD" , "RTRIM" , "SET_MASKLEN" , "SETVAL" , "SIGN" , "SIN" , "SQRT" , "STDDEV" , "STRPOS" , "SUBSTR" , "SUBSTRING" , "SUM" , "TAN" , "TIMEOFDAY" , "TIMESTAMP" , "TO_ASCII" , "TO_CHAR" , "TO_DATE" , "TO_NUMBER" , "TO_TIMESTAMP" , "TRANSLATE" , "TRIM" , "TRUNC" , "UPPER" , "VARIANCE" , "WIDTH" ]) , rAttribute = FunctionTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = Keyword KeywordAttr { keywordCaseSensitive = False , keywordDelims = Data.Set.fromList "\t\n (),;[\\]{}" } (makeWordSet False [ "BIGINT" , "BIGSERIAL" , "BIT" , "BIT VARYING" , "BOOL" , "BOOLEAN" , "BOX" , "BYTEA" , "CHAR" , "CHARACTER" , "CHARACTER VARYING" , "CIDR" , "CIRCLE" , "DATE" , "DECIMAL" , "DOUBLE PRECISION" , "FLOAT8" , "INET" , "INT" , "INT2" , "INT4" , "INT8" , "INTEGER" , "INTERVAL" , "LINE" , "LSEG" , "LZTEXT" , "MACADDR" , "MONEY" , "NUMERIC" , "OID" , "PATH" , "POINT" , "POLYGON" , "REAL" , "SERIAL" , "SERIAL8" , "SMALLINT" , "TEXT" , "TIME" , "TIMESTAMP" , "TIMESTAMP WITH TIMEZONE" , "TIMESTAMPTZ" , "TIMETZ" , "VARBIT" , "VARCHAR" ]) , rAttribute = DataTypeTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = RegExpr RE { reString = "%bulk_exceptions\\b" , reCompiled = Just (compileRegex False "%bulk_exceptions\\b") , reCaseSensitive = False } , rAttribute = DataTypeTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = RegExpr RE { reString = "%bulk_rowcount\\b" , reCompiled = Just (compileRegex False "%bulk_rowcount\\b") , reCaseSensitive = False } , rAttribute = DataTypeTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = RegExpr RE { reString = "%found\\b" , reCompiled = Just (compileRegex False "%found\\b") , reCaseSensitive = False } , rAttribute = DataTypeTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = RegExpr RE { reString = "%isopen\\b" , reCompiled = Just (compileRegex False "%isopen\\b") , reCaseSensitive = False } , rAttribute = DataTypeTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = RegExpr RE { reString = "%notfound\\b" , reCompiled = Just (compileRegex False "%notfound\\b") , reCaseSensitive = False } , rAttribute = DataTypeTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = RegExpr RE { reString = "%rowcount\\b" , reCompiled = Just (compileRegex False "%rowcount\\b") , reCaseSensitive = False } , rAttribute = DataTypeTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = RegExpr RE { reString = "%rowtype\\b" , reCompiled = Just (compileRegex False "%rowtype\\b") , reCaseSensitive = False } , rAttribute = DataTypeTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = RegExpr RE { reString = "%type\\b" , reCompiled = Just (compileRegex False "%type\\b") , reCaseSensitive = False } , rAttribute = DataTypeTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = Float , rAttribute = FloatTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = Int , rAttribute = DecValTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = DetectChar '\'' , rAttribute = StringTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "SQL (PostgreSQL)" , "String" ) ] } , Rule { rMatcher = DetectChar '#' , rAttribute = CommentTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "SQL (PostgreSQL)" , "SingleLineComment" ) ] } , Rule { rMatcher = Detect2Chars '-' '-' , rAttribute = CommentTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "SQL (PostgreSQL)" , "SingleLineComment" ) ] } , Rule { rMatcher = Detect2Chars '/' '*' , rAttribute = CommentTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "SQL (PostgreSQL)" , "MultiLineComment" ) ] } , Rule { rMatcher = RegExpr RE { reString = "rem\\b" , reCompiled = Just (compileRegex False "rem\\b") , reCaseSensitive = False } , rAttribute = CommentTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Just 0 , rContextSwitch = [ Push ( "SQL (PostgreSQL)" , "SingleLineComment" ) ] } , Rule { rMatcher = DetectChar '"' , rAttribute = CommentTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "SQL (PostgreSQL)" , "Identifier" ) ] } , Rule { rMatcher = AnyChar ":&" , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = RegExpr RE { reString = "/$" , reCompiled = Just (compileRegex False "/$") , reCaseSensitive = False } , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Just 0 , rContextSwitch = [] } , Rule { rMatcher = RegExpr RE { reString = "@@?[^@ \\t\\r\\n]" , reCompiled = Just (compileRegex False "@@?[^@ \\t\\r\\n]") , reCaseSensitive = False } , rAttribute = OtherTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Just 0 , rContextSwitch = [ Push ( "SQL (PostgreSQL)" , "Preprocessor" ) ] } , Rule { rMatcher = RegExpr RE { reString = "\\$([^\\$\\n\\r]*)\\$" , reCompiled = Nothing , reCaseSensitive = False } , rAttribute = NormalTok , rIncludeAttribute = False , rDynamic = True , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Push ( "SQL (PostgreSQL)" , "MultiLineString" ) ] } ] , cAttribute = NormalTok , cLineEmptyContext = [] , cLineEndContext = [] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "Preprocessor" , Context { cName = "Preprocessor" , cSyntax = "SQL (PostgreSQL)" , cRules = [] , cAttribute = OtherTok , cLineEmptyContext = [] , cLineEndContext = [ Pop ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "SingleLineComment" , Context { cName = "SingleLineComment" , cSyntax = "SQL (PostgreSQL)" , cRules = [] , cAttribute = CommentTok , cLineEmptyContext = [] , cLineEndContext = [ Pop ] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) , ( "String" , Context { cName = "String" , cSyntax = "SQL (PostgreSQL)" , cRules = [ Rule { rMatcher = LineContinue , rAttribute = StringTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } , Rule { rMatcher = HlCStringChar , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = DetectChar '&' , rAttribute = CharTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [] } , Rule { rMatcher = DetectChar '\'' , rAttribute = StringTok , rIncludeAttribute = False , rDynamic = False , rCaseSensitive = False , rChildren = [] , rLookahead = False , rFirstNonspace = False , rColumn = Nothing , rContextSwitch = [ Pop ] } ] , cAttribute = StringTok , cLineEmptyContext = [] , cLineEndContext = [] , cLineBeginContext = [] , cFallthrough = False , cFallthroughContext = [] , cDynamic = False } ) ] , sAuthor = "Shane Wright (me@shanewright.co.uk)" , sVersion = "2" , sLicense = "" , sExtensions = [ "*.sql" , "*.SQL" , "*.ddl" , "*.DDL" ] , sStartingContext = "Normal" }