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

rapture.generated.CubeDefParser Maven / Gradle / Ivy

// $ANTLR 3.5.2 /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g 2016-04-15 08:33:47

   package rapture.generated;
   import rapture.dsl.cdef.*;


import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

import org.antlr.runtime.tree.*;


@SuppressWarnings("all")
public class CubeDefParser extends Parser {
	public static final String[] tokenNames = new String[] {
		"", "", "", "", "BOOLTYPE", "CBRAC", "COMMA", 
		"DATETYPE", "DIMENSIONAL", "DOLLAR", "GROUP", "ID", "NUMBER", "NUMBERTYPE", 
		"OBRAC", "PERC", "STRING", "STRINGTYPE", "VALUE", "WS"
	};
	public static final int EOF=-1;
	public static final int BOOLTYPE=4;
	public static final int CBRAC=5;
	public static final int COMMA=6;
	public static final int DATETYPE=7;
	public static final int DIMENSIONAL=8;
	public static final int DOLLAR=9;
	public static final int GROUP=10;
	public static final int ID=11;
	public static final int NUMBER=12;
	public static final int NUMBERTYPE=13;
	public static final int OBRAC=14;
	public static final int PERC=15;
	public static final int STRING=16;
	public static final int STRINGTYPE=17;
	public static final int VALUE=18;
	public static final int WS=19;

	// delegates
	public Parser[] getDelegates() {
		return new Parser[] {};
	}

	// delegators


	public CubeDefParser(TokenStream input) {
		this(input, new RecognizerSharedState());
	}
	public CubeDefParser(TokenStream input, RecognizerSharedState state) {
		super(input, state);
	}

	protected TreeAdaptor adaptor = new CommonTreeAdaptor();

	public void setTreeAdaptor(TreeAdaptor adaptor) {
		this.adaptor = adaptor;
	}
	public TreeAdaptor getTreeAdaptor() {
		return adaptor;
	}
	@Override public String[] getTokenNames() { return CubeDefParser.tokenNames; }
	@Override public String getGrammarFileName() { return "/Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g"; }


	public static class cubeSchemaDefinition_return extends ParserRuleReturnScope {
		public CubeSchemaDefinition def;
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "cubeSchemaDefinition"
	// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:22:1: cubeSchemaDefinition returns [CubeSchemaDefinition def] : x= fieldDefinition ( COMMA y= fieldDefinition )* ;
	public final CubeDefParser.cubeSchemaDefinition_return cubeSchemaDefinition() throws RecognitionException {
		CubeDefParser.cubeSchemaDefinition_return retval = new CubeDefParser.cubeSchemaDefinition_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token COMMA1=null;
		ParserRuleReturnScope x =null;
		ParserRuleReturnScope y =null;

		Object COMMA1_tree=null;


		   retval.def = new CubeSchemaDefinition();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:25:3: (x= fieldDefinition ( COMMA y= fieldDefinition )* )
			// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:25:5: x= fieldDefinition ( COMMA y= fieldDefinition )*
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_fieldDefinition_in_cubeSchemaDefinition80);
			x=fieldDefinition();
			state._fsp--;

			adaptor.addChild(root_0, x.getTree());

