From ecd059454756f32c6a4b2375101abb140163901d Mon Sep 17 00:00:00 2001 From: bringert Date: Wed, 8 Dec 2004 13:21:40 +0000 Subject: Generated GF and GFC lexers with BNFC with string sharing support. --- src/GF/Source/LexGF.x | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) (limited to 'src/GF/Source/LexGF.x') diff --git a/src/GF/Source/LexGF.x b/src/GF/Source/LexGF.x index e249f1705..72431c578 100644 --- a/src/GF/Source/LexGF.x +++ b/src/GF/Source/LexGF.x @@ -1,10 +1,10 @@ -- -*- haskell -*- -- This Alex file was machine-generated by the BNF converter --- Lines with -- H have been hacked for greater performance { module LexGF where -import SharedString -- H + import ErrM +import SharedString } @@ -23,27 +23,30 @@ $u = [\0-\255] -- universal: any character "{-" ([$u # \-] | \- [$u # \}])* ("-")+ "}" ; $white+ ; -@rsyms { tok (\p s -> PT p (TS $ shareString s)) } -- H -\' ($u # \')* \' { tok (\p s -> PT p (eitherResIdent (T_LString . shareString) s)) } -- H +@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 . shareString) s)) } -- H -\" ([$u # [\" \\ \n]] | (\\ (\" | \\ | \' | n | t)))* \"{ tok (\p s -> PT p (TL $ shareString $ unescapeInitTail s)) } -- H +$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 -- H - | TL !String -- string literals -- H - | TI String -- integer literals - | TV !String -- identifiers -- H - | TD String -- double precision float literals - | TC String -- character literals - | T_LString !String -- H + 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) -- cgit v1.2.3