Current Version: 1.0.0.0
                
            
            
            
                
                CS-MIC
            
            is
            a .NET library written in C# designed to give developers easy access to
            expression parsing.
            For many developers, there is no need to involve complicated settings 
            and formats. With few exposed methods and objects, 
CS-MIC
            makes basic
            expression solving as simple as possible with as little logic required
            from developers as possible. In fact, one can pull a value with only
            one line of code.
            
            
            
Please feel free to 
            review, use, and edit the code here in the 
repository.
            
            
            Additionally, 
            you can download the DLL for use in your own projects 
here.
            
            
            
Do you use CS-MIC? Let us know!
            
            If
            you would like your own project to be listed on this site as 
            incorporating CS-MIC, please send an 
email
            to the project administrator!
            
            
            
            
                
                    News:
                    
                
                
                	- 
                        October 8th, 2010
                    
 
                    
                        - 
                            Version 1.0 has been released. This version is extremely capable and we look forward to any success stories that 
							you would care to share. Has CS-MIC helped your project in some way? Plese let us know!
                        
 
                    
                    - 
                        May 2nd, 2010
                    
 
                    
                        - 
                            Big news again!  CS-MIC has been completely
                            overhauled.  CS-MIC now works with a scanner/parser generated by
                            the Coco/R compiler compiler.  Two parsers are used, one for per
                            line statements and one for executing scripts.  The use of a
                            compiler compiler has been a big help in standardizing parsing. 
                            Although the statement count for the project as a whole has doubled,
                            the speed with which the parsers run is amazingly faster than it was
                            when regular expressions were used to parse input.
                        
 
                        - 
                            Syntax has remained almost exactly backward compatible.  
                            The only syntax that has changed is in the scripting language is the for
                            loop to be more in line with c syntax, in that a for loop takes an
                            initial statement, a condition for continued execution and a statement
                            to be executed at the end of each iteration. Conditional statements now 
                            support an optional else
                            block.  Details can be found here.
                        
 
                        - 
                            Automated testing has been added to this release using the
                            Microsoft Visual Studio testing framework.  The test class has
                            been customized with some methods that can make testing specific kinds
                            of expressions easier.  Feel free to add valid tests.
                        
 
                        - 
                            This is a strong release.  If there are no problems 
                            discovered/reported with this release before July 9th, 2010
                            the 1.0 version of
                            CS-MIC will be officially released.
                            
                         
                    
                    - 
                        December 17th, 2009
                    
 
                    
                        - 
                            Computation
                            is now handled using regular expressions. This is a major redesign of
                            the core implementation for CS-MIC. After testing, CS-MIC seems to be
                            up and ready to go, but if you should experience any funkiness in input
                            / output, please report it. We're working hard to make sure that you
                            can parse your input quickly and reliably, but we need your help to
                            keep all the bugs out!
                        
 
                    
                    - 
                        June 5th, 2009
                    
 
                    
                        - 
                            CS-MIC
                            has a brand new function system. The syntax remains the same, but it is
                            now extendable. There are two methods for exending the capability of
                            the interpreter: coded and interpreted functions. There is a new 
                            interface, ICodedFunction,
                            which gives the interpreter the information needed to execute a new
                            function with a developer designed code block. There is also a new
                            class available for creating interpreted functions. The macro builder
                            is capable of creating these interpreted functions at any point inside 
                            a script using the function(
                            string
                            name, params decimal[] arguments)
                            function followed by a code block.
                            The last value to be computed will be the return value of the function.
                        
 
                    
                    - 
                        May
                        13th, 2009
                    
 
                    
                        - 
                            If you use CS-MIC, please vote
                            for us in the Community Choice Awards!
                        
 
                    
                    - 
                        April
                        15th, 2009
                    
 
                    
                        - 
                            After
                            a brief pause, CS-MIC now has binary and hexadecimal conversion built
                            in. Binary numbers are succeeded by the token 'B' and hexadecimal
                            numbers are preceded by '0x'. Both are non case sensative. Binary and
                            hexadecimal numbers can be used in combination with any other number.
                            Go ahead and try it out!
                        
 
                    
                    - 
                        January 16th,
                        2009
                    
 
                    
                        - 
                            CS-MIC
                            needs your help! In order to maintain a higher degree of accuracy,
                            CS-MIC will undergo a stress test before each new release. This stress
                            test will be designed to ensure that computation time remains
                            reasonable compared to expression length and that all computations are 
                            correct. This is where you come in. Please send in
                            expressions with their confirmed answer to have them included in the
                            stress test. This will improve the quality of CS-MIC for everyone!
                        
 
                    
                    - 
                        January
                        12th, 2009
                    
 
                    
                        - 
                            Happy
                                New Year
                            from CS-MIC!
                            This new file release for the new year fixes many bugs. The expression
                            node will no longer try to reverse the left hand side of the equation
                            twice. This would cause a nasty problem causing calculation time to
                            grow almost exponentiallyas the length of the equation grows linearly.
                            Another critical bug in the EnsureOrderOfOperations function has also
                            been fixed. This fix will allow for more accuracy, and also allow you 
                            to pass expressions into functions. The binary(
                            int
                            expression)
                            function
                            has been removed since it caused problems in further calculations.
                            Instead, a new Binary property has been added that returns the result,
                            cast as an int, as its binary equivalent string.
                        
 
                    
                    - 
                        December
                        23rd, 2008
                    
 
                    
                        - 
                            Fixed
                            a few critical bugs in the basic expression parsing. Sending numbers
                            larger than that allowed will no longer cause CS-MIC to freeze and
                            eventually crash. Also added the capability to use block and line
                            comments in the macro builder.
                            The control now keeps a record of the last execution time for easy
                            reference. The message of the calculation has been separated into a new
                            property.
                        
 
                    
                    - 
                        December 4th, 2008
                    
 
                    
                        - 
                            A
                            new page has been added to track the complexity 
                            of CS-MIC. 
                            The freeware program SourceMonitor
                            was used.
                        
 
                    
                    - 
                        December 3rd, 2008
                    
 
                    
                        - 
                            The
                            site here has been updated quite a bit lately, and a help section has 
                            been added. Both an online
                            and compiled
                            version have been compiled. The compiled version is the same as is
                            commonly in the file releases. The online help will be updated as
                            development progresses and may reflect a newer version than is
                            available for download.
                        
 
                    
                    - 
                        December
                        2nd, 2008
                    
 
                    
                        - 
                            Added a new formatting 
                            function: precision(
                            double
                            expression, int
                            expression).
                            I also updated some of the formatting in this site. Function notations
                            now indicates what type of value will be extracted from the argument.
                        
 
                    
                    - 
                        November
                        6th, 2008
                    
 
                    
                        - 
                            Fixed
                            a bug in the conditional testing that would return a false 'False' if
                            two expressions were compared. Four new functions have been
                            added: log(
                            double
                            expression1, double
                            expression2),sqrt(
                            double
                            expression), abs(
                            double
                            expression)
                            and exp(
                            double
                            expression). 
                            More can be found about what they do in the functions
                                section. A Mod function has also been added for all the
                            computer scientists out there.
                        
 
                    
                    - 
                        October
                        2nd, 2008
                    
 
                    
                        - 
                            Restructured the expression
                            node and input interpreter objects. Expressions
                            are now parsed in reverse, which means that expressions are now solved
                            in a left to right order (this was a major bug in the previous
                            versions). The input interpreter will now follow the PEMDAS order of
                            operations.
                        
 
                    
                    - 
                        September 26th, 2008
                    
 
                    
                        - 
                            Added
                            a 'say' function to the MacroBuilder to add string values to the output
                            list.
                        
 
                    
                    - 
                        September 20th, 2008
                    
 
                    
                        - 
                            Added 
                            scripting functionality. A breakdown on the syntax rules can be found here. Please be aware
                            there are known bugs with executing code blocks after a previous code
                            block has been executed.
                        
 
                    
                
                
                
             
            
                Current
                Features
            
            
            
            
                - 
                    Breaks down
                    input into an equation tree, according to a given order of operations.
                
 
                - 
                    Stores
                    numeric values as variables.
                
 
                - 
                    Stores dynamic
                    equations as variables.
                
 
                - 
                    Supports several basic math
                    functions.
                
 
                - 
                    Supports basic scripting.
                
 
            
            
            
                Documentation
            
            
            
            
            
            
                Metrics
            
            
             
            A complexity 
            report has been generated by 
SourceMonitor. 
            The analysis file can be downloaded 
here.
            
            
            
                Future
                Features / Revisions
                
            
            
                
                    
                
            
            
                - 
                    Additional
                    built-in functions.
                
 
                - 
                    Quicker execution time as
                    expression length grows.
                
 
                - 
                    Want 
                    a feature added, but don't see it here? Request
                        it.
                
 
            
            Please keep in mind that this is
            just a preliminary list.
            
            
            
            
                Bugs
                
            
            
            
                
                    
                    If 
                    you find a bug with this library, please report
                        it.
                    
                    
                
            
            
            
                Joining
                the Team
                
            
            
            
            Any
            help you would like to provide would be greatly appriciated. If you
            would like to volunteer as a developer, or have any further questions, 
             feel free to contact the project administrator 
here.
            
            
            
            
                I would like to thank
                SourceForge.net for hosting this project.