Hola.
Las conversiones de romanos a arábigos siguen algunas reglas que ya te han comentado:
1.- Nunca puede haber más de 3 letras iguales seguidas. VIII = 8
2.- Las letras siempre van de más grande a más pequeña. Si te encuentras una pequeña y siguiente una más grande, la pequeña resta a la grande: MCM = 1900
3.- Sólo puede haber una letra restando a otra más grande: IIV = 3 MAL ---> III = 3
4.- Hay que escribir el número con el menor número de letras posible: MDM = MAL ---> MD = 1500 = BIEN
Dadas las reglas 3 y 4, hay que ver que entonces estará prohibido que la resta de dos letras devuelva un valor igual al de una letra, por ejemplo, está mal DM, porque M-D = 1000 - 500 = 500 = D, ya que el valor 500 se puede escribir con menos de dos letras (o sea, con una, la D).
En realidad, la regla que te he puesto como 1 también viene de aquí, ya que por ejemplo: VIIII = 9 = IX. Como puede escribirse con menos letras, el correcto es el segundo. De la misma forma, tal y como te comentó betoskim, VV = 10 = X => vale la segunda que tiene menos letras.
Con estas reglas el parser se hace algo más sencillo. La cuestión es si te van a dar siempre números correctos, aceptas también incorrectos sin dar error o tienes que validar el número además de dar el resultado.
Espero que esto te aclare algo. Ya nos contarás.
Suerte y un saludo.