forked from GitHub/gf-core
Fix handling of external categories in SRG generation.
This commit is contained in:
@@ -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 '>'
|
||||
|
||||
Reference in New Issue
Block a user