summaryrefslogtreecommitdiffstats
path: root/dimension/parse.h
diff options
context:
space:
mode:
Diffstat (limited to 'dimension/parse.h')
-rw-r--r--dimension/parse.h284
1 files changed, 0 insertions, 284 deletions
diff --git a/dimension/parse.h b/dimension/parse.h
deleted file mode 100644
index a357324..0000000
--- a/dimension/parse.h
+++ /dev/null
@@ -1,284 +0,0 @@
-/*************************************************************************
- * Copyright (C) 2009-2010 Tavian Barnes <tavianator@tavianator.com> *
- * *
- * This file is part of Dimension. *
- * *
- * Dimension is free software; you can redistribute it and/or modify it *
- * under the terms of the GNU General Public License as published by the *
- * Free Software Foundation; either version 3 of the License, or (at *
- * your option) any later version. *
- * *
- * Dimension is distributed in the hope that it will be useful, but *
- * WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
- * General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program. If not, see <http://www.gnu.org/licenses/>. *
- *************************************************************************/
-
-#ifndef PARSE_H
-#define PARSE_H
-
-#include "dimension.h"
-
-/*
- * Abstract syntax tree
- */
-
-/* Abstract syntax tree node types */
-typedef enum {
- DMNSN_AST_NONE,
-
- DMNSN_AST_GLOBAL_SETTINGS,
- DMNSN_AST_ADC_BAILOUT,
- DMNSN_AST_ASSUMED_GAMMA,
- DMNSN_AST_CHARSET,
- DMNSN_AST_ASCII,
- DMNSN_AST_UTF8,
- DMNSN_AST_SYS,
- DMNSN_AST_MAX_TRACE_LEVEL,
- DMNSN_AST_MAX_INTERSECTIONS,
-
- DMNSN_AST_BACKGROUND,
- DMNSN_AST_SKY_SPHERE,
-
- DMNSN_AST_CAMERA,
- DMNSN_AST_PERSPECTIVE,
- DMNSN_AST_LOCATION,
- DMNSN_AST_RIGHT,
- DMNSN_AST_UP,
- DMNSN_AST_SKY,
- DMNSN_AST_ANGLE,
- DMNSN_AST_LOOK_AT,
- DMNSN_AST_DIRECTION,
-
- DMNSN_AST_OBJECT,
- DMNSN_AST_BOX,
- DMNSN_AST_CONE,
- DMNSN_AST_CYLINDER,
- DMNSN_AST_DIFFERENCE,
- DMNSN_AST_INTERSECTION,
- DMNSN_AST_LIGHT_SOURCE,
- DMNSN_AST_MERGE,
- DMNSN_AST_PLANE,
- DMNSN_AST_SPHERE,
- DMNSN_AST_TORUS,
- DMNSN_AST_UNION,
-
- DMNSN_AST_OBJECT_MODIFIERS,
- DMNSN_AST_STURM,
-
- DMNSN_AST_PATTERN,
- DMNSN_AST_CHECKER,
- DMNSN_AST_GRADIENT,
-
- DMNSN_AST_TEXTURE,
-
- DMNSN_AST_PIGMENT,
- DMNSN_AST_PIGMENT_MODIFIERS,
- DMNSN_AST_COLOR_LIST,
- DMNSN_AST_COLOR_MAP,
- DMNSN_AST_COLOR_MAP_ENTRY,
- DMNSN_AST_PIGMENT_LIST,
- DMNSN_AST_PIGMENT_MAP,
- DMNSN_AST_PIGMENT_MAP_ENTRY,
- DMNSN_AST_QUICK_COLOR,
- DMNSN_AST_IMAGE_MAP,
- DMNSN_AST_PNG,
-
- DMNSN_AST_FINISH,
- DMNSN_AST_AMBIENT,
- DMNSN_AST_DIFFUSE,
- DMNSN_AST_PHONG,
- DMNSN_AST_PHONG_SIZE,
-
- DMNSN_AST_REFLECTION,
- DMNSN_AST_REFLECTION_ITEMS,
- DMNSN_AST_FALLOFF,
-
- DMNSN_AST_INTERIOR,
- DMNSN_AST_IOR,
-
- DMNSN_AST_TRANSFORMATION,
- DMNSN_AST_ROTATION,
- DMNSN_AST_SCALE,
- DMNSN_AST_TRANSLATION,
- DMNSN_AST_MATRIX,
- DMNSN_AST_INVERSE,
-
- DMNSN_AST_FLOAT,
- DMNSN_AST_INTEGER,
-
- DMNSN_AST_VECTOR,
-
- DMNSN_AST_ADD,
- DMNSN_AST_SUB,
- DMNSN_AST_MUL,
- DMNSN_AST_DIV,
-
- DMNSN_AST_NEGATE,
- DMNSN_AST_DOT_X,
- DMNSN_AST_DOT_Y,
- DMNSN_AST_DOT_Z,
- DMNSN_AST_DOT_T,
- DMNSN_AST_DOT_TRANSMIT,
-
- DMNSN_AST_EQUAL,
- DMNSN_AST_NOT_EQUAL,
- DMNSN_AST_LESS,
- DMNSN_AST_LESS_EQUAL,
- DMNSN_AST_GREATER,
- DMNSN_AST_GREATER_EQUAL,
- DMNSN_AST_AND,
- DMNSN_AST_OR,
- DMNSN_AST_NOT,
- DMNSN_AST_TERNARY,
-
- DMNSN_AST_ABS,
- DMNSN_AST_ACOS,
- DMNSN_AST_ACOSH,
- DMNSN_AST_ASC,
- DMNSN_AST_ASIN,
- DMNSN_AST_ASINH,
- DMNSN_AST_ATAN,
- DMNSN_AST_ATAN2,
- DMNSN_AST_ATANH,
- DMNSN_AST_CEIL,
- DMNSN_AST_COS,
- DMNSN_AST_COSH,
- DMNSN_AST_DEGREES,
- DMNSN_AST_INT_DIV,
- DMNSN_AST_EXP,
- DMNSN_AST_FLOOR,
- DMNSN_AST_INT,
- DMNSN_AST_LN,
- DMNSN_AST_LOG,
- DMNSN_AST_MAX,
- DMNSN_AST_MIN,
- DMNSN_AST_MOD,
- DMNSN_AST_POW,
- DMNSN_AST_RADIANS,
- DMNSN_AST_SIN,
- DMNSN_AST_SINH,
- DMNSN_AST_SQRT,
- DMNSN_AST_STRCMP,
- DMNSN_AST_STRLEN,
- DMNSN_AST_TAN,
- DMNSN_AST_TANH,
- DMNSN_AST_VAL,
- DMNSN_AST_VAXIS_ROTATE,
- DMNSN_AST_VCROSS,
- DMNSN_AST_VDOT,
- DMNSN_AST_VLENGTH,
- DMNSN_AST_VNORMALIZE,
- DMNSN_AST_VROTATE,
-
- DMNSN_AST_PI,
- DMNSN_AST_TRUE,
- DMNSN_AST_FALSE,
- DMNSN_AST_X,
- DMNSN_AST_Y,
- DMNSN_AST_Z,
- DMNSN_AST_T,
-
- DMNSN_AST_IDENTIFIER,
-
- DMNSN_AST_STRING,
-
- DMNSN_AST_ARRAY,
-
- DMNSN_AST_MACRO
-} dmnsn_astnode_type;
-
-typedef struct dmnsn_astnode dmnsn_astnode;
-
-typedef struct dmnsn_parse_location {
- const char *first_filename, *last_filename;
- int first_line, last_line;
- int first_column, last_column;
-
- struct dmnsn_parse_location *parent;
-} dmnsn_parse_location;
-
-/* Abstract syntax tree node (a dmnsn_array* of these is an AST) */
-struct dmnsn_astnode {
- dmnsn_astnode_type type;
-
- /* Child nodes */
- dmnsn_array *children;
-
- /* Generic data pointer */
- void *ptr;
- dmnsn_free_fn *free_fn;
-
- /* Reference count */
- unsigned int *refcount;
-
- /* File name, and line and column numbers from source code */
- dmnsn_parse_location location;
-};
-
-typedef dmnsn_array dmnsn_astree;
-
-dmnsn_astnode dmnsn_new_ast_array(void);
-dmnsn_astnode dmnsn_new_ast_integer(long value);
-dmnsn_astnode dmnsn_new_ast_float(double value);
-dmnsn_astnode dmnsn_new_ast_ivector(long x, long y, long z, long f, long t);
-dmnsn_astnode dmnsn_new_ast_vector(double x, double y, double z,
- double f, double t);
-dmnsn_astnode dmnsn_new_ast_string(const char *value);
-
-void dmnsn_delete_astnode(dmnsn_astnode astnode);
-void dmnsn_delete_astree(dmnsn_astree *astree);
-
-/* Print an S-expression of the abstract syntax tree to `file' */
-void dmnsn_print_astree_sexpr(FILE *file, const dmnsn_astree *astree);
-
-/* Returns a readable name for an astnode type (ex. DMNSN_AST_FLOAT -> float) */
-const char *dmnsn_astnode_string(dmnsn_astnode_type astnode_type);
-
-/*
- * Symbol table
- */
-
-typedef dmnsn_array dmnsn_symbol_table;
-
-dmnsn_symbol_table *dmnsn_new_symbol_table(void);
-
-void dmnsn_delete_symbol_table(dmnsn_symbol_table *symtable);
-
-void dmnsn_push_scope(dmnsn_symbol_table *symtable);
-void dmnsn_pop_scope(dmnsn_symbol_table *symtable);
-
-void dmnsn_local_symbol(dmnsn_symbol_table *symtable,
- const char *id, dmnsn_astnode value);
-void dmnsn_declare_symbol(dmnsn_symbol_table *symtable,
- const char *id, dmnsn_astnode value);
-void dmnsn_undef_symbol(dmnsn_symbol_table *symtable, const char *id);
-
-dmnsn_astnode *dmnsn_find_symbol(dmnsn_symbol_table *symtable, const char *id);
-
-/* Evaluate an arithmetic expression */
-dmnsn_astnode dmnsn_eval(dmnsn_astnode astnode, dmnsn_symbol_table *symtable);
-dmnsn_astnode dmnsn_eval_scalar(dmnsn_astnode astnode,
- dmnsn_symbol_table *symtable);
-dmnsn_astnode dmnsn_eval_vector(dmnsn_astnode astnode,
- dmnsn_symbol_table *symtable);
-
-
-/*
- * The workhorse -- parse a file
- */
-dmnsn_astree *dmnsn_parse(FILE *file, dmnsn_symbol_table *symtable);
-dmnsn_astree *dmnsn_parse_string(const char *str, dmnsn_symbol_table *symtable);
-
-/*
- * Parser internals
- */
-typedef union dmnsn_parse_item {
- char *value;
- dmnsn_astnode astnode;
-} dmnsn_parse_item;
-
-#endif /* PARSE_H */