I have a script which works under Core 2.2 but fails under 2.3:
The problem appears to be in the way I use parse, but I can�t see what is
wrong, particularly since it worked under 2.2
Thanks,
Garold (Gary) L. Johnson
DYNAMIC Alternatives <http://www.dynalt.com/>
[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
562 802 1639
REBOL 2.2.0.3.1
[snip]
Script: "Test args processing" (13-Jun-2000)
Argument processing test -- glj_args.r
Parsing arguments
Arguments: arg1=1 arg2={A string} arg3
1 : { arg1=1 }
2 : { arg2={A string} }
3 : { arg3 }
Found 3 arguments
Argument list
arg1=1
arg2={A string}
arg3
>>
REBOL/Core 2.3.0.3.1
[snip]
Script: "Test args processing" (13-Jun-2000)
Argument processing test -- glj_args.r
Parsing arguments
Arguments: arg1=1 arg2={A string} arg3
Found 0 arguments
Argument list
>>
The script:
REBOL [
Title: "Test args processing"
Date: 2000-Jun-13
Name: 'glj_args
Version: 0.1.0
File: %glj_args.r
Home: http://www.dynalt.com
Author: "Garold L. Johnson"
Email: [EMAIL PROTECTED]
Owner: "DYNAMIC Alternatives"
Rights: "Copyright 2000 by DYNAMIC Alternatives"
Tabs: 4
Need: 0.1.4
Language: 'English
Charset: 'ANSI
Purpose: {
Determine what REBOL does with command line arguments.
}
Example: {
REBOL glj_args.r [<arg list to test>]
arg-parser/parse-args
or
arg-parser/parse-args/verbose ; trace parse
print [ newline "Argument list" ]
foreach arg arg-parser/arg_list [
print arg
]
}
Category: [test 1]
]
print "Argument processing test -- glj_args.r"
if none? system/script/args [
print "No arguments provided."
halt;
]
arg-parser: make object! [
print "Parsing arguments"
dbg: 1
arg_cnt: 0
arg_list: make block! 50
text: make string! 100
; Character classes
digit: charset [#"0" - #"9"]
alpha: charset [#"A" - #"Z" #"a" - #"z"]
alphanum: union alpha digit
; Parsing rules
; Name starts with letter; allows letters, digits, and '-' or '_'
name: [ alpha any [alphanum | #"-" | #"_"] ]
; Strings are enclosed in braces
str: [ #"{" thru #"}" ]
; Arg -- name | name=value
; value = string or sequence without spaces
arg: [
copy text [
name [ 0 1 [ #"=" [ str | to #" " ] ] ]
]
(arg_cnt: (arg_cnt + 1)
( if dbg [print [ arg_cnt ": {" text "}" ]] )
append arg_list text
)
some #" "
]
parse-args: func [
"Parse command line arguments into arg-list"
/verbose "print arguments as parsed"
] [
dbg: either verbose [ 0 ][ 1 ]
parse/all system/script/args [ some arg ]
print [ "Found " arg_cnt " arguments" ]
] ; parse-args
] ; arg-parser
print [ "Arguments: " system/script/args ]
arg-parser/parse-args/verbose
print [ newline "Argument list" ]
foreach arg arg-parser/arg_list [
print arg
]
halt;
; End of File glj_args.r