亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? parser.y

?? It is WEB browser core module with source code. Very good!
?? Y
?? 第 1 頁 / 共 2 頁
字號(hào):
%{

/*
 *  This file is part of the KDE libraries
 *  Copyright (C) 2002-2003 Lars Knoll (knoll@kde.org)
 *  Copyright (C) 2004 Apple Computer, Inc.
 * 
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 2 of the License, or (at your option) any later version.
 *
 *  This library 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
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <string.h>
#include <stdlib.h>

#include <dom/dom_string.h>
#include <xml/dom_docimpl.h>
#include <css/css_ruleimpl.h>
#include <css/css_stylesheetimpl.h>
#include <css/css_valueimpl.h>
#include <misc/htmlhashes.h>
#include "cssparser.h"

#include "xml_namespace_table.h"
    
#include <assert.h>
#include <kdebug.h>
// #define CSS_DEBUG

using namespace DOM;

//
// The following file defines the function
//     const struct props *findProp(const char *word, int len)
//
// with 'props->id' a CSS property in the range from CSS_PROP_MIN to
// (and including) CSS_PROP_TOTAL-1

// turn off inlining to void warning with newer gcc
#undef __inline
#define __inline
#include "cssproperties.c"
#include "cssvalues.c"
#undef __inline

int DOM::getPropertyID(const char *tagStr, int len)
{
    const struct props *propsPtr = findProp(tagStr, len);
    if (!propsPtr)
        return 0;

    return propsPtr->id;
}

static inline int getValueID(const char *tagStr, int len)
{
    const struct css_value *val = findValue(tagStr, len);
    if (!val)
        return 0;

    return val->id;
}


#define YYDEBUG 0
#define YYMAXDEPTH 0
#define YYPARSE_PARAM parser
%}

%pure_parser

%union {
    CSSRuleImpl *rule;
    CSSSelector *selector;
    bool ok;
    MediaListImpl *mediaList;
    CSSMediaRuleImpl *mediaRule;
    CSSRuleListImpl *ruleList;
    ParseString string;
    float val;
    int prop_id;
    int attribute;
    int element;
    CSSSelector::Relation relation;
    bool b;
    char tok;
    Value value;
    ValueList *valueList;
}

%{

static inline int cssyyerror(const char *x ) {
#ifdef CSS_DEBUG
    qDebug( x );
#else
    Q_UNUSED( x );
#endif
    return 1;
}

static int cssyylex( YYSTYPE *yylval ) {
    return CSSParser::current()->lex( yylval );
}


%}

%expect 12

%token WHITESPACE SGML_CD

%token INCLUDES
%token DASHMATCH
%token BEGINSWITH
%token ENDSWITH
%token CONTAINS

%token <string> STRING

%token <string> IDENT

%token <string> HASH
%token ':'
%token '.'
%token '['

%token IMPORT_SYM
%token PAGE_SYM
%token MEDIA_SYM
%token FONT_FACE_SYM
%token CHARSET_SYM
%token NAMESPACE_SYM
%token KHTML_RULE_SYM
%token KHTML_DECLS_SYM
%token KHTML_VALUE_SYM

%token IMPORTANT_SYM

%token <val> QEMS
%token <val> EMS
%token <val> EXS
%token <val> PXS
%token <val> CMS
%token <val> MMS
%token <val> INS
%token <val> PTS
%token <val> PCS
%token <val> DEGS
%token <val> RADS
%token <val> GRADS
%token <val> MSECS
%token <val> SECS
%token <val> HERZ
%token <val> KHERZ
%token <string> DIMEN
%token <val> PERCENTAGE
%token <val> NUMBER

%token <string> URI
%token <string> FUNCTION

%token <string> UNICODERANGE

%type <relation> combinator

%type <rule> ruleset
%type <rule> media
%type <rule> import
%type <rule> page
%type <rule> font_face
%type <rule> invalid_rule
%type <rule> invalid_at
%type <rule> invalid_import
%type <rule> rule

%type <string> maybe_ns_prefix

%type <string> namespace_selector

%type <string> string_or_uri
%type <string> ident_or_string
%type <string> medium
%type <string> hexcolor

%type <mediaList> media_list
%type <mediaList> maybe_media_list

%type <ruleList> ruleset_list

%type <prop_id> property

%type <selector> specifier
%type <selector> specifier_list
%type <selector> simple_selector
%type <selector> selector
%type <selector> selector_list
%type <selector> class
%type <selector> attrib
%type <selector> pseudo

%type <ok> declaration_list
%type <ok> decl_list
%type <ok> declaration

%type <b> prio

%type <val> match
%type <val> unary_operator
%type <tok> operator

%type <valueList> expr
%type <value> term
%type <value> unary_term
%type <value> function

%type <element> element_name

%type <attribute> attrib_id

%%

stylesheet:
    maybe_charset maybe_sgml import_list namespace_list rule_list
  | khtml_rule maybe_space
  | khtml_decls maybe_space
  | khtml_value maybe_space
  ;

khtml_rule:
    KHTML_RULE_SYM '{' maybe_space ruleset maybe_space '}' {
        CSSParser *p = static_cast<CSSParser *>(parser);
        p->rule = $4;
    }
;

khtml_decls:
    KHTML_DECLS_SYM '{' maybe_space declaration_list '}' {
	/* can be empty */
    }
