summaryrefslogtreecommitdiffstats
path: root/eshtrans/tokens.esh
diff options
context:
space:
mode:
authorP. J. McDermott <pj@pehjota.net>2016-02-21 04:39:39 (EST)
committer P. J. McDermott <pj@pehjota.net>2016-02-21 04:39:39 (EST)
commitc9f95bf852092d8b1640b92f1c31e84420bb51dd (patch)
treeb47ff3e2a91fa39f234df6ddfd9559b6d4714de2 /eshtrans/tokens.esh
parent4e6bfd6fe0d48ddf49cd61bb8cb31881a1e5e369 (diff)
downloadeggshell-c9f95bf852092d8b1640b92f1c31e84420bb51dd.zip
eggshell-c9f95bf852092d8b1640b92f1c31e84420bb51dd.tar.gz
eggshell-c9f95bf852092d8b1640b92f1c31e84420bb51dd.tar.bz2
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.)
Diffstat (limited to 'eshtrans/tokens.esh')
-rw-r--r--eshtrans/tokens.esh139
1 files changed, 139 insertions, 0 deletions
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
+# <http://www.gnu.org/licenses/>.
+
+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}"
+}