summaryrefslogtreecommitdiff
path: root/src/GF/Source/LexGF.x
diff options
context:
space:
mode:
authorbringert <unknown>2005-05-25 09:41:59 +0000
committerbringert <unknown>2005-05-25 09:41:59 +0000
commit65bc1948d4ebb432836996bee5dba246905c154a (patch)
treea8f54052eea58db0579443925d008ca08a79415a /src/GF/Source/LexGF.x
parent4690a235381d5d28ac6a62a378f42f864821aca4 (diff)
Added support for list categories.
Diffstat (limited to 'src/GF/Source/LexGF.x')
-rw-r--r--src/GF/Source/LexGF.x34
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)