Allow unicode identifiers

This commit is contained in:
Jorge Acereda 2020-05-10 00:49:06 +02:00
parent 9b08b6df3c
commit c6bcd67523
2 changed files with 10 additions and 1 deletions

7
examples/unicode.carp Normal file
View File

@ -0,0 +1,7 @@
(use IO)
(def 😀 \😀)
(defn main []
(println &(str 😀))
)

View File

@ -8,6 +8,7 @@ import qualified Text.Parsec as Parsec
-- import Text.Parsec.Pos (newPos)
import qualified Data.Set as Set
import qualified Data.Map as Map
import Data.Char (ord)
import Obj
import Types
import Util
@ -223,7 +224,8 @@ symbolSegment :: Parsec.Parsec String ParseState String
symbolSegment = do sym <- Parsec.many1 validInSymbol
incColumn (length sym)
return sym
where validInSymbol = Parsec.choice [Parsec.letter, Parsec.digit, Parsec.oneOf validCharacters]
where validInSymbol = Parsec.choice [Parsec.letter, Parsec.digit, Parsec.oneOf validCharacters, highCharacters]
highCharacters = Parsec.satisfy ((> 127) . ord)
period :: Parsec.Parsec String ParseState ()
period = do Parsec.char '.'