Lexer for Lambda Calculator 컴퓨터

Lambda Calculus에 기반한 함수형 언어 Haskell을 이용하여 Lambda Calculator Lexer를 만들어보겠다.

lexer :: [Char] -> [Char] -> [[Char]]
lexer token [] =
    if token == []
    then []
    else [token]
lexer token (' ':xs) =
    if token == []
    then lexer [] xs
    else [token] ++ (lexer [] xs)
lexer token (x:xs) =
    if ([ a | a<-"\\.+-*/()", a==x]==[])
    then -- constructing identifier
        if token == []
        then lexer [x] xs
        else lexer (token++[x]) xs
    else -- add an operator
        if token == []
        then [[x]] ++ (lexer [] xs)
        else [token]++[[x]] ++ (lexer [] xs)

이를테면 다음과 같은 실행 결과를 얻을 수 있다.

*Main> lexer [] "\\f x. f (plus x) 0"
["\\","f","x",".","f","(","plus","x",")","0"]


트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://totohero.egloos.com/tb/948545 [도움말]

덧글

덧글 입력 영역