Changeset 8422 in project


Ignore:
Timestamp:
02/13/08 02:41:31 (12 years ago)
Author:
Kon Lovett
Message:

Added rest of the C char escapes. Changed ":optional" to "optional". Added '.' operator (what happed here? rlimit used to compile.) Added '.' operator test case.

Location:
release/3/easyffi
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • release/3/easyffi/easyffi.l

    r8389 r8422  
    160160\'\\{digit}{digit}{digit}\'        (list 'char (string->number (substring yytext 3 5) 8))
    161161\'\\0\'                            '(char #\nul)
     162\'\\a\'                            '(char #\alarm)
     163\'\\b\'                            '(char #\backspace)
     164\'\\f\'                            '(char #\page)
    162165\'\\n\'                            '(char #\newline)
     166\'\\r\'                            '(char #\return)
    163167\'\\t\'                            '(char #\tab)
    164 \'\\r\'                            '(char #\return)
     168\'\\v\'                            '(char #\vtab)
    165169\'\\.\'                            (list 'char (string-ref yytext 2))
    166170\'.\'                              (list 'char (string-ref yytext 1))
     
    1681720(x|X){digit16}+                   (list 'num (string->number (substring yytext 2 (string-length yytext)) 16))
    1691730{digit8}+                         (list 'num (string->number (substring yytext 1 (string-length yytext)) 8))
    170 (\+|-)?{digit}+(\.{digit}*)?((e|E)(\+|-)?{digit}+)?
    171                                    (list 'num (string->number yytext))
     174[-+]?{digit}+(\.{digit}*)?([eE][-+]?{digit}+)?
     175                                     (list 'num (string->number yytext))
    172176"<"                                (if (eq? pp-mode 'include)
    173177                                       (let loop ([s '()])
     
    188192";"                                'semicolon
    189193"*"                                'star
    190 "+="|"-="|">>="|"<<="|"*="|"/="|"%="|"%"|"&="|"|="|"^="|"+"|"-"|"/"|">="|"<="|"=="|"<<"|">>"|"&&"|"||"|"&"|"|"|">"|"<"|"^"|"~"|"?"|"::"|":"|"="|"!="|"!"
     194"."|"+="|"-="|">>="|"<<="|"*="|"/="|"%="|"%"|"&="|"|="|"^="|"+"|"-"|"/"|">="|"<="|"=="|"<<"|">>"|"&&"|"||"|"&"|"|"|">"|"<"|"^"|"~"|"?"|"::"|":"|"="|"!="|"!"
    191195                                     (list 'op yytext)
    192196<<EOF>>                            (begin (set! pp-mode #f) 'stop)
  • release/3/easyffi/easyffi.scm

    r8389 r8422  
    3737  (uses srfi-13 srfi-1 utils regex)
    3838  ;(disable-warning var)
     39  (no-procedure-checks-for-usual-bindings)
    3940  (export parse-easy-ffi register-ffi-macro number-type
    4041          ffi-include-path-list ffi-dont-include ##compiler#foreign-type-table
     
    13251326  (unless no-c-syntax-checks
    13261327    (fluid-let ([parsing-error (check-syntax-error text)]
    1327                 [syntax-check-location (:optional loc #f)] )
     1328                [syntax-check-location (optional loc #f)] )
    13281329      (define (checkp p s)
    13291330        (cond [(null? s) (parsing-error (sprintf "unbalanced parantheses - missing match to `~A'" p))]
  • release/3/easyffi/tests.scm

    r8389 r8422  
    7474#define X5_4 -12.0
    7575<#
     76
     77;;================================================================================
     78;; Test '.' operator
     79
     80#>!
     81static ___bool getlimit(int limit, ___bool hard, ___out long *result)
     82{
     83  struct rlimit limits;
     84  rlim_t r;
     85
     86  getrlimit(limit, &limits);
     87
     88  if(hard) r = limits.rlim_max;
     89  else r = limits.rlim_cur;
     90
     91  if(r == RLIM_INFINITY) return 0;
     92  else {
     93    *result = r;
     94    return 1;
     95  }
     96}
     97
     98static ___bool setlimit(int limit, ___bool hard, long value, ___bool inf)
     99{
     100  struct rlimit limits;
     101
     102  getrlimit(limit, &limits);
     103
     104  if(hard) limits.rlim_max = inf ? RLIM_INFINITY : (rlim_t)value;
     105  else limits.rlim_cur = inf ? RLIM_INFINITY : (rlim_t)value;
     106
     107  return setrlimit(limit, &limits) == 0;
     108}
     109<#
Note: See TracChangeset for help on using the changeset viewer.