문제

C가 떠있는 C에 대한 몇 가지 샘플 메인 ()이 보입니다. http://www.antlr.org/wiki/display/antlr3/five+minute+introduction+ to+antlr+3 그리고 http://www.antlr.org/api/c/index.html

불평은 AST 인 것 같습니다. 나는 그것이 무엇인지 모르고 - 실례합니다 - 내가 그것을 피할 수 있다면 원하지 않습니다.

나는 단지 Lexer & Grammar (명령의 모뎀의 경우)를 정의하고 Main ()가 자동 생성되거나 어딘가에서 잘라/붙여 넣기를 원합니다.

약간의 비틀기는 대부분의 예제가 파일에서 읽는 것처럼 보이지만, 일련의 입력 (명령에서)을 문자열로 얻을 수 있다는 것입니다.

누구든지 내가 적응할 수있는 간단한 main ()을 지적 할 수 있습니까 (그리고 그것을 적응시키기 위해 HWO를 제안 할 수도 있습니까?) 내가 아는 것을 많이 묻습니다. 죄송합니다.

도움이 되었습니까?

해결책

AST는 "초록 구문 트리"이며, AT 명령의 경우 필요하지 않습니다.

실제로 Antlr은 명령에서 구문 분석에 과잉입니다. 왜 "at"을 확인한 다음 명령을 손으로 구문 분석하지 않겠습니까? 모뎀 명령 세트는 아마도 전에 한 번도 해본 적이 없다면 antlr을 얻는 것보다 그렇게하는 것이 더 간단 할 것입니다.

"+++"이스케이프 시퀀스를 포함하여 전체 AT 명령 세트를 구현하는 경우 타이밍도 Antlr 만 사용하여 구현할 수없는 요소입니다.

의견에 대한 응답 :

ANTLR을 버그를 줄이는 도구로 보는 것은 합리적입니다. 당신의 질문에 대한 답으로 "당신은 오히려 그것을 만들어 낸 코드를 읽으시겠습니까? 나는 컨텍스트에 따라 antlr 및 핸드 코딩 된 파서를 모두 사용합니다. 이것은 내가 손으로 코딩 된 파서를 선택할 컨텍스트입니다. 몇 가지 이유 : 아마도 임베디드 애플리케이션, 비교적 간단한 (많은 명령은 복잡성과 같지 않음) Comms 프로토콜입니다. 당신은 다른 맥락을 가지고 있으며 "시도해 보는 것"을 포함한 자신의 이유가 분명합니다.

따라서 메인에 대한 다른 질문에 답하기 위해 : 예, Antlr Wiki에서 하나를 사용할 수 있습니다. 메모리 사용에서 읽습니다 antlr3NewAsciiStringInPlaceStream() 또는 antlr3NewAsciiStringCopyStream() 대신 (적절한) antlr3AsciiFileStreamNew().

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top