2014-10-22 2 views
0

공구 이동nc 프로그램을 입력으로 사용하여 추적 할 가능성을 평가 중입니다. 다른 프로그램 유형을 메타 레이어로 토큰 화하기 위해 렉서를 사용하면 균일 한 도구와 점만 존재하는 것이 좋은 생각처럼 보입니다.CAD NC 프로그램 용 Lexer

그러나,

  • 내가 어휘 분석에 대해 아무것도 몰라. 렉서를 만드는 쉬운 방법이 있습니까? 어쩌면 EBNF에서 나왔을까요?
  • 내 접근 방식에 대해 어떻게 생각합니까? 더 많은 데이터를 추출하고 여러 개의 nc 파일 형식을 지원하는 더 효과적인 방법이 있습니까?

추가 정보

  • NC 프로그램의 구체적인 형식이 미리 공지되어 제공되는 정보.
  • NC 프로그램 구문을 확인할 필요가 없습니다. 나는 그것들이 이미 프로덕션 환경에서 사용되고 있기 때문에 유효하다고 생각한다.
+0

기본적으로 특정 구현 문제가 있습니다. 이런 종류의 질문에 대한 더 나은 사이트는 [Programmers.SE] (http://programmers.stackexchange.com/) 일 수 있습니다. – Seki

+0

CAD 관련 스택 교환 네트워크가 없습니다. 대부분의 CAD 관련 질문은 SO 및 수퍼 유저에게 있습니다. 게다가 SO는 "기본적으로 특정 구현 문제에 대한 것이 아니다"(cf. http://stackoverflow.com/tour – mike

답변

1

렉서를 만들기 토큰 화 명령의 입력 스트림에 유용한 방법이 될 수 있습니다. 렉서는 일반적으로 렉서 제너레이터에 세트 또는 정규 표현식을 제공하여 생성 할 수 있습니다. 그러면 렉서는 해당 표현식을 사용하여 입력 문자열을 일치시키고 일치하는 텍스트와 일치하는 토큰을 돌려줍니다. JFlex는 렉서 생성기의 합리적인 선택입니다.

EBNF는 파서를 만드는 데 사용되며, 사용자가 필요로하는 것이거나 그렇지 않을 수도 있습니다. 구문 분석기는 토큰 스트림에서 구문 트리를 작성하기 위해 일반적으로 렉서의 상단에 구축됩니다. 렉서는 "A 토큰 뒤에 토큰 B 또는 C가 와야합니다."와 같은 규칙을 사용할 수 없지만 파서가됩니다. 자바에는 여러 가지 파서 생성기가 있으며, 각각 장단점이 있습니다. ANTLR은 고려해 볼만한 안정적인 프로그램입니다.

여러 형식을 지원하려면 해당 경로를 따라 가서 올바른 언어 렉서에 텍스트를 일치 시키려면 다른 렉서 또는 파서를 생성해야합니다.

+0

답변을위한 Thx! 그래서 나는 올바른 방향으로 향했다. 질문에 몇 가지 추가 정보를 추가하겠습니다. – mike