Registrácia | Prihlásiť

Počítačové zadanie: Funkcionálne a logické programovanie - Lexical

Skryť detaily | Obľúbený
Náhľady
module Lexical where

data LexSym = AddL | SubL | MulL | DivL | LparL | RparL | ValL Int

type LexSyms = [LexSym]

lexical :: String -> LexSyms
lexical cs = lexA cs []

lexA [] ss = ss
lexA (z:zs) ss | isDigit z = putVal (z:zs) ss
| z == '-' = lexA zs (ss ++ [SubL])
| z == '+' = lexA zs (ss ++ [AddL])
| z == '*' = lexA zs (ss ++ [MulL])
| z == '/' = lexA zs (ss ++ [DivL])
| z == '[' = lexA zs (ss ++ [LparL])
| z == ']' = lexA zs (ss ++ [RparL])
| z == ' ' = lexA zs ss


putVal zs ss = lexA rs (ss ++ [ValL (aToI fs)])
Hodnotenie (0x):