14 Apr 91 21:13:13 GMT

Related articles |
---|

Minimizing parentheses in a postfix->infix converter output acmfiu@fiu.edu (1991-04-13) |

Re: Minimizing parentheses in a postfix->infix converter output ressler@cs.cornell.edu (1991-04-14) |

Re: Minimizing parentheses in a postfix->infix converter output firth@sei.cmu.edu (1991-04-14) |

Re: Minimizing parentheses in a postfix->infix converter output ge@dbf.kun.nl (1991-04-15) |

Newsgroups: | comp.compilers |

From: | firth@sei.cmu.edu (Robert Firth) |

Keywords: | design |

Organization: | Software Engineering Institute, Pittsburgh, PA |

References: | <9104130521.AA00996@fiu.edu> |

Date: | 14 Apr 91 21:13:13 GMT |

In article <9104130521.AA00996@fiu.edu> acmfiu@fiu.edu (ACMFIU) writes:

*>I have a postfix->infix converter and need to output the least number of*

*>parentheses as possible. The resulting infix expression is kept in a*

*>binary tree and I just traverse the tree outputting the left/right*

*>parentheses at each level.*

Easy. You need to know the priority of the operators (obviously),

and, before emittinga subtree that isn't a leaf, you compare the

priority of its operator to that of the parent node.

If the sub has a higher priority, no parens.

If the sub has a lowe priority, parens always.

If the sub has the same priority, then you use parens around the

right subtree for a left-associative operator, and the left subtree

for a right-associative operator.

Examples:

ab*c+ => a*b+c

ab+c* => (a+b)*c

abc-- => a-(b-c)

Hope that helps.

--

Post a followup to this message

Return to the
comp.compilers page.

Search the
comp.compilers archives again.