AltME: Red Docs


That would be helpful Arnold.
Looking for the right datastructure to get the information in, get it presented and perhaps also have it autofilled from the sources?
;name       declaration-type        source-location             [definition]
series!     #define             runtime/allocator.reds      [series-buffer!]
int-array!  alias               runtime/allocator.reds      [struct! [ptr [int-ptr!]]]
cell!       alias               runtime/allocator.reds      [...]
Can't help you there Arnold. Maybe if I can get some other things cleared from my list.

No problem I code something to get a start.
I have a quicky start but ..
whitespace: charset reduce [space tab]
empty-line: ["^/" any whitespace "^/"]
end-alias: "^/]^/"
_allocator: read %../red-master/runtime/allocator.reds
; Now can select the definition of a type declaration
parse _allocator [to "int-array!" copy desc thru [end-alias | empty-line] to end]
; And keep some string for all aliases in the source
type-list: parse _allocator [collect any [to "alias" keep to "^/"]]
; But I want
type-list: parse _allocator [collect any [to "alias" keep backto "^/"]]
As with a list if the strings before the alias I can do something more useful than the end of the strings after 'alias'.
You'll have to collect the comments first. You could set markers, but collecting them first is probably eaiser. e.g.:
_allocator: read %...
ws=: charset " ^-"
ws+=: [some ws=]
ws*=: [any ws=]
empty-line=: ["^/" ws*= "^/"]
=comment:  none
=comments: copy []
comment=: [ws*= ";" copy =comment to newline skip]
comments=: [copy =comments [some [comment= | empty-line=]]]
digit=: charset "0123456789"
word-first-char=: complement charset {/\^^,[](){}"#%$@:;}   ; "
word-inner-char=: union word-first-char= digit=
word=: [copy =word [word-first-char= any word-inner-char=]]
set-word=: [copy =set-word [word= #":"]]
end-alias=: ["^/]^/" | "]]"]
alias=: [
    set-word= ws+= "alias struct!"
    copy =desc thru [end-alias= | empty-line=]
        print =set-word
        print mold =desc
        print mold =comments
        =comments: none
parse _allocator [
    some [
        | alias=
        | skip
The "=" prefix/suffix convention is one I use to mark parse rules and vars.
I was creating the pieces of the puzzle that seemed easiest first.
list: parse _allocator [collect any [[ahead [not [any newline] to "alias" ] keep to "alias" | newline]]]
BuUt this only gets me []  So i'll try your construction now.
Very nice Gregg!

Though I think it is much simpler just to use read/lines and work from there:
_allocator: read/lines %../red-master/runtime/allocator.reds
__allocator: make block! 200
foreach line _allocator [if find line "alias" [append __allocator line]]
And the file in runtime/datatypes/structures.reds that collects the definitions will also be helpful.

word-first-char=: complement charset {/\^^,{}"#%$@:;} ; "
is incomplete? because it does not exclude digits?
red>> parse "0" [word-first-char=]
== true
Good catch Arnold. I was pulling things together quickly.

Last message posted 103 weeks ago.