1
0
forked from GitHub/gf-core

Fix handling of external categories in SRG generation.

This commit is contained in:
bjorn
2008-06-16 15:49:17 +00:00
parent 361c6cb096
commit 395dd70f58
5 changed files with 27 additions and 13 deletions

View File

@@ -44,8 +44,10 @@ prJSGF sisr srg
comment "Generated by GF" $$
text ("grammar " ++ srgName srg ++ ";")
lang = maybe empty text (srgLanguage srg)
mainCat = rule True "MAIN" [prCat (srgStartCat srg)]
prRule (SRGRule cat rhs) = rule (isExternalCat srg cat) cat (map prAlt rhs)
mainCat = rule True "MAIN" [prCat (externalCat (srgStartCat srg))]
prRule (SRGRule cat rhs)
| isExternalCat srg cat = rule True (externalCat cat) (map prAlt rhs)
| otherwise = rule False cat (map prAlt rhs)
prAlt (SRGAlt mp n rhs) = sep [initTag, p (prItem sisr n rhs), finalTag]
where initTag | isEmpty t = empty
| otherwise = text "<NULL>" <+> t
@@ -53,8 +55,8 @@ prJSGF sisr srg
finalTag = tag sisr (profileFinalSISR n)
p = if isEmpty initTag && isEmpty finalTag then id else parens
catFormId :: String -> String
catFormId = (++ "_cat")
externalCat :: Cat -> Cat
externalCat c = c ++ "_cat"
prCat :: Cat -> Doc
prCat c = char '<' <> text c <> char '>'