2011-03-02 4 views
0

FSharp Lexer의 패턴에서 유니 코드 문자를 지정하는 올바른 방법은 무엇입니까? 다음 코드 은 FsLex.exe 유틸리티를 사용하여 컴파일되지 않은 : 내가 잘못 무엇fslex의 패턴에서 유니 코드 문자를 지정하는 방법

let lexeme lexbuf = LexBuffer<char>.LexemeString lexbuf 
... 
rule tokenize = parse 

| ['a'-'z' 'A'-'Z'] { TOKEN1 } 
| [\u0100\u0101] { TOKEN2 } 
| [\u0102-\u01FF] { TOKEN3 } 
... 
| [eof]    { EOF } 

?

P.S : 나는 --unicode 옵션을

감사를 fslex.exe 사용하고, 비탈리

+0

확실하지가 도움이되지만 여기에 파일 lex.fsl'은 F #'을보고 시도 할 수있는 경우 : https://github.com/fsharp/fsharp/blob/master/src/fsharp/lex.fsl –

+0

니스 함께 일하는 예. 실수가없는 인용문을 발견했습니다. 해결책은 '[u0100'- '\ u01FF'] 다음에 사용하는 것입니다. – Vitaliy

+0

@Tomas : 또 다른 관찰 - 너무 넓은 범위 [ '\ u0100'- '\ uFFFF']를 지정하면 컴파일에 더 많은 시간이 걸리고 컴파일 된 lexer.fs 파일은 수십 MB만큼 큽니다. 어떤 경우에는 '\ Ll', '\ Lu'등의 특정 문자를 사용할 수 있습니다. - [msdn] (http://msdn.microsoft.com/en-us/library/20bw873z.aspx#Y11856) – Vitaliy

답변

2

나는 그냥 일반 F # 코드에서와 같이 작은 따옴표로 유니 코드 문자를 넣어야 할 것 같아요.

적어도 내가 테스트 한 작은 예제에서는 효과가있는 것 같습니다.

+0

네, 고마워요. 나는 이것도 시도해 봤는데, 저에게 효과적입니다. – Vitaliy

관련 문제