anchor.diff: -/** This grammar is generated with antlrworks in order to parse an asm source
  +/** 
  +This grammar is generated with antlrworks in order to parse an asm source
   code.First of all the lexical rules established here do not replace the ones 
   generated in JFlex we used in EditorASM to color the tokens, instead they are used
   to provide the necessary tokens for the parser.
  
positive.code: 	;
  	
  binary_exp2
  	: oper register Separator (register|memory)
  	| oper memory Separator register
  	;
  
  notarguments
  	: opera	;
  	
  binary_exp3
  	: operat (register|memory) Separator (register|Integer|memory)
  	
  	;
  	
  unuary_exp3
  
negative.code: 	: re opera	
  	;
  	
  directive_exp1	
  	: (directives Identifier | directives)
  	;
  	
  variabledeclaration
  	: Identifier ty (question|String|Integer) 	
  	;
  	
  memory	
  	:
  	'[' (register|Identifier) ('+' ((register ('+' (Integer|Hexnum|Octalnum))? )|Integer|Hexnum|Octalnum))? ']'
  	;
  	
  segmentos
  	:
  	DS | ES | CS | SS | GS | FS
  	;
  
  register
  	:
  	AH|AL|AX|BH|BL|BX|CH|CL|CX|DH|DL|DX|SI|DI|SP|BP|EAX|EBX|ECX|EDX|ESI|EDI|ESP|EBP
  	;
  
  o
  	:
  	MOV|CMP|TEST
  	;
  
  op
  	:
  	PUSH
  	;
  
  ope
  	:	
  	POP|IDIV|INC|DEC|NEG|MUL|DIV|IMUL|NOT|SETPO|SETAE|SETNLE|SETC|SETNO|SETNB|SETP|SETNGE|SETL|SETGE|SETPE|SETNL|SETNZ|SETNE|SETNC|SETBE|SETNP|SETNS|SETO|SETNA|SETNAE|SETZ|SETLE|SETNBE|SETS|SETE|SETB|SETA|SETG|SETNG
  	;
  
  oper
  	:	
  	XCHG
  	;
  
  opera
  	:	
  	POPAD|AAA|POPA|POPFD|CWD|LAHF|PUSHAD|PUSHF|AAS|BSWAP|PUSHFD|CBW|CWDE|XLAT|AAM|AAD|CDQ|DAA|SAHF|DAS|INTO|IRET|CLC|STC|CMC|CLD|STD|CLI|STI|MOVSB|MOVSW|MOVSD|LODS|LODSB|LODSW|LODSD|STOS|STOSB|STOSW|SOTSD|SCAS|SCASB|SCASW|SCASD|CMPS|CMPSB|CMPSW|CMPSD|INSB|INSW|INSD|OUTSB|OUTSW|OUTSD
  	;
  
  operat
  	: 
  	ADC|ADD|SUB|CBB|XOR|OR
  	;
  
  operato
  	:
  	JNBE|JNZ|JPO|JZ|JS|LOOPNZ|JGE|JB|JNB|JO|JP|JNO|JNL|JNAE|LOOPZ|JMP|JNP|LOOP|JL|JCXZ|JAE|JNGE|JA|LOOPNE|LOOPE|JG|JNLE|JE|JNC|JC|JNA|JBE|JLE|JPE|JNS|JECXZ|JNG
  	;
  
  operator
  	:
  	MOVZX|BSF|BSR
  	;
  
  l
  	:	
  	LES|LEA|LDS|INS|OUTS
  	;
  
  x
  	:	
  	XADD|CMPXCHG
  	;
  
  s
  	:	
  	SHL|SHR|ROR|ROL|RCL|SAL|RCR|SAR
  	;
  
  sh
  	:	
  	SHRD|SHLD
  	;
  
  b
  	:	
  	BTR|BT|BTC
  	;
  
  call
  	:	
  	CALL
  	;
  
  interruption
  	:	
  	INT|RETN|RET|RETF
  	;
  
  in
  	:	
  	IN
  	;
  
  out
  	:	
  	OUT
  	;
  
  re
  	:	
  	REP|REPE|REPZ|REPNE|REPNZ
  	;
  
  directives
  	: 
  	ALPHA|CONST|CREF|XCREF|DATA|DATA2|DOSSEG|ERR|ERR1|ERR2|ERRE|ERRNZ|ERRDEF|ERRNDEF|ERRB|ERRNB|ERRIDN|ERRDIF|EVEN|LIST|WIDTH|MASK|SEQ|XLIST|EXIT|MODEL
  	;
  
  ty
  	:	
  	BYTE|SBYTE|DB|WORD|SWORD|DW|DWORD|SDWORD|DD|FWORD|DF|QWORD|DQ|TBYTE|DT|REAL4|REAL8|REAL|FAR|NEAR|PROC
  	;
  
  question
  	: 
  	QUESTION
  	;
  
  time
  	:	
  	TIMES
  	;
  
  //So let's start  defining the ASM lexer
  //Groups of reserved words
  