spelling: multiplicative

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
pull/287/head
Josh Soref 4 months ago
parent 67652db653
commit c2b119d34a
  1. 52
      README.md
  2. 14
      example/calc.cc
  3. 32
      lint/README.md
  4. 14
      test/test1.cc

@ -59,8 +59,8 @@ int main(void) {
// (2) Make a parser
parser parser(R"(
# Grammar for Calculator...
Additive <- Multitive '+' Additive / Multitive
Multitive <- Primary '*' Multitive / Primary
Additive <- Multiplicative '+' Additive / Multiplicative
Multiplicative <- Primary '*' Multiplicative / Primary
Primary <- '(' Additive ')' / Number
Number <- < [0-9]+ >
%whitespace <- [ \t]*
@ -71,16 +71,16 @@ int main(void) {
// (3) Setup actions
parser["Additive"] = [](const SemanticValues &vs) {
switch (vs.choice()) {
case 0: // "Multitive '+' Additive"
case 0: // "Multiplicative '+' Additive"
return any_cast<int>(vs[0]) + any_cast<int>(vs[1]);
default: // "Multitive"
default: // "Multiplicative"
return any_cast<int>(vs[0]);
}
};
parser["Multitive"] = [](const SemanticValues &vs) {
parser["Multiplicative"] = [](const SemanticValues &vs) {
switch (vs.choice()) {
case 0: // "Primary '*' Multitive"
case 0: // "Primary '*' Multiplicative"
return any_cast<int>(vs[0]) * any_cast<int>(vs[1]);
default: // "Primary"
return any_cast<int>(vs[0]);
@ -106,8 +106,8 @@ To show syntax errors in grammar text:
```cpp
auto grammar = R"(
# Grammar for Calculator...
Additive <- Multitive '+' Additive / Multitive
Multitive <- Primary '*' Multitive / Primary
Additive <- Multiplicative '+' Additive / Multiplicative
Multiplicative <- Primary '*' Multiplicative / Primary
Primary <- '(' Additive ')' / Number
Number <- < [0-9]+ >
%whitespace <- [ \t]*
@ -659,8 +659,8 @@ usage: grammar_file_path [source_file_path]
```
> cat a.peg
Additive <- Multitive '+' Additive / Multitive
Multitive <- Primary '*' Multitive / Primary
Additive <- Multiplicative '+' Additive / Multiplicative
Multiplicative <- Primary '*' Multiplicative / Primary
Primary <- '(' Additive ')' / Number
%whitespace <- [ \t\r\n]*
@ -672,8 +672,8 @@ Primary <- '(' Additive ')' / Number
```
> cat a.peg
Additive <- Multitive '+' Additive / Multitive
Multitive <- Primary '*' Multitive / Primary
Additive <- Multiplicative '+' Additive / Multiplicative
Multiplicative <- Primary '*' Multiplicative / Primary
Primary <- '(' Additive ')' / Number
Number <- < [0-9]+ >
%whitespace <- [ \t\r\n]*
@ -690,14 +690,14 @@ Number <- < [0-9]+ >
> peglint --ast a.peg a.txt
+ Additive
+ Multitive
+ Multiplicative
+ Primary
- Number (1)
+ Additive
+ Multitive
+ Multiplicative
+ Primary
- Number (2)
+ Multitive
+ Multiplicative
+ Primary
- Number (3)
```
@ -707,40 +707,40 @@ Number <- < [0-9]+ >
```
> peglint --ast --opt --source "1 + 2 * 3" a.peg
+ Additive
- Multitive[Number] (1)
+ Additive[Multitive]
- Multiplicative[Number] (1)
+ Additive[Multiplicative]
- Primary[Number] (2)
- Multitive[Number] (3)
- Multiplicative[Number] (3)
```
### Adjust AST optimazation with `no_ast_opt` instruction
```
> cat a.peg
Additive <- Multitive '+' Additive / Multitive
Multitive <- Primary '*' Multitive / Primary
Additive <- Multiplicative '+' Additive / Multiplicative
Multiplicative <- Primary '*' Multiplicative / Primary
Primary <- '(' Additive ')' / Number { no_ast_opt }
Number <- < [0-9]+ >
%whitespace <- [ \t\r\n]*
> peglint --ast --opt --source "1 + 2 * 3" a.peg
+ Additive/0
+ Multitive/1[Primary]
+ Multiplicative/1[Primary]
- Number (1)
+ Additive/1[Multitive]
+ Additive/1[Multiplicative]
+ Primary/1
- Number (2)
+ Multitive/1[Primary]
+ Multiplicative/1[Primary]
- Number (3)
> peglint --ast --opt-only --source "1 + 2 * 3" a.peg
+ Additive/0
+ Multitive/1
+ Multiplicative/1
- Primary/1[Number] (1)
+ Additive/1
+ Multitive/0
+ Multiplicative/0
- Primary/1[Number] (2)
+ Multitive/1
+ Multiplicative/1
- Primary/1[Number] (3)
```

@ -9,12 +9,12 @@ int main(void) {
// (2) Make a parser
parser parser(R"(
# Grammar for Calculator...
Additive <- Multitive '+' Additive / Multitive
Multitive <- Primary '*' Multitive^cond / Primary
Additive <- Multiplicative '+' Additive / Multiplicative
Multiplicative <- Primary '*' Multiplicative^cond / Primary
Primary <- '(' Additive ')' / Number
Number <- < [0-9]+ >
%whitespace <- [ \t]*
cond <- '' { error_message "missing multitative" }
cond <- '' { error_message "missing multiplicative" }
)");
assert(static_cast<bool>(parser) == true);
@ -22,16 +22,16 @@ int main(void) {
// (3) Setup actions
parser["Additive"] = [](const SemanticValues &vs) {
switch (vs.choice()) {
case 0: // "Multitive '+' Additive"
case 0: // "Multiplicative '+' Additive"
return any_cast<int>(vs[0]) + any_cast<int>(vs[1]);
default: // "Multitive"
default: // "Multiplicative"
return any_cast<int>(vs[0]);
}
};
parser["Multitive"] = [](const SemanticValues &vs) {
parser["Multiplicative"] = [](const SemanticValues &vs) {
switch (vs.choice()) {
case 0: // "Primary '*' Multitive"
case 0: // "Primary '*' Multiplicative"
return any_cast<int>(vs[0]) * any_cast<int>(vs[1]);
default: // "Primary"
return any_cast<int>(vs[0]);

@ -60,8 +60,8 @@ a.peg:3:6: 'A' is left recursive.
```
> cat a.peg
Additive <- Multitive '+' Additive / Multitive
Multitive <- Primary '*' Multitive / Primary
Additive <- Multiplicative '+' Additive / Multiplicative
Multiplicative <- Primary '*' Multiplicative / Primary
Primary <- '(' Additive ')' / Number
Number <- < [0-9]+ >
%whitespace <- [ \t\r\n]*
@ -78,14 +78,14 @@ Number <- < [0-9]+ >
> peglint --ast a.peg a.txt
+ Additive
+ Multitive
+ Multiplicative
+ Primary
- Number (1)
+ Additive
+ Multitive
+ Multiplicative
+ Primary
- Number (2)
+ Multitive
+ Multiplicative
+ Primary
- Number (3)
```
@ -95,39 +95,39 @@ Number <- < [0-9]+ >
```
> peglint --ast --opt --source "1 + 2 * 3" a.peg
+ Additive
- Multitive[Number] (1)
+ Additive[Multitive]
- Multiplicative[Number] (1)
+ Additive[Multiplicative]
- Primary[Number] (2)
- Multitive[Number] (3)
- Multiplicative[Number] (3)
```
### Adjust AST optimazation with `no_ast_opt` instruction
```
> cat a.peg
Additive <- Multitive '+' Additive / Multitive
Multitive <- Primary '*' Multitive / Primary
Additive <- Multiplicative '+' Additive / Multiplicative
Multiplicative <- Primary '*' Multiplicative / Primary
Primary <- '(' Additive ')' / Number { no_ast_opt }
Number <- < [0-9]+ >
%whitespace <- [ \t\r\n]*
> peglint --ast --opt --source "1 + 2 * 3" a.peg
+ Additive/0
+ Multitive/1[Primary]
+ Multiplicative/1[Primary]
- Number (1)
+ Additive/1[Multitive]
+ Additive/1[Multiplicative]
+ Primary/1
- Number (2)
+ Multitive/1[Primary]
+ Multiplicative/1[Primary]
- Number (3)
> peglint --ast --opt-only --source "1 + 2 * 3" a.peg
+ Additive/0
+ Multitive/1
+ Multiplicative/1
- Primary/1[Number] (1)
+ Additive/1
+ Multitive/0
+ Multiplicative/0
- Primary/1[Number] (2)
+ Multitive/1
+ Multiplicative/1
- Primary/1[Number] (3)
```

@ -507,8 +507,8 @@ TEST(GeneralTest, mutable_lambda_test) {
TEST(GeneralTest, Simple_calculator_test) {
parser parser(R"(
Additive <- Multitive '+' Additive / Multitive
Multitive <- Primary '*' Multitive / Primary
Additive <- Multiplicative '+' Additive / Multiplicative
Multiplicative <- Primary '*' Multiplicative / Primary
Primary <- '(' Additive ')' / Number
Number <- [0-9]+
)");
@ -520,7 +520,7 @@ TEST(GeneralTest, Simple_calculator_test) {
}
};
parser["Multitive"] = [](const SemanticValues &vs) {
parser["Multiplicative"] = [](const SemanticValues &vs) {
switch (vs.choice()) {
case 0: return std::any_cast<int>(vs[0]) * std::any_cast<int>(vs[1]);
default: return std::any_cast<int>(vs[0]);
@ -539,12 +539,12 @@ TEST(GeneralTest, Simple_calculator_test) {
TEST(GeneralTest, Simple_calculator_with_recovery_test) {
parser parser(R"(
Additive <- Multitive '+' Additive / Multitive
Multitive <- Primary '*' Multitive^cond / Primary
Additive <- Multiplicative '+' Additive / Multiplicative
Multiplicative <- Primary '*' Multiplicative^cond / Primary
Primary <- '(' Additive ')' / Number
Number <- < [0-9]+ >
%whitespace <- [ \t]*
cond <- '' { error_message "missing multitative" }
cond <- '' { error_message "missing multiplicative" }
)");
parser["Additive"] = [](const SemanticValues &vs) {
@ -554,7 +554,7 @@ TEST(GeneralTest, Simple_calculator_with_recovery_test) {
}
};
parser["Multitive"] = [](const SemanticValues &vs) {
parser["Multiplicative"] = [](const SemanticValues &vs) {
switch (vs.choice()) {
case 0: return std::any_cast<int>(vs[0]) * std::any_cast<int>(vs[1]);
default: return std::any_cast<int>(vs[0]);

Loading…
Cancel
Save