2006-06-19 03:41:42 -04:00
|
|
|
! Copyright (C) 2005, 2006 Slava Pestov, Alex Chapman.
|
2006-01-10 23:56:00 -05:00
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2005-12-13 17:33:58 -05:00
|
|
|
IN: !syntax
|
2006-05-15 01:01:47 -04:00
|
|
|
USING: alien compiler kernel math namespaces parser
|
2005-12-13 17:33:58 -05:00
|
|
|
sequences syntax words ;
|
2005-06-12 03:38:57 -04:00
|
|
|
|
2006-06-19 03:41:42 -04:00
|
|
|
: !DLL" skip-blank parse-string dlopen parsed ; parsing
|
2006-01-19 23:28:45 -05:00
|
|
|
|
2006-06-19 03:41:42 -04:00
|
|
|
: !ALIEN: scan-word <alien> parsed ; parsing
|
2006-01-19 23:28:45 -05:00
|
|
|
|
2006-06-19 03:41:42 -04:00
|
|
|
: !LIBRARY: scan "c-library" set ; parsing
|
2005-06-12 03:38:57 -04:00
|
|
|
|
2006-06-19 03:41:42 -04:00
|
|
|
: !FUNCTION:
|
2005-06-12 03:38:57 -04:00
|
|
|
scan "c-library" get scan string-mode on
|
2006-05-17 19:05:44 -04:00
|
|
|
[ string-mode off define-c-word ] f ; parsing
|
2005-06-12 03:38:57 -04:00
|
|
|
|
2006-06-19 03:41:42 -04:00
|
|
|
: !TYPEDEF: scan scan typedef ; parsing
|
2005-06-12 03:38:57 -04:00
|
|
|
|
2006-06-19 03:41:42 -04:00
|
|
|
: !BEGIN-STRUCT: ( -- offset )
|
2005-08-24 10:19:09 -04:00
|
|
|
scan "struct-name" set 0 ; parsing
|
|
|
|
|
2006-06-19 03:41:42 -04:00
|
|
|
: !FIELD: ( offset -- offset )
|
2005-08-24 10:19:09 -04:00
|
|
|
scan scan define-field ; parsing
|
|
|
|
|
2006-06-19 03:41:42 -04:00
|
|
|
: !END-STRUCT ( length -- )
|
2005-08-24 10:19:09 -04:00
|
|
|
define-struct-type ; parsing
|
|
|
|
|
2006-06-19 03:41:42 -04:00
|
|
|
: !C-UNION:
|
2006-03-26 19:47:51 -05:00
|
|
|
scan "struct-name" set
|
|
|
|
string-mode on [
|
|
|
|
string-mode off
|
|
|
|
0 [ define-member ] reduce define-struct-type
|
2006-05-17 19:05:44 -04:00
|
|
|
] f ; parsing
|
2006-03-26 19:47:51 -05:00
|
|
|
|
2006-06-19 03:41:42 -04:00
|
|
|
: !C-ENUM:
|
2006-03-26 19:47:51 -05:00
|
|
|
string-mode on [
|
|
|
|
string-mode off 0 [
|
|
|
|
create-in swap [ unit define-compound ] keep 1+
|
|
|
|
] reduce drop
|
2006-05-17 19:05:44 -04:00
|
|
|
] f ; parsing
|