106 lines
2.8 KiB
ReasonML
106 lines
2.8 KiB
ReasonML
|
#include "yaml.h"
|
||
|
|
||
|
char *Ryaml_find_implicit_tag(const char *str, size_t len)
|
||
|
{
|
||
|
/* This bit was taken from implicit.re, which is in the Syck library.
|
||
|
*
|
||
|
* Copyright (C) 2003 why the lucky stiff */
|
||
|
|
||
|
const char *cursor, *marker;
|
||
|
cursor = str;
|
||
|
|
||
|
/*!re2c
|
||
|
|
||
|
re2c:define:YYCTYPE = "char";
|
||
|
re2c:define:YYCURSOR = cursor;
|
||
|
re2c:define:YYMARKER = marker;
|
||
|
re2c:yyfill:enable = 0;
|
||
|
|
||
|
NULL = [\000] ;
|
||
|
ANY = [\001-\377] ;
|
||
|
DIGIT = [0-9] ;
|
||
|
DIGITSC = [0-9,] ;
|
||
|
DIGITSP = [0-9.] ;
|
||
|
YEAR = DIGIT DIGIT DIGIT DIGIT ;
|
||
|
MON = DIGIT DIGIT ;
|
||
|
SIGN = [-+] ;
|
||
|
HEX = [0-9a-fA-F,] ;
|
||
|
OCT = [0-7,] ;
|
||
|
INTHEX = SIGN? "0x" HEX+ ;
|
||
|
INTOCT = SIGN? "0" OCT+ ;
|
||
|
INTSIXTY = SIGN? DIGIT DIGITSC* ( ":" [0-5]? DIGIT )+ ;
|
||
|
INTCANON = SIGN? ( "0" | [1-9] DIGITSC* ) ;
|
||
|
FLOATFIX = SIGN? ( DIGIT DIGITSC* )? "." DIGITSC* ;
|
||
|
FLOATEXP = SIGN? ( DIGIT DIGITSC* )? "." DIGITSP* [eE] SIGN DIGIT+ ;
|
||
|
FLOATSIXTY = SIGN? DIGIT DIGITSC* ( ":" [0-5]? DIGIT )+ "." DIGITSC* ;
|
||
|
INF = ( "inf" | "Inf" | "INF" ) ;
|
||
|
FLOATINF = [+]? "." INF ;
|
||
|
FLOATNEGINF = [-] "." INF ;
|
||
|
FLOATNAN = "." ( "nan" | "NaN" | "NAN" ) ;
|
||
|
NULLTYPE = ( "~" | "null" | "Null" | "NULL" )? ;
|
||
|
BOOLYES = ( "y" | "Y" | "yes" | "Yes" | "YES" | "true" | "True" | "TRUE" | "on" | "On" | "ON" ) ;
|
||
|
BOOLNO = ( "n" | "N" | "no" | "No" | "NO" | "false" | "False" | "FALSE" | "off" | "Off" | "OFF" ) ;
|
||
|
INTNA = ".na.integer" ;
|
||
|
FLOATNA = ".na.real" ;
|
||
|
STRNA = ".na.character" ;
|
||
|
BOOLNA = ".na" ;
|
||
|
TIMEZ = ( "Z" | [-+] DIGIT DIGIT ( ":" DIGIT DIGIT )? ) ;
|
||
|
TIMEYMD = YEAR "-" MON "-" MON ;
|
||
|
TIMEISO = YEAR "-" MON "-" MON [Tt] MON ":" MON ":" MON ( "." DIGIT* )? TIMEZ ;
|
||
|
TIMESPACED = YEAR "-" MON "-" MON [ \t]+ MON ":" MON ":" MON ( "." DIGIT* )? [ \t]+ TIMEZ ;
|
||
|
TIMECANON = YEAR "-" MON "-" MON "T" MON ":" MON ":" MON ( "." DIGIT* [1-9]+ )? "Z" ;
|
||
|
MERGE = "<<" ;
|
||
|
DEFAULTKEY = "=" ;
|
||
|
|
||
|
NULLTYPE NULL { return "null"; }
|
||
|
|
||
|
BOOLYES NULL { return "bool#yes"; }
|
||
|
|
||
|
BOOLNO NULL { return "bool#no"; }
|
||
|
|
||
|
BOOLNA NULL { return "bool#na"; }
|
||
|
|
||
|
INTHEX NULL { return "int#hex"; }
|
||
|
|
||
|
INTOCT NULL { return "int#oct"; }
|
||
|
|
||
|
INTSIXTY NULL { return "int#base60"; }
|
||
|
|
||
|
INTNA NULL { return "int#na"; }
|
||
|
|
||
|
INTCANON NULL { return "int"; }
|
||
|
|
||
|
FLOATFIX NULL { return "float#fix"; }
|
||
|
|
||
|
FLOATEXP NULL { return "float#exp"; }
|
||
|
|
||
|
FLOATSIXTY NULL { return "float#base60"; }
|
||
|
|
||
|
FLOATINF NULL { return "float#inf"; }
|
||
|
|
||
|
FLOATNEGINF NULL { return "float#neginf"; }
|
||
|
|
||
|
FLOATNAN NULL { return "float#nan"; }
|
||
|
|
||
|
FLOATNA NULL { return "float#na"; }
|
||
|
|
||
|
TIMEYMD NULL { return "timestamp#ymd"; }
|
||
|
|
||
|
TIMEISO NULL { return "timestamp#iso8601"; }
|
||
|
|
||
|
TIMESPACED NULL { return "timestamp#spaced"; }
|
||
|
|
||
|
TIMECANON NULL { return "timestamp"; }
|
||
|
|
||
|
STRNA NULL { return "str#na"; }
|
||
|
|
||
|
DEFAULTKEY NULL { return "default"; }
|
||
|
|
||
|
MERGE NULL { return "merge"; }
|
||
|
|
||
|
ANY { return "str"; }
|
||
|
|
||
|
*/
|
||
|
|
||
|
}
|