summaryrefslogtreecommitdiffstats
path: root/parsing/codegen.sh
diff options
context:
space:
mode:
authorP. J. McDermott <pj@pehjota.net>2016-02-21 21:13:33 (EST)
committer P. J. McDermott <pj@pehjota.net>2016-02-21 21:13:33 (EST)
commit8a9a6865954ade85d4a55f955829ae08941c31b8 (patch)
tree966d1c1a8bc4c6f7ed0671b8c53f1272be77dc4f /parsing/codegen.sh
parent5649a9aa1ce56c0cfdcab088983f2d3a4cb32a4c (diff)
downloadeggshell-8a9a6865954ade85d4a55f955829ae08941c31b8.zip
eggshell-8a9a6865954ade85d4a55f955829ae08941c31b8.tar.gz
eggshell-8a9a6865954ade85d4a55f955829ae08941c31b8.tar.bz2
Remove old demo parsing code
Diffstat (limited to 'parsing/codegen.sh')
-rw-r--r--parsing/codegen.sh85
1 files changed, 0 insertions, 85 deletions
diff --git a/parsing/codegen.sh b/parsing/codegen.sh
deleted file mode 100644
index 8d9d2fd..0000000
--- a/parsing/codegen.sh
+++ /dev/null
@@ -1,85 +0,0 @@
-sc=
-
-sgetc()
-{
- sc="$(dd bs=1 count=1 2>/dev/null; printf '.')"
- sc="${sc%.}"
-}
-
-codegen_sub()
-{
- local array="${1}"
- shift 1
-
- IFS="${RS}"
- for t in ${array}; do
- toktext "${t}"
- case "${t%${US}*}" in
- T_NEWLINE)
- ;;
- *)
- printf ' '
- ;;
- esac
- done
- unset IFS
-}
-
-# The token stack is encoded in a string in the following grammar:
-# Terminal symbols:
-# TOKEN
-# Production rules:
-# stack = tokens [ '<SOH>' type '<STX>' stack '<ETX>' [ tokens ] ] ;
-# tokens = TOKEN { '<RS>' TOKEN } ;
-# type = 'C' ;
-# We need to recurse through this stack to get to all the tokens.
-# Each element in the stack (an array of tokens) gets run through the codegen to
-# become text that is inserted into the array below.
-parse_stack()
-{
- local array=
-
- array=''
- while :; do
- sgetc
- case "${sc}" in
- '')
- # EOF
- break
- ;;
- "${SOH}")
- # New stack element
- sgetc
- case "${sc}" in
- 'C')
- # Command substitution
- sgetc # STX
- array="${array}$(parse_stack)."
- array="${array%.}"
- ;;
- esac
- ;;
- "${ETX}")
- # End of stack element
- break
- ;;
- *)
- # Token character
- array="${array}${sc}"
- ;;
- esac
- done
- codegen_sub "${array}"
-}
-
-codegen()
-{
- local toks="${1}"
- shift 1
-
- if printf '%s' "${toks}" | parse_stack; then
- return 0
- else
- return 1
- fi
-}