packages feed

gf-3.6: lib/src/experimental/transfer/CountTransfer.hs

module Main where

main = interact (unlines . map changeCounts . lines)

changeCounts = unlexer . concatMap counts . lexer

lexer s = case lex s of
  (t,s2@(_:_)):_ -> t:lexer s2
  _   -> []
  
unlexer = unwords

counts t = case t of
  "UttImpPl" -> ["PrImpPl"]
  "UttImpPol" -> ["PrImpPol"]
  "UttImpSg" -> ["PrImpSg"]
  "ImpVP" -> []
  "UttQS" -> ["UttPrS","UseQCl_none"]
  "UttS" -> ["UttPrS"]
  "UttVP" -> ["UttPrVPI","InfVP_none"]
  "UseRCl" -> []
  "TTAnt" -> []
  "RelCl" -> ["RelCl_none"]
  "RelVP" -> ["RelVP_none"]
  "RelSlash" -> ["RelSlash_none"]
  "PastPartRS" -> ["PastPartAP_none"]
  "PresPartRS" -> ["PresPartAP_none"]
  "ComparAdvAdjS" -> ["ComparAdvAdjS_none"] ----
  "SubjS" -> ["AdvSubjS"] ----
  "ConjS" -> ["UseClC_none"]
  "PredVPS" -> ["UseCl_none","PredVP_none","UseVPC_none"]
  "BaseVPS" -> ["StartVPC_none"]
  "ConsVPS" -> ["ContVPC_none"]
  "BaseS" -> ["StartClC_none"]
  "ConsS" -> ["ContClC_none"]
  "PredVP" -> ["PredVP_none"]
  "AdvVP" -> ["AdvCl_none","LiftAdv"]  ---- some for Cl, some for QCl
  "AdVVP" -> ["AdvQCl_none","LiftAdV"] ---- 
  "QuestVP" -> ["QuestVP_none"]
  "QuestSlash" -> ["QuestSlash_none"]
  "QuestCl" -> ["QuestCl_none"]
  "QuestIAdv" -> ["QuestIAdv_none"]
  "QuestIComp" -> ["QuestIComp_none"]
  "UseV" -> ["UseV_none"]
  "ComplVS" -> ["ComplVS_none","UseV_s","LiftVS"]
  "ComplVQ" -> ["ComplVQ_none","UseV_q","LiftVQ"]
  "ComplVA" -> ["ComplVA_none","UseV_a","LiftVA"]
  "ComplVV" -> ["ComplVV_none","UseV_v","LiftVV","InfVP_none"]
  "ComplSlash" -> ["ComplV2_none"]
  "UseComp" -> []
  "CompAP" -> ["UseAP_none","LiftAP"]
  "CompAdv" -> ["UseAdv_none","LiftAdv"]
  "CompCN" -> ["UseCN_none","LiftCN"]
  "CompNP" -> ["UseNP_none"]
  "CompVP" -> ["UseAP_none","InfAP_none"]
  "CompQS" -> ["UseQ_none"]
  "CompS" -> ["UseS_none"]
  "SlashV2a" -> ["UseV_np","LiftV2"]
  "ComplSlashPartLast" -> ["ComplV2_none"]
  "ComplVPIVV" -> ["ComplVV_none","UseV_v","LiftVV","InfVP_none"]
  "MkVPI" -> []
  "ConjVPI" -> ["UseVPC_none"]
  "PassVPSlash" -> ["PassUseV_none","LiftV2"] ---- can be other V's
  "PassAgentVPSlash" -> ["AgentPassUseV_none","LiftV2"] ---- can be other V's
  "SlashV2S" -> ["SlashV2S_none","UseV_np_s","LiftV2S"]
  "SlashV2Q" -> ["SlashV2Q_none","UseV_np_q","LiftV2Q"]
  "SlashV2A" -> ["SlashV2A_none","UseV_np_a","LiftV2A"]
  "SlashV2V" -> ["SlashV2V_none","UseV_np_v","LiftV2V","InfVP_none"]
  "SlashVV" -> ["ComplVV_np","UseV_v","LiftVV","InfVP_none"]
  "SlashVP" -> ["PredVP_np"]
  "SlashPrep" -> ["AdvCl_np","LiftPrep"]
  "SlashVS" -> [] ----
  "AdvSlash" -> [] ----
  "UseCl" -> []
  "UseQCl" -> []
  "UseSlash" -> []

  t -> [t]