⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chanimy.y

📁 Windows上的MUD客户端程序
💻 Y
字号:
%{
/*----------------------------------------------------------------------------

            .###.  ###     ###       ,#,          .###.    ,#######,
         ,####""   ###    .###     ,##'##,     ,####""   .##'    `##.
        ###        ###########    ,##' `##,   ###       ####      ####
        ###..      ###'    ###  ,###########, ####..    `###,    ,##'
          `######  ###     ###  `##'     `##'   `######   `########'


	Copyright 1995, Chaco Communications, Inc. All rights reserved.
	Unpublished -- Rights reserved under the copyright laws of the United
	States.  Use of a copyright notice is precautionary only and does no
	imply publication or disclosure.

	This software contains confidential information and trade secrets of
	Chaco Communications, Inc.  Use, disclosure, or reproduction is
	prohibited without the prior express written permission of Chaco
	Communications, Inc.

	RESTRICTED RIGHTS LEGEND

	Use, duplication, or disclosure by the Government is subject to
	restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in
	Technical Data and Computer Software clause at DFARS 252.227-7013.

	Chaco Communications, Inc.
	10164 Parkwood Drive, Suite 8, Cupertino, CA, 95014-1533

------------------------------------------------------------------------------

	Animation parser.

----------------------------------------------------------------------------*/

// $Header: /home/cvs/chaco/modules/client/msw/ChGraphx/ChAnimy.y,v 2.0 1995/05/11 00:12:21 coyote Exp $

#include "headers.h"
#include "ChAnim.h"
#include "ChGrMod.h"
#include "ChAniPrs.h"
#pragma warning( disable: 4068 )

/* redefine these values so they don't globally conflict -
   This is necessary for yacc. Can change when we go to bison.
 */

#define yyparse  	ChAnimParser::yyparse
#define yycvtok		ChAnimParser::yycvtok

// end of predefinitions
// ==================================================================
%}

%token	ANCHOR
%token	ANCHORLIST
%token	BACKGROUND
%token	CAST
%token	CASTID
%token	CMDARG
%token	COLUMNS 
%token	CURSOR
%token	FALSEVAL 
%token	FILE 
%token	FLOAT
%token	FORMAT 
%token	FRAMERATE 
%token	FRAMES
%token	FRAMEVAL
%token	GOTO
%token	HINT
%token	HOTCAST
%token	HOTRECT
%token	INT
%token	ISANIMATING 
%token	ISDRAGGABLE
%token	ISVISIBLE 
%token	MAZE
%token	NAME
%token	NODEID
%token	ROWS 
%token	SCENE
%token	SCRIPT 
%token	SCRIPTREF 
%token	SPRITE 
%token	STARTFRAME
%token	STOP 
%token	STRING
%token	TRUEVAL
 

%%

GraphicsFile : Scene
					{m_lResult = $1;} 
				| AnchorListNode 
					{m_lResult = $1;} 
				| CastMember 
					{m_lResult = $1;} 
				| CastScript
					{m_lResult = $1;} 

Scene : SCENE '{' SceneList '}'
	{ $$ = $3;}

SceneList : SceneList SceneNode
			| SceneNode
				{ $$ = $1; }

SceneNode : AnchorListNode | CastMember  | Background /* | Maze | CastScript  */

AnchorListNode : ANCHORLIST '{' Anchors '}'
	{ $$ = 0; }

Anchors : Anchors Anchor | Anchor

Anchor : ANCHOR '{' AnchorDecls '}'
	{ $$ = AddAnchor( (ChBindList *)($3) ); }

AnchorDecls : 	AnchorDecls AnchorDecl 
				{ $$ = AppendBindingList( (ChBindList *)($1), (ChAnimBindVal*)($2) ); }
				| AnchorDecl
				{ $$ = NewBindingList( (ChAnimBindVal*)($1) ); }

AnchorDecl : 
				AnchorIdentifier |
				AnchorRect |
				AnchorHint |
				AnchorCmdArg |
				AnchorCursor |
				AnchorHotCast |
				AnchorCast | 
				AnchorStartFrame /**/

AnchorIdentifier : NODEID INT	
	{ $$ = bind(NODEID, $2); }

AnchorRect : HOTRECT INT INT INT INT
	{ $$ = bind(HOTRECT, new CRect($2, $3, $4, $5)); }

AnchorHint : HINT STRING
	{ $$ = bind(HINT, (void *)($2)); }

AnchorCmdArg : CMDARG STRING 
	{ $$ = bind(CMDARG, (void *)($2)); }

AnchorCursor : CURSOR STRING 
	{ $$ = bind(CURSOR, (void *)($2)); }

AnchorHotCast : HOTCAST INT
	{ $$ = bind(HOTCAST, $2); }

