diff options
author | smalov <smalov@yandex-team.ru> | 2022-02-10 16:47:36 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:47:36 +0300 |
commit | f70d9720e13aef3a935e3f405b0eac554529e76e (patch) | |
tree | 5519c392aebdb16153197de07e4774c0a2be261a /contrib/tools/ragel6/rlparse.kh | |
parent | 7b659037613268d5eac4a1b6a7c5eff3cd36d4bf (diff) | |
download | ydb-f70d9720e13aef3a935e3f405b0eac554529e76e.tar.gz |
Restoring authorship annotation for <smalov@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/tools/ragel6/rlparse.kh')
-rw-r--r-- | contrib/tools/ragel6/rlparse.kh | 280 |
1 files changed, 140 insertions, 140 deletions
diff --git a/contrib/tools/ragel6/rlparse.kh b/contrib/tools/ragel6/rlparse.kh index 899bbbcee2..8e20778b33 100644 --- a/contrib/tools/ragel6/rlparse.kh +++ b/contrib/tools/ragel6/rlparse.kh @@ -1,141 +1,141 @@ -/* - * Copyright 2001-2007 Adrian Thurston <thurston@complang.org> - */ - -/* This file is part of Ragel. - * - * Ragel is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. +/* + * Copyright 2001-2007 Adrian Thurston <thurston@complang.org> + */ + +/* This file is part of Ragel. * - * Ragel 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Ragel; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef _RLPARSE_H -#define _RLPARSE_H - -#include <iostream> -#include "avltree.h" -#include "parsedata.h" - - -/* Import scanner tokens. */ -#define IMP_Word 128 -#define IMP_Literal 129 -#define IMP_UInt 130 -#define IMP_Define 131 - -/* This is used for tracking the include files/machine pairs. */ -struct IncludeHistoryItem -{ - IncludeHistoryItem( const char *fileName, const char *sectionName ) - : fileName(fileName), sectionName(sectionName) {} - - const char *fileName; - const char *sectionName; -}; - -typedef Vector<IncludeHistoryItem> IncludeHistory; - -struct Parser -{ -%%{ - parser Parser; - - # General tokens. - token TK_Word, TK_Literal, TK_Number, TK_EndSection, TK_UInt, TK_Hex, - TK_Word, TK_Literal, TK_DotDot, TK_ColonGt, TK_ColonGtGt, TK_LtColon, - TK_Arrow, TK_DoubleArrow, TK_StarStar, TK_ColonEquals, TK_NameSep, - TK_BarStar, TK_DashDash; - - # Conditions. - token TK_StartCond, TK_AllCond, TK_LeavingCond; - - # State embedding actions. - token TK_Middle; - - # Global error actions. - token TK_StartGblError, TK_AllGblError, TK_FinalGblError, - TK_NotFinalGblError, TK_NotStartGblError, TK_MiddleGblError; - - # Local error actions. - token TK_StartLocalError, TK_AllLocalError, TK_FinalLocalError, - TK_NotFinalLocalError, TK_NotStartLocalError, TK_MiddleLocalError; - - # EOF Action embedding. - token TK_StartEOF, TK_AllEOF, TK_FinalEOF, TK_NotFinalEOF, TK_NotStartEOF, - TK_MiddleEOF; - - # To State Actions. - token TK_StartToState, TK_AllToState, TK_FinalToState, TK_NotFinalToState, - TK_NotStartToState, TK_MiddleToState; - - # In State Actions. - token TK_StartFromState, TK_AllFromState, TK_FinalFromState, - TK_NotFinalFromState, TK_NotStartFromState, TK_MiddleFromState; - - # Regular expression tokens. */ - token RE_Slash, RE_SqOpen, RE_SqOpenNeg, RE_SqClose, RE_Dot, RE_Star, - RE_Dash, RE_Char; - - # Tokens specific to inline code. - token IL_WhiteSpace, IL_Comment, IL_Literal, IL_Symbol; - - # Keywords. - token KW_Machine, KW_Include, KW_Import, KW_Write, KW_Action, KW_AlphType, - KW_Range, KW_GetKey, KW_Include, KW_Write, KW_Machine, KW_InWhen, - KW_When, KW_OutWhen, KW_Eof, KW_Err, KW_Lerr, KW_To, KW_From, - KW_Export, KW_PrePush, KW_PostPop, KW_Length; - - # Specials in code blocks. - token KW_Break, KW_Exec, KW_Hold, KW_PChar, KW_Char, KW_Goto, KW_Call, - KW_Ret, KW_CurState, KW_TargState, KW_Entry, KW_Next, KW_Exec, - KW_Variable, KW_Access; -}%% - - %% write instance_data; - - void init(); - int parseLangEl( int type, const Token *token ); - - Parser( const char *fileName, char *sectionName, InputLoc §ionLoc ) - : sectionName(sectionName) - { - pd = new ParseData( fileName, sectionName, sectionLoc ); - exportContext.append( false ); - includeHistory.append( IncludeHistoryItem( - fileName, sectionName ) ); - } - - int token( InputLoc &loc, int tokId, char *tokstart, int toklen ); - void tryMachineDef( InputLoc &loc, char *name, - MachineDef *machineDef, bool isInstance ); - - /* Report an error encountered by the parser. */ - ostream &parse_error( int tokId, Token &token ); - - ParseData *pd; - - /* The name of the root section, this does not change during an include. */ - char *sectionName; - - NameRef nameRef; - NameRefList nameRefList; - - Vector<bool> exportContext; - IncludeHistory includeHistory; - - Parser *prev, *next; -}; - -%% write token_defs; - -#endif + * Ragel is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Ragel 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Ragel; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef _RLPARSE_H +#define _RLPARSE_H + +#include <iostream> +#include "avltree.h" +#include "parsedata.h" + + +/* Import scanner tokens. */ +#define IMP_Word 128 +#define IMP_Literal 129 +#define IMP_UInt 130 +#define IMP_Define 131 + +/* This is used for tracking the include files/machine pairs. */ +struct IncludeHistoryItem +{ + IncludeHistoryItem( const char *fileName, const char *sectionName ) + : fileName(fileName), sectionName(sectionName) {} + + const char *fileName; + const char *sectionName; +}; + +typedef Vector<IncludeHistoryItem> IncludeHistory; + +struct Parser +{ +%%{ + parser Parser; + + # General tokens. + token TK_Word, TK_Literal, TK_Number, TK_EndSection, TK_UInt, TK_Hex, + TK_Word, TK_Literal, TK_DotDot, TK_ColonGt, TK_ColonGtGt, TK_LtColon, + TK_Arrow, TK_DoubleArrow, TK_StarStar, TK_ColonEquals, TK_NameSep, + TK_BarStar, TK_DashDash; + + # Conditions. + token TK_StartCond, TK_AllCond, TK_LeavingCond; + + # State embedding actions. + token TK_Middle; + + # Global error actions. + token TK_StartGblError, TK_AllGblError, TK_FinalGblError, + TK_NotFinalGblError, TK_NotStartGblError, TK_MiddleGblError; + + # Local error actions. + token TK_StartLocalError, TK_AllLocalError, TK_FinalLocalError, + TK_NotFinalLocalError, TK_NotStartLocalError, TK_MiddleLocalError; + + # EOF Action embedding. + token TK_StartEOF, TK_AllEOF, TK_FinalEOF, TK_NotFinalEOF, TK_NotStartEOF, + TK_MiddleEOF; + + # To State Actions. + token TK_StartToState, TK_AllToState, TK_FinalToState, TK_NotFinalToState, + TK_NotStartToState, TK_MiddleToState; + + # In State Actions. + token TK_StartFromState, TK_AllFromState, TK_FinalFromState, + TK_NotFinalFromState, TK_NotStartFromState, TK_MiddleFromState; + + # Regular expression tokens. */ + token RE_Slash, RE_SqOpen, RE_SqOpenNeg, RE_SqClose, RE_Dot, RE_Star, + RE_Dash, RE_Char; + + # Tokens specific to inline code. + token IL_WhiteSpace, IL_Comment, IL_Literal, IL_Symbol; + + # Keywords. + token KW_Machine, KW_Include, KW_Import, KW_Write, KW_Action, KW_AlphType, + KW_Range, KW_GetKey, KW_Include, KW_Write, KW_Machine, KW_InWhen, + KW_When, KW_OutWhen, KW_Eof, KW_Err, KW_Lerr, KW_To, KW_From, + KW_Export, KW_PrePush, KW_PostPop, KW_Length; + + # Specials in code blocks. + token KW_Break, KW_Exec, KW_Hold, KW_PChar, KW_Char, KW_Goto, KW_Call, + KW_Ret, KW_CurState, KW_TargState, KW_Entry, KW_Next, KW_Exec, + KW_Variable, KW_Access; +}%% + + %% write instance_data; + + void init(); + int parseLangEl( int type, const Token *token ); + + Parser( const char *fileName, char *sectionName, InputLoc §ionLoc ) + : sectionName(sectionName) + { + pd = new ParseData( fileName, sectionName, sectionLoc ); + exportContext.append( false ); + includeHistory.append( IncludeHistoryItem( + fileName, sectionName ) ); + } + + int token( InputLoc &loc, int tokId, char *tokstart, int toklen ); + void tryMachineDef( InputLoc &loc, char *name, + MachineDef *machineDef, bool isInstance ); + + /* Report an error encountered by the parser. */ + ostream &parse_error( int tokId, Token &token ); + + ParseData *pd; + + /* The name of the root section, this does not change during an include. */ + char *sectionName; + + NameRef nameRef; + NameRefList nameRefList; + + Vector<bool> exportContext; + IncludeHistory includeHistory; + + Parser *prev, *next; +}; + +%% write token_defs; + +#endif |