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

📄 triefa.c

📁 Graphviz - Graph Drawing Programs from AT&T Research and Lucent Bell Labs See doc/build.html for
💻 C
字号:
/* $Id: triefa.c,v 1.2 2005/04/08 20:45:34 erg Exp $ $Revision: 1.2 $ *//* vim:set shiftwidth=4 ts=8: *//***********************************************************      This software is part of the graphviz package      **                http://www.graphviz.org/                 **                                                         **            Copyright (c) 1994-2004 AT&T Corp.           **                and is licensed under the                **            Common Public License, Version 1.0           **                      by AT&T Corp.                      **                                                         **        Information and Software Systems Research        **              AT&T Research, Florham Park NJ             ***********************************************************//*  File - TrieFA.ins.c    This file contains code to be included in the scanner file using a    generated trie-based FA.*/#include "triefa.h"#ifdef UNDERLINEstatic long CharMask[28] = {    0x0000001, 0x0000000, 0x0000004, 0x0000008,    0x0000010, 0x0000020, 0x0000040, 0x0000080,    0x0000100, 0x0000200, 0x0000400, 0x0000800,    0x0001000, 0x0002000, 0x0004000, 0x0008000,    0x0010000, 0x0020000, 0x0040000, 0x0080000,    0x0100000, 0x0200000, 0x0400000, 0x0800000,    0x1000000, 0x2000000, 0x4000000, 0x8000000,};#define IN_MASK_RANGE(C) (islower (C) || ((C) == '_'))#define MASK_INDEX(C)    ((C) - '_')#elsestatic long CharMask[26] = {    0x0000001, 0x0000002, 0x0000004, 0x0000008,    0x0000010, 0x0000020, 0x0000040, 0x0000080,    0x0000100, 0x0000200, 0x0000400, 0x0000800,    0x0001000, 0x0002000, 0x0004000, 0x0008000,    0x0010000, 0x0020000, 0x0040000, 0x0080000,    0x0100000, 0x0200000, 0x0400000, 0x0800000,    0x1000000, 0x2000000};#define IN_MASK_RANGE(C) islower (C)#define MASK_INDEX(C)    ((C) - 'a')#endifstatic short TFA_State;/*  TFA_Init:    Initialize the trie FA.*/#define TFA_Init() TFA_State = 0/*  TFA_Advance:    Advance to the next state (or -1) on the lowercase letter c.    This should be an inline routine, but the C++ implementation    isn't advanced enough so we use a macro.*/#define TFA_Advance(C) { \    char c = C; \    if (TFA_State >= 0) { \        if (isupper (c)) \            c = tolower (c); \        else if (! IN_MASK_RANGE (c)) { \            TFA_State = -1; \            goto TFA_done; \        } \        if (TrieStateTbl[TFA_State].mask & CharMask[MASK_INDEX (c)]) { \            short i = TrieStateTbl[TFA_State].trans_base; \            while (TrieTransTbl[i].c != c) \                i++; \            TFA_State = TrieTransTbl[i].next_state; \        } \        else \            TFA_State = -1; \    } \TFA_done:; \} /* end of TFA_Advance. *//*  TFA_Definition:    Return the definition (if any) associated with the current state.*/#define TFA_Definition() \    ((TFA_State < 0) ? -1 : TrieStateTbl[TFA_State].def)

⌨️ 快捷键说明

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