;

khtml_value:
    KHTML_VALUE_SYM '{' maybe_space expr '}' {
	CSSParser *p = static_cast<CSSParser *>(parser);
	if ( $4 ) {
	    p->valueList = $4;
#ifdef CSS_DEBUG
	    kdDebug( 6080 ) << "   got property for " << p->id <<
		(p->important?" important":"")<< endl;
	    bool ok =
#endif
		p->parseValue( p->id, p->important );
#ifdef CSS_DEBUG
	    if ( !ok )
		kdDebug( 6080 ) << "     couldn't parse value!" << endl;
#endif
	}
#ifdef CSS_DEBUG
	else
	    kdDebug( 6080 ) << "     no value found!" << endl;
#endif
	delete p->valueList;
	p->valueList = 0;
    }
;

maybe_space:
    /* empty */
  | maybe_space WHITESPACE
  ;

maybe_sgml:
    /* empty */
  | maybe_sgml SGML_CD
  | maybe_sgml WHITESPACE
  ;

maybe_charset:
   /* empty */
 | CHARSET_SYM maybe_space STRING maybe_space ';' {
#ifdef CSS_DEBUG
     kdDebug( 6080 ) << "charset rule: " << qString($3) << endl;
#endif
 }
  | CHARSET_SYM error invalid_block
  | CHARSET_SYM error ';'
 ;

import_list:
 /* empty */
 | import_list import maybe_sgml {
     CSSParser *p = static_cast<CSSParser *>(parser);
     if ( $2 && p->styleElement && p->styleElement->isCSSStyleSheet() ) {
	 p->styleElement->append( $2 );
     } else {
	 delete $2;
     }
 }
 ;

namespace_list:
/* empty */
| namespace_list namespace maybe_sgml
;

rule_list:
   /* empty */
 | rule_list rule maybe_sgml {
     CSSParser *p = static_cast<CSSParser *>(parser);
     if ( $2 && p->styleElement && p->styleElement->isCSSStyleSheet() ) {
	 p->styleElement->append( $2 );
     } else {
	 delete $2;
     }
 }
 ;

rule:
    ruleset
  | media
  | page
  | font_face
  | invalid_rule
  | invalid_at
  | invalid_import
    ;

import:
    IMPORT_SYM maybe_space string_or_uri maybe_space maybe_media_list ';' {
#ifdef CSS_DEBUG
	kdDebug( 6080 ) << "@import: " << qString($3) << endl;
#endif
	CSSParser *p = static_cast<CSSParser *>(parser);
	if ( $5 && p->styleElement && p->styleElement->isCSSStyleSheet() )
	    $$ = new CSSImportRuleImpl( p->styleElement, domString($3), $5 );
	else {
	    $$ = 0;
            delete $5;
        }
    }
  | IMPORT_SYM error invalid_block {
        $$ = 0;
    }
  | IMPORT_SYM error ';' {
        $$ = 0;
    }
  ;

