--- a/src/svf/svf.c	2010-01-24 03:53:34 +0800
+++ b/src/svf/svf.c	2010-01-24 03:53:54 +0800
@@ -472,7 +472,7 @@
 {
 	unsigned char ch;
 	char *tmp_buffer = NULL;
-	int cmd_pos = 0, cmd_ok = 0, slash = 0, comment = 0;
+	int cmd_pos = 0, cmd_ok = 0, slash = 0, comment = 0, in_bracket = 0;
 
 	while (!cmd_ok && (read(fd, &ch, 1) > 0))
 	{
@@ -501,9 +501,38 @@
 			slash = 0;
 			comment = 0;
 			break;
+		case '(':
+			if (!comment)
+			{
+				if (in_bracket)
+				{
+					return ERROR_FAIL;
+				}
+				in_bracket = 1;
+			}
+			goto parse_char;
+			break;
+		case ')':
+			if (!comment)
+			{
+				if (!in_bracket)
+				{
+					return ERROR_FAIL;
+				}
+				in_bracket = 0;
+			}
+			goto parse_char;
+			break;
 		default:
+parse_char:
 			if (!comment)
 			{
+				/* ommit all spaces between '(' and ')' */
+				if (in_bracket && (' ' == ch))
+				{
+					break;
+				}
+
 				/* The parsing code currently expects a space
 				 * before parentheses -- "TDI (123)".  But a
 				 * space is optional... instead of parser
