ContentMine / ami

Apache License 2.0
13 stars 14 forks source link

Refactoring AMI and Norma into Emma #50

Open petermr opened 8 years ago

petermr commented 8 years ago

I am creating a new module which is a (currently simple) workflow for running norma and AMI jobs.

Because its function is running, the animal is an Emu (which can run 50 kph) and she's called Emma.

Emma will clean up the recent CmineParser and CMineCommand into separate modules. Currently:

petermr commented 8 years ago

The syntax of EmmaParser will be:

emma [global args] [command]*

where command is:

-c commandName [args]

and args can be

[globalArg | commandArg]*

It's trivial to write a BNF and also trivial to write the syntactic part of a parser.

an arg consists of:

[--|-]argName argValue*

So a simple but complete emma command is:

emma -p myProject -c species -t binomial -c dictionary -t disease -c word -t frequencies --stopword myStop -c summary -t datatables

This is brief enough to type at the CL, but can also be generated by RSU's new code or run by canary

Many of the commands will have defaults managed by args.xml (which is essentially a configuration file) and will become even more important . It can define symbols for the parser, constraints, and defaults.

I hope to show this working by the end of today (Saturday).

Positively the last change in command syntax. This is clean, workable by humans and machines, configurable, flexible, robust.

It will mean that for the "plugin" Foo, FooArgProcessor will be split into FooEmmaParser and FooEmmaCommand. The commands are actually declarative models and "command" may be the wrong name. The actions are inititiated by Emma running over the models.