Skip to content

Commit

Permalink
Add operator precedence #50
Browse files Browse the repository at this point in the history
  • Loading branch information
dalance committed Dec 28, 2022
1 parent 8ac7edf commit 96943d4
Show file tree
Hide file tree
Showing 10 changed files with 13,493 additions and 8,810 deletions.
119 changes: 113 additions & 6 deletions crates/emitter/src/aligner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -208,15 +208,122 @@ impl VerylWalker for Aligner {

/// Semantic action for non-terminal 'Expression'
fn expression(&mut self, arg: &Expression) {
self.expression1(&arg.expression1);
self.expression01(&arg.expression01);
for x in &arg.expression_list {
self.space(1);
match &*x.expression_list_group {
ExpressionListGroup::BinaryOperator(x) => self.binary_operator(&x.binary_operator),
ExpressionListGroup::CommonOperator(x) => self.common_operator(&x.common_operator),
};
self.operator01(&x.operator01);
self.space(1);
self.expression1(&x.expression1);
self.expression01(&x.expression01);
}
}

/// Semantic action for non-terminal 'Expression01'
fn expression01(&mut self, arg: &Expression01) {
self.expression02(&arg.expression02);
for x in &arg.expression01_list {
self.space(1);
self.operator02(&x.operator02);
self.space(1);
self.expression02(&x.expression02);
}
}

/// Semantic action for non-terminal 'Expression02'
fn expression02(&mut self, arg: &Expression02) {
self.expression03(&arg.expression03);
for x in &arg.expression02_list {
self.space(1);
self.operator03(&x.operator03);
self.space(1);
self.expression03(&x.expression03);
}
}

/// Semantic action for non-terminal 'Expression03'
fn expression03(&mut self, arg: &Expression03) {
self.expression04(&arg.expression04);
for x in &arg.expression03_list {
self.space(1);
self.operator04(&x.operator04);
self.space(1);
self.expression04(&x.expression04);
}
}

/// Semantic action for non-terminal 'Expression04'
fn expression04(&mut self, arg: &Expression04) {
self.expression05(&arg.expression05);
for x in &arg.expression04_list {
self.space(1);
self.operator05(&x.operator05);
self.space(1);
self.expression05(&x.expression05);
}
}

/// Semantic action for non-terminal 'Expression05'
fn expression05(&mut self, arg: &Expression05) {
self.expression06(&arg.expression06);
for x in &arg.expression05_list {
self.space(1);
self.operator06(&x.operator06);
self.space(1);
self.expression06(&x.expression06);
}
}

/// Semantic action for non-terminal 'Expression06'
fn expression06(&mut self, arg: &Expression06) {
self.expression07(&arg.expression07);
for x in &arg.expression06_list {
self.space(1);
self.operator07(&x.operator07);
self.space(1);
self.expression07(&x.expression07);
}
}

/// Semantic action for non-terminal 'Expression07'
fn expression07(&mut self, arg: &Expression07) {
self.expression08(&arg.expression08);
for x in &arg.expression07_list {
self.space(1);
self.operator08(&x.operator08);
self.space(1);
self.expression08(&x.expression08);
}
}

/// Semantic action for non-terminal 'Expression08'
fn expression08(&mut self, arg: &Expression08) {
self.expression09(&arg.expression09);
for x in &arg.expression08_list {
self.space(1);
self.operator09(&x.operator09);
self.space(1);
self.expression09(&x.expression09);
}
}

/// Semantic action for non-terminal 'Expression09'
fn expression09(&mut self, arg: &Expression09) {
self.expression10(&arg.expression10);
for x in &arg.expression09_list {
self.space(1);
self.operator10(&x.operator10);
self.space(1);
self.expression10(&x.expression10);
}
}

/// Semantic action for non-terminal 'Expression10'
fn expression10(&mut self, arg: &Expression10) {
self.expression11(&arg.expression11);
for x in &arg.expression10_list {
self.space(1);
self.operator11(&x.operator11);
self.space(1);
self.expression11(&x.expression11);
}
}

Expand Down
119 changes: 113 additions & 6 deletions crates/emitter/src/emitter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -253,15 +253,122 @@ impl VerylWalker for Emitter {

/// Semantic action for non-terminal 'Expression'
fn expression(&mut self, arg: &Expression) {
self.expression1(&arg.expression1);
self.expression01(&arg.expression01);
for x in &arg.expression_list {
self.space(1);
match &*x.expression_list_group {
ExpressionListGroup::BinaryOperator(x) => self.binary_operator(&x.binary_operator),
ExpressionListGroup::CommonOperator(x) => self.common_operator(&x.common_operator),
};
self.operator01(&x.operator01);
self.space(1);
self.expression1(&x.expression1);
self.expression01(&x.expression01);
}
}

/// Semantic action for non-terminal 'Expression01'
fn expression01(&mut self, arg: &Expression01) {
self.expression02(&arg.expression02);
for x in &arg.expression01_list {
self.space(1);
self.operator02(&x.operator02);
self.space(1);
self.expression02(&x.expression02);
}
}

/// Semantic action for non-terminal 'Expression02'
fn expression02(&mut self, arg: &Expression02) {
self.expression03(&arg.expression03);
for x in &arg.expression02_list {
self.space(1);
self.operator03(&x.operator03);
self.space(1);
self.expression03(&x.expression03);
}
}

/// Semantic action for non-terminal 'Expression03'
fn expression03(&mut self, arg: &Expression03) {
self.expression04(&arg.expression04);
for x in &arg.expression03_list {
self.space(1);
self.operator04(&x.operator04);
self.space(1);
self.expression04(&x.expression04);
}
}

/// Semantic action for non-terminal 'Expression04'
fn expression04(&mut self, arg: &Expression04) {
self.expression05(&arg.expression05);
for x in &arg.expression04_list {
self.space(1);
self.operator05(&x.operator05);
self.space(1);
self.expression05(&x.expression05);
}
}

/// Semantic action for non-terminal 'Expression05'
fn expression05(&mut self, arg: &Expression05) {
self.expression06(&arg.expression06);
for x in &arg.expression05_list {
self.space(1);
self.operator06(&x.operator06);
self.space(1);
self.expression06(&x.expression06);
}
}

/// Semantic action for non-terminal 'Expression06'
fn expression06(&mut self, arg: &Expression06) {
self.expression07(&arg.expression07);
for x in &arg.expression06_list {
self.space(1);
self.operator07(&x.operator07);
self.space(1);
self.expression07(&x.expression07);
}
}

/// Semantic action for non-terminal 'Expression07'
fn expression07(&mut self, arg: &Expression07) {
self.expression08(&arg.expression08);
for x in &arg.expression07_list {
self.space(1);
self.operator08(&x.operator08);
self.space(1);
self.expression08(&x.expression08);
}
}

/// Semantic action for non-terminal 'Expression08'
fn expression08(&mut self, arg: &Expression08) {
self.expression09(&arg.expression09);
for x in &arg.expression08_list {
self.space(1);
self.operator09(&x.operator09);
self.space(1);
self.expression09(&x.expression09);
}
}

/// Semantic action for non-terminal 'Expression09'
fn expression09(&mut self, arg: &Expression09) {
self.expression10(&arg.expression10);
for x in &arg.expression09_list {
self.space(1);
self.operator10(&x.operator10);
self.space(1);
self.expression10(&x.expression10);
}
}

/// Semantic action for non-terminal 'Expression10'
fn expression10(&mut self, arg: &Expression10) {
self.expression11(&arg.expression11);
for x in &arg.expression10_list {
self.space(1);
self.operator11(&x.operator11);
self.space(1);
self.expression11(&x.expression11);
}
}

Expand Down
119 changes: 113 additions & 6 deletions crates/formatter/src/aligner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -174,15 +174,122 @@ impl VerylWalker for Aligner {

/// Semantic action for non-terminal 'Expression'
fn expression(&mut self, arg: &Expression) {
self.expression1(&arg.expression1);
self.expression01(&arg.expression01);
for x in &arg.expression_list {
self.space(1);
match &*x.expression_list_group {
ExpressionListGroup::BinaryOperator(x) => self.binary_operator(&x.binary_operator),
ExpressionListGroup::CommonOperator(x) => self.common_operator(&x.common_operator),
};
self.operator01(&x.operator01);
self.space(1);
self.expression1(&x.expression1);
self.expression01(&x.expression01);
}
}

/// Semantic action for non-terminal 'Expression01'
fn expression01(&mut self, arg: &Expression01) {
self.expression02(&arg.expression02);
for x in &arg.expression01_list {
self.space(1);
self.operator02(&x.operator02);
self.space(1);
self.expression02(&x.expression02);
}
}

/// Semantic action for non-terminal 'Expression02'
fn expression02(&mut self, arg: &Expression02) {
self.expression03(&arg.expression03);
for x in &arg.expression02_list {
self.space(1);
self.operator03(&x.operator03);
self.space(1);
self.expression03(&x.expression03);
}
}

/// Semantic action for non-terminal 'Expression03'
fn expression03(&mut self, arg: &Expression03) {
self.expression04(&arg.expression04);
for x in &arg.expression03_list {
self.space(1);
self.operator04(&x.operator04);
self.space(1);
self.expression04(&x.expression04);
}
}

/// Semantic action for non-terminal 'Expression04'
fn expression04(&mut self, arg: &Expression04) {
self.expression05(&arg.expression05);
for x in &arg.expression04_list {
self.space(1);
self.operator05(&x.operator05);
self.space(1);
self.expression05(&x.expression05);
}
}

/// Semantic action for non-terminal 'Expression05'
fn expression05(&mut self, arg: &Expression05) {
self.expression06(&arg.expression06);
for x in &arg.expression05_list {
self.space(1);
self.operator06(&x.operator06);
self.space(1);
self.expression06(&x.expression06);
}
}

/// Semantic action for non-terminal 'Expression06'
fn expression06(&mut self, arg: &Expression06) {
self.expression07(&arg.expression07);
for x in &arg.expression06_list {
self.space(1);
self.operator07(&x.operator07);
self.space(1);
self.expression07(&x.expression07);
}
}

/// Semantic action for non-terminal 'Expression07'
fn expression07(&mut self, arg: &Expression07) {
self.expression08(&arg.expression08);
for x in &arg.expression07_list {
self.space(1);
self.operator08(&x.operator08);
self.space(1);
self.expression08(&x.expression08);
}
}

/// Semantic action for non-terminal 'Expression08'
fn expression08(&mut self, arg: &Expression08) {
self.expression09(&arg.expression09);
for x in &arg.expression08_list {
self.space(1);
self.operator09(&x.operator09);
self.space(1);
self.expression09(&x.expression09);
}
}

/// Semantic action for non-terminal 'Expression09'
fn expression09(&mut self, arg: &Expression09) {
self.expression10(&arg.expression10);
for x in &arg.expression09_list {
self.space(1);
self.operator10(&x.operator10);
self.space(1);
self.expression10(&x.expression10);
}
}

/// Semantic action for non-terminal 'Expression10'
fn expression10(&mut self, arg: &Expression10) {
self.expression11(&arg.expression11);
for x in &arg.expression10_list {
self.space(1);
self.operator11(&x.operator11);
self.space(1);
self.expression11(&x.expression11);
}
}

Expand Down
Loading

0 comments on commit 96943d4

Please sign in to comment.