From 23229722b2abd0021c697e3f6e43f74b51e4ee41 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Fri, 16 Apr 2010 14:06:31 -0400 Subject: Implement image_{width,height}. --- dimension/common.rules | 8 ++++++++ dimension/common.terminals | 4 ++-- dimension/lexer.l | 2 ++ dimension/main.c | 2 ++ 4 files changed, 14 insertions(+), 2 deletions(-) (limited to 'dimension') diff --git a/dimension/common.rules b/dimension/common.rules index 732a277..075b276 100644 --- a/dimension/common.rules +++ b/dimension/common.rules @@ -669,6 +669,14 @@ ARITH_EXPR: FLOAT_LITERAL | "vrotate" "(" ARITH_EXPR "," ARITH_EXPR ")" { $$ = dmnsn_new_astnode2(DMNSN_AST_VROTATE, @$, $3, $5); } + | "image_height" { + $$ = dmnsn_new_astnode(DMNSN_AST_IDENTIFIER, @$); + $$.ptr = dmnsn_strdup("image_height"); + } + | "image_width" { + $$ = dmnsn_new_astnode(DMNSN_AST_IDENTIFIER, @$); + $$.ptr = dmnsn_strdup("image_width"); + } | "pi" { $$ = dmnsn_new_astnode(DMNSN_AST_PI, @$); } | "true" { $$ = dmnsn_new_astnode(DMNSN_AST_TRUE, @$); } | "on" { $$ = dmnsn_new_astnode(DMNSN_AST_TRUE, @$); } diff --git a/dimension/common.terminals b/dimension/common.terminals index 05ab8b8..fd62320 100644 --- a/dimension/common.terminals +++ b/dimension/common.terminals @@ -225,10 +225,10 @@ %token DMNSN_T_HYPERCOMPLEX %token DMNSN_T_HOLLOW %token DMNSN_T_IFF -%token DMNSN_T_IMAGE_HEIGHT +%token DMNSN_T_IMAGE_HEIGHT "image_height" %token DMNSN_T_IMAGE_MAP "image_map" %token DMNSN_T_IMAGE_PATTERN -%token DMNSN_T_IMAGE_WIDTH +%token DMNSN_T_IMAGE_WIDTH "image_width" %token DMNSN_T_INITIAL_CLOCK %token DMNSN_T_INITIAL_FRAME %token DMNSN_T_INSIDE diff --git a/dimension/lexer.l b/dimension/lexer.l index 18b4202..2684868 100644 --- a/dimension/lexer.l +++ b/dimension/lexer.l @@ -199,7 +199,9 @@ unsigned long wchar; "gray" RETURN_TOKEN(DMNSN_T_GRAY); "grey" RETURN_TOKEN(DMNSN_T_GRAY); "green" RETURN_TOKEN(DMNSN_T_GREEN); +"image_height" RETURN_TOKEN(DMNSN_T_IMAGE_HEIGHT); "image_map" RETURN_TOKEN(DMNSN_T_IMAGE_MAP); +"image_width" RETURN_TOKEN(DMNSN_T_IMAGE_WIDTH); "int" RETURN_TOKEN(DMNSN_T_INT); "interior" RETURN_TOKEN(DMNSN_T_INTERIOR); "intersection" RETURN_TOKEN(DMNSN_T_INTERSECTION); diff --git a/dimension/main.c b/dimension/main.c index 2bd4e10..1ea8a72 100644 --- a/dimension/main.c +++ b/dimension/main.c @@ -196,6 +196,8 @@ main(int argc, char **argv) { dmnsn_symbol_table *symtable = dmnsn_new_symbol_table(); dmnsn_declare_symbol(symtable, "$file", dmnsn_new_ast_string(input)); dmnsn_declare_symbol(symtable, "version", dmnsn_new_ast_float(3.6)); + dmnsn_declare_symbol(symtable, "image_width", dmnsn_new_ast_integer(width)); + dmnsn_declare_symbol(symtable, "image_height", dmnsn_new_ast_integer(height)); /* Debugging option - output the abstract syntax tree as an S-expression */ if (parse) { -- cgit v1.2.3