Added README
This commit is contained in:
		
							
								
								
									
										22
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					# Pycalc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**Pycalc** is a simple expression calculator. It can evaluate mathematical expressions, and output the result of the evaluation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## How it works
 | 
				
			||||||
 | 
					1. Scan the expression
 | 
				
			||||||
 | 
						- Check for malformed expression and invalid characters
 | 
				
			||||||
 | 
						- Tokenize the expression (I wrote a custom parser to do this)
 | 
				
			||||||
 | 
					  2. If there are any parantheses, replace the parantheses with the result of the sub-expression.
 | 
				
			||||||
 | 
					  3. Evaluate the overall expression (which should no longer have any parantheses)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Rather than building a tree from the expression (which is the recommended approach), I have opted to perform the substitutions in-place. This means that the result of an operation replaces the operation itself. The reason I chose to do this, is that my parsing algorithm considers everything inside parantheses as a single token. Therefore, it is fairly easy to replace this token with the result of the expression within the parantheses.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Features
 | 
				
			||||||
 | 
					- Order of operations
 | 
				
			||||||
 | 
					- Arbitrary whitespace
 | 
				
			||||||
 | 
					- Parantheses
 | 
				
			||||||
 | 
					- Simple error checking
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## To-do
 | 
				
			||||||
 | 
					- Simple algebraic parsing (assign values to variables, etc.)
 | 
				
			||||||
 | 
					- More robust error-checking
 | 
				
			||||||
		Reference in New Issue
	
	Block a user