namespace:
NAMESPACE_SYM maybe_space maybe_ns_prefix string_or_uri maybe_space ';' {
#ifdef CSS_DEBUG
    kdDebug( 6080 ) << "@namespace: " << qString($4) << endl;
#endif
    CSSParser *p = static_cast<CSSParser *>(parser);
    if (p->styleElement && p->styleElement->isCSSStyleSheet())
        static_cast<CSSStyleSheetImpl*>(p->styleElement)->addNamespace(p, domString($3), domString($4));
}
| NAMESPACE_SYM error invalid_block
| NAMESPACE_SYM error ';'
;

maybe_ns_prefix:
/* empty */ { $$.string = 0; }
| IDENT WHITESPACE { $$ = $1; }
;

string_or_uri:
STRING
| URI
;

maybe_media_list:
     /* empty */ {
        $$ = new MediaListImpl();
     }
     | media_list
;


media_list:
    /* empty */ {
	$$ = 0;
    }
    | medium {
	$$ = new MediaListImpl();
	$$->appendMedium( domString($1).lower() );
    }
    | media_list ',' maybe_space medium {
	$$ = $1;
        if ($$)
	    $$->appendMedium( domString($4) );
    }
    | media_list error {
        delete $1;
        $$ = 0;
    }
    ;

media:
    MEDIA_SYM maybe_space media_list '{' maybe_space ruleset_list '}' {
	CSSParser *p = static_cast<CSSParser *>(parser);
	if ( $3 && $6 &&
	     p->styleElement && p->styleElement->isCSSStyleSheet() ) {
	    $$ = new CSSMediaRuleImpl( static_cast<CSSStyleSheetImpl*>(p->styleElement), $3, $6 );
	} else {
	    $$ = 0;
	    delete $3;
	    delete $6;
	}
    }
  ;

ruleset_list:
    /* empty */ { $$ = 0; }
  | ruleset_list ruleset maybe_space {
      $$ = $1;
      if ( $2 ) {
	  if ( !$$ ) $$ = new CSSRuleListImpl();
	  $$->append( $2 );
      }
  }
    ;

medium:
  IDENT maybe_space {
      $$ = $1;
  }
  ;

/*
page:
    PAGE_SYM maybe_space IDENT? pseudo_page? maybe_space
    '{' maybe_space declaration [ ';' maybe_space declaration ]* '}' maybe_space
  ;

pseudo_page
  : ':' IDENT
  ;

font_face
  : FONT_FACE_SYM maybe_space
    '{' maybe_space declaration [ ';' maybe_space declaration ]* '}' maybe_space
  ;
*/

page:
    PAGE_SYM error invalid_block {
      $$ = 0;
    }
  | PAGE_SYM error ';' {
      $$ = 0;
    }
    ;

font_face:
    FONT_FACE_SYM error invalid_block {
      $$ = 0;
    }
  | FONT_FACE_SYM error ';' {
      $$ = 0;
    }
;

combinator:
  '+' maybe_space { $$ = CSSSelector::Sibling; }
  | '>' maybe_space { $$ = CSSSelector::Child; }
  | /* empty */ { $$ = CSSSelector::Descendant; }
  ;

unary_operator:
    '-' { $$ = -1; }
  | '+' { $$ = 1; }
  ;

ruleset:
    selector_list '{' maybe_space declaration_list '}' {
#ifdef CSS_DEBUG
	kdDebug( 6080 ) << "got ruleset" << endl << "  selector:" << endl;
#endif
	CSSParser *p = static_cast<CSSParser *>(parser);
	if ( $1 ) {
            CSSStyleRuleImpl *rule = new CSSStyleRuleImpl( p->styleElement );
            CSSMutableStyleDeclarationImpl *decl = p->createStyleDeclaration( rule );
            rule->setSelector( $1 );
            rule->setDeclaration(decl);
            $$ = rule;
	} else {
	    $$ = 0;
	    p->clearProperties();
	}
    }
  ;

