JMP 수식에서 발견된 모든 열 이름 참조를 목록으로 추출하고, 특히 해당 열 종속성을 식별하고 싶습니다. JMP 공식은 상당히 복잡할 수 있습니다. 예를 들어 열 이름이 포함된 출력으로 JSL 코드를 생성할 수 있습니다. 수식이 해당 열 이름에 의존하지 않기 때문에 해당 열 이름에는 관심이 없습니다. 결과를 계산하는 데 사용되는 열 이름에만 관심이 있습니다. 프로그래밍 방식으로 수식을 구문 분석하지 않고 이 작업을 수행할 수 있는 간단한 방법이 있습니까?
여기 내 초기 계획의 스케치가 있습니다.
수식을 문자열로 변환하고 세 가지 요소(:,
!", \!")를 검색합니다.
- 먼저 모든 따옴표를 제거하십시오. 앞에 :가 없는 첫 번째 \!"를 찾은 다음 일치하는 \!"를 찾습니다. 선행하는 : 및 다중 이스케이프 따옴표가 없습니다. 이를 수식의 인용문으로 인식하고 제거하거나 건너뜁니다. 그런 다음 전체 수식에 대해 반복합니다.
- 그런 다음 문자열에서 이름을 검색하세요.
- :이 발견되면 쉼표와 같은 "이름 분리" 문자가 발견될 때까지 계속합니다. 문자열 형식의 이름 중 하나로 저장
!"가 발견되면 \!"n이 발견될 때까지 계속합니다. 이름 문자열을 이름 중 하나로 저장합니다.
- 마지막으로 이름 목록을 중복 제거하여 고유하게 만듭니다.
이를 수행하는 더 우아한 방법이 있습니까?
그렇지 않다면 위의 내용에서 무엇이 잘못될 수 있습니까? 수식에서 열 이름을 지정할 수 있는 다른 방법이 있나요?
수식은 수식 편집기에서 전통적인 포인트 앤 클릭으로 생성되었으며 JSL 코드를 사용하지 않는다고 가정하겠습니다. 따라서 예를 들어 열 참조를 확인하기 위해 수식에서 Parse()를 사용하는 JSL 코드는 범위를 벗어납니다. 하지만 그렇게도 할 수 있다면 좋을 것 같아요
.
다음은 몇 가지 아이디어를 줄 수 있는 몇 가지 게시물입니다. 헤드 인수 재귀 공식 (문자열 변환을 피하기 위해 이와 같은 것을 사용합니다), JSL 코드에서 수식에 사용되는 열 이름을 자동으로 추출하는 방법은 무엇입니까?