Add support for blank register ranges
diff --git a/smali/src/main/antlr3/org/jf/smali/smaliParser.g b/smali/src/main/antlr3/org/jf/smali/smaliParser.g
index 19d4ff7..f25533c 100644
--- a/smali/src/main/antlr3/org/jf/smali/smaliParser.g
+++ b/smali/src/main/antlr3/org/jf/smali/smaliParser.g
@@ -603,7 +603,7 @@
 	|	->^(I_REGISTER_LIST[$start, "I_REGISTER_LIST"]);
 
 register_range
-	:	REGISTER (DOTDOT REGISTER)? -> ^(I_REGISTER_RANGE[$start, "I_REGISTER_RANGE"] REGISTER REGISTER?);
+	:	(startreg=REGISTER (DOTDOT endreg=REGISTER)?)? -> ^(I_REGISTER_RANGE[$start, "I_REGISTER_RANGE"] $startreg? $endreg?);
 
 verification_error_reference
 	:	CLASS_DESCRIPTOR | fully_qualified_field | fully_qualified_method;
diff --git a/smali/src/main/antlr3/org/jf/smali/smaliTreeWalker.g b/smali/src/main/antlr3/org/jf/smali/smaliTreeWalker.g
index 54aeccb..46c364b 100644
--- a/smali/src/main/antlr3/org/jf/smali/smaliTreeWalker.g
+++ b/smali/src/main/antlr3/org/jf/smali/smaliTreeWalker.g
@@ -895,22 +895,24 @@
 			})*);
 
 register_range[int totalMethodRegisters, int methodParameterRegisters] returns[int startRegister, int endRegister]
-	:	^(I_REGISTER_RANGE startReg=REGISTER endReg=REGISTER?)
+	:	^(I_REGISTER_RANGE (startReg=REGISTER endReg=REGISTER?)?)
 		{
-			$startRegister  = parseRegister_short($startReg.text, $totalMethodRegisters, $methodParameterRegisters);
-			if ($endReg == null) {
-				$endRegister = $startRegister;
-			} else {
-				$endRegister = parseRegister_short($endReg.text, $totalMethodRegisters, $methodParameterRegisters);
-			}
+		    if ($startReg == null) {
+		        $startRegister = 0;
+		        $endRegister = -1;
+		    } else {
+                $startRegister  = parseRegister_short($startReg.text, $totalMethodRegisters, $methodParameterRegisters);
+                if ($endReg == null) {
+                    $endRegister = $startRegister;
+                } else {
+                    $endRegister = parseRegister_short($endReg.text, $totalMethodRegisters, $methodParameterRegisters);
+                }
 
-			int registerCount = $endRegister-$startRegister+1;
-			if (registerCount > 256) {
-				throw new SemanticException(input, $I_REGISTER_RANGE, "A register range can span a maximum of 256 registers");
-			}
-			if (registerCount < 1) {
-				throw new SemanticException(input, $I_REGISTER_RANGE, "A register range must have the lower register listed first");
-			}
+                int registerCount = $endRegister-$startRegister+1;
+                if (registerCount < 1) {
+                    throw new SemanticException(input, $I_REGISTER_RANGE, "A register range must have the lower register listed first");
+                }
+            }
 		}
 	;