mirror of
https://github.com/GrammaticalFramework/comp-syntax-gu-mlt.git
synced 2026-02-08 22:41:05 -07:00
65 lines
1.8 KiB
Python
65 lines
1.8 KiB
Python
from data_facts import *
|
|
|
|
pgffile = 'Countries.pgf'
|
|
datafile = '../data/countries.tsv'
|
|
|
|
# 0.238s
|
|
def country_facts_embedded(factsys,tuple):
|
|
countr = factsys.str2exp("CName",tuple[0])
|
|
cap = factsys.str2exp('Name',tuple.capital)
|
|
cont = factsys.str2exp('CName',tuple.continent)
|
|
curr = factsys.str2exp('Name',tuple.currency)
|
|
pop = mkInt(tuple.population)
|
|
are = mkInt(tuple.area)
|
|
|
|
factsys.grammar.embed("G")
|
|
import G
|
|
object = G.NameObject(G.cName(countr))
|
|
|
|
return [
|
|
G.AttributeFact(G.capital_Attribute, object, G.NameValue(cap)),
|
|
G.AttributeFact(G.area_Attribute, object, G.IntValue(are)),
|
|
G.populationFact(countr, pop),
|
|
G.continentFact(countr, cont),
|
|
G.AttributeFact(G.currency_Attribute, object, G.NameValue(curr))
|
|
]
|
|
|
|
# 0.367s
|
|
def country_facts_parsed(factsys,tuple):
|
|
countr = factsys.data2lin("CName",tuple[0])
|
|
cap = factsys.data2lin('Name',tuple.capital)
|
|
cont = factsys.data2lin('CName',tuple.continent)
|
|
curr = factsys.data2lin('Name',tuple.currency)
|
|
pop = mkInt(tuple.population)
|
|
are = mkInt(tuple.area)
|
|
|
|
return [ factsys.str2exp('Fact',s) for s in
|
|
[
|
|
"the capital of {} is {}".format(countr,cap),
|
|
"the area of {} is {}".format(countr,are),
|
|
"{} has {} inhabitants".format(countr,pop),
|
|
"{} is in {}".format(countr, cont),
|
|
"the currency of {} is {}".format(countr,are)
|
|
]
|
|
]
|
|
|
|
def countries_facts(factsys,cs):
|
|
return [t for c in cs for t in country_facts_embedded(factsys,c)]
|
|
|
|
def mkInt(s):
|
|
return pgf.readExpr(str(s))
|
|
|
|
def main():
|
|
gr = pgf.readPGF('Countries.pgf')
|
|
|
|
factsys = FactSystem(
|
|
'country capital area population continent currency',
|
|
gr,
|
|
'CountriesEng'
|
|
)
|
|
factsys.run(datafile, countries_facts)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|