여러줄로 나눠쓰기 위한 "\" (역슬래쉬)
글쓴이: futari / 작성시간: 월, 2004/08/02 - 6:06오후
소스코드나 등등에서 한줄로 쓸걸 두줄 이상으로 쓰기 위해서
역슬래시를 쓰는 경우가 종종 있는데요,
이 경우에 내부적으로는 어떻게 처리되는 것일까요?
"역슬래쉬엔터" => "\\r\n" 이거나 "\\n" 으로 들어갈텐데...
파서에서 역슬래쉬가 두개 나올때 처리해주는 건가요?
그냥 그러기엔 약간의 다른 상황들도 있을 듯 한데...
파서에서 저런거 구현할땐 어떻게 하나요?
저런건 안해봐서...
"따옴표에 묶이지 않았을 때에 역슬래쉬엔터는 없었던 일로 한다" -_-;; 이런걸까요?
Forums:
정확한 건 잘 모르겠지만요.Lexer가 알아서 할 것 같네요.Pa
정확한 건 잘 모르겠지만요.
Lexer가 알아서 할 것 같네요.
Parser까지 넘어갈 필요가 없을듯요.
[quote="vacancy"]정확한 건 잘 모르겠지만요.Lexer가
아.. 그거야 원론적인 이야기고 당연한거지만 ㅡㅡ;;
제 말은 tokenize 할때 저걸 어떻게 처리할까 하는 이야기지요.
물론 tokenize는 일반적으로 lexer가 하겠지만요.
저기 파서는 그냥 analyzer + processor를 통칭한거죠.
잘 몰라서 질문하면서 어쩌구 저쩌구 해봤자 ^^;;
여하튼 답변 감사드리구요 ^^;
아무래도 해보신 분은 없나보니 ㅜ.ㅜ
시간날때 소스나 뒤져봐야겠네요. ^^;
혹 알게되면 다시 댓글 달겠습니다~
-------------------------
The universe is run by the complex interweaving of three elements: matter, energy, and enlightened self-interest.
- G'kar, Babylon 5
음... 제가 정확히 질문을 다 이해한 것은 아니지만 아마 이해를 잘못
음... 제가 정확히 질문을 다 이해한 것은 아니지만 아마 이해를 잘못 하고 계신 듯 합니다.
특히 이 부분을 보건데요....^^;
역슬래시 & 엔터가 입력되면 파서에서 "\\n"의 세 개의 문자가 입력되는 것이 아니라 '\'과 '\n'이라는 두 가지의 문자가 입력되는 것입니다. newline을 의미하는 \n은 눈에 보이지 않는 invisible 문자를 이해하기 쉽도록 표시한 것에 불과합니다.
그러므로 역슬래시 두 개가 온 상황이 절대 아닌 것이죠.
제 생각엔 역슬래시는 escape 캐릭터로 쓰이므로 \뒤에 blank character가 온다면(다른 문자가 오지 않는다면) line concatenation으로 처리해 주는 것 같습니다.
다시 말하면 그다지 크게 복잡한 일은 아닌 것 같네요 ㅡ.ㅡ;;
노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5
맞습니다 /n 는 뉴라인이고/ 는 역슬래쉬입니다.글구 렉스
맞습니다
/n 는 뉴라인이고
/ 는 역슬래쉬입니다.
글구 렉스는 인식만 하구 토큰을 넘겨주면 약에서 문법을 처리 하는거니까
어떠한 문법이 쭈루룩 오다가 다 끝마치지 도 않았는데 역슬래쉬 나오고
뉴라인 하면, 그다음 내용의 문법이 이어진다고 처리 할수도 있고.
아예 역슬래쉬 하고 뉴라인 같이 오면 토큰을 약에 아예 넘겨주지 않으면
약은 계속 연결된것으로 알아 먹습니다.
어차피 넘겨주지 않으니까 뉴라인이 되었는지안되었는지 모르죠.
[quote="mancord"]맞습니다 /n 는 뉴라인이고/ 는
\입니다. 이게 멉니까! 슬래쉬 나파요~
-------------------------------
== warning 대부분 틀린 얘기입니다 warning ===
Re: 여러줄로 나눠쓰기 위한 "\" (역슬래쉬)
역슬래쉬 두개라는건 역슬래시 뒤에 오는 escape 문자들을 -_-;;;
저도 lexer와 parser는 작성해 본 적이 있습니다. 간단하게나마 IO, if, for, while, repeat등등까지를 처리하는 인터프리터는 작성해봤습니다.
근데 코드를 줄 넘어가게 쓰는걸 생각 해본적이 없어서요.
궁금해 했던건 문자열이나 기타 코드에서도 \\n이 사용될 수 있는 부분들이 있을텐데, ambiguous 하지 않게 처리하는 논리가 무엇일까 하는 것이었습니다.
역슬래시 치고 엔터 치는 경우를 이야기 하고 있었는데
역슬래시 두개.. 라는 말에 꼬리를 다심은 좀 -_-;;
그럼 역슬래시 두개만 무시하면 'n'은 남는다는 말이었겠습니까 ;
말씀하신 대로 \n이라고 적은건 newline을 표시하기 위한 것이었으니까요.
위와같이 처리하면 될거 같긴 하네요. : )
-------------------------
The universe is run by the complex interweaving of three elements: matter, energy, and enlightened self-interest.
- G'kar, Babylon 5
질문에 답변이 맞을지 모르겠지만, 말씀하신 내용은 파서가 하지 않은것
질문에 답변이 맞을지 모르겠지만,
말씀하신 내용은 파서가 하지 않은것 같은데요,,
구문분석기가 처리하는것으로 알고 있습니다.
댓글 달기