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

📄 prsbnd.y

📁 开放源码的编译器open watcom 1.6.0版的源代码
💻 Y
字号:
%{  /* include files */
    #include <stdio.h>	// printf debugging
    #include <assert.h>
    
    #include "bind.h"
    
    #pragma warning 17 5	// shut off the unreferenced goto warning
    
    extern Binding *	CurrBinding;
    
    #define YYPARSER BindingParser
%}

%token T_String
%token T_Number
%token T_Ident

%token T_Class

%token ';'
%token ','
%token '{'
%token '}'
%token '('
%token ')'
%token '@'

%%

goal
	: class_list
	;

class_list
	: class_def
	| class_def class_list
	;
	
class_def
	: class_line bind_block
	  {
	    /* if bindings were placed in a list, it would be done here */
	  }
	;
	
	
class_line
	: T_Class T_Ident 
	  { 
	    assert( CurrBinding == NULL );
	    
	    CurrBinding = new Binding( _scanner->getIdent( $2 ) );
	  }
	;
	
bind_block
	: '{' bind_list '}' ';'
	;
	
bind_list
	: binding
	| binding bind_list
	;
	
binding
	: T_Ident '(' T_Ident ',' absrel_rect ')' ';'
	  {
	    CurrBinding->addControl( _scanner->getIdent( $1 ), _scanner->getIdent( $3 ), $5 );
	  }
	;
	
absrel_rect
	: '(' absrel ',' absrel ',' absrel ',' absrel ')'
	  {
	    $$ = CurrBinding->addAbsRelRect( Rect( $2, $4, $6, $8 ) );
	  }
	;
	
absrel
	: '@'
	  { $$ = Absolute; }
	| '#'
	  { $$ = Relative; }
	;
	
%%

⌨️ 快捷键说明

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