csmic 1.1.4
A .NET component for easy access to parsing simple math and scripting.
InstallPackage csmic Version 1.1.4
dotnet add package csmic version 1.1.4
<PackageReference Include="csmic" Version="1.1.4" />
paket add csmic version 1.1.4
#r "nuget: csmic, 1.1.4"
// Install csmic as a Cake Addin
#addin nuget:?package=csmic&version=1.1.4
// Install csmic as a Cake Tool
#tool nuget:?package=csmic&version=1.1.4
csmic
CSMIC 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, CSMIC 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.
Usage
CSMIC follows a few basic rules when interpreting user input, but should prove to be fairly straightforward for most developers. While CSMIC tries to ensure that the order of operations as far as it knows them (parentheses – powers, multiplication, division – addition, subtraction), there may be instances where formatting fails. If this should be noticed, please report it.
Expression Parsing
Operands
+
 Addition
–
 Subtraction
*
 Multiplication
/
 Division
^
 Raise to a power
%
 Modulus
Tokens
::
 Assign a numeric value to a variable.
:=
 Assign an equation to a variable.
>
 Assigns a comma delimited array of numbers to an array variable.
Comparison
==
 Returns ‘True’ if two values are equal to each other.
>
 Returns ‘True’ if a value is greater than another value.
<
 Returns ‘True’ if a value is less than another value.
>=
 Returns ‘True’ if a value is greater than or equal to another value.
<=
 Returns ‘True’ if a value is greater than or equal to another value.
Base Conversion
 Decimal
 All numbers are interpreted as decimal by default.
 Binary
 Binary numbers are succeeded by a B, non case sensative.
 Hexadecimal
 Hexadecimal numbers are preceded by 0x, non case sensative.
Example Input and Output
Output  

5 + 5 
10 
5 * 2 
10 
1 + 2 * 3 
7 
(1 + 2) * 3 
9 
5 / 2 
2.5 
5 / 0 
Attempted to divide by zero. 
2 ^ 32 
4294967296 
x :: 4 
4 
x :: 6 + 4 
10 
y := 2^x 
(2^x) 
Scripting
Rules
 Any valid expression can be computed.
 All computation counts towards the script’s history. This means that once a variable is set inside a script, the variable will remain set until execution of the script is complete.
 Only one command can be executed per line. No token is required to end the command.
 Every code block must be opened and closed with a bracket ( { } ). The only exception is the main code block.
Loops
while
 Executes a code block as long as a given condition evaluates to true.
while(bool expression)
{
CODE BLOCK
}
for
 After executing an initial condition, a code block is executed while a condition is met. A final statement is executed at the end of each iteration.
for(* expression, bool condition, * expression)
{
CODE BLOCK
}
Conditionals
if
 Executes a code block if a given condition evaluates to true. An optional else block can follow the if block for execution if the statement evaluates as false.
if(bool expression)
{
CODE BLOCK
}
else
{
CODE BLOCK
}
Functions
echo
 Displays the output from the proceding expression.
echo: expression
say
 Displays a string.
say: “string”
display
 Combines strings and expressions to a single line in the output stack.
display: “string”, 12 * 2, “string”, sin(12)
function
 Creates a new function with a given name, and any number of expected arguments.
function(newFunction, anyArgumentName)
{
sin(anyArgumentName) + cos(anyArgumentName)
}
Comments
 Block Tokens
 Starting token: /*
 Ending token: */
*Any line falling between block comment tokens will be ignored by the macro builder at execution time.
 Line Tokens
 //
 Any line starting with the line token will be ignored by the macro builder at execution time.
 //
Example Script
say: “Fibonacci Sequence”
temp :: 1
y :: 1
echo: y
for(x :: 1, x < 11, x :: temp + y)
{
echo: x
temp :: y
y :: x
}
x :: 1
say: “While Loop”
while(x < 10)
{
if(x == 5)
{
display: “The condition ‘x == 5’ has been met. x = “, x, “.”
}
else
{
echo: sin(x)
}
x :: x + 1
}
Example Script Output
Fibonacci Sequence
1
1
2
3
5
8
13
21
34
55
89
While Loop
0.841470984807897
0.909297426825682
0.141120008059867
0.756802495307928
The condition ‘x == 5’ has been met. x = 5.
0.279415498198926
0.656986598718789
0.989358246623382
0.412118485241757
Built In Functions
The following is a list of the internally recognized functions in CSMIC:
sin(double expression)
Returns the sine value of a given expression.
cos(double expression)
Returns the cosine value of a given expression.
tan(double expression)
Returns the tangent value of a given expression.
round(double expression)
Rounds an expression to the nearest whole number.
sqrt(double expression)
Returns the square root of an expression.
abs(double expression)
Returns the absolute value of a given expression.
exp(double expression)
Returns the constant e raised to a given power.
log(double expression1, double expression2)
Returns the log of expression1 to the base of expression2
precision(double expression1, int expression2)
Returns the value of expression1 to a given precision. For example, precision(12.3456789, 4) will return 12.3456.
csmic
CSMIC 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, CSMIC 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.
Usage
CSMIC follows a few basic rules when interpreting user input, but should prove to be fairly straightforward for most developers. While CSMIC tries to ensure that the order of operations as far as it knows them (parentheses – powers, multiplication, division – addition, subtraction), there may be instances where formatting fails. If this should be noticed, please report it.
Expression Parsing
Operands
+
 Addition
–
 Subtraction
*
 Multiplication
/
 Division
^
 Raise to a power
%
 Modulus
Tokens
::
 Assign a numeric value to a variable.
:=
 Assign an equation to a variable.
>
 Assigns a comma delimited array of numbers to an array variable.
Comparison
==
 Returns ‘True’ if two values are equal to each other.
>
 Returns ‘True’ if a value is greater than another value.
<
 Returns ‘True’ if a value is less than another value.
>=
 Returns ‘True’ if a value is greater than or equal to another value.
<=
 Returns ‘True’ if a value is greater than or equal to another value.
Base Conversion
 Decimal
 All numbers are interpreted as decimal by default.
 Binary
 Binary numbers are succeeded by a B, non case sensative.
 Hexadecimal
 Hexadecimal numbers are preceded by 0x, non case sensative.
Example Input and Output
Output  

5 + 5 
10 
5 * 2 
10 
1 + 2 * 3 
7 
(1 + 2) * 3 
9 
5 / 2 
2.5 
5 / 0 
Attempted to divide by zero. 
2 ^ 32 
4294967296 
x :: 4 
4 
x :: 6 + 4 
10 
y := 2^x 
(2^x) 
Scripting
Rules
 Any valid expression can be computed.
 All computation counts towards the script’s history. This means that once a variable is set inside a script, the variable will remain set until execution of the script is complete.
 Only one command can be executed per line. No token is required to end the command.
 Every code block must be opened and closed with a bracket ( { } ). The only exception is the main code block.
Loops
while
 Executes a code block as long as a given condition evaluates to true.
while(bool expression)
{
CODE BLOCK
}
for
 After executing an initial condition, a code block is executed while a condition is met. A final statement is executed at the end of each iteration.
for(* expression, bool condition, * expression)
{
CODE BLOCK
}
Conditionals
if
 Executes a code block if a given condition evaluates to true. An optional else block can follow the if block for execution if the statement evaluates as false.
if(bool expression)
{
CODE BLOCK
}
else
{
CODE BLOCK
}
Functions
echo
 Displays the output from the proceding expression.
echo: expression
say
 Displays a string.
say: “string”
display
 Combines strings and expressions to a single line in the output stack.
display: “string”, 12 * 2, “string”, sin(12)
function
 Creates a new function with a given name, and any number of expected arguments.
function(newFunction, anyArgumentName)
{
sin(anyArgumentName) + cos(anyArgumentName)
}
Comments
 Block Tokens
 Starting token: /*
 Ending token: */
*Any line falling between block comment tokens will be ignored by the macro builder at execution time.
 Line Tokens
 //
 Any line starting with the line token will be ignored by the macro builder at execution time.
 //
Example Script
say: “Fibonacci Sequence”
temp :: 1
y :: 1
echo: y
for(x :: 1, x < 11, x :: temp + y)
{
echo: x
temp :: y
y :: x
}
x :: 1
say: “While Loop”
while(x < 10)
{
if(x == 5)
{
display: “The condition ‘x == 5’ has been met. x = “, x, “.”
}
else
{
echo: sin(x)
}
x :: x + 1
}
Example Script Output
Fibonacci Sequence
1
1
2
3
5
8
13
21
34
55
89
While Loop
0.841470984807897
0.909297426825682
0.141120008059867
0.756802495307928
The condition ‘x == 5’ has been met. x = 5.
0.279415498198926
0.656986598718789
0.989358246623382
0.412118485241757
Built In Functions
The following is a list of the internally recognized functions in CSMIC:
sin(double expression)
Returns the sine value of a given expression.
cos(double expression)
Returns the cosine value of a given expression.
tan(double expression)
Returns the tangent value of a given expression.
round(double expression)
Rounds an expression to the nearest whole number.
sqrt(double expression)
Returns the square root of an expression.
abs(double expression)
Returns the absolute value of a given expression.
exp(double expression)
Returns the constant e raised to a given power.
log(double expression1, double expression2)
Returns the log of expression1 to the base of expression2
precision(double expression1, int expression2)
Returns the value of expression1 to a given precision. For example, precision(12.3456789, 4) will return 12.3456.
Dependencies

.NETFramework 4.0
 No dependencies.
Used By
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.