From 3594dace7f5eaf4f4e9c85fea3adf95e8087d253 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Mon, 11 Oct 2010 15:36:02 +0000 Subject: [PATCH] added "refraction" to parser, added RefractionNode node type git-svn-id: svn://anubis/fart/trunk@373 7f9b0f55-74a9-4bce-be96-3c2cd072584d --- parser/nodes.h | 10 ++++++++++ parser/parser.lex | 1 + parser/parser.yy | 2 ++ vim/syntax/fart.vim | 2 +- 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/parser/nodes.h b/parser/nodes.h index d949e1d..fa84c60 100644 --- a/parser/nodes.h +++ b/parser/nodes.h @@ -410,6 +410,16 @@ class ReflectanceNode : public NumberNode } }; +class RefractionNode : public NumberNode +{ + public: + RefractionNode(NodeRef e) : NumberNode(e) {} + virtual NodeRef evaluate() + { + return new RefractionNode(m_expr->evaluate()); + } +}; + class RotateNode : public VectorNode { public: diff --git a/parser/parser.lex b/parser/parser.lex index ad1bebe..15c486a 100644 --- a/parser/parser.lex +++ b/parser/parser.lex @@ -76,6 +76,7 @@ polygon return POLYGON; position return POSITION; radius return RADIUS; reflectance return REFLECTANCE; +refraction return REFRACTION; rotate return ROTATE; scale return SCALE; scene return SCENE; diff --git a/parser/parser.yy b/parser/parser.yy index eed22a4..f824953 100644 --- a/parser/parser.yy +++ b/parser/parser.yy @@ -94,6 +94,7 @@ refptr parser_scope; %token POSITION; %token RADIUS; %token REFLECTANCE; +%token REFRACTION; %token ROTATE; %token SCALE; %token SCENE; @@ -197,6 +198,7 @@ general_item: AMBIENT vector3 { $$ = new AmbientNode($2); } } | RADIUS expression { $$ = new RadiusNode($2); } | REFLECTANCE expression { $$ = new ReflectanceNode($2); } + | REFRACTION expression { $$ = new RefractionNode($2); } | ROTATE expression COMMA vector3 { $$ = new RotateNode($2, $4); } | SCALE expression { $$ = new ScaleNode(new ScaleScalarNode($2)); } | SCALE vector2 { $$ = new ScaleNode($2); } diff --git a/vim/syntax/fart.vim b/vim/syntax/fart.vim index 1989499..884f07c 100644 --- a/vim/syntax/fart.vim +++ b/vim/syntax/fart.vim @@ -10,7 +10,7 @@ endif syn case match -syn keyword fartKeywords ambient ambient_occlusion color define diffuse exposure height jitter look_at material max_depth multisample ngon offset polygon position radius reflectance rotate scale shininess size specular translate transparency union up vfov width +syn keyword fartKeywords ambient ambient_occlusion color define diffuse exposure height jitter look_at material max_depth multisample ngon offset polygon position radius reflectance refraction rotate scale shininess size specular translate transparency union up vfov width syn keyword fartObjects box camera cyl extrude intersect light options plane scene shape sphere subtract union syn keyword fartControl for while if else elsif local syn match fartNumber "\(^\|\W\)\@<=[+-]\=\(\d\+\)\=\.\=\d\+\([eE][+-]\=\d\+\)\="