diff options
| author | bringert <unknown> | 2005-05-25 09:41:59 +0000 |
|---|---|---|
| committer | bringert <unknown> | 2005-05-25 09:41:59 +0000 |
| commit | 65bc1948d4ebb432836996bee5dba246905c154a (patch) | |
| tree | a8f54052eea58db0579443925d008ca08a79415a /src/GF/Source/LexGF.x | |
| parent | 4690a235381d5d28ac6a62a378f42f864821aca4 (diff) | |
Added support for list categories.
Diffstat (limited to 'src/GF/Source/LexGF.x')
| -rw-r--r-- | src/GF/Source/LexGF.x | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/src/GF/Source/LexGF.x b/src/GF/Source/LexGF.x index 6d231debb..e50eca8b7 100644 --- a/src/GF/Source/LexGF.x +++ b/src/GF/Source/LexGF.x @@ -1,9 +1,10 @@ -- -*- haskell -*- -- This Alex file was machine-generated by the BNF converter { -module LexGF where +module GF.Source.LexGF where -- H -import ErrM +import GF.Data.ErrM -- H +import GF.Data.SharedString -- H } @@ -15,34 +16,37 @@ $i = [$l $d _ '] -- identifier character $u = [\0-\255] -- universal: any character @rsyms = -- reserved words consisting of special symbols - \; | \= | \{ | \} | \( | \) | \: | \- \> | \* \* | \, | \[ | \] | \. | \| | \? | \< | \> | \@ | \! | \* | \\ | \= \> | \+ \+ | \+ | \_ | \$ | \/ | \- + \; | \= | \{ | \} | \( | \) | \: | \- \> | \* \* | \, | \[ | \] | \. | \| | \% | \? | \< | \> | \@ | \! | \* | \\ | \= \> | \+ \+ | \+ | \_ | \$ | \/ | \- :- "--" [.]* ; -- Toss single line comments "{-" ([$u # \-] | \- [$u # \}])* ("-")+ "}" ; $white+ ; -@rsyms { tok (\p s -> PT p (TS s)) } -\' ($u # \')* \' { tok (\p s -> PT p (eitherResIdent T_LString s)) } +@rsyms { tok (\p s -> PT p (TS $ share s)) } +\' ($u # \')* \' { tok (\p s -> PT p (eitherResIdent (T_LString . share) s)) } -$l $i* { tok (\p s -> PT p (eitherResIdent TV s)) } -\" ([$u # [\" \\ \n]] | (\\ (\" | \\ | \' | n | t)))* \"{ tok (\p s -> PT p (TL $ unescapeInitTail s)) } +$l $i* { tok (\p s -> PT p (eitherResIdent (TV . share) s)) } +\" ([$u # [\" \\ \n]] | (\\ (\" | \\ | \' | n | t)))* \"{ tok (\p s -> PT p (TL $ share $ unescapeInitTail s)) } -$d+ { tok (\p s -> PT p (TI s)) } +$d+ { tok (\p s -> PT p (TI $ share s)) } { tok f p s = f p s +share :: String -> String +share = shareString + data Tok = - TS String -- reserved words - | TL String -- string literals - | TI String -- integer literals - | TV String -- identifiers - | TD String -- double precision float literals - | TC String -- character literals - | T_LString String + TS !String -- reserved words + | TL !String -- string literals + | TI !String -- integer literals + | TV !String -- identifiers + | TD !String -- double precision float literals + | TC !String -- character literals + | T_LString !String deriving (Eq,Show,Ord) |
