ycl

Artifact [5438839f20]
Login

Artifact [5438839f20]

Artifact 5438839f20e569869388548bfa7114cf0d231be6:


#! /bin/env tclsh

proc quoted-string value {
	# RFC 7230 Appendix B
	if {[regexp {"(.*)"} $value _ inner]} {
		set value $inner
	}
	regsub -all {\\([\t\v\x80-\xff])} $value[set value {}] {\1} value
	if {[regexp {\\} $value]} {
		error [list {illegal quoted pair} $value]
	}
	if {[regexp \" $value]} {
		error [list {illegal double quote} $value]
	}
	if {[regexp {[^\t\x20!\#-\[\]-~\x80-\xff]} $value]} {
		error [list {illegal character in quoted string} $value]
	}
	return $value
}

proc token token {
	if {![string length $token] || [regexp {[^-!#\$%&'\*\+\.\^_`\|~0-9A-Za-z]} $token]} {
		error [list {invalid token} $token]
	}
	return $token
}