파서가 토큰을 인식 할 때마다 약간의 코드를 실행하려고합니다. 나무 꼭대기에 액션 트리거를 코딩하는 방법은 무엇입니까?
은의 여기grammar FooBar
rule start
(foo "\n")+
end
rule foo
stuff_i_want:([a-z]+) {
puts "Hi there I found: #{stuff_i_want.text_value}"
}
end
end
생각이 puts
조치가 foo
토큰이 발견 될 때마다 실행해야하는 것입니다 가정 해 봅시다. 있는 그대로 코드화되어 있으므로 클래스 로딩 시간에 한 번만 트리거되고 물론 stuff_i_want.text_value
은 존재하지 않으므로 작동하지 않습니다.
아이디어가 있으십니까? 심지어 가능할까요? 도서관에 문서가 없다고해서 쉽게 알 수있는 것은 아닙니다.
좋은 점은 정말 간단 할 수있다. 그러나 내가 작업하고있는 파일에는 재귀 적으로'action'을 호출하여 많은 코드 중복을 필요로하는 중개 구문 노드가 많이 있습니다. 내 솔루션은 좀 더 유연하다고 믿습니다. 그러나 귀하의 의견을 주셔서 감사합니다 :) –
그것은 일종의 영리한 방법입니다. –