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;

}
Example #2
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;
}
Example #3
0
/* Build a new parser 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 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>*;                                              \