			 retval.def.addField((x!=null?((CubeDefParser.fieldDefinition_return)x).field:null)); 
			// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:25:52: ( COMMA y= fieldDefinition )*
			loop1:
			while (true) {
				int alt1=2;
				int LA1_0 = input.LA(1);
				if ( (LA1_0==COMMA) ) {
					alt1=1;
				}

				switch (alt1) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:25:53: COMMA y= fieldDefinition
					{
					COMMA1=(Token)match(input,COMMA,FOLLOW_COMMA_in_cubeSchemaDefinition85); 
					COMMA1_tree = (Object)adaptor.create(COMMA1);
					adaptor.addChild(root_0, COMMA1_tree);

					pushFollow(FOLLOW_fieldDefinition_in_cubeSchemaDefinition89);
					y=fieldDefinition();
					state._fsp--;

					adaptor.addChild(root_0, y.getTree());

					 retval.def.addField((y!=null?((CubeDefParser.fieldDefinition_return)y).field:null)); 
					}
					break;

				default :
					break loop1;
				}
			}

			}

			retval.stop = input.LT(-1);

			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "cubeSchemaDefinition"


	public static class fieldDefinition_return extends ParserRuleReturnScope {
		public FieldDefinition field;
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "fieldDefinition"
	// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:27:1: fieldDefinition returns [FieldDefinition field] : x= ID fieldType dimensionalType ( calc )? ;
	public final CubeDefParser.fieldDefinition_return fieldDefinition() throws RecognitionException {
		CubeDefParser.fieldDefinition_return retval = new CubeDefParser.fieldDefinition_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token x=null;
		ParserRuleReturnScope fieldType2 =null;
		ParserRuleReturnScope dimensionalType3 =null;
		ParserRuleReturnScope calc4 =null;

		Object x_tree=null;


		  retval.field = new FieldDefinition();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:30:3: (x= ID fieldType dimensionalType ( calc )? )
			// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:30:5: x= ID fieldType dimensionalType ( calc )?
			{
			root_0 = (Object)adaptor.nil();


			x=(Token)match(input,ID,FOLLOW_ID_in_fieldDefinition113); 
			x_tree = (Object)adaptor.create(x);
			adaptor.addChild(root_0, x_tree);

			retval.field.setName((x!=null?x.getText():null)); 
			pushFollow(FOLLOW_fieldType_in_fieldDefinition117);
			fieldType2=fieldType();
			state._fsp--;

			adaptor.addChild(root_0, fieldType2.getTree());

			 retval.field.setType((fieldType2!=null?input.toString(fieldType2.start,fieldType2.stop):null)); 
			pushFollow(FOLLOW_dimensionalType_in_fieldDefinition121);
			dimensionalType3=dimensionalType();
			state._fsp--;

			adaptor.addChild(root_0, dimensionalType3.getTree());

			 retval.field.setDimensional((dimensionalType3!=null?input.toString(dimensionalType3.start,dimensionalType3.stop):null)); 
			// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:30:151: ( calc )?
			int alt2=2;
			int LA2_0 = input.LA(1);
			if ( (LA2_0==GROUP||LA2_0==PERC) ) {
				alt2=1;
			}
			switch (alt2) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:30:151: calc
					{
					pushFollow(FOLLOW_calc_in_fieldDefinition125);
					calc4=calc();
					state._fsp--;

					adaptor.addChild(root_0, calc4.getTree());

					}
					break;

			}

			}

			retval.stop = input.LT(-1);

			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "fieldDefinition"


	public static class calc_return extends ParserRuleReturnScope {
		public FieldCalc c;
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "calc"
	// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:32:1: calc returns [FieldCalc c] : ( perc | group ) ;
	public final CubeDefParser.calc_return calc() throws RecognitionException {
		CubeDefParser.calc_return retval = new CubeDefParser.calc_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope perc5 =null;
		ParserRuleReturnScope group6 =null;


		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:33:3: ( ( perc | group ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:33:3: ( perc | group )
			{
			root_0 = (Object)adaptor.nil();


			// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:33:3: ( perc | group )
			int alt3=2;
			int LA3_0 = input.LA(1);
			if ( (LA3_0==PERC) ) {
				alt3=1;
			}
			else if ( (LA3_0==GROUP) ) {
				alt3=2;
			}

			else {
				NoViableAltException nvae =
					new NoViableAltException("", 3, 0, input);
				throw nvae;
			}

			switch (alt3) {
				case 1 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:33:4: perc
					{
					pushFollow(FOLLOW_perc_in_calc139);
					perc5=perc();
					state._fsp--;

					adaptor.addChild(root_0, perc5.getTree());

					 retval.c =(perc5!=null?((CubeDefParser.perc_return)perc5).c:null); 
					}
					break;
				case 2 :
					// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:33:27: group
					{
					pushFollow(FOLLOW_group_in_calc145);
					group6=group();
					state._fsp--;

					adaptor.addChild(root_0, group6.getTree());

					 retval.c =(group6!=null?((CubeDefParser.group_return)group6).c:null); 
					}
					break;

			}

			}

			retval.stop = input.LT(-1);

			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "calc"


	public static class perc_return extends ParserRuleReturnScope {
		public PercCalc c;
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "perc"
	// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:35:1: perc returns [PercCalc c] : PERC OBRAC ID CBRAC ;
	public final CubeDefParser.perc_return perc() throws RecognitionException {
		CubeDefParser.perc_return retval = new CubeDefParser.perc_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PERC7=null;
		Token OBRAC8=null;
		Token ID9=null;
		Token CBRAC10=null;

		Object PERC7_tree=null;
		Object OBRAC8_tree=null;
		Object ID9_tree=null;
		Object CBRAC10_tree=null;


		   retval.c = new PercCalc();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:38:3: ( PERC OBRAC ID CBRAC )
			// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:38:5: PERC OBRAC ID CBRAC
			{
			root_0 = (Object)adaptor.nil();


			PERC7=(Token)match(input,PERC,FOLLOW_PERC_in_perc165); 
			PERC7_tree = (Object)adaptor.create(PERC7);
			adaptor.addChild(root_0, PERC7_tree);

			OBRAC8=(Token)match(input,OBRAC,FOLLOW_OBRAC_in_perc167); 
			OBRAC8_tree = (Object)adaptor.create(OBRAC8);
			adaptor.addChild(root_0, OBRAC8_tree);

			ID9=(Token)match(input,ID,FOLLOW_ID_in_perc169); 
			ID9_tree = (Object)adaptor.create(ID9);
			adaptor.addChild(root_0, ID9_tree);

			 retval.c.setSrcField((ID9!=null?ID9.getText():null)); 
			CBRAC10=(Token)match(input,CBRAC,FOLLOW_CBRAC_in_perc173); 
			CBRAC10_tree = (Object)adaptor.create(CBRAC10);
			adaptor.addChild(root_0, CBRAC10_tree);

			}

			retval.stop = input.LT(-1);

			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "perc"


	public static class group_return extends ParserRuleReturnScope {
		public GroupCalc c;
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "group"
	// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:40:1: group returns [GroupCalc c] : GROUP OBRAC ID CBRAC ;
	public final CubeDefParser.group_return group() throws RecognitionException {
		CubeDefParser.group_return retval = new CubeDefParser.group_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token GROUP11=null;
		Token OBRAC12=null;
		Token ID13=null;
		Token CBRAC14=null;

		Object GROUP11_tree=null;
		Object OBRAC12_tree=null;
		Object ID13_tree=null;
		Object CBRAC14_tree=null;


		   retval.c = new GroupCalc();

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:43:3: ( GROUP OBRAC ID CBRAC )
			// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:43:5: GROUP OBRAC ID CBRAC
			{
			root_0 = (Object)adaptor.nil();


			GROUP11=(Token)match(input,GROUP,FOLLOW_GROUP_in_group190); 
			GROUP11_tree = (Object)adaptor.create(GROUP11);
			adaptor.addChild(root_0, GROUP11_tree);

			OBRAC12=(Token)match(input,OBRAC,FOLLOW_OBRAC_in_group192); 
			OBRAC12_tree = (Object)adaptor.create(OBRAC12);
			adaptor.addChild(root_0, OBRAC12_tree);

			ID13=(Token)match(input,ID,FOLLOW_ID_in_group194); 
			ID13_tree = (Object)adaptor.create(ID13);
			adaptor.addChild(root_0, ID13_tree);

			 retval.c.setSrcField((ID13!=null?ID13.getText():null)); 
			CBRAC14=(Token)match(input,CBRAC,FOLLOW_CBRAC_in_group198); 
			CBRAC14_tree = (Object)adaptor.create(CBRAC14);
			adaptor.addChild(root_0, CBRAC14_tree);

			}

			retval.stop = input.LT(-1);

			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "group"


	public static class fieldType_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "fieldType"
	// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:46:1: fieldType : ( STRINGTYPE | NUMBERTYPE | BOOLTYPE | DATETYPE ) ;
	public final CubeDefParser.fieldType_return fieldType() throws RecognitionException {
		CubeDefParser.fieldType_return retval = new CubeDefParser.fieldType_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set15=null;

		Object set15_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:46:11: ( ( STRINGTYPE | NUMBERTYPE | BOOLTYPE | DATETYPE ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:
			{
			root_0 = (Object)adaptor.nil();


			set15=input.LT(1);
			if ( input.LA(1)==BOOLTYPE||input.LA(1)==DATETYPE||input.LA(1)==NUMBERTYPE||input.LA(1)==STRINGTYPE ) {
				input.consume();
				adaptor.addChild(root_0, (Object)adaptor.create(set15));
				state.errorRecovery=false;
			}
			else {
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			}

			retval.stop = input.LT(-1);

			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "fieldType"


	public static class dimensionalType_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "dimensionalType"
	// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:48:1: dimensionalType : ( DIMENSIONAL | VALUE ) ;
	public final CubeDefParser.dimensionalType_return dimensionalType() throws RecognitionException {
		CubeDefParser.dimensionalType_return retval = new CubeDefParser.dimensionalType_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set16=null;

		Object set16_tree=null;

		try {
			// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:48:17: ( ( DIMENSIONAL | VALUE ) )
			// /Users/amkimian/Development/cloud/Rapture/Libs/RaptureCore/src/main/antlr3/rapture/dsl/cdef/CubeDefParser.g:
			{
			root_0 = (Object)adaptor.nil();


			set16=input.LT(1);
			if ( input.LA(1)==DIMENSIONAL||input.LA(1)==VALUE ) {
				input.consume();
				adaptor.addChild(root_0, (Object)adaptor.create(set16));
				state.errorRecovery=false;
			}
			else {
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			}

			retval.stop = input.LT(-1);

			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "dimensionalType"

	// Delegated rules



	public static final BitSet FOLLOW_fieldDefinition_in_cubeSchemaDefinition80 = new BitSet(new long[]{0x0000000000000042L});
	public static final BitSet FOLLOW_COMMA_in_cubeSchemaDefinition85 = new BitSet(new long[]{0x0000000000000800L});
	public static final BitSet FOLLOW_fieldDefinition_in_cubeSchemaDefinition89 = new BitSet(new long[]{0x0000000000000042L});
	public static final BitSet FOLLOW_ID_in_fieldDefinition113 = new BitSet(new long[]{0x0000000000022090L});
	public static final BitSet FOLLOW_fieldType_in_fieldDefinition117 = new BitSet(new long[]{0x0000000000040100L});
	public static final BitSet FOLLOW_dimensionalType_in_fieldDefinition121 = new BitSet(new long[]{0x0000000000008402L});
	public static final BitSet FOLLOW_calc_in_fieldDefinition125 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_perc_in_calc139 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_group_in_calc145 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PERC_in_perc165 = new BitSet(new long[]{0x0000000000004000L});
	public static final BitSet FOLLOW_OBRAC_in_perc167 = new BitSet(new long[]{0x0000000000000800L});
	public static final BitSet FOLLOW_ID_in_perc169 = new BitSet(new long[]{0x0000000000000020L});
	public static final BitSet FOLLOW_CBRAC_in_perc173 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_GROUP_in_group190 = new BitSet(new long[]{0x0000000000004000L});
	public static final BitSet FOLLOW_OBRAC_in_group192 = new BitSet(new long[]{0x0000000000000800L});
	public static final BitSet FOLLOW_ID_in_group194 = new BitSet(new long[]{0x0000000000000020L});
	public static final BitSet FOLLOW_CBRAC_in_group198 = new BitSet(new long[]{0x0000000000000002L});
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy