@@ -50,8 +50,14 @@ data FreeReturn
5050evalFree :: Free -> ParseStateM FreeReturn
5151evalFree (Discursive bt) = do
5252 ap <- getLastAttachmentPoint
53+ -- For sei, the terms in BridiTail3 are PRE-selbri terms (leading terms)
54+ -- but BridiTail3's second argument is normally TAIL terms (after selbri).
55+ -- We fix this by treating them as leading terms via parseSentence.
56+ let fixedParse = case bt of
57+ BridiTail3 sb preTerms -> parseSentence (Sentence preTerms (BridiTail3 sb [] ))
58+ _ -> parseBTail bt
5359 (FRSides SideDiscursive ap . (\ p -> [TexticuleProp p]) <$> ) $ evalParseM $
54- ($ nullArgs) <$> partiallyRunBridiM (parseBTail bt)
60+ ($ nullArgs) <$> partiallyRunBridiM fixedParse
5561evalFree (Bracketed text) = FRSides SideBracketed APBridi <$> evalText text
5662evalFree (TruthQ kau) = return $ FRTruthQ kau
5763evalFree _ = return FRIgnored
@@ -172,7 +178,9 @@ parseSelbri3 (ConnectedSB fore con sb sb') = do
172178parseSelbri3 (ScalarNegatedSB nahe sb) =
173179 mapRelsInBridi (ScalarNegatedRel nahe) <$> parseSelbri3 sb
174180parseSelbri3 (TanruUnit fs tu2 las) =
175- advanceArgPosToSelbri >> parseTU tu2 <* parseTerms las <* doFreesInParseM fs
181+ advanceArgPosToSelbri >> parseTU tu2
182+ <* liftParseStateMToParseM (setLastAttachmentPoint APSelbri )
183+ <* parseTerms las <* doFreesInParseM fs
176184 {- Alternative: give tanru units their own scope, with linkargs deleting
177185 - places. Popular amongst lo irci, though contradicts CLL:5.12.11.
178186 - TODO: make it a command-line option?
@@ -663,7 +671,11 @@ mapRelsInBridi f b = (terpProp (\r ts -> Rel (f r) ts) id id) . b
663671selbriToVPred :: Selbri -> ParseM r JboVPred
664672selbriToVPred sb = parsedSelbriToVPred $ parseSelbri sb
665673parsedSelbriToVPred :: BridiM Bridi -> ParseM r JboVPred
666- parsedSelbriToVPred m = bridiToJboVPred <$> partiallyRunSubBridiM m
674+ parsedSelbriToVPred m = do
675+ b <- partiallyRunSubBridiM m
676+ -- Set APSelbri so frees inside descriptions attach to the description's selbri
677+ liftParseStateMToParseM $ setLastAttachmentPoint APSelbri
678+ return $ bridiToJboVPred b
667679
668680parsedSelbriToNewSelbri :: BridiM Bridi -> ParseM r Bridi
669681parsedSelbriToNewSelbri m = closeBridi <$> partiallyRunSubBridiM m
0 commit comments