summaryrefslogtreecommitdiffstats
path: root/fickle
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2018-02-21 20:06:07 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2018-02-21 20:06:07 (GMT)
commit7521ef7312a93f34af0f5ee261cc4436478b4c5b (patch)
tree2e1c802fe52b748ea2af36bbbba3c6698fac0d89 /fickle
parent65ee41b9166635ea57f2ee22618bc5e86b6df003 (diff)
downloadblt-7521ef7312a93f34af0f5ee261cc4436478b4c5b.zip
blt-7521ef7312a93f34af0f5ee261cc4436478b4c5b.tar.gz
blt-7521ef7312a93f34af0f5ee261cc4436478b4c5b.tar.bz2
add namespace
Diffstat (limited to 'fickle')
-rw-r--r--fickle/fickle.tcl71
1 files changed, 41 insertions, 30 deletions
diff --git a/fickle/fickle.tcl b/fickle/fickle.tcl
index f346cbc..f78f752 100644
--- a/fickle/fickle.tcl
+++ b/fickle/fickle.tcl
@@ -326,6 +326,8 @@ proc write_scanner_utils {} {
puts $::dest "namespace eval ${::p} \{
variable yytext {}
variable yyleng 0
+ variable yy_buffer {}
+ variable yy_index 0
variable yy_done 0
variable yyin stdin
variable yyout stdout"
@@ -372,10 +374,12 @@ proc write_scanner_utils {} {
# -- from the flex(1) man page"
}
puts $::dest "proc ${::p}::YY_FLUSH_BUFFER \{\} \{
+ variable yy_buffer
+ variable yy_index
variable yy_done
- set ::${::p}_buffer \"\"
- set ::${::p}_index 0
+ set yy_buffer \"\"
+ set yy_index 0
set yy_done 0
\}
"
@@ -432,9 +436,10 @@ proc write_scanner_utils {} {
# -- from the flex(1) man page"
}
puts $::dest "proc ${::p}::yy_scan_string \{str\} \{
+ variable yy_buffer
variable yyin
- append ::${::p}_buffer \$str
+ append yy_buffer \$str
set yyin \"\"
\}
"
@@ -444,25 +449,30 @@ proc write_scanner_utils {} {
# -- from the flex(1) man page"
}
puts $::dest "proc ${::p}::yyunput \{c\} \{
- set s \[string range \$::${::p}_buffer 0 \[expr \{\$::${::p}_index - 1\}\]\]
+ variable yy_buffer
+ variable yy_index
+
+ set s \[string range \$yy_buffer 0 \[expr \{\$yy_index - 1\}\]\]
append s \$c
- set ::${::p}_buffer \[append s \[string range \$::${::p}_buffer \$::${::p}_index end\]\]
+ set yy_buffer \[append s \[string range \$yy_buffer \$yy_index end\]\]
\}
"
if $::headers {
puts $::dest "# Returns all but the first n characters of the current token back to
# the input stream, where they will be rescanned when the scanner
-# looks for the next match. yytext and ${::p}leng are adjusted
+# looks for the next match. yytext and yyleng are adjusted
# appropriately.
# -- from the flex(1) man page"
}
puts $::dest "proc ${::p}::yyless \{n\} \{
+ variable yy_buffer
+ variable yy_index
variable yytext
variable yyleng
- set s \[string range \$::${::p}_buffer 0 \[expr \{\$::${::p}_index - 1\}\]\]
+ set s \[string range \$yy_buffer 0 \[expr \{\$yy_index - 1\}\]\]
append s \[string range \$yytext \$n end\]
- set ::${::p}_buffer \[append s \[string range \$::${::p}_buffer \$::${::p}_index end\]\]
+ set yy_buffer \[append s \[string range \$yy_buffer \$yy_index end\]\]
set yytext \[string range \$yytext 0 \[expr \{\$n - 1\}\]\]
set yyleng \[string length \$yytext\]
\}
@@ -472,13 +482,15 @@ proc write_scanner_utils {} {
# -- from the flex(1) man page"
}
puts $::dest "proc ${::p}::yyinput \{\} \{
+ variable yy_buffer
+ variable yy_index
variable yy_done
- if \{\[string length \$::${::p}_buffer\] - \$::${::p}_index < $::BUFFER_SIZE\} \{
+ if \{\[string length \$yy_buffer\] - \$yy_index < $::BUFFER_SIZE\} \{
set new_buffer_size 0
if \{\$yy_done == 0\} \{
YY_INPUT new_buffer new_buffer_size $::BUFFER_SIZE
- append ::${::p}_buffer \$new_buffer
+ append yy_buffer \$new_buffer
if \{\$new_buffer_size == 0\} \{
set yy_done 1
\}
@@ -491,13 +503,13 @@ proc write_scanner_utils {} {
} else {
puts -nonewline $::dest " "
}
- puts $::dest "if \{\[string length \$::${::p}_buffer\] - \$::${::p}_index == 0\} \{
+ puts $::dest "if \{\[string length \$yy_buffer\] - \$yy_index == 0\} \{
return \{\}
\}
\}
\}
- set c \[string index \$::${::p}_buffer \$::${::p}_index\]
- incr ::${::p}_index
+ set c \[string index \$yy_buffer \$yy_index\]
+ incr yy_index
return \$c
\}
"
@@ -549,9 +561,6 @@ proc write_scanner_utils {} {
"
}
- puts $::dest "# initialize values used by the lexer
-set ::${::p}_buffer \{\}
-set ::${::p}_index 0"
if $::startstates {
puts $::dest "set ::${::p}_state_stack \{\}
${::p}::BEGIN INITIAL
@@ -571,7 +580,7 @@ array set ::${::p}_state_table \{[array get ::state_table]\}"
# was given at the command line.
proc write_scanner {} {
puts $::dest "######
-# autogenerated ${::p}lex function created by fickle
+# autogenerated yylex function created by fickle
######
# Whenever yylex() is called, it scans tokens from the global input
@@ -580,6 +589,8 @@ proc write_scanner {} {
# one of its actions executes a return statement.
# -- from the flex(1) man page
proc ${::p}::yylex \{\} \{
+ variable yy_buffer
+ variable yy_index
variable yy_done
variable yytext
variable yyleng
@@ -588,20 +599,20 @@ proc ${::p}::yylex \{\} \{
if $::startstates {
puts $::dest " set ${::p}_current_state \[${::p}::yy_top_state\]"
}
- puts $::dest " if \{\[string length \$::${::p}_buffer\] - \$::${::p}_index < $::BUFFER_SIZE\} \{
+ puts $::dest " if \{\[string length \$yy_buffer\] - \$yy_index < $::BUFFER_SIZE\} \{
if \{\$yy_done == 0\} \{
set ${::p}_new_buffer \"\"
- ${::p}::YY_INPUT ${::p}_new_buffer ${::p}_buffer_size $::BUFFER_SIZE
- append ::${::p}_buffer \$${::p}_new_buffer
+ YY_INPUT ${::p}_new_buffer ${::p}_buffer_size $::BUFFER_SIZE
+ append yy_buffer \$${::p}_new_buffer
if \{\$${::p}_buffer_size == 0 && \\
- \[string length \$::${::p}_buffer\] - \$::${::p}_index == 0\} \{
+ \[string length \$yy_buffer\] - \$yy_index == 0\} \{
set yy_done 1
\}
\}
if \$yy_done \{"
if $::debugmode {
puts $::dest " if \$::${::p}_flex_debug \{
- puts stderr \" --reached end of input buffer\"
+ puts stderr \" ${::p} --reached end of input buffer\"
\}"
}
if $::callyywrap {
@@ -612,7 +623,7 @@ proc ${::p}::yylex \{\} \{
} else {
puts -nonewline $::dest " "
}
- puts $::dest "if \{\[string length \$::${::p}_buffer\] - \$::${::p}_index == 0\} \{
+ puts $::dest "if \{\[string length \$yy_buffer\] - \$yy_index == 0\} \{
break
\}
\}
@@ -640,9 +651,9 @@ proc ${::p}::yylex \{\} \{
puts -nonewline $::dest "\$${::p}_current_state == \"$state_name\" && \\\n "
}
}
- puts $::dest "\[regexp -start \$::${::p}_index -indices -line $scan_args -- \{\\A($pattern)\} \$::${::p}_buffer ${::p}_match\] > 0\ && \\
- \[lindex \$${::p}_match 1\] - \$::${::p}_index + 1 > \$yyleng\} \{
- set yytext \[string range \$::${::p}_buffer \$::${::p}_index \[lindex \$${::p}_match 1\]\]
+ puts $::dest "\[regexp -start \$yy_index -indices -line $scan_args -- \{\\A($pattern)\} \$yy_buffer ${::p}_match\] > 0\ && \\
+ \[lindex \$${::p}_match 1\] - \$yy_index + 1 > \$yyleng\} \{
+ set yytext \[string range \$yy_buffer \$yy_index \[lindex \$${::p}_match 1\]\]
set yyleng \[string length \$yytext\]
set ${::p}_matched_rule $rule_num"
if $::debugmode {
@@ -653,17 +664,17 @@ proc ${::p}::yylex \{\} \{
}
# now add the default case
puts $::dest " if \{\$${::p}_matched_rule == -1\} \{
- set yytext \[string index \$::${::p}_buffer \$::${::p}_index\]
+ set yytext \[string index \$yy_buffer \$yy_index\]
set yyleng 1"
if $::debugmode {
puts $::dest " set ${::p}rule_num \"default rule\""
}
puts $::dest " \}
- incr ::${::p}_index \$yyleng
+ incr yy_index \$yyleng
# workaround for Tcl's circumflex behavior
if \{\[string index \$yytext end\] == \"\\n\"\} \{
- set ::${::p}_buffer \[string range \$::${::p}_buffer \$::${::p}_index end\]
- set ::${::p}_index 0
+ set yy_buffer \[string range \$yy_buffer \$yy_index end\]
+ set yy_index 0
\}"
if $::debugmode {
puts $::dest " if \$::${::p}_flex_debug \{