diff --git a/lib/modules/Parser.pmod/C.pmod b/lib/modules/Parser.pmod/C.pmod
index 251839ab0789fd9d6eb54b6e1151d6377f6d8c02..5150b3869ddc41daf2f007c6e83e9c2a44ee96ff 100644
--- a/lib/modules/Parser.pmod/C.pmod
+++ b/lib/modules/Parser.pmod/C.pmod
@@ -30,15 +30,18 @@ array(string) split(string data)
 
       case 'a'..'z':
       case 'A'..'Z':
+      case 128..65536: // Lets simplify things for now...
       case '_':
 	while(1)
 	{
 	  switch(data[pos])
 	  {
-	    case 'a'..'z':
-	    case 'A'..'Z':
-	    case '0'..'9':
-	    case '_':
+           case '$': // allowed in some C (notably digital)
+           case 'a'..'z':
+           case 'A'..'Z':
+           case '0'..'9':
+           case 128..65536: // Lets simplify things for now...
+           case '_':
 	      pos++;
 	      continue;
 	  }
@@ -52,6 +55,11 @@ array(string) split(string data)
 	  pos+=3;
 	  break;
 	}
+	if(data[start..start+1]=="..")
+	{
+	  pos+=3;
+	  break;
+	}
 
       case '0'..'9':
 	if(data[pos]=='0' && (data[pos+1]=='x' || data[pos+1]=='X'))
@@ -105,6 +113,7 @@ array(string) split(string data)
       case '&': case '|': case '^':
       case '!': case '~':
       case '=':
+      case '@':
       case '+':
       case '-':
       case '<': case '>':