diff options
Diffstat (limited to 'test/http/http.lm')
-rw-r--r-- | test/http/http.lm | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/test/http/http.lm b/test/http/http.lm new file mode 100644 index 00000000..d914ab6f --- /dev/null +++ b/test/http/http.lm @@ -0,0 +1,68 @@ +# +# Character classes +# +rl CTL /0..31 | 127/ +rl CR /13/ +rl LF /10/ +rl SP /32/ +rl HT /9/ +rl CHAR /0..127/ + +rl separators / '(' | ')' | '<' | '>' + | '@' | ',' | ';' | ':' | '\\' + | '"' | '/' | '[' | ']' | '?' + | '=' | '{' | '}' | SP | HT / + +rl token_char /CHAR - CTL - separators/ + +# +# Literal tokens +# + +literal 'HTTP/', ' ', ':' +token CRLF /CR LF/ + +# +# Request Line +# + +token method /token_char+/ + +token request_uri /(^SP)+/ + +token http_number /digit+ '.' digit+/ + +def http_version + [ 'HTTP/' http_number ] + +def request_line + [method ' ' request_uri + ' ' http_version CRLF] + +# +# Header +# + +token field_name /token_char+/ + +token field_value + /(^(CR|LF) | CR LF (SP|HT))* CR LF/ + +def header + [field_name ':' field_value] + +# +# Request +# + +def request + [request_line header* CRLF] + +request R = parse_stop request( stdin ) + +print( 'HTTP/1.0 200 OK\r\n' ) +print( 'Date: Fri, 31 Dec 1999 23:59:59 GMT\r\n' ) +print( 'Content-Type: text/plain\r\n' ) +print( '\r\n' ) +print_xml( R ) + |