2012-06-15 6 views
2

저는 Groovy에서 기본 스크립트를 해킹하기 위해 DSL을 작성하고 있습니다. BASIC 배열을 처리하는 방법에 대해 생각하고 있습니다.그루비 반환 참조에 대한 수수께끼

그것은 같은 것을 처리 할 수 ​​MOP 사용하기 쉬운만큼 보인다 : A는 DIMed 때 나는 동적으로 클로저를 선언 할

100 LET X = A(5) 

을,이 클로저 인수에 따라 값을 반환합니다. 그러나 다루기가 쉽지 않습니다.

110 LET A(5) = Y 

저는 Groovy에서 참조로 반환 할 수 없습니다. A (5)가 lvalue인지 rvalue인지를 파싱하는 것 이외에 누군가가 이것을 생각할 수 있습니까?

답변

0

쉬운 대답은 아니며이 문제를 해결하더라도 여전히 기본 조건 (예 : 'IF a = 10 then ...')을 처리해야합니다. AST 변환을 현명하게 사용하면 필요한 것을 얻을 수는 있지만 사용자 정의 파서를 작성하는 것보다 쉽지는 않습니다. 다른 말로하면 나는 당신이 운명이라고 생각하고 가능하다면 BASIC 스크립트를 작성하는 것 이외의 다른 일을해야한다.

+0

아, 제가 진전을 보이고 있습니다. http://cartesianproduct.wordpress.com/2012/06/17/some-basic-i-can-now-run/을 참조하십시오. - 정규 표현식은 강력한 것입니다! – adrianmcmenamin

관련 문제