mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-15 15:59:32 -06:00
making apply_transfer work
This commit is contained in:
@@ -357,21 +357,18 @@ stateGrammarOfLang :: ShellState -> Language -> StateGrammar
|
||||
stateGrammarOfLang st0 l = StGr {
|
||||
absId = err (const (identC "Abs")) id $ M.abstractOfConcrete allCan l, ---
|
||||
cncId = l,
|
||||
grammar = can,
|
||||
grammar = allCan,
|
||||
cf = maybe emptyCF id (lookup l (cfs st)),
|
||||
mcfg = maybe [] id $ lookup l $ mcfgs st,
|
||||
cfg = maybe [] id $ lookup l $ cfgs st,
|
||||
pInfo = maybe (Prs.buildPInfo [] []) id $ lookup l $ pInfos st,
|
||||
morpho = maybe emptyMorpho id (lookup l (morphos st)),
|
||||
probs = maybe emptyProbs id (lookup l (probss st)),
|
||||
loptions = errVal noOptions $ lookupOptionsCan can
|
||||
loptions = errVal noOptions $ lookupOptionsCan allCan
|
||||
}
|
||||
where
|
||||
st = purgeShellState $ st0 {concrete = Just l}
|
||||
st = purgeShellState $ errVal st0 $ changeMain (Just l) st0
|
||||
allCan = canModules st
|
||||
can = allCan
|
||||
---- can = M.partOfGrammar allCan
|
||||
---- (l, maybe M.emptyModInfo id (lookup l (M.modules allCan)))
|
||||
|
||||
grammarOfLang :: ShellState -> Language -> CanonGrammar
|
||||
cfOfLang :: ShellState -> Language -> CF
|
||||
@@ -413,6 +410,7 @@ stateAbstractGrammar st = StGr {
|
||||
|
||||
globalOptions :: ShellState -> Options
|
||||
allLanguages :: ShellState -> [Language]
|
||||
allTransfers :: ShellState -> [Ident]
|
||||
allCategories :: ShellState -> [G.Cat]
|
||||
allStateGrammars :: ShellState -> [StateGrammar]
|
||||
allStateGrammarsWithNames :: ShellState -> [(Language, StateGrammar)]
|
||||
@@ -421,7 +419,9 @@ allActiveStateGrammarsWithNames :: ShellState -> [(Language, StateGrammar)]
|
||||
allActiveGrammars :: ShellState -> [StateGrammar]
|
||||
|
||||
globalOptions = gloptions
|
||||
allLanguages = map (fst . fst) . concretes
|
||||
--allLanguages = map (fst . fst) . concretes
|
||||
allLanguages = M.allConcreteModules . canModules
|
||||
allTransfers = map fst . transfers
|
||||
allCategories = map fst . allCatsOf . canModules
|
||||
|
||||
allStateGrammars = map snd . allStateGrammarsWithNames
|
||||
|
||||
@@ -35,7 +35,8 @@ module GF.Infra.Modules (
|
||||
lookupModule, lookupModuleType, lookupModMod, lookupInfo,
|
||||
allModMod, isModAbs, isModRes, isModCnc, isModTrans,
|
||||
sameMType, isCompilableModule, isCompleteModule,
|
||||
allAbstracts, greatestAbstract, allResources, greatestResource, allConcretes
|
||||
allAbstracts, greatestAbstract, allResources,
|
||||
greatestResource, allConcretes, allConcreteModules
|
||||
) where
|
||||
|
||||
import GF.Infra.Ident
|
||||
@@ -391,3 +392,8 @@ greatestResource gr = case allResources gr of
|
||||
allConcretes :: Eq i => MGrammar i f a -> i -> [i]
|
||||
allConcretes gr a =
|
||||
[i | (i, ModMod m) <- modules gr, mtype m == MTConcrete a, isCompleteModule m]
|
||||
|
||||
-- | all concrete modules for any abstract
|
||||
allConcreteModules :: Eq i => MGrammar i f a -> [i]
|
||||
allConcreteModules gr =
|
||||
[i | (i, ModMod m) <- modules gr, MTConcrete _ <- [mtype m], isCompleteModule m]
|
||||
|
||||
@@ -51,6 +51,7 @@ txtHelpFile =
|
||||
"\n .gfe example-based grammar files (only with the -ex option)" ++
|
||||
"\n .ebnf Extended BNF format" ++
|
||||
"\n .cf Context-free (BNF) format" ++
|
||||
"\n .trc TransferCore format" ++
|
||||
"\n options:" ++
|
||||
"\n -old old: parse in GF<2.0 format (not necessary)" ++
|
||||
"\n -v verbose: give lots of messages " ++
|
||||
@@ -219,6 +220,15 @@ txtHelpFile =
|
||||
"\n p -cat=S -mcfg \"jag är gammal\" -- parse an S with the MCFG" ++
|
||||
"\n rf examples.txt | p -lines -- parse each non-empty line of the file" ++
|
||||
"\n" ++
|
||||
"\nat, apply_transfer: at (Module.Fun | Fun)" ++
|
||||
"\n Transfer a term using Fun from Module, or the topmost transfer" ++
|
||||
"\n module. Transfer modules are given in the .trc format. They are" ++
|
||||
"\n shown by the 'po' command." ++
|
||||
"\n flags:" ++
|
||||
"\n -lang typecheck the result in this lang instead of default lang" ++
|
||||
"\n examples:" ++
|
||||
"\n p -lang=Cncdecimal \"123\" | at num2bin | l -- convert dec to bin" ++
|
||||
"\n" ++
|
||||
"\ntt, test_tokenizer: tt String" ++
|
||||
"\n Show the token list sent to the parser when String is parsed." ++
|
||||
"\n HINT: can be useful when debugging the parser." ++
|
||||
@@ -588,6 +598,7 @@ txtHelpFile =
|
||||
"\n -printer=unpar a gfc grammar with parameters eliminated" ++
|
||||
"\n -printer=functiongraph abstract syntax functions in 'dot' format" ++
|
||||
"\n -printer=typegraph abstract syntax categories in 'dot' format" ++
|
||||
"\n -printer=transfer Transfer language datatype (.tr file format)" ++
|
||||
"\n -printer=gfcm M gfcm file (default for pm)" ++
|
||||
"\n -printer=header M gfcm file with header (for GF embedded in Java)" ++
|
||||
"\n -printer=graph M module dependency graph in 'dot' (graphviz) format" ++
|
||||
|
||||
@@ -124,6 +124,7 @@ testValidFlag :: ShellState -> Command -> OptFunId -> String -> Err ()
|
||||
testValidFlag st co f x = case f of
|
||||
"cat" -> testIn (map prQIdent_ (allCategories st))
|
||||
"lang" -> testIn (map prt (allLanguages st))
|
||||
"transfer" -> testIn (map prt (allTransfers st))
|
||||
"res" -> testIn (map prt (allResources (srcModules st)))
|
||||
"number" -> testN
|
||||
"printer" -> case co of
|
||||
@@ -181,6 +182,7 @@ optionsOfCommand co = case co of
|
||||
CGenerateTrees -> both "metas" "atoms depth alts cat lang number"
|
||||
CPutTerm -> flags "transform number"
|
||||
CWrapTerm _ -> opts "c"
|
||||
CApplyTransfer _ -> flags "lang transfer"
|
||||
CMorphoAnalyse -> both "short" "lang"
|
||||
CTestTokenizer -> flags "lexer"
|
||||
CComputeConcrete _ -> flags "res"
|
||||
|
||||
11
src/HelpFile
11
src/HelpFile
@@ -22,6 +22,7 @@ i, import: i File
|
||||
.gfe example-based grammar files (only with the -ex option)
|
||||
.ebnf Extended BNF format
|
||||
.cf Context-free (BNF) format
|
||||
.trc TransferCore format
|
||||
options:
|
||||
-old old: parse in GF<2.0 format (not necessary)
|
||||
-v verbose: give lots of messages
|
||||
@@ -190,6 +191,15 @@ p, parse: p String
|
||||
p -cat=S -mcfg "jag är gammal" -- parse an S with the MCFG
|
||||
rf examples.txt | p -lines -- parse each non-empty line of the file
|
||||
|
||||
at, apply_transfer: at (Module.Fun | Fun)
|
||||
Transfer a term using Fun from Module, or the topmost transfer
|
||||
module. Transfer modules are given in the .trc format. They are
|
||||
shown by the 'po' command.
|
||||
flags:
|
||||
-lang typecheck the result in this lang instead of default lang
|
||||
examples:
|
||||
p -lang=Cncdecimal "123" | at num2bin | l -- convert dec to bin
|
||||
|
||||
tt, test_tokenizer: tt String
|
||||
Show the token list sent to the parser when String is parsed.
|
||||
HINT: can be useful when debugging the parser.
|
||||
@@ -559,6 +569,7 @@ q, quit: q
|
||||
-printer=unpar a gfc grammar with parameters eliminated
|
||||
-printer=functiongraph abstract syntax functions in 'dot' format
|
||||
-printer=typegraph abstract syntax categories in 'dot' format
|
||||
-printer=transfer Transfer language datatype (.tr file format)
|
||||
-printer=gfcm M gfcm file (default for pm)
|
||||
-printer=header M gfcm file with header (for GF embedded in Java)
|
||||
-printer=graph M module dependency graph in 'dot' (graphviz) format
|
||||
|
||||
Reference in New Issue
Block a user