Advanced Multi-Physics (AMP)
On-Line Documentation
tinyexpr.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Zlib
2/*
3 * TINYEXPR - Tiny recursive descent parser and evaluation engine in C
4 *
5 * Copyright (c) 2015-2020 Lewis Van Winkle
6 *
7 * http://CodePlea.com
8 *
9 * This software is provided 'as-is', without any express or implied
10 * warranty. In no event will the authors be held liable for any damages
11 * arising from the use of this software.
12 *
13 * Permission is granted to anyone to use this software for any purpose,
14 * including commercial applications, and to alter it and redistribute it
15 * freely, subject to the following restrictions:
16 *
17 * 1. The origin of this software must not be misrepresented; you must not
18 * claim that you wrote the original software. If you use this software
19 * in a product, an acknowledgement in the product documentation would be
20 * appreciated but is not required.
21 * 2. Altered source versions must be plainly marked as such, and must not be
22 * misrepresented as being the original software.
23 * 3. This notice may not be removed or altered from any source distribution.
24 */
25
26#ifndef TINYEXPR_H
27#define TINYEXPR_H
28
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34
35
36typedef struct te_expr {
37 int type;
38 union {double value; const double *bound; const void *function;};
39 void *parameters[1];
41
42
43enum {
45
48
51
52 TE_FLAG_PURE = 32
53};
54
55typedef struct te_variable {
56 const char *name;
57 const void *address;
58 int type;
59 void *context;
61
62
63
64/* Parses the input expression, evaluates it, and frees it. */
65/* Returns NaN on error. */
66double te_interp(const char *expression, int *error);
67
68/* Parses the input expression and binds variables. */
69/* Returns NULL on error. */
70te_expr *te_compile(const char *expression, const te_variable *variables, int var_count, int *error);
71
72/* Evaluates the expression. */
73double te_eval(const te_expr *n);
74
75/* Prints debugging information on the syntax tree. */
76void te_print(const te_expr *n);
77
78/* Frees the expression. */
79/* This is safe to call on NULL pointers. */
81
82
83#ifdef __cplusplus
84}
85#endif
86
87#endif /*TINYEXPR_H*/
int type
Definition tinyexpr.h:37
double value
Definition tinyexpr.h:38
const double * bound
Definition tinyexpr.h:38
const void * function
Definition tinyexpr.h:38
void * parameters[1]
Definition tinyexpr.h:39
const void * address
Definition tinyexpr.h:57
void * context
Definition tinyexpr.h:59
const char * name
Definition tinyexpr.h:56
@ TE_CLOSURE6
Definition tinyexpr.h:50
@ TE_FUNCTION2
Definition tinyexpr.h:46
@ TE_FUNCTION1
Definition tinyexpr.h:46
@ TE_FUNCTION6
Definition tinyexpr.h:47
@ TE_FLAG_PURE
Definition tinyexpr.h:52
@ TE_FUNCTION4
Definition tinyexpr.h:47
@ TE_CLOSURE2
Definition tinyexpr.h:49
@ TE_FUNCTION5
Definition tinyexpr.h:47
@ TE_FUNCTION0
Definition tinyexpr.h:46
@ TE_CLOSURE5
Definition tinyexpr.h:50
@ TE_FUNCTION7
Definition tinyexpr.h:47
@ TE_FUNCTION3
Definition tinyexpr.h:46
@ TE_CLOSURE7
Definition tinyexpr.h:50
@ TE_CLOSURE4
Definition tinyexpr.h:50
@ TE_CLOSURE0
Definition tinyexpr.h:49
@ TE_CLOSURE3
Definition tinyexpr.h:49
@ TE_CLOSURE1
Definition tinyexpr.h:49
@ TE_VARIABLE
Definition tinyexpr.h:44
double te_interp(const char *expression, int *error)
void te_free(te_expr *n)
double te_eval(const te_expr *n)
te_expr * te_compile(const char *expression, const te_variable *variables, int var_count, int *error)
void te_print(const te_expr *n)



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:41.
Comments on this page