parseid 0.1.0

Parser for Asmodeus language with AST generation
Documentation
use parseid::{parse_source, ast::*};

#[test]
fn test_complex_program() {
    let program = parse_source(r#"
        ; Complex assembly program
        MAKRO multiply_by_two value
            DOD value
            DOD value
        KONM
        
        start:
            RST 100
            POB #42
            ŁAD data
            multiply_by_two data
            SOB end
            
        data: RST 25
        end: STP
    "#).unwrap();
    
    let mut macro_count = 0;
    let mut label_count = 0;
    let mut instruction_count = 0;
    let mut directive_count = 0;
    
    for element in &program.elements {
        match element {
            ProgramElement::MacroDefinition(_) => macro_count += 1,
            ProgramElement::LabelDefinition(_) => label_count += 1,
            ProgramElement::Instruction(_) => instruction_count += 1,
            ProgramElement::Directive(_) => directive_count += 1,
            ProgramElement::MacroCall(_) => {}
        }
    }
    
    assert!(macro_count > 0, "Should have macro definitions");
    assert!(label_count > 0, "Should have label definitions");
    assert!(instruction_count > 0, "Should have instructions");
    assert!(directive_count > 0, "Should have directives");
}