작업중인 응용 프로그램이 파일 가져 오기에서 많은 양의 데이터를 입력하고 이에 따라 데이터베이스 열을 업데이트합니다. 유효성 검사를 기반으로 모든 입력 값을 처리하고 그에 따라 데이터 변환을 수행하는 사용자 정의 규칙 엔진을 고안해야합니다. 전의.초급 문법 작성 가이드
응용 프로그램의 필드 중 하나가 제품 이름입니다. 따라서 우리가 구현해야하는 규칙 중 하나는 파일의 입력 값이 소문자 인 경우 제품 이름을 소문자에서 대문자로 변환하는 것입니다. 마찬가지로, 수행해야 할 많은 텍스트/수학적 변환이 있습니다. 이러한 이유로 각 속성에 대한 규칙을 정의하고 구문 분석 한 다음 규칙을 적용하는 사용자 정의 규칙 엔진이 필요합니다.
ANTLR은 Java
의 파서 생성기 중 하나임을 알고 있습니다. 다음 쿼리에 대한 조언을 구합니다.
> 파서 생성기 작업 및 문법 구현을위한 모범 사례에 대한 일반 정보.
2>이 규칙 엔진을 완전히 설계해야하므로 아무도 내가 참조 할 수있는 샘플 규칙 엔진을 가르쳐 줄 수 있습니까? 바로 UI에서 데이터베이스 디자인에 이르기까지. 나는 데이터베이스에 대한 핵심 로직과 오라클을위한 UI, 자바에 대한 GWT를 사용하고
3> 거기에 내가 내 자신의 문법을 정의하는 경로를 따라하고 싶어하지만 자바
4>에 대한 주변의 다른 파서 생성기 및 파서 생성기 (parser generator)를 사용하여이 룰 엔진을 빌드하면, 고려해야 할 다른 접근법이 있습니까?
파일이 상당히 구조적으로 복잡하지 않으면 문법이 아마도 당신의 인생을 더 어렵게 만듭니다. 간단한 문자열 테스트, 스위치 문 등으로 충분해야합니다. – Dan
글쎄, 지금 우리가 가지고있는 규칙은 단지 시작해야한다. 내가 말했듯이, 문자열/수학적 변환이 생길 것이므로 더 복잡한 쿼리가 들어올 때 "간단한 문자열 테스트, switch 문"이 잘 확장되는지 확신 할 수 없습니다. Regex가 다음과 같이 가장 좋을지 확신하지 못합니다. 잘 –
당신이 문제를 묘사 한 방식으로, 결합 할 열을 선택하거나, 출력 열을 선택하거나,이 데이터에 대해 임의의 계산을 수행 할 때 한계가 무엇인지 명확하지 않습니다. 당신이 할 수있는 것에 대해 신뢰할 수있는 * 한계 *를 정의 할 수 없다면, Turing 가능 언어 (Java는 괜찮은 것 같습니다)의 모든 힘이 필요합니다; 모든 열과 레코드를 얻으려면 최소한 데이터 액세스 및 업데이트만으로는 SQL의 힘이 필요합니다. 무엇을 기꺼이 계산할 것인지에 대한 명확한 한계가 있습니까? 왜 다른 언어가 도움이 될 것이라고 생각하십니까? –