mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-24 03:52:50 -06:00
support for multi-character string literals
This commit is contained in:
@@ -5,9 +5,9 @@
|
|||||||
-- Stability : (stable)
|
-- Stability : (stable)
|
||||||
-- Portability : (portable)
|
-- Portability : (portable)
|
||||||
--
|
--
|
||||||
-- > CVS $Date: 2005/02/24 11:46:38 $
|
-- > CVS $Date: 2005/04/04 15:50:27 $
|
||||||
-- > CVS $Author: peb $
|
-- > CVS $Author: aarne $
|
||||||
-- > CVS $Revision: 1.17 $
|
-- > CVS $Revision: 1.18 $
|
||||||
--
|
--
|
||||||
-- From internal source syntax to BNFC-generated (used for printing).
|
-- From internal source syntax to BNFC-generated (used for printing).
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
@@ -145,6 +145,8 @@ trt trm = case trm of
|
|||||||
Q t l -> P.EQCons (tri t) (tri l)
|
Q t l -> P.EQCons (tri t) (tri l)
|
||||||
QC t l -> P.EQConstr (tri t) (tri l)
|
QC t l -> P.EQConstr (tri t) (tri l)
|
||||||
TSh (TComp ty) cc -> P.ETTable (trt ty) (map trCases cc)
|
TSh (TComp ty) cc -> P.ETTable (trt ty) (map trCases cc)
|
||||||
|
TSh (TTyped ty) cc -> P.ETTable (trt ty) (map trCases cc)
|
||||||
|
TSh (TWild ty) cc -> P.ETTable (trt ty) (map trCases cc)
|
||||||
T (TTyped ty) cc -> P.ETTable (trt ty) (map trCase cc)
|
T (TTyped ty) cc -> P.ETTable (trt ty) (map trCase cc)
|
||||||
T (TComp ty) cc -> P.ETTable (trt ty) (map trCase cc)
|
T (TComp ty) cc -> P.ETTable (trt ty) (map trCase cc)
|
||||||
T (TWild ty) cc -> P.ETTable (trt ty) (map trCase cc)
|
T (TWild ty) cc -> P.ETTable (trt ty) (map trCase cc)
|
||||||
|
|||||||
@@ -5,9 +5,9 @@
|
|||||||
-- Stability : (stable)
|
-- Stability : (stable)
|
||||||
-- Portability : (portable)
|
-- Portability : (portable)
|
||||||
--
|
--
|
||||||
-- > CVS $Date: 2005/02/24 11:46:39 $
|
-- > CVS $Date: 2005/04/04 15:50:27 $
|
||||||
-- > CVS $Author: peb $
|
-- > CVS $Author: aarne $
|
||||||
-- > CVS $Revision: 1.10 $
|
-- > CVS $Revision: 1.11 $
|
||||||
--
|
--
|
||||||
-- lexers = tokenizers, to prepare input for GF grammars. AR 4\/1\/2002.
|
-- lexers = tokenizers, to prepare input for GF grammars. AR 4\/1\/2002.
|
||||||
-- an entry for each is included in 'Custom.customTokenizer'
|
-- an entry for each is included in 'Custom.customTokenizer'
|
||||||
@@ -38,15 +38,23 @@ tokWords :: String -> [CFTok]
|
|||||||
tokWords = map tS . words
|
tokWords = map tS . words
|
||||||
|
|
||||||
tokLits :: String -> [CFTok]
|
tokLits :: String -> [CFTok]
|
||||||
tokLits = map mkCFTok . words
|
tokLits = map mkCFTok . mergeStr . words where
|
||||||
|
mergeStr ss = case ss of
|
||||||
|
w@(c:_):rest | elem c "\'\"" -> getStr [w] rest
|
||||||
|
w :rest -> w : mergeStr rest
|
||||||
|
[] -> []
|
||||||
|
getStr v ss = case ss of
|
||||||
|
w@(_:_):rest | elem (last w) "\'\"" -> (unwords (reverse (w:v))) : mergeStr rest
|
||||||
|
w :rest -> getStr (w:v) rest
|
||||||
|
[] -> reverse v
|
||||||
|
|
||||||
tokVars :: String -> [CFTok]
|
tokVars :: String -> [CFTok]
|
||||||
tokVars = map mkCFTokVar . words
|
tokVars = map mkCFTokVar . words
|
||||||
|
|
||||||
mkCFTok :: String -> CFTok
|
mkCFTok :: String -> CFTok
|
||||||
mkCFTok s = case s of
|
mkCFTok s = case s of
|
||||||
'"' :cs@(_:_) -> tL $ init cs
|
'"' :cs@(_:_) | last cs == '"' -> tL $ init cs
|
||||||
'\'':cs@(_:_) -> tL $ init cs --- 's Gravenhage
|
'\'':cs@(_:_) | last cs == '\'' -> tL $ init cs --- 's Gravenhage
|
||||||
_:_ | all isDigit s -> tI s
|
_:_ | all isDigit s -> tI s
|
||||||
_ -> tS s
|
_ -> tS s
|
||||||
|
|
||||||
@@ -152,7 +160,7 @@ unknown2string isKnown = map mkOne where
|
|||||||
mkOne t@(TS s)
|
mkOne t@(TS s)
|
||||||
| isKnown s = t
|
| isKnown s = t
|
||||||
| all isDigit s = tI s
|
| all isDigit s = tI s
|
||||||
| otherwise = tV s
|
| otherwise = tL s
|
||||||
mkOne t@(TC s) = if isKnown s then t else mkTL s
|
mkOne t@(TC s) = if isKnown s then t else mkTL s
|
||||||
mkOne t = t
|
mkOne t = t
|
||||||
|
|
||||||
@@ -163,7 +171,6 @@ unknown2var isKnown = map mkOne where
|
|||||||
| isKnown s = t
|
| isKnown s = t
|
||||||
| all isDigit s = tI s
|
| all isDigit s = tI s
|
||||||
| otherwise = tV s
|
| otherwise = tV s
|
||||||
mkOne t@(TS s) = if isKnown s then t else tV s
|
|
||||||
mkOne t@(TC s) = if isKnown s then t else tV s
|
mkOne t@(TC s) = if isKnown s then t else tV s
|
||||||
mkOne t = t
|
mkOne t = t
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user