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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? first.c

?? its about compiler for LL1 and LR
?? C
字號:
/*@A (C) 1992 Allen I. Holub                                                */

#include <stdio.h>
#include <tools/debug.h>
#include <tools/set.h>
#include <tools/hash.h>
#include <tools/compiler.h>
#include <tools/l.h>
#include "parser.h"

/* FIRST.C	 Compute FIRST sets for all productions in a symbol table.
 *-------------------------------------------------------------------------
 */


void	first_closure	P(( SYMBOL *lhs ));			/* local */

void	first		P(( void ));				/* public */

int	first_rhs	P(( SET *dest, SYMBOL **rhs, int len ));

PRIVATE int Did_something;

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

PUBLIC	void first( )
{
    /* Construct FIRST sets for all nonterminal symbols in the symbol table.  */

    D( printf("Finding FIRST sets\n"); )

    do
    {
	Did_something = 0;
	ptab( Symtab, (ptab_t) first_closure, NULL, 0 );

    } while( Did_something );
}

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

PRIVATE	void first_closure( lhs )
SYMBOL	*lhs;				/* Current left-hand side	*/
{
    /* Called for every element in the FIRST sets. Adds elements to the first
     * sets. The following rules are used:
     *
     * 1) given lhs->...Y... where Y is a terminal symbol preceded by any number
     *    (including 0) of nullable nonterminal symbols or actions, add Y to
     *    FIRST(x).
     *
     * 2) given lhs->...y... where y is a nonterminal symbol preceded by any
     *    number (including 0) of nullable nonterminal symbols or actions, add
     *    FIRST(y) to FIRST(lhs).
     */

    PRODUCTION  *prod;  	/* Pointer to one production side	 */
    SYMBOL	**y;  	 	/* Pointer to one element of production  */
    static SET  *set = NULL;	/* Scratch-space set.			 */
    int	        i;

    if( !ISNONTERM(lhs) )	/* Ignore entries for terminal symbols	*/
	    return;

    if( !set )			/* Do this once. The set isn't free()d	*/
	set = newset();

    ASSIGN( set, lhs->first );

    for( prod = lhs->productions; prod ; prod = prod->next )
    {
	if( prod->non_acts <= 0 )		/* No non-action symbols    */
	{					/* add epsilon to first set */
	    ADD( set, EPSILON );
	    continue;
	}

	for( y = prod->rhs, i = prod->rhs_len; --i >= 0; y++ )
	{
	    if( ISACT( *y ) )		  	  /* pretend acts don't exist */
		continue;

	    if( ISTERM( *y ) )
		ADD( set, (*y)->val );

	    else if( *y )			        /* it's a nonterminal */
		UNION( set, (*y)->first );

	    if( !NULLABLE( *y ))	  /* it's not a nullable nonterminal  */
		break;
	}
    }

    if( !IS_EQUIVALENT(set, lhs->first) )
    {
	ASSIGN( lhs->first, set );
	Did_something = 1;
    }
}

