Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
case проверяет можно ли привести объект (результат выражения) к типу и если да, то выполняет выражение после стрелки.
{-# Language TemplateHaskell, QuasiQuotes, FlexibleContexts #-}
module PeggyTest (
test
) where
import Text.Peggy
import Data.Word
[peggy|
file :: [(Word32, Word32)] = ranges !.
ranges :: [(Word32, Word32)]
= ips* { $1 }
ips :: (Word32, Word32)
= ip ',' ip { ($1, $2) }
ip :: Word32
= byte "." byte "." byte "." byte { $1 * 256 * 256 * 256 + $2 * 256 * 256 + $3 * 256 + $4 }
byte ::: Word32
= [0] { 0 }
/ [1-9] [0-9]* { read ($1 : $2) }
|]
test :: IO ()
test = print $ parseString file "test" "0.0.0.0,255.255.255.255 192.168.0.3,192.168.1.13"
Разрабатываем компилятор для учебного языка Cool на языке C# под .NET (Часть 1)