AnchorCast : CASTID INT  
	{ $$ = bind(CAST, $2); }

AnchorStartFrame : STARTFRAME INT
	{ $$ = bind(STARTFRAME, $2); }

/* Background dib */
Background : BACKGROUND '{' BackgroundDecls '}'
	{ 
		$$ = 0;
		Background( (ChBindList *)($3) );
	}

BackgroundDecls	: BackgroundDecls  BackgroundDecl
				{ $$ = AppendBindingList( (ChBindList *)($1), (ChAnimBindVal*)($2) ); }
					| BackgroundDecl
				{ $$ = NewBindingList( (ChAnimBindVal*)($1) ); }

BackgroundDecl :  FileSpec

/* Cast member */

CastMember : CAST '{' CastDecls '}'
	{ 
		$$ = 0;
		AddCast( (ChBindList *)($3) );
	}

CastDecls :	CastDecls CastDecl 
				{ $$ = AppendBindingList( (ChBindList *)($1), (ChAnimBindVal*)($2) ); }
			| CastDecl
				{ $$ = NewBindingList( (ChAnimBindVal*)($1) ); }

CastDecl : 	NodeId
			| NodeName 
			| Sprite 
			| CastScript 
			/* |ScriptRef*/
			| IsVisible
			| IsAnimating
			| IsDraggable

NodeId : NODEID INT	
	{ $$ = bind(NODEID, $2); }

NodeName : NAME STRING
	{ $$ = bind(NAME, (void *)($2)); }

IsVisible 	:  ISVISIBLE BoolValue
	{ $$ = bind(ISVISIBLE, ($2)); }
  
IsAnimating	:  ISANIMATING  BoolValue
	{ $$ = bind(ISANIMATING, ($2)); }

IsDraggable	:  ISDRAGGABLE  BoolValue
	{ $$ = bind(ISDRAGGABLE, ($2)); }

BoolValue : TRUEVAL 
				{ $$ = 1; }
			| FALSEVAL
				{ $$ = 0; }

Sprite : SPRITE '{' SpriteDecls '}'
	{ 
		ChAnimParser * parser = ChAnimParser::GetParser();
		$$ = parser->bind(SPRITE, (void *)(parser->Sprite( (ChBindList *)($3) )));
	}

SpriteDecls	: 	SpriteDecls SpriteDecl 
				{ $$ = AppendBindingList( (ChBindList *)($1), (ChAnimBindVal*)($2) ); }
				| SpriteDecl		  
				{ $$ = NewBindingList( (ChAnimBindVal*)($1) ); }

SpriteDecl :  	NodeId 
				| NodeName 
				| FileSpec 
				| Rows 
				| Columns 

FileSpec : FILE STRING
	{ $$ = bind(FILE, (void *)($2)); }

Rows : ROWS INT
	{ $$ = bind(ROWS, $2); }

Columns : COLUMNS INT
	{ $$ = bind(COLUMNS, $2); }

/* Inline script - save for cast */
CastScript : SCRIPT '{' ScriptDecls '}'
	{ 
		$$ = bind(SCRIPT, (void *)(Script((ChBindList *)($3))));
	}
	| SCRIPT STRING
	{
		$$ = bind(SCRIPTREF, (void *)($2));
	}

ScriptDecls	: 	ScriptDecls ScriptDecl 
				{ $$ = AppendBindingList( (ChBindList *)($1), (ChAnimBindVal*)($2) ); }
				| ScriptDecl		  
				{ $$ = NewBindingList( (ChAnimBindVal*)($1) ); }
 
ScriptDecl : 	NodeId 
				| NodeName 
				| FrameRate
				| StartFrame
				| Frames

FrameRate :	FRAMERATE  INT
	{ $$ = bind(FRAMERATE, $2); }

StartFrame : STARTFRAME	INT
	{ $$ = bind(STARTFRAME, $2); }

Frames : FRAMES	'{' FrameDecls '}'
	{ 
		ChAnimParser * parser = ChAnimParser::GetParser();
		$$ = parser->bind(FRAMES, parser->Frames( (ChBindList *)($3) ));
	}

FrameDecls	: 	FrameDecls FrameDecl 
				{ $$ = AppendBindingList( (ChBindList *)($1), (ChAnimBindVal*)($2) ); }
				| FrameDecl		  
				{ $$ = NewBindingList( (ChAnimBindVal*)($1) ); }

FrameDecl :	FrameVal 
			| FrameStop
			| FrameGoto


FrameVal : INT INT INT INT INT INT
	{ $$ = bind(FRAMEVAL, new ChCell($1, $2, $3, $4, $5, $6)); }

FrameStop : STOP 
	{ $$ = bind(STOP, 0); }

FrameGoto : GOTO INT
	{ $$ = bind(GOTO, $2); }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -