iridium 0.0.33

A resilient VM for the Palladium language
Documentation
use assembler::Token;
use instruction::Opcode;
use nom::types::CompleteStr;
use nom::*;

named!(pub opcode<CompleteStr, Token>,
  do_parse!(
      opcode: alpha1 >>
      (
        {
            Token::Op{code: Opcode::from(opcode)}
        }
      )
  )
);

mod tests {
    #![allow(unused_imports)]

    use super::opcode;
    use assembler::Token;
    use instruction::Opcode;
    use nom::types::CompleteStr;

    #[test]
    fn test_opcode() {
        let result = opcode(CompleteStr("load"));
        assert_eq!(result.is_ok(), true);
        let (rest, token) = result.unwrap();
        assert_eq!(token, Token::Op { code: Opcode::LOAD });
        assert_eq!(rest, CompleteStr(""));
        let result = opcode(CompleteStr("aold"));
        let (_, token) = result.unwrap();
        assert_eq!(token, Token::Op { code: Opcode::IGL });
    }
}