diff options
author | orivej <[email protected]> | 2022-02-10 16:45:01 +0300 |
---|---|---|
committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:45:01 +0300 |
commit | 2d37894b1b037cf24231090eda8589bbb44fb6fc (patch) | |
tree | be835aa92c6248212e705f25388ebafcf84bc7a1 /contrib/tools/ragel6/gotablish.cpp | |
parent | 718c552901d703c502ccbefdfc3c9028d608b947 (diff) |
Restoring authorship annotation for <[email protected]>. Commit 2 of 2.
Diffstat (limited to 'contrib/tools/ragel6/gotablish.cpp')
-rw-r--r-- | contrib/tools/ragel6/gotablish.cpp | 222 |
1 files changed, 111 insertions, 111 deletions
diff --git a/contrib/tools/ragel6/gotablish.cpp b/contrib/tools/ragel6/gotablish.cpp index 55f60326c61..218ab47908a 100644 --- a/contrib/tools/ragel6/gotablish.cpp +++ b/contrib/tools/ragel6/gotablish.cpp @@ -1,111 +1,111 @@ -/* - * Copyright 2001-2006 Adrian Thurston <[email protected]> - * 2004 Erich Ocean <[email protected]> - * 2005 Alan West <[email protected]> - */ - -/* 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. - * - * 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 - */ - -#include "ragel.h" -#include "gotablish.h" - -using std::endl; - -void GoTablishCodeGen::GOTO( ostream &ret, int gotoDest, bool inFinish ) -{ - ret << vCS() << " = " << gotoDest << endl << - "goto _again" << endl; -} - -void GoTablishCodeGen::GOTO_EXPR( ostream &ret, GenInlineItem *ilItem, bool inFinish ) -{ - ret << vCS() << " = ("; - INLINE_LIST( ret, ilItem->children, 0, inFinish, false ); - ret << ")" << endl << "goto _again" << endl; -} - -void GoTablishCodeGen::CURS( ostream &ret, bool inFinish ) -{ - ret << "(_ps)"; -} - -void GoTablishCodeGen::TARGS( ostream &ret, bool inFinish, int targState ) -{ - ret << "(" << vCS() << ")"; -} - -void GoTablishCodeGen::NEXT( ostream &ret, int nextDest, bool inFinish ) -{ - ret << vCS() << " = " << nextDest << endl; -} - -void GoTablishCodeGen::NEXT_EXPR( ostream &ret, GenInlineItem *ilItem, bool inFinish ) -{ - ret << vCS() << " = ("; - INLINE_LIST( ret, ilItem->children, 0, inFinish, false ); - ret << ")" << endl; -} - -void GoTablishCodeGen::CALL( ostream &ret, int callDest, int targState, bool inFinish ) -{ - if ( prePushExpr != 0 ) { - ret << "{ "; - INLINE_LIST( ret, prePushExpr, 0, false, false ); - } - - ret << STACK() << "[" << TOP() << "] = " << vCS() << "; " << TOP() << "++; " << - vCS() << " = " << callDest << "; " << "goto _again" << endl; - - if ( prePushExpr != 0 ) - ret << " }"; -} - -void GoTablishCodeGen::CALL_EXPR( ostream &ret, GenInlineItem *ilItem, int targState, bool inFinish ) -{ - if ( prePushExpr != 0 ) { - ret << "{"; - INLINE_LIST( ret, prePushExpr, 0, false, false ); - } - - ret << STACK() << "[" << TOP() << "] = " << vCS() << "; " << TOP() << "++; " << vCS() << " = ("; - INLINE_LIST( ret, ilItem->children, targState, inFinish, false ); - ret << "); " << "goto _again" << endl; - - if ( prePushExpr != 0 ) - ret << "}"; -} - -void GoTablishCodeGen::RET( ostream &ret, bool inFinish ) -{ - ret << TOP() << "--; " << vCS() << " = " << STACK() << "[" << - TOP() << "]" << endl; - - if ( postPopExpr != 0 ) { - ret << "{ "; - INLINE_LIST( ret, postPopExpr, 0, false, false ); - ret << " }" << endl; - } - - ret << "goto _again" << endl; -} - -void GoTablishCodeGen::BREAK( ostream &ret, int targState, bool csForced ) -{ - outLabelUsed = true; - ret << P() << "++; " << "goto _out" << endl; -} +/* + * Copyright 2001-2006 Adrian Thurston <[email protected]> + * 2004 Erich Ocean <[email protected]> + * 2005 Alan West <[email protected]> + */ + +/* 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. + * + * 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 + */ + +#include "ragel.h" +#include "gotablish.h" + +using std::endl; + +void GoTablishCodeGen::GOTO( ostream &ret, int gotoDest, bool inFinish ) +{ + ret << vCS() << " = " << gotoDest << endl << + "goto _again" << endl; +} + +void GoTablishCodeGen::GOTO_EXPR( ostream &ret, GenInlineItem *ilItem, bool inFinish ) +{ + ret << vCS() << " = ("; + INLINE_LIST( ret, ilItem->children, 0, inFinish, false ); + ret << ")" << endl << "goto _again" << endl; +} + +void GoTablishCodeGen::CURS( ostream &ret, bool inFinish ) +{ + ret << "(_ps)"; +} + +void GoTablishCodeGen::TARGS( ostream &ret, bool inFinish, int targState ) +{ + ret << "(" << vCS() << ")"; +} + +void GoTablishCodeGen::NEXT( ostream &ret, int nextDest, bool inFinish ) +{ + ret << vCS() << " = " << nextDest << endl; +} + +void GoTablishCodeGen::NEXT_EXPR( ostream &ret, GenInlineItem *ilItem, bool inFinish ) +{ + ret << vCS() << " = ("; + INLINE_LIST( ret, ilItem->children, 0, inFinish, false ); + ret << ")" << endl; +} + +void GoTablishCodeGen::CALL( ostream &ret, int callDest, int targState, bool inFinish ) +{ + if ( prePushExpr != 0 ) { + ret << "{ "; + INLINE_LIST( ret, prePushExpr, 0, false, false ); + } + + ret << STACK() << "[" << TOP() << "] = " << vCS() << "; " << TOP() << "++; " << + vCS() << " = " << callDest << "; " << "goto _again" << endl; + + if ( prePushExpr != 0 ) + ret << " }"; +} + +void GoTablishCodeGen::CALL_EXPR( ostream &ret, GenInlineItem *ilItem, int targState, bool inFinish ) +{ + if ( prePushExpr != 0 ) { + ret << "{"; + INLINE_LIST( ret, prePushExpr, 0, false, false ); + } + + ret << STACK() << "[" << TOP() << "] = " << vCS() << "; " << TOP() << "++; " << vCS() << " = ("; + INLINE_LIST( ret, ilItem->children, targState, inFinish, false ); + ret << "); " << "goto _again" << endl; + + if ( prePushExpr != 0 ) + ret << "}"; +} + +void GoTablishCodeGen::RET( ostream &ret, bool inFinish ) +{ + ret << TOP() << "--; " << vCS() << " = " << STACK() << "[" << + TOP() << "]" << endl; + + if ( postPopExpr != 0 ) { + ret << "{ "; + INLINE_LIST( ret, postPopExpr, 0, false, false ); + ret << " }" << endl; + } + + ret << "goto _again" << endl; +} + +void GoTablishCodeGen::BREAK( ostream &ret, int targState, bool csForced ) +{ + outLabelUsed = true; + ret << P() << "++; " << "goto _out" << endl; +} |