/*----------------------------------------------------------------------*/
PUBLIC	int	first_rhs( dest, rhs, len )
SET		*dest;			/* Target set		*/
SYMBOL		**rhs;			/* A right-hand side	*/
int		len;			/* # of objects in rhs	*/
{
    /* Fill the destination set with FIRST(rhs) where rhs is the right-hand side
     * of a production represented as an array of pointers to symbol-table
     * elements. Return 1 if the entire right-hand side is nullable, otherwise
     * return 0.
     */

    if( len <= 0 )
    {
	ADD( dest, EPSILON );
	return 1;
    }

    for(; --len >= 0 ; ++rhs )
    {
	if( ISACT( rhs[0] ) )
	    continue;

	if( ISTERM( rhs[0] )  )
	    ADD( dest, rhs[0]->val );
	else
	    UNION( dest, rhs[0]->first );

	if( !NULLABLE( rhs[0] ) )
	    break;
    }

    return( len < 0 );
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲精华国产精华液 | 欧美国产欧美亚州国产日韩mv天天看完整 | 麻豆成人91精品二区三区| 亚洲欧美日韩系列| 亚洲色图清纯唯美| 亚洲精品福利视频网站| 亚洲天堂网中文字| 亚洲激情自拍偷拍| 一区二区三区丝袜| 亚洲777理论| 蜜臂av日日欢夜夜爽一区| 久久精品国产999大香线蕉| 免费人成黄页网站在线一区二区| 麻豆精品一区二区| 国产成人高清在线| 色综合天天在线| 欧美亚洲高清一区二区三区不卡| 欧美日韩精品系列| 久久久蜜桃精品| 亚洲色图清纯唯美| 日本欧美一区二区在线观看| 久久国产免费看| 国产91精品精华液一区二区三区 | 亚洲免费av观看| 婷婷综合在线观看| 国产一区二区导航在线播放| 白白色 亚洲乱淫| 欧美美女bb生活片| 久久久.com| 亚洲一卡二卡三卡四卡| 久久99精品久久久久婷婷| 成人午夜又粗又硬又大| 欧美日韩视频在线观看一区二区三区| 欧美一区二区三区的| 国产精品视频观看| 日日夜夜精品视频免费| 国产精品系列在线观看| 欧美午夜免费电影| 国产日韩欧美一区二区三区乱码 | 欧美性xxxxxx少妇| 国产亚洲视频系列| 午夜一区二区三区在线观看| 高清免费成人av| 久久久久97国产精华液好用吗| 一区二区三区在线视频观看58| 久久99精品久久久久久动态图| 91福利国产精品| 国产欧美一区二区在线| 午夜精品久久久久久| 成人黄色在线看| 日韩午夜精品电影| 亚洲亚洲人成综合网络| 成人免费视频播放| 久久久综合精品| 日本成人中文字幕| 欧美日韩一区高清| 亚洲欧美怡红院| 丁香婷婷综合激情五月色| 欧美成人a视频| 蜜桃精品在线观看| 5月丁香婷婷综合| 亚洲国产欧美一区二区三区丁香婷| 粉嫩av一区二区三区在线播放| 精品国产麻豆免费人成网站| 亚洲成a人v欧美综合天堂下载| 91在线免费看| 国产精品理伦片| 成人福利视频网站| 国产亚洲福利社区一区| 国产成人精品影视| 久久精品网站免费观看| 国模一区二区三区白浆| 精品国产一区二区三区久久久蜜月| 五月天国产精品| 欧美精品1区2区| 久久精品国产99国产精品| 日韩欧美视频在线| 理论电影国产精品| 精品久久久久av影院| 黄色精品一二区| 久久久99久久| 91在线视频免费观看| 亚洲欧美日韩国产成人精品影院| 99久久er热在这里只有精品66| 中文字幕成人在线观看| 不卡视频免费播放| 一区二区三区中文在线| 欧美日韩一区二区三区在线 | av一本久道久久综合久久鬼色| 成人欧美一区二区三区小说| 色哟哟一区二区三区| 偷拍亚洲欧洲综合| 久久久久久久久伊人| 成人黄色在线视频| 亚洲aⅴ怡春院| 久久只精品国产| 色狠狠桃花综合| 美女性感视频久久| 综合中文字幕亚洲| 91精品国产丝袜白色高跟鞋| 国产成人av资源| 亚洲最快最全在线视频| 精品久久久久香蕉网| 97se狠狠狠综合亚洲狠狠| 三级欧美韩日大片在线看| 精品国产乱码久久久久久牛牛| 精品一区二区免费在线观看| 精品动漫一区二区三区在线观看| 成人av网站免费观看| 日韩理论片在线| 欧美蜜桃一区二区三区| 麻豆国产一区二区| 精品国产亚洲在线| 国产成人精品免费视频网站| 亚洲视频中文字幕| 色婷婷综合久久久| 视频一区免费在线观看| 久久亚洲精精品中文字幕早川悠里 | 欧美日韩高清在线播放| 精品在线亚洲视频| 国产精品久久久爽爽爽麻豆色哟哟| 在线亚洲欧美专区二区| 美女网站色91| 亚洲欧美偷拍另类a∨色屁股| 欧美日韩国产片| 国产精品一卡二| 奇米精品一区二区三区在线观看| 国产欧美日韩亚州综合| 欧美精品123区| 91丨九色丨国产丨porny| 丝瓜av网站精品一区二区| 自拍偷拍亚洲欧美日韩| 精品国产一二三| 欧美无乱码久久久免费午夜一区| 激情综合五月天| 亚洲图片自拍偷拍| 欧美日韩国产首页| 欧美性高清videossexo| 成人免费视频一区| 亚洲国产精品一区二区www| **欧美大码日韩| 2019国产精品| 在线观看亚洲精品视频| 成人av免费在线观看| 久久精品国产秦先生| 中文字幕亚洲精品在线观看| 日韩欧美一区二区视频| 91成人在线精品| 99久久精品国产麻豆演员表| 99久久伊人久久99| 国产成人在线视频免费播放| 蜜桃免费网站一区二区三区| 亚洲成人av中文| 国产午夜精品一区二区| 国产女同互慰高潮91漫画| 精品国产1区二区| 日韩一区二区三区在线| 欧美麻豆精品久久久久久| 91麻豆精品国产| 欧美日韩高清一区二区三区| 在线观看视频一区| 色综合久久66| 成人午夜免费视频| 91伊人久久大香线蕉| 成人国产精品免费观看| 岛国一区二区在线观看| 国产·精品毛片| 色综合视频一区二区三区高清| 国产成人av福利| 成人一二三区视频| 国产69精品久久久久777| 老司机一区二区| www.一区二区| 91在线免费播放| 欧美性受xxxx| 911国产精品| 国产日韩欧美精品综合| 中文字幕免费不卡| 自拍偷拍亚洲激情| 亚洲国产精品影院| 国产乱码一区二区三区| 成人一区二区三区视频在线观看| 懂色av一区二区三区蜜臀| 成人免费视频播放| 欧美一卡二卡在线观看| 久久这里只精品最新地址| 久久精品人人做人人综合| 国产欧美精品一区aⅴ影院| 国产精品成人网| 亚洲一区二区在线视频| 亚洲国产视频一区二区| 福利电影一区二区| 色狠狠色噜噜噜综合网| 91精品国产91久久综合桃花| 日韩一区二区三区免费看| 亚洲欧洲av一区二区三区久久| 亚洲国产日日夜夜| 激情综合色综合久久| av在线综合网| 精品久久久久av影院|