diff options
Diffstat (limited to 'eshtrans/frontend')
-rw-r--r-- | eshtrans/frontend/lexer.esh | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/eshtrans/frontend/lexer.esh b/eshtrans/frontend/lexer.esh index 8ce6510..5854a35 100644 --- a/eshtrans/frontend/lexer.esh +++ b/eshtrans/frontend/lexer.esh @@ -30,6 +30,7 @@ here_queue= here_awaiting_end= here_awaiting_word= tok= +tokc= #dbg() #{ @@ -856,6 +857,7 @@ run_sublexer() here_queue='' here_awaiting_end=false here_awaiting_word=false + tokc=0 lbufi="${i}" lsetc @@ -872,6 +874,10 @@ run_sublexer() ;; esac + eval "printf '%s' \"$(printf '${tokv_%d}' $(awk \ + -v end=${tokc} \ + 'BEGIN { for (i = 0; i < end; ++i) print(i); }'))\"" + printf "${RS}%d${RS}%d" ${lineno} ${lbufi} return 0 } @@ -894,6 +900,7 @@ run_lexer() here_queue='' here_awaiting_end=false here_awaiting_word=false + tokc=0 # Read file into array eval "$(printf '%s' "${buf}" | awk -v FS='' -v j=0 \ @@ -922,6 +929,10 @@ run_lexer() synexp '' fi + eval "printf '%s' \"$(printf '${tokv_%d}' $(awk \ + -v end=${tokc} \ + 'BEGIN { for (i = 0; i < end; ++i) print(i); }'))\"" + return 0 } @@ -1069,7 +1080,8 @@ accept() esac #dbg "accept $t" - printf '%s' "${tok}${RS}" + eval "tokv_${tokc}=\${tok}\${RS}" + tokc=$((${tokc} + 1)) next return 0 } |