2009-08-25 2 views
0

저는 공식적인 방법을 사용하고 있습니다. 프로젝트 중 하나는 java를 사용하여 유한 기계 해석기를 작성하는 것입니다. 텍스트 파일에서 NFA를 읽은 다음 NFA에서 DFA로 변환해야합니다. 또한 DFA를 텍스트 파일로 출력해야합니다. 그런 다음 기호 입력을 통해 실행하여 수락 또는 거부 여부에 관계없이 결과를 보여주는 DFA를 처리합니다.유한 기계 해석기

코딩과 관련된 문제는별로 없지만 디자인에는 문제가 없습니다. 나는 그것을 구현하는 좋은 매끄러운 방법을 얻는 것을 의미합니다. 무엇을 시작해야합니까? 어떤 수업을해야합니까?

답변

1

응용 프로그램을 디자인하는 한 가지 방법은 문제를보고 솔루션을 영어로 설명하는 것입니다. 길을 따라 가면 어떤 가정을 포함하여 모든 단계를 설명하십시오. 각 단락 은 아마도이어야합니다. 매우 유사한 작업을 수행하는 메소드는 클래스 여야합니다.

그래서 답을 업데이트하여 단락 형식으로 프로그램이 수행해야하는 것을 구두로 설명 할 수 있습니까?

오, 그냥 약간의 힌트를 드리겠습니다. NFA/DFA를 단락 형식으로 설명 할 때 사진을 그리는 것처럼 설명하십시오 (나중에 "무승부"작업을 무언가로 대체 할 수 있음). , 실제 응용 프로그램에서,하지만 지금은 좋은 자리 표시 자일 수 있습니다.)

0

나는 Stream 클래스의 작동 방식을 기반으로합니다. NFA 입력 스트림과 DFA 출력 스트림을 가질 수 있습니다. 그러면 변환기 클래스는 각각의 인스턴스를 사용할 수 있습니다.

1

광산을 만드는 데 사용하는 "인코더"를 다시 쓸 수 있습니다.

필자는 유한 상태 테이블 (코드로 작성)을 사용하도록 설계했지만 구문 분석기를 아주 잘 추상화했으며 그 부분을 다시 작성할 수있었습니다. 나머지 클래스는 꽤 ​​잘 작동합니다.

http://code.google.com/p/state-machine/