# KEHOME/doc/MKRgrammar.html
# Aug/31/2005
MKR grammar
MKR grammar
version 7.0
knowledge := man do identify od existent done;
knit is knowledge with view; # knowledge unit
knit haspart proposition list;
proposition ::=
context { proposition list } ;
context ;
sentence
context ::=
at stvlist
stvlist ::=
space=s,time=t,view=v # v is name of knit
sentence ::=
statement
question
command
assignment
product := producer
{ proposition list }
statement ::=
definition
group
control statement
subject is object; # identity, i.e. alias
subject rel relation=value; # binary relation
subject isin relation=infon; # n-ary relation
subject has attribute=value; # attribute
subject haspart part=value; # part
subject do action=event pplist done; # action
subject causes object; # interaction
definition ::=
concept definition
method definition
relation definition
control statement ::=
if proposition # conditional
then proposition list:1
else proposition list:2
fi;
every generator { # iteration
proposition list
};
while proposition { # iteration
proposition list
};
until proposition { # iteration
proposition list
};
exit; # exit ke
break; # exit every,while,until loop
generator ::=
subject isa object
subject iss object
subject isu object
subject isalt object
subject ismem object
subject isin object
subject from number:1 to number:2
question ::=
if statement fi; # true or false
proposition # form-based search: embedded ?
set variable = ?; # form-based search: embedded ?
command ::=
do action pplist done; # ke do action pplist done
! action pplist done; # sh do action pplist done
vdo action pplist done; # all views: ke do ... done
hdo action from concept with path done; # walk hierarchy: ke do ... done
hdo action from unit with path done; # walk hierarchy: ke do ... done
assignment ::=
set variable = value; # ke has variable = value
vset variable = value; # all views
unset variable;
return Product = value; # product of method
set .. = next; # set current genus
set . = value; # set current concept
set ... = next; # set current species|unit
concept definition ::= # genus-differentia
concept is genus with essential characteristic;
concept isa genus with essential characteristic;
species iss genus with essential characteristic;
unit isu primitive with essential characteristic;
product := entity do action pplist done; # ":=" means "is product of"
method definition ::= # user-defined command
mycmd is method with
automatic, # declarations: NONE,ISA*,ISA,ISS,ISU
separator, # default: ","
meantype, # procedure or proposition list
label=[string:1,...], # user-friendly
format=[class:1,...], # [class list] or {proposition}
meaning={ ... $1 ... }; # proposition list
relation definition ::= # user-defined relation
myrel is relation with
automatic, # declarations: NONE,ISA*,ISA,ISS,ISU
separator, # default: ","
meantype,
label=[...],
format=[...], # [class list] or {proposition}
meaning={...};
begin relation myrel; # set kformat = rel
...
arg1,...; # relstatement: infon
...
end relation myrelation; # set kformat = ku
# group
# hierarchy, unithierarchy, lattice
# directory
# relation
# triple, mcf
# utype is group unit type
# automatic ::= NONE | ISA* | ISA | ISS | ISU | ISALT | ISMEM
gtype ::=
hierarchy # isg, iss; unique genus
unithierarchy # isp, isu; unique genus
directory # isg, iss; multiple genus; isp, isu; rootname
lattice # isc, isa; multiple genus
relation # isin
triple # RDF
mcf # TAP
gtype definition ::= # user-defined gtype
myhi is gtype of utype with
automatic,
separator;
begin gtype mygroup;# set kformat = gtype
groupstatement;
...
end gtype mygroup; # set kformat = ku
# hierarchy format (also unithierarchy,lattice,directory)
begin hierarchy myhi;# set kformat = ho
honame; # hostatement: local root
...
//.../ honame; # hostatement: down hierarchy
...
\\...\ honame; # hostatement: up hierarchy
...
end hierarchy myhi; # set kformat = ku
# relation format
begin relation myrel;# set kformat = rel
arg1,arg2,...; # relstatement: null arg permitted
...
end relation myrel; # set kformat = ku
# group definition
# list, sequence, Set, multiset, enumeration
# utype is group unit type
# automatic ::= NONE | ISA* | ISA | ISS | ISU | ISALT | ISMEM
gtype ::=
list # ingroup: isall, ismem; order=space
sequence # ingroup: isall, ismem; order=time
Set # ingroup: isall, ismem; order=none
multiset # ingroup: isall, ismem; order=none, repeated units
enumeration # exgroup: isany, isalt; order=none
rel ::=
isany
isall
gtype definition ::= # user-defined gtype
mygroup is gtype of utype with
automatic,
separator;
mygroup rel # isany, isall
unit:1,
...,
unit:n;
#======================================================================#
# details of action & command format
do action pplist done ::=
do action
out action products # output: product := subject do ... done
of action domains
with action characteristics # e.g. option
od direct objects # input: argument list
from initial characteristics # e.g. input file
to final characteristics # e.g. output file
done;
#======================================================================#
# basic word, phrase, list
# NOTE: some wphrase, wplist are generalized to bphrase, bplist
product ::= phraselist | phraselist [ phraselist ]
producer ::= phraselist | phraselist [ phraselist ] | sentence
subject ::= phraselist
object ::= phraselist
argument list ::= nvlist
characteristic ::= nvlist
relation=infon ::= nvlist
attribute=value ::= nvlist
part=value ::= nvlist
variable=value ::= nvlist
action=event ::= nvlist
nvlist ::= list of nvphrase with separator=comma
pplist ::=
null
list of prepphrase with separator=whitespace
phraselist ::= list of phrase with separator=comma
bplist ::= list of bphrase with separator=comma
proposition list ::= list of proposition with separator=whitespace
nvphrase ::=
phrase nvop value
value ::=
phrase
[ phraselist ]
{ proposition list }
nvop ::=
= # assignment
+= # Set add
-= # Set delete
*= # Set intersection
prepphrase ::=
preposition prepobject
prepobject ::=
nvlist
{ proposition list }
preposition ::=
at # context: space,time,view
out # output (product)
of # domain, composition (e.g. unit type)
with # differentia (e.g. option)
od # input (direct object, argument list)
from # initial characteristic (e.g. input file)
to # final characteristic (e.g. output file)
phrase ::= list of word with separator=whitespace
qphrase ::=
phrase
quantifier phrase
bphrase ::=
qphrase
qphrase and bphrase
qphrase or bphrase
quantifier ::=
a # one
some # one or more
the # one
any # one
all
no # none
not # complement relative to existent
non # complement relative to genus
relphrase ::= list of relword with separator=whitespace
hophrase ::= list of howord with separator=whitespace
# words -- see KEHOME/src/symbol.icn
word ::= (wordchar)+
relword ::= (relchar)+
howord ::= (hochar)+
# tokens -- see KEHOME/src/token.icn
wordchar ::= &cset -- separator
relchar ::= &cset -- ',;'
hochar ::= &cset
#======================================================================#
# more reserved words
VERB ::= # see KEHOME/kb/ke.def for complete list
isa isa* isa**n # unit|species isa concept
isc isc* isc**n # concept isc unit|species
isp isp* # primitive isp unit
isu isu* # unit isu primitive
isg isg* # genus isg species
iss iss* # species iss genus
isany isany* # exgroup isany alternative
isalt isalt* # alternative isalt exgroup
isall isall* # ingroup isall member
ismem ismem* # member ismem ingroup
haspart # entity haspart part
isapart # part isapart entity
isd # concept differentiation
isi # concept integration
in # variable in concept list
conjunction ::=
";" # proposition list
"&" # and, asynchronous execution
"|" # or, pipe
and # logic
or # logic
iff # logic
implies # logic
supports # situation theory: view supports sentence
causes # event:1 causes event:2
means # symbol means concept; concept means existent
action ::= # see KEHOME/kb/tabrasa.def
mycmd # user defined method
COMMAND # ke command
identify # KEHOME/knowledge/rhm/theory/Epistemology/Identify.htm
sense # KEHOME/knowledge/rhm/theory/Epistemology/Identify.htm
measure # KEHOME/knowledge/rhm/theory/Epistemology/Identify.htm
classify # KEHOME/knowledge/rhm/theory/Epistemology/Identify.htm
live
move
COMMAND ::= # see KEHOME/kb/ke.def for complete list
menu # KE smart input menu
find # find name with wildcard
print # display concept or string
dump # display all characteristics of concept
read # file i/o
write # file i/o
ftype # file i/o
read directory # file system hierarchy i/o
write directory # file system hierarchy i/o
cd # change directory
hwalk # do action up/down hierarchy
check # check hierarchy for errors
clock # time stamp
csize # count concepts in subhierarchy
psize # count primitives in subhierarchy
usize # count units in subhierarchy
clist # list concepts in subhierarchy
plist # list primitives in subhierarchy
ulist # list units in subhierarchy
glb # greatest lower bound of concepts
lub # least uppper bound of concepts
isd # concept formation
isi # concept formation
measure # concept formation
classify # concept formation
sh # UNIX shell
pwd # UNIX command
ls # UNIX command
grep # UNIX command
vi # UNIX command
cmd # Windows shell
wfind # Windows command
notepad # Windows command
explorer # Windows file system shell
rebol # internet messaging shell
attribute ::=
variable # ke attribute
purpose
format
meaning
automatic
separator
variable ::= # see KEHOME/kb/ke.def for complete list
kformat # input format
echo # echo input proposition
kerror # input error count
hformat # output format
charformat # characteristic output format - line or column
hfocus # output concept Set
debug # extra output
kehome # install directory
keview # file system directory
MKE home