int main(int argc, char** argv) { /* Build a new parser, 'Adjective' to recognise descriptions */ mpc_parser_t* Adjective = mpc_or(4, mpc_sym("wow"), mpc_sym("many"), mpc_sym("so"), mpc_sym("such") ); /* Build a new parser, 'Noun' to recognise things */ mpc_parser_t* Noun = mpc_or(5, mpc_sym("lisp"), mpc_sym("language"), mpc_sym("c"), mpc_sym("book"), mpc_sym("build") ); mpc_parser_t* Phrase = mpc_and(2, mpcf_strfold, Adjective, Noun, free); mpc_parser_t* Doge = mpc_many(mpcf_strfold, Phrase); /* do some parsing here... */ mpc_delete(Doge); return 0; }
int main (int argc, char** argv) { //build a parser named: "Adjective" to recognize descriptions mpc_parser_t* Adjective = mpc_or(4, mpc_sym("wow"), mpc_sym("many"), mpc_sym("so"), mpc_sym("such") ); //build a parser named: "Noun" to recognize things mpc_parser_t* Noun = mpc_or(5, mpc_sym("lisp"), mpc_sym("language"), mpc_sym("book"), mpc_sym("build"), mpc_sym("c") ); //Creating our phrase parser to combine nouns and adjectives //the mpc_and function means one thing is required AND THEN another mpc_parser_t* Phrase = mpc_and(2, mpcf_strfold, Adjective, Noun, free); //... mpc_parser_t* Doge = mpc_many(mpcf_strfold, Phrase); /*DO SOME PARSING HERE*/ mpc_delete(Doge); return 0; }
mpc_sym("wow"), mpc_sym("many"), mpc_sym("so"), mpc_sym("such") ); /* Build a new parser 'Noun to recognize' things*/ mpc_parser_t* Noun = mpc_or(5 mpc_sym("lisp"), mpc_sym("language"), mpc_sym("c"), mpc_sym("book"), mpc_sym("build") ); mpc_parser_t* Phrase = mpc_and(2, mpcf_strfold, Adjective, Noun, free); mpc_parser_t* Doge = mpc_many(mpcf_strfold, Phrase); // Natural grammar mpc_parser_t* Adjective = mpc_new("adjective"); mpc_parser_t* Noun = mpc_new("noun"); mpc_parser_t* Phrase = mpc_new("Phrase"); mpc_parser_t* Doge = mpc_new("doge"); mpca_lang(MPC_LANG_DEFAULT, "adjective : \"wow\" | \"many\" | \"so\" | \"such\"; \ noun : \"lisp\" | \"language\" | \"c\" | \"book\" | \"build\"; \ phrase : <adjective> <noun>; \ doge : <phrase>*; \ ", Adjective, Noun, Phrase, Doge);