나는 포함 된 주석이 허용되는 언어를 이해할 수있는 프로그램을 작성하려고합니다. 예를 들면 :구문 분석 할 때 alex와 함께 monadUserState를 사용하려면 무엇을 추가해야합니까?
/* Here's a comment
/* This comment is further embedded */ second comment is closed
Must close first comment */
이 주석으로 인식되어야한다 (그것은 단지 이전에 개방 한 코멘트를 보았다하지 않는 한 같은 최초의 *에서 멈추지/그것은 본다).
C에서 수정하기가 쉬운 문제 일 수 있습니다. 주석을 보았을 때 증가하는 카운터를 가질 수 있으며, 주석을 닫을 때 카운터가 감소합니다. 카운터가 0이면 "코드 섹션"에 들어갑니다.
그러나 하스켈에 상태가 없으면 조금 더 어려워집니다.
필자는이 정확한 파싱 유형에 대한 상태를 추적 할 수있는 monadUserState를 읽었습니다. 나는 그것이 내가 직접 "기본"으로 변경 주목해야한다
templates\wrappers.hs:213:16: Not in scope: `alexEOF`
오류를 제공 컴파일 할 때 그러나, 나는 옆 tutorial page on alex.
에서 그것에 매우 독서 자료를 찾을 수 없습니다 "monadUserState"래퍼 내 코드를 변경하지 않고 (나는 그것을 사용하기 위해 무엇을 추가 해야할지 모르겠다). 이것이 사용자 코드에서 초기화해야한다고 말한다 :
data AlexState = AlexState {
alex_pos :: !AlexPosn, -- position at current input location
alex_inp :: String, -- the current input
alex_chr :: !Char, -- the character before the input
alex_bytes :: [Byte], -- rest of the bytes for the current char
alex_scd :: !Int, -- the current startcode
alex_ust :: AlexUserState -- AlexUserState will be defined in the user program
}
나는 lexxing 멍청한 놈의 비트와 나는 전혀 나는 그것이 적어도 컴파일하기 위해 여기에 추가해야 모르겠어요 .. 그때 나는 그 물건의 논리에 대해 걱정할 수 있습니다.
답장을 보내 주셔서 감사합니다. 이 응답에 넣은 시간과 노력에 감사드립니다. 그것은 나에게 많은 도움이되었습니다. – Aserian