Modified documentation and the calc sample.

pull/3/head
yhirose 9 years ago
parent 681c754302
commit cf574074c4
  1. 6
      README.md
  2. 22
      example/calc.cc

@ -241,10 +241,10 @@ The following are available operators:
| cap | Capture character |
| usr | User defiend parser |
Hybrid Parser
-------------
Adjust definitions
------------------
It's even possible to mix parser grammar with parser operaters.
It's possible to add and override definitions with parser operaters.
```c++
auto syntax = R"(

@ -15,12 +15,13 @@ using namespace std;
//
// PEG syntax:
//
// EXPRESSION <- TERM (TERM_OPERATOR TERM)*
// EXPRESSION <- _ TERM (TERM_OPERATOR TERM)*
// TERM <- FACTOR (FACTOR_OPERATOR FACTOR)*
// FACTOR <- NUMBER / '(' EXPRESSION ')'
// TERM_OPERATOR <- [-+]
// FACTOR_OPERATOR <- [/*]
// NUMBER <- [0-9]+
// FACTOR <- NUMBER / '(' _ EXPRESSION ')' _
// TERM_OPERATOR <- < [-+] > _
// FACTOR_OPERATOR <- < [/*] > _
// NUMBER <- < [0-9]+ > _
// ~_ <- [ \t\r\n]*
//
int main(int argc, const char** argv)
{
@ -47,12 +48,13 @@ int main(int argc, const char** argv)
};
const char* syntax =
" EXPRESSION <- TERM (TERM_OPERATOR TERM)* "
" EXPRESSION <- _ TERM (TERM_OPERATOR TERM)* "
" TERM <- FACTOR (FACTOR_OPERATOR FACTOR)* "
" FACTOR <- NUMBER / '(' EXPRESSION ')' "
" TERM_OPERATOR <- [-+] "
" FACTOR_OPERATOR <- [/*] "
" NUMBER <- [0-9]+ "
" FACTOR <- NUMBER / '(' _ EXPRESSION ')' _ "
" TERM_OPERATOR <- < [-+] > _ "
" FACTOR_OPERATOR <- < [/*] > _ "
" NUMBER <- < [0-9]+ > _ "
" ~_ <- [ \t\r\n]* "
;
peg parser(syntax);

Loading…
Cancel
Save