selector_list:
    selector {
	if ( $1 ) {
	    $$ = $1;
#ifdef CSS_DEBUG
	    kdDebug( 6080 ) << "   got simple selector:" << endl;
	    $1->print();
#endif
	} else {
	    $$ = 0;
	}
    }
    | selector_list ',' maybe_space selector {
	if ( $1 && $4 ) {
	    $$ = $1;
	    $$->append( $4 );
#ifdef CSS_DEBUG
	    kdDebug( 6080 ) << "   got simple selector:" << endl;
	    $4->print();
#endif
	} else {
            delete $1;
            delete $4;
            $$ = 0;
        }
    }
  | selector_list error {
        delete $1;
        $$ = 0;
    }
   ;

selector:
    simple_selector {
	$$ = $1;
    }
    | selector combinator simple_selector {
    	$$ = $3;
        if (!$1) {
            delete $3;
            $$ = 0;
        }
        else if ($$) {

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久一区二区三区| 国产精品18久久久久久vr| 亚洲视频一二区| 国产情人综合久久777777| 久久久影视传媒| 久久网这里都是精品| 久久先锋影音av鲁色资源网| 精品国一区二区三区| 欧美变态凌虐bdsm| 精品国产一区二区三区久久影院| 欧美成人猛片aaaaaaa| 精品久久久影院| 欧美精品一区二区三区四区| 国产亚洲美州欧州综合国| 久久久久久9999| 国产精品麻豆视频| 亚洲精品视频在线观看网站| 亚洲乱码精品一二三四区日韩在线| 亚洲欧美国产三级| 亚洲第一狼人社区| 免费看欧美女人艹b| 国精品**一区二区三区在线蜜桃| 国产成人亚洲综合a∨婷婷图片| 懂色av一区二区三区免费观看 | 激情成人综合网| 国产电影一区二区三区| av资源站一区| 欧洲精品在线观看| 日韩一区二区三区精品视频| 精品国产乱码久久久久久老虎 | 亚洲人成在线观看一区二区| 一区二区三区在线不卡| 免费成人结看片| 大白屁股一区二区视频| 日本道免费精品一区二区三区| 欧美一区二区三区系列电影| 国产视频一区在线观看| 一区二区视频免费在线观看| 午夜久久福利影院| 国产精品99精品久久免费| 一本久久精品一区二区| 欧美一区二区黄| 中文字幕一区日韩精品欧美| 日韩电影在线免费看| 国产激情视频一区二区在线观看 | 在线成人午夜影院| 久久久久久亚洲综合| 亚洲欧美日韩小说| 精品一区二区三区日韩| 91官网在线观看| 国产三级精品三级在线专区| 亚洲午夜久久久久中文字幕久| 麻豆精品新av中文字幕| 91蝌蚪porny| 久久免费看少妇高潮| 亚洲线精品一区二区三区| 国产精品系列在线播放| 欧美日韩国产免费一区二区 | 老司机精品视频在线| 91丨porny丨在线| 欧美大白屁股肥臀xxxxxx| 亚洲三级电影网站| 韩国在线一区二区| 欧美日韩高清一区| 国产精品久久久久久久久动漫| 免费一区二区视频| 色诱亚洲精品久久久久久| 久久噜噜亚洲综合| 日韩黄色免费网站| 色婷婷综合久久久中文一区二区 | 日本网站在线观看一区二区三区| 成人av网站大全| 久久看人人爽人人| 蜜桃精品视频在线观看| 欧美三级韩国三级日本三斤| 国产精品久久久久婷婷二区次| 青娱乐精品在线视频| 欧美日韩一区三区四区| 亚洲欧洲av在线| 福利电影一区二区三区| 337p日本欧洲亚洲大胆色噜噜| 亚洲bt欧美bt精品| 色婷婷久久综合| 中国色在线观看另类| 久久国产精品99久久人人澡| 欧美裸体bbwbbwbbw| 亚洲精品成人精品456| 91麻豆成人久久精品二区三区| 中文字幕av不卡| 国产成人午夜片在线观看高清观看| 欧美一级二级三级蜜桃| 午夜精品一区二区三区三上悠亚| 91日韩精品一区| 国产精品久久福利| 国产成人在线电影| 国产日韩欧美精品一区| 国产高清亚洲一区| 国产欧美一区二区精品秋霞影院| 国产在线日韩欧美| 精品国产伦一区二区三区观看方式| 免费成人在线观看| 日韩色视频在线观看| 午夜精品一区二区三区三上悠亚| 欧美嫩在线观看| 婷婷丁香激情综合| 制服丝袜中文字幕一区| 视频一区二区三区入口| 在线播放中文字幕一区| 美女免费视频一区| 精品国偷自产国产一区| 久久97超碰国产精品超碰| 精品日本一线二线三线不卡| 精品一区在线看| 久久久亚洲精品石原莉奈| 国产盗摄视频一区二区三区| 国产精品色哟哟网站| 99精品一区二区| 亚洲一区二区三区三| 欧美日韩大陆一区二区| 免费成人在线网站| 国产日韩欧美亚洲| 91年精品国产| 亚洲图片自拍偷拍| 日韩欧美一区中文| 国产乱码精品一区二区三| 国产精品色噜噜| 在线精品视频免费播放| 日韩黄色在线观看| 久久久亚洲高清| 色综合婷婷久久| 美女脱光内衣内裤视频久久影院| ww亚洲ww在线观看国产| av在线播放一区二区三区| 亚洲一区二区高清| 欧美电视剧免费全集观看| 成人一级视频在线观看| 国产精品一级在线| 国产精品国产三级国产普通话三级| 欧美亚洲综合另类| 麻豆精品在线看| ...av二区三区久久精品| 欧美日韩国产中文| 国产高清亚洲一区| 亚洲在线视频网站| 2021中文字幕一区亚洲| 99久久久久久99| 美女性感视频久久| 亚洲四区在线观看| 7777精品伊人久久久大香线蕉完整版| 韩国午夜理伦三级不卡影院| 一区二区三区日韩欧美精品| 欧美成人伊人久久综合网| 色综合激情五月| 国产毛片精品视频| 亚洲第一福利一区| 国产精品无圣光一区二区| 精品视频在线免费观看| 国产馆精品极品| 日本系列欧美系列| 亚洲欧美区自拍先锋| 久久先锋影音av鲁色资源网| 欧美日韩国产高清一区二区三区| 懂色av中文字幕一区二区三区| 日本在线不卡视频| 亚洲欧美日韩国产成人精品影院 | 亚洲日本在线视频观看| 91麻豆精品国产91久久久久 | 精品国产3级a| 欧美日韩激情一区| 99久久久久免费精品国产| 国内精品写真在线观看| 爽爽淫人综合网网站| 亚洲男人的天堂av| 韩日av一区二区| 亚洲成av人综合在线观看| 国产精品久久久久久久久图文区| 日韩欧美在线不卡| 欧洲精品在线观看| 99热这里都是精品| 国产一区二区三区观看| 毛片不卡一区二区| 天堂一区二区在线| 亚洲欧美精品午睡沙发| 中文字幕乱码亚洲精品一区| 精品欧美黑人一区二区三区| 欧美精品tushy高清| 欧洲一区在线电影| 91丝袜美女网| 成人国产亚洲欧美成人综合网| 国产在线精品视频| 另类小说欧美激情| 日韩成人精品视频| 亚洲国产成人av好男人在线观看| 亚洲男同1069视频| 亚洲天堂精品在线观看| 中文字幕乱码一区二区免费| 欧美国产日韩在线观看| 国产欧美一二三区| 中文av一区二区| 中文字幕中文字幕在线一区|