]> gitweb.factorcode.org Git - factor.git/blob - basis/alien/syntax/syntax.factor
Merge branch 'master' of git://factorcode.org/git/factor
[factor.git] / basis / alien / syntax / syntax.factor
1 ! Copyright (C) 2005, 2008 Slava Pestov, Alex Chapman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors arrays alien alien.c-types alien.structs
4 alien.arrays alien.strings kernel math namespaces parser
5 sequences words quotations math.parser splitting grouping
6 effects assocs combinators lexer strings.parser alien.parser 
7 fry vocabs.parser words.constant ;
8 IN: alien.syntax
9
10 : DLL" lexer get skip-blank parse-string dlopen parsed ; parsing
11
12 : ALIEN: scan string>number <alien> parsed ; parsing
13
14 : BAD-ALIEN <bad-alien> parsed ; parsing
15
16 : LIBRARY: scan "c-library" set ; parsing
17
18 : FUNCTION:
19     scan "c-library" get scan ";" parse-tokens
20     [ "()" subseq? not ] filter
21     define-function ; parsing
22
23 : TYPEDEF:
24     scan scan typedef ; parsing
25
26 : C-STRUCT:
27     scan in get parse-definition define-struct ; parsing
28
29 : C-UNION:
30     scan parse-definition define-union ; parsing
31
32 : C-ENUM:
33     ";" parse-tokens
34     [ [ create-in ] dip define-constant ] each-index ;
35     parsing
36
37 : address-of ( name library -- value )
38     load-library dlsym [ "No such symbol" throw ] unless* ;
39
40 : &:
41     scan "c-library" get '[ _ _ address-of ] over push-all ; parsing