Skip to content

Latest commit

 

History

History
30 lines (24 loc) · 1.41 KB

README.md

File metadata and controls

30 lines (24 loc) · 1.41 KB

INF <=> ONP conversion program

This project implements a Java program that converts mathematical expressions between infix notation (INF) and Reverse Polish notation (RPN/ONP). Key features include:

  • INF to ONP conversion - uses a finite-state machine to validate input and convert expressions from INF to ONP
  • ONP to INF conversion - uses a stack-based validation for operator and operand counts to convert expressions from ONP to INF
  • Stack implementation - uses custom stack classes to manage operator precedence and operand associations during conversion
  • Error handling - detects and reports invalid syntax in expressions, such as mismatched parentheses and incorrect operator placement

The program recognizes the following operators:

  • Unary: !, ~
  • Binary: ^, *, /, %, +, -, <, >, &, |, =

Operators follow standard precedence rules, with unary operators having higher precedence than binary operators.

Input Format: the program accepts multiple expressions (the number of them should be specified), with each line starting with either INF: or ONP:, followed by the expression. It does not handle non-standard characters in expressions.

Example input:

2
INF: ((p&e)*!j)^~m^(k-x)&((j>d)+m/g&j<(b>a))
ONP: kx^~qo+~%zyc%jv</-<

Expected output:

ONP: p e & j ! * m ~ k x - ^ ^ j d > m g / + j b a > < & &
INF: ~ ( k ^ x ) % ~ ( q + o ) < z - y % c / ( j < v )

Prerequisites: JDK 11