2013-08-21 2 views
0

아래와 같이 TCL syntax'ed 배열이있는 TCL 스크립트에서 파일을 출력했습니다. tcl 배열을 루비 해시 파서로 변환

data = { 
    'item1' => { 
    'xyz' => { 
     'a' => %w{one two three 1 2 3}, 
     'b' => %w{three one two 3 2 4} 
    }, 

    'lmn' => { 
     'z' => %w{something 1 2 3}, 
     'd' => %w{samething 3 2 4} 
    } 
    }, 

    'item2' => { 
    'xyz' => { 
     'ss' => %w{100 }, 
     'sd' => %w{sdss 200 300} 
    }, 
    'lmn' => { 
     'ee' => %w{xdf 1 2dsd 3}, 
     'pp' => %w{dd fsdf 3 2 4} 
    } 
    } 
} 

인가가 어떤 : 내가 필요한 데이터를 소모 시작하기 전에

set data(item1) { 
    xyz { 
    a { one two three 1 2 3} 
    b { three one two 3 2 4} 
    } 
    lmn { 
    z { "something" 1 2 3} 
    d { "samething" 3 2 4} 
    } 
}; 

set data(item2) { 
    xyz { 
    ss { 100 } 
    sd { "sdss" 200 300} 
    } 
    lmn { 
    ee { "xdf" 1 "2dsd" 3} 
    pp { "dd" "fsdf" 3 2 4} 
    } 
}; 

는 지금은, 루비 프로그램에서이 파일을 읽고 아래에 뭔가 유사한 해시의 해시로를 구축해야 이 목적으로 사용할 수있는 Ruby 유틸리티 또는 메소드는 무엇입니까?

미리 도움을 주셔서 감사합니다.

답변

0

아니요. 파서를 만들어야합니다. treetop을 살펴보십시오.

컴파일 단계 (어휘 분석기 및 구문 분석기,이 프로젝트에 의미 분석기가 필요하지 않음)와 같이 초기에 기본 지식이있는 compilers을 얻는 데 많은 도움이됩니다.

grammars의 기본적인 이해가 도움이 될 것입니다. 왜냐하면 컴파일러의 전제 조건이기는하지만 컴파일러를 찾는 동안 문법에 걸리기 쉽습니다.