All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.yaml.snakeyaml.resolver.RagelMachine.rl Maven / Gradle / Ivy

There is a newer version: 1.5.7
Show newest version
package org.yaml.snakeyaml.resolver;
//Source for Ragel 6.3

/**
 * Generated by Ragel 6.3 (http://www.complang.org/ragel/)
 * @see http://www.complang.org/ragel/
 */
public class RagelMachine {
    %%{
        machine snakeyaml;
        action bool_tag { tag = "tag:yaml.org,2002:bool"; }
        action merge_tag { tag = "tag:yaml.org,2002:merge"; }
        action null_tag { tag = "tag:yaml.org,2002:null"; }
        action value_tag { tag = "tag:yaml.org,2002:value"; }
        action int_tag { tag = "tag:yaml.org,2002:int"; }
        action float_tag { tag = "tag:yaml.org,2002:float"; }
        action timestamp_tag { tag = "tag:yaml.org,2002:timestamp"; }
        
        Bool = ("yes" | "Yes" | "YES" | "no" | "No" | "NO" | 
                "true" | "True" | "TRUE" | "false" | "False" | "FALSE" | 
                "on" | "On" | "ON" | "off" | "Off" | "OFF") %/bool_tag;
        Merge = "<<" %/merge_tag;
        Value = "=" %/value_tag;
        Null  = ("~" | "null" | "Null" | "NULL" | " ") %/null_tag;
        
        sign = "-" | "+";
        digit2 = digit | "_";
        binaryInt = "0b" [0-1_]+;
        octalInt = "0" [0-7_]+;
        decimalInt = "0" | [1-9]digit2* (":" [0-5]? digit)*;
        hexaInt = "0x" [0-9a-fA-F_]+;
        Int = sign? (binaryInt | octalInt | decimalInt | hexaInt) %/int_tag;
        
        exp = [eE] sign digit+;
        Float = ((sign? ((digit+ digit2* "." digit2* exp?)
        			 | ((digit+ digit2*)? "." digit+ digit2* exp?)
                     | (digit+ (":" [0-5]? digit)+ "." digit*)
                     | "." ("inf" | "Inf" | "INF"))) 
                 | ("." ("nan" | "NaN" | "NAN"))) %/float_tag;
              
        TimestampShort = digit{4} ("-" digit{2}){2} %/timestamp_tag;
        fract = "." digit*;
        zone = [ \t]* ("Z" | (sign digit{1,2} ( ":" digit{2} )?));
        Timestamp = digit{4} ("-" digit{1,2}){2} ([Tt] | [ \t]+) 
        	digit{1,2} ":" digit{2} ":" digit{2} fract? zone? %/timestamp_tag;
                 
        Scalar = Bool | Null | Int | Float | TimestampShort | Merge | Value | Timestamp;
        main := Scalar;
        write data nofinal;
    }%%
    
    public String scan(String scalar) {
        if (scalar == null) {
            throw new NullPointerException("Scalar must be provided.");
        }
        String tag = null;
        int cs = 0;
        int p = 0;
        int pe = scalar.length();
        int eof = pe;
        char[] data;
        if (pe == 0) {
            // NULL value
            data = new char[] { '~' };
            pe = 1;
            eof = 1;
        } else {
            data = scalar.toCharArray();
        }
        %%{
            # Initialize and execute.
            write init;
            write exec;
        }%%

        return tag;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy