[geany/geany] 8b11f9: SQL: generalize support for SQL Server square brackets quoting

Colomban Wendling git-noreply at xxxxx
Mon Jun 24 18:27:22 UTC 2013


Branch:      refs/heads/master
Author:      Colomban Wendling <ban at herbesfolles.org>
Committer:   Colomban Wendling <ban at herbesfolles.org>
Date:        Mon, 24 Jun 2013 18:27:22 UTC
Commit:      8b11f9b0efc32cd3da892b6e464cd9d1355543ec
             https://github.com/geany/geany/commit/8b11f9b0efc32cd3da892b6e464cd9d1355543ec

Log Message:
-----------
SQL: generalize support for SQL Server square brackets quoting

This fixes test case tests/ctags/bug1944150.sql.


Modified Paths:
--------------
    tagmanager/ctags/sql.c
    tests/ctags/bug1944150.sql.tags

Modified: tagmanager/ctags/sql.c
92 files changed, 44 insertions(+), 48 deletions(-)
===================================================================
@@ -688,6 +688,26 @@ static void readToken (tokenInfo *const token)
 }
 
 /*
+ * reads an indentifier, possibly quoted:
+ * 		identifier
+ * 		"identifier"
+ * 		[identifier]
+ */
+static void readIdentifier (tokenInfo *const token)
+{
+	readToken (token);
+	if (isType (token, TOKEN_OPEN_SQUARE))
+	{
+		tokenInfo *const close_square = newToken ();
+
+		readToken (token);
+		/* eat close swuare */
+		readToken (close_square);
+		deleteToken (close_square);
+	}
+}
+
+/*
  *	 Token parsing functions
  */
 
@@ -1616,14 +1636,14 @@ static void parsePackage (tokenInfo *const token)
 	 *	   CREATE OR REPLACE PACKAGE BODY owner.pkg_name AS
  */
 	tokenInfo *const name = newToken ();
-	readToken (name);
+	readIdentifier (name);
 	if (isKeyword (name, KEYWORD_body))
 	{
 		/*
 		 * Ignore the BODY tag since we will process
 		 * the body or prototypes in the same manner
 		 */
-		readToken (name);
+		readIdentifier (name);
 	}
 	/* Check for owner.pkg_name */
 	while (! isKeyword (token, KEYWORD_is))
@@ -1631,7 +1651,7 @@ static void parsePackage (tokenInfo *const token)
 		readToken (token);
 		if ( isType(token, TOKEN_PERIOD) )
 		{
-			readToken (name);
+			readIdentifier (name);
 		}
 	}
 	if (isKeyword (token, KEYWORD_is))
@@ -1673,13 +1693,7 @@ static void parseTable (tokenInfo *const token)
 	 */
 
 	/* This could be a database, owner or table name */
-	readToken (name);
-	if (isType (name, TOKEN_OPEN_SQUARE))
-	{
-		readToken (name);
-		/* Read close square */
-		readToken (token);
-	} 
+	readIdentifier (name);
 	readToken (token);
 	if (isType (token, TOKEN_PERIOD))
 	{
@@ -1689,35 +1703,17 @@ static void parseTable (tokenInfo *const token)
 		 * referenced with a blank owner:
 		 *     dbname..tablename
 		 */
-		readToken (name);
-		if (isType (name, TOKEN_OPEN_SQUARE))
-		{
-			readToken (name);
-			/* Read close square */
-			readToken (token);
-		} 
+		readIdentifier (name);
 		/* Check if a blank name was provided */
 		if (isType (name, TOKEN_PERIOD))
 		{
-			readToken (name);
-			if (isType (name, TOKEN_OPEN_SQUARE))
-			{
-				readToken (name);
-				/* Read close square */
-				readToken (token);
-			} 
+			readIdentifier (name);
 		}
 		readToken (token);
 		if (isType (token, TOKEN_PERIOD))
 		{
 			/* This can only be the table name */
-			readToken (name);
-			if (isType (name, TOKEN_OPEN_SQUARE))
-			{
-				readToken (name);
-				/* Read close square */
-				readToken (token);
-			} 
+			readIdentifier (name);
 			readToken (token);
 		}
 	}
@@ -1757,21 +1753,21 @@ static void parseIndex (tokenInfo *const token)
 	 *	   create bitmap index "i6" on t1(c1)
 	 */
 
-	readToken (name);
+	readIdentifier (name);
 	readToken (token);
 	if (isType (token, TOKEN_PERIOD))
 	{
-		readToken (name);
+		readIdentifier (name);
 		readToken (token);
 	}
 	if ( isKeyword (token, KEYWORD_on) &&
 			(isType (name, TOKEN_IDENTIFIER) || isType (name, TOKEN_STRING) ) )
 	{
-		readToken (owner);
+		readIdentifier (owner);
 		readToken (token);
 		if (isType (token, TOKEN_PERIOD))
 		{
-			readToken (owner);
+			readIdentifier (owner);
 			readToken (token);
 		}
 		addToScope(name, owner->string);
@@ -1794,11 +1790,11 @@ static void parseEvent (tokenInfo *const token)
 	 *	   create event "dba"."e4" handler begin end;
 	 */
 
-	readToken (name);
+	readIdentifier (name);
 	readToken (token);
 	if (isType (token, TOKEN_PERIOD))
 	{
-		readToken (name);
+		readIdentifier (name);
 	}
 	while (! (isKeyword (token, KEYWORD_handler) ||
 				(isType (token, TOKEN_SEMICOLON)))	  )
@@ -1840,11 +1836,11 @@ static void parseTrigger (tokenInfo *const token)
 	 *	   create trigger "tr6" begin end;
 	 */
 
-	readToken (name);
+	readIdentifier (name);
 	readToken (token);
 	if (isType (token, TOKEN_PERIOD))
 	{
-		readToken (name);
+		readIdentifier (name);
 		readToken (token);
 	}
 
@@ -1910,11 +1906,11 @@ static void parsePublication (tokenInfo *const token)
 	 *	   create publication "dba"."pu4" ()
 	 */
 
-	readToken (name);
+	readIdentifier (name);
 	readToken (token);
 	if (isType (token, TOKEN_PERIOD))
 	{
-		readToken (name);
+		readIdentifier (name);
 		readToken (token);
 	}
 	if (isType (token, TOKEN_OPEN_PAREN))
@@ -1944,7 +1940,7 @@ static void parseService (tokenInfo *const token)
 	 *		   CALL sp_Something();
 	 */
 
-	readToken (name);
+	readIdentifier (name);
 	readToken (token);
 	if (isKeyword (token, KEYWORD_type))
 	{
@@ -1967,10 +1963,10 @@ static void parseDomain (tokenInfo *const token)
 	 *	   CREATE DOMAIN|DATATYPE [AS] your_name ...;
 	 */
 
-	readToken (name);
+	readIdentifier (name);
 	if (isKeyword (name, KEYWORD_is))
 	{
-		readToken (name);
+		readIdentifier (name);
 	}
 	readToken (token);
 	if (isType (name, TOKEN_IDENTIFIER) ||
@@ -2009,7 +2005,7 @@ static void parseVariable (tokenInfo *const token)
 	 *	   drop   variable @varname3;
 	 */
 
-	readToken (name);
+	readIdentifier (name);
 	readToken (token);
 	if ( (isType (name, TOKEN_IDENTIFIER) || isType (name, TOKEN_STRING))
 			&& !isType (token, TOKEN_SEMICOLON) )
@@ -2033,7 +2029,7 @@ static void parseSynonym (tokenInfo *const token)
 	 *	   drop   variable @varname3;
 	 */
 
-	readToken (name);
+	readIdentifier (name);
 	readToken (token);
 	if ( (isType (name, TOKEN_IDENTIFIER) || isType (name, TOKEN_STRING))
 			&& isKeyword (token, KEYWORD_for) )
@@ -2057,11 +2053,11 @@ static void parseView (tokenInfo *const token)
 	 *	   drop   variable @varname3;
 	 */
 
-	readToken (name);
+	readIdentifier (name);
 	readToken (token);
 	if (isType (token, TOKEN_PERIOD))
 	{
-		readToken (name);
+		readIdentifier (name);
 		readToken (token);
 	}
 	if ( isType (token, TOKEN_OPEN_PAREN) )


Modified: tests/ctags/bug1944150.sql.tags
2 files changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -1,2 +1,2 @@
 # format=tagmanager
-cash_trade_comment.�65536�0
+cash_trade_comment.tr_d_cash_trade_comment�65536�0



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Commits mailing list