From c9f95bf852092d8b1640b92f1c31e84420bb51dd Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Sun, 21 Feb 2016 04:39:39 -0500 Subject: Copy everything into a new eshtrans/ directory Split out and rename functions and variables where appropriate. Also add license headers. (The old scripts under parsing/ can be used under the same license.) --- (limited to 'eshtrans/tokens.esh') diff --git a/eshtrans/tokens.esh b/eshtrans/tokens.esh new file mode 100644 index 0000000..9da8bb8 --- /dev/null +++ b/eshtrans/tokens.esh @@ -0,0 +1,139 @@ +# Tokens query functions +# +# Copyright (C) 2016 Patrick "P. J." McDermott +# +# This file is part of the Eggshell Compiler. +# +# The Eggshell Compiler 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 3 of +# the License, or (at your option) any later version. +# +# The Eggshell Compiler 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 the Eggshell Compiler. If not, see +# . + +tokname() +{ + local t="${1}" + shift 1 + local n= + + case "${t%${US}*}" in + # Operators + T_EOF) n='end of file';; + T_NEWLINE) n='newline';; + T_AND) n='"&"';; + T_SEMI) n='";"';; + T_AND_IF) n='"&&"';; + T_OR_IF) n='"||"';; + T_DSEMI) n='";;"';; + T_LESS) n='"<"';; + T_GREAT) n='">"';; + T_DLESS) n='"<<"';; + T_DGREAT) n='">>"';; + T_LESS) n='"<"';; + T_LESSAND) n='"<&"';; + T_GREAT) n='">"';; + T_GREATAND) n='">&"';; + T_LESSGREAT) n='"<>"';; + T_DLESSDASH) n='"<<-"';; + T_CLOBBER) n='">|"';; + T_PIPE) n='"|"';; + T_LPAREN) n='"("';; + T_RPAREN) n='")"';; + # Reserved words + T_IF) n='"if"';; + T_THEN) n='"then"';; + T_ELSE) n='"else"';; + T_ELIF) n='"elif"';; + T_FI) n='"fi"';; + T_DO) n='"do"';; + T_DONE) n='"done"';; + T_CASE) n='"case"';; + T_ESAC) n='"esac"';; + T_WHILE) n='"while"';; + T_UNTIL) n='"until"';; + T_FOR) n='"for"';; + T_LBRACE) n='"{"';; + T_RBRACE) n='"}"';; + T_BANG) n='"!"';; + T_IN) n='"in"';; + # Special symbols + T_NAME) n='parameter name';; + T_FNAME) n='function name';; + T_CMDNAME) n='command name';; + T_IO_NUMBER) n='I/O number';; + T_WORD) n='word';; + T_ASSIGNMENT_WORD) n='assignment word';; + # Unknown + *) n='unknown token';; + esac + + printf '%s' "${n}" +} + +toktext() +{ + local t="${1}" + shift 1 + local n= + + case "${t%${US}*}" in + # Operators + T_EOF) n='';; + T_NEWLINE) n="${LF}";; + T_AND) n='&';; + T_SEMI) n=';';; + T_AND_IF) n='&&';; + T_OR_IF) n='||';; + T_DSEMI) n=';;';; + T_LESS) n='<';; + T_GREAT) n='>';; + T_DLESS) n='<<';; + T_DGREAT) n='>>';; + T_LESS) n='<';; + T_LESSAND) n='<&';; + T_GREAT) n='>';; + T_GREATAND) n='>&';; + T_LESSGREAT) n='<>';; + T_DLESSDASH) n='<<-';; + T_CLOBBER) n='>|';; + T_PIPE) n='|';; + T_LPAREN) n='(';; + T_RPAREN) n=')';; + # Reserved words + T_IF) n='if';; + T_THEN) n='then';; + T_ELSE) n='else';; + T_ELIF) n='elif';; + T_FI) n='fi';; + T_DO) n='do';; + T_DONE) n='done';; + T_CASE) n='case';; + T_ESAC) n='esac';; + T_WHILE) n='while';; + T_UNTIL) n='until';; + T_FOR) n='for';; + T_LBRACE) n='{';; + T_RBRACE) n='}';; + T_BANG) n='!';; + T_IN) n='in';; + # Special symbols + T_NAME) n="${t#*${US}}";; + T_FNAME) n="${t#*${US}}";; + T_CMDNAME) n="${t#*${US}}";; + T_IO_NUMBER) n="${t#*${US}}";; + T_WORD) n="${t#*${US}}";; + T_ASSIGNMENT_WORD) n="${t#*${US}}";; + # Unknown + *) n='';; + esac + + printf '%s' "${n}" +} -- cgit v0.9.1