summaryrefslogtreecommitdiffstats
path: root/parsing/tokens.sh
diff options
context:
space:
mode:
Diffstat (limited to 'parsing/tokens.sh')
-rw-r--r--parsing/tokens.sh60
1 files changed, 60 insertions, 0 deletions
diff --git a/parsing/tokens.sh b/parsing/tokens.sh
index 9d2fddd..ae9665b 100644
--- a/parsing/tokens.sh
+++ b/parsing/tokens.sh
@@ -57,3 +57,63 @@ tokname()
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}"
+}