mirror of
				https://github.com/eledio-devices/thirdparty-tinyexpr.git
				synced 2025-10-31 00:32:38 +01:00 
			
		
		
		
	Fixed headings for github.
This commit is contained in:
		
							
								
								
									
										30
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								README.md
									
									
									
									
									
								
							| @@ -3,7 +3,7 @@ | |||||||
|  |  | ||||||
| <img alt="TinyExpr logo" src="https://codeplea.com/public/content/tinyexpr_logo.png" align="right"/> | <img alt="TinyExpr logo" src="https://codeplea.com/public/content/tinyexpr_logo.png" align="right"/> | ||||||
|  |  | ||||||
| #TinyExpr | # TinyExpr | ||||||
|  |  | ||||||
| TinyExpr is a very small recursive descent parser and evaluation engine for | TinyExpr is a very small recursive descent parser and evaluation engine for | ||||||
| math expressions. It's handy when you want to add the ability to evaluation | math expressions. It's handy when you want to add the ability to evaluation | ||||||
| @@ -12,7 +12,7 @@ math expressions at runtime without adding a bunch of cruft to you project. | |||||||
| In addition to the standard math operators and precedence, TinyExpr also supports | In addition to the standard math operators and precedence, TinyExpr also supports | ||||||
| the standard C math functions and runtime binding of variables. | the standard C math functions and runtime binding of variables. | ||||||
|  |  | ||||||
| ##Features | ## Features | ||||||
|  |  | ||||||
| - **ANSI C with no dependencies**. | - **ANSI C with no dependencies**. | ||||||
| - Single source file and header file. | - Single source file and header file. | ||||||
| @@ -25,12 +25,12 @@ the standard C math functions and runtime binding of variables. | |||||||
| - Easy to use and integrate with your code | - Easy to use and integrate with your code | ||||||
| - Thread-safe, provided that your *malloc* is. | - Thread-safe, provided that your *malloc* is. | ||||||
|  |  | ||||||
| ##Building | ## Building | ||||||
|  |  | ||||||
| TinyExpr is self-contained in two files: `tinyexpr.c` and `tinyexpr.h`. To use | TinyExpr is self-contained in two files: `tinyexpr.c` and `tinyexpr.h`. To use | ||||||
| TinyExpr, simply add those two files to your project. | TinyExpr, simply add those two files to your project. | ||||||
|  |  | ||||||
| ##Short Example | ## Short Example | ||||||
|  |  | ||||||
| Here is a minimal example to evaluate an expression at runtime. | Here is a minimal example to evaluate an expression at runtime. | ||||||
|  |  | ||||||
| @@ -40,7 +40,7 @@ Here is a minimal example to evaluate an expression at runtime. | |||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  |  | ||||||
| ##Usage | ## Usage | ||||||
|  |  | ||||||
| TinyExpr defines only four functions: | TinyExpr defines only four functions: | ||||||
|  |  | ||||||
| @@ -51,7 +51,7 @@ TinyExpr defines only four functions: | |||||||
|     void te_free(te_expr *expr); |     void te_free(te_expr *expr); | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ##te_interp | ## te_interp | ||||||
| ```C | ```C | ||||||
|     double te_interp(const char *expression, int *error); |     double te_interp(const char *expression, int *error); | ||||||
| ``` | ``` | ||||||
| @@ -72,7 +72,7 @@ of the parse error on failure, and set `*error` to 0 on success. | |||||||
|     double c = te_interp("(5+5", &error); /* Returns NaN, error is set to 4. */ |     double c = te_interp("(5+5", &error); /* Returns NaN, error is set to 4. */ | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ##te_compile, te_eval, te_free | ## te_compile, te_eval, te_free | ||||||
| ```C | ```C | ||||||
|     te_expr *te_compile(const char *expression, const te_variable *lookup, int lookup_len, int *error); |     te_expr *te_compile(const char *expression, const te_variable *lookup, int lookup_len, int *error); | ||||||
|     double te_eval(const te_expr *n); |     double te_eval(const te_expr *n); | ||||||
| @@ -117,7 +117,7 @@ After you're finished, make sure to call `te_free()`. | |||||||
|  |  | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ##Longer Example | ## Longer Example | ||||||
|  |  | ||||||
| Here is a complete example that will evaluate an expression passed in from the command | Here is a complete example that will evaluate an expression passed in from the command | ||||||
| line. It also does error checking and binds the variables `x` and `y` to *3* and *4*, respectively. | line. It also does error checking and binds the variables `x` and `y` to *3* and *4*, respectively. | ||||||
| @@ -178,7 +178,7 @@ This produces the output: | |||||||
|                 5.000000 |                 5.000000 | ||||||
|  |  | ||||||
|  |  | ||||||
| ##Binding to Custom Functions | ## Binding to Custom Functions | ||||||
|  |  | ||||||
| TinyExpr can also call to custom functions implemented in C. Here is a short example: | TinyExpr can also call to custom functions implemented in C. Here is a short example: | ||||||
|  |  | ||||||
| @@ -197,7 +197,7 @@ te_expr *n = te_compile("mysum(5, 6)", vars, 1, 0); | |||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  |  | ||||||
| ##How it works | ## How it works | ||||||
|  |  | ||||||
| `te_compile()` uses a simple recursive descent parser to compile your | `te_compile()` uses a simple recursive descent parser to compile your | ||||||
| expression into a syntax tree. For example, the expression `"sin x + 1/4"` | expression into a syntax tree. For example, the expression `"sin x + 1/4"` | ||||||
| @@ -216,7 +216,7 @@ and return the result of the expression. | |||||||
| `te_free()` should always be called when you're done with the compiled expression. | `te_free()` should always be called when you're done with the compiled expression. | ||||||
|  |  | ||||||
|  |  | ||||||
| ##Speed | ## Speed | ||||||
|  |  | ||||||
|  |  | ||||||
| TinyExpr is pretty fast compared to C when the expression is short, when the | TinyExpr is pretty fast compared to C when the expression is short, when the | ||||||
| @@ -237,7 +237,7 @@ Here is some example performance numbers taken from the included | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ##Grammar | ## Grammar | ||||||
|  |  | ||||||
| TinyExpr parses the following grammar: | TinyExpr parses the following grammar: | ||||||
|  |  | ||||||
| @@ -262,7 +262,7 @@ notation (e.g.  *1e3* for *1000*). A leading zero is not required (e.g. *.5* | |||||||
| for *0.5*) | for *0.5*) | ||||||
|  |  | ||||||
|  |  | ||||||
| ##Functions supported | ## Functions supported | ||||||
|  |  | ||||||
| TinyExpr supports addition (+), subtraction/negation (-), multiplication (\*), | TinyExpr supports addition (+), subtraction/negation (-), multiplication (\*), | ||||||
| division (/), exponentiation (^) and modulus (%) with the normal operator | division (/), exponentiation (^) and modulus (%) with the normal operator | ||||||
| @@ -278,7 +278,7 @@ Also, the following constants are available: | |||||||
| - `pi`, `e` | - `pi`, `e` | ||||||
|  |  | ||||||
|  |  | ||||||
| ##Compile-time options | ## Compile-time options | ||||||
|  |  | ||||||
|  |  | ||||||
| By default, TinyExpr does exponentation from left to right. For example: | By default, TinyExpr does exponentation from left to right. For example: | ||||||
| @@ -300,7 +300,7 @@ That will match how many scripting languages do it (e.g. Python, Ruby). | |||||||
| Also, if you'd like `log` to default to the natural log instead of `log10`, | Also, if you'd like `log` to default to the natural log instead of `log10`, | ||||||
| then you can define `TE_NAT_LOG`. | then you can define `TE_NAT_LOG`. | ||||||
|  |  | ||||||
| ##Hints | ## Hints | ||||||
|  |  | ||||||
| - All functions/types start with the letters *te*. | - All functions/types start with the letters *te*. | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user