private void SetQualifiedIdList(Token pToken)
        {
            /*
                <QualifiedIdList> ::= <QualifiedIdList> <Qualified ID>
                                | <Qualified ID>
            */
            if (pToken is NonterminalToken)
            {
                NonterminalToken NT = (NonterminalToken)pToken;
                switch (NT.Symbol.ToString())
                {
                    case "<QualifiedIdList>":
                        this.SetQualifiedIdList((NonterminalToken)NT.Tokens[0]);
                        this.IdList.Add(this.SetQualifiedId(NT.Tokens[1]));

                        break;
                    case "<Qualified ID>":
                        this.IdList.Add(SetQualifiedId(NT.Tokens[0]));
                        break;
                }
            }
            else
            {
                this.IdList.Add(this.SetQualifiedId(pToken));
            }
        }
Beispiel #2
0
        public Rule_Value(Rule_Context pContext, Token pToken)
            : base(pContext)
        {
            /* ::= Identifier	| <Literal> | Boolean | '(' <Expr List> ')' */

            if (pToken is NonterminalToken)
            {
                NonterminalToken T = (NonterminalToken)pToken;
                if (T.Tokens.Length == 1)
                {
                    switch (T.Rule.Rhs[0].ToString())
                    {
                        case "Identifier":
                            this.Id = this.GetCommandElement(T.Tokens, 0);
                            break;
                        case "<FunctionCall>":
                            //this.value = new Rule_FunctionCall(pContext, (NonterminalToken)T.Tokens[0]);
                            break;
                        case "<Literal>":
                        case "Boolean":
                        default:
                            this.value = this.GetCommandElement(T.Tokens, 0);
                            break;
                    }
                }
                else
                {
                    //this.value = new Rule_ExprList(pContext, (NonterminalToken)T.Tokens[1]);
                }
            }
            else
            {
                TerminalToken TT = (TerminalToken)pToken;
                switch (TT.Symbol.ToString())
                {
                    case "Boolean":
                        this.value = TT.Text;
                        break;
                    default:
                        this.value = TT.Text;
                        break;
                }
            }

            if (this.Id == null && this.value == null)
            {

            }
        }
        //<Qualified ID>
        public Rule_QualifiedIdList(Rule_Context pContext, Token pToken)
            : base(pContext)
        {
            IdList = new List<string>();

            this.SetQualifiedIdList(pToken);
            /*<QualifiedIdList> ::= <QualifiedIdList> <Qualified ID>
            | <Qualified ID>

            <Qualified ID> ::= Identifier
            | <Fully_Qualified_Id>
            <Fully_Qualified_Id> ::= Identifier '.' <Qualified ID>*/

            //<SortList> ::= <SortList> <Sort> |<Sort>
        }
Beispiel #4
0
 /// <summary>
 /// Build a string composed of all tokens in tree.
 /// </summary>
 /// <param name="tokens">tokens</param>
 /// <returns>string</returns>
 protected string ExtractTokens(Token[] tokens)
 {
     int max = tokens.GetUpperBound(0);
     string tokensInTree = "";
     for (int i = tokens.GetLowerBound(0); i <= max; i++)
     {
         if (tokens[i] is NonterminalToken)
         {
             tokensInTree += ExtractTokens(((NonterminalToken)tokens[i]).Tokens);
         }
         else
         {
             tokensInTree += tokens[i].ToString() + " ";
         }
     }
     return tokensInTree;
 }
Beispiel #5
0
		private void DoAccept(Token token, AcceptAction action)
		{
			continueParsing = false;
			accepted = true;
			if (OnAccept != null)
				OnAccept(this, new AcceptEventArgs((NonterminalToken)tokenStack.Peek()));
		}
Beispiel #6
0
        /// <summary>
        /// creates a negateexp from a token
        /// </summary>
        /// <returns>Rule_NegateExp</returns>
        public string CreateNegateRecode(Token pToken)
        {
            NonterminalToken T = (NonterminalToken)((NonterminalToken)pToken).Tokens[0];
            Rule_NegateExp result = new Rule_NegateExp(this.Context, T);

            return result.Execute().ToString();
        }
Beispiel #7
0
        public static EnterRule BuildStatments(Rule_Context pContext, Token pToken)
        {
            EnterRule result = null;
            if (pToken is NonterminalToken)
            {
                NonterminalToken NT = (NonterminalToken)pToken;

                switch (NT.Symbol.ToString())
                {
                    // H1N1
                    case "<Program>":
                        result = new Rule_Program(pContext, NT);
                        break;
                    case "<Always_Statement>":
                        result  = new Rule_Always(pContext, NT);
                        break;

                    case "<Simple_Assign_Statement>":
                    case "<Let_Statement>":
                    case "<Assign_Statement>":
                        result  = new Rule_Assign(pContext, NT);
                        break;
                    case "<Assign_DLL_Statement>":
                        result  = new Rule_Assign_DLL_Statement(pContext, NT);
                        break;
                    case "<If_Statement>":
                    case "<If_Else_Statement>":
                        result  = new Rule_If_Then_Else_End(pContext, NT);
                        break;
                    case "<Else_If_Statement>":
                        result = new Rule_Else_If_Statement(pContext, NT);
                        break;
                    case "<Define_Variable_Statement>":
                        result  = new Rule_Define(pContext, NT);
                        break;
                    case "<Define_Dll_Statement>":
                        result = new Rule_DLL_Statement(pContext, NT);
                        break;
                    case "<FuncName2>":
                    case "<FunctionCall>":
                        result = new Rule_FunctionCall(pContext, NT);
                        break;

                    case "<Hide_Some_Statement>":
                    case "<Hide_Except_Statement>":
                        result  = new Rule_Hide(pContext, NT);
                        break;

                    case "<Unhide_Some_Statement>":
                    case "<Unhide_Except_Statement>":
                        result  = new Rule_UnHide(pContext, NT);
                        break;

                    case "<Go_To_Variable_Statement>":
                    case "<Go_To_Page_Statement>":
                    case "<Go_To_Form_Statement>":
                        result  = new Rule_GoTo(pContext, NT);
                        break;

                    case "<Simple_Dialog_Statement>":
                    case "<Numeric_Dialog_Implicit_Statement>":
                    case "<Numeric_Dialog_Explicit_Statement>":
                    case "<TextBox_Dialog_Statement>":
                    case "<Db_Values_Dialog_Statement>":
                    case "<YN_Dialog_Statement>":
                    case "<Db_Views_Dialog_Statement>":
                    case "<Databases_Dialog_Statement>":
                    case "<Db_Variables_Dialog_Statement>":
                    case "<Multiple_Choice_Dialog_Statement>":
                    case "<Dialog_Read_Statement>":
                    case "<Dialog_Write_Statement>":
                    case "<Dialog_Read_Filter_Statement>":
                    case "<Dialog_Write_Filter_Statement>":
                    case "<Dialog_Date_Statement>":
                    case "<Dialog_Time_Statement>":
                    case "<Dialog_DateTime_Statement>":
                    case "<Dialog_Date_Mask_Statement>":
                        result  = new Rule_Dialog(pContext, NT);
                        break;

                    case "<Comment_Line>":
                        result  = new Rule_CommentLine(pContext, NT);
                        break;

                    case "<Simple_Execute_Statement>":
                    case "<Execute_File_Statement>":
                    case "<Execute_Url_Statement>":
                    case "<Execute_Wait_For_Exit_File_Statement>":
                    case "<Execute_Wait_For_Exit_String_Statement>":
                    case "<Execute_Wait_For_Exit_Url_Statement>":
                    case "<Execute_No_Wait_For_Exit_File_Statement>":
                    case "<Execute_No_Wait_For_Exit_String_Statement>":
                    case "<Execute_No_Wait_For_Exit_Url_Statement>":
                        result  = new Rule_Execute(pContext, NT);
                        break;
                    case "<Beep_Statement>":
                        result  = new Rule_Beep(pContext, NT);
                        break;
                    case "<Auto_Search_Statement>":
                        result  = new Rule_AutoSearch(pContext, NT);
                        break;
                    case "<Quit_Statement>":
                        result  = new Rule_Quit(pContext);
                        break;
                    case "<Clear_Statement>":
                        result  = new Rule_Clear(pContext, NT);
                        break;
                    case "<New_Record_Statement>":
                        result  = new Rule_NewRecord(pContext, NT);
                        break;
                    case "<Save_Record_Statement>":
                        result = new Rule_SaveRecord(pContext, NT);
                        break;
                    case "<Simple_Undefine_Statement>":
                        result  = new Rule_Undefine(pContext, NT);
                        break;
                    case "<Geocode_Statement>":
                        result  = new Rule_Geocode(pContext, NT);
                        break;
                    case "<DefineVariables_Statement>":
                        result  = new Rule_DefineVariables_Statement(pContext, NT);
                        break;
                    case "<Field_Checkcode_Statement>":
                        result  = new Rule_Field_Checkcode_Statement(pContext, NT);
                        break;
                    case "<View_Checkcode_Statement>":
                        result  = new Rule_View_Checkcode_Statement(pContext, NT);
                        break;
                    case "<Record_Checkcode_Statement>":
                        result  = new Rule_Record_Checkcode_Statement(pContext, NT);
                        break;
                    case "<Page_Checkcode_Statement>":
                        result  = new Rule_Page_Checkcode_Statement(pContext, NT);
                        break;
                    case "<Subroutine_Statement>":
                        result  = new Rule_Subroutine_Statement(pContext, NT);
                        break;
                    case "<Call_Statement>":
                        result  = new Rule_Call(pContext, NT);
                        break;
                    case "<Expr List>":
                        result = new Rule_ExprList(pContext, NT);
                        break;
                    case "<Expression>":
                        result = new Rule_Expression(pContext, NT);
                        break;
                    case "<And Exp>":
                        result = new Rule_AndExp(pContext, NT);
                        break;
                    case "<Not Exp>":
                        result = new Rule_NotExp(pContext, NT);
                        break;
                    case "<Compare Exp>":
                        result = new Rule_CompareExp(pContext, NT);
                        break;
                    case "<Concat Exp>":
                        result = new Rule_ConcatExp(pContext, NT);
                        break;
                    case "<Add Exp>":
                        result = new Rule_AddExp(pContext, NT);
                        break;
                    case "<Mult Exp>":
                        result = new Rule_MultExp(pContext, NT);
                        break;
                    case "<Pow Exp>":
                        result = new Rule_PowExp(pContext, NT);
                        break;
                    case "<Negate Exp>":
                        result = new Rule_NegateExp(pContext, NT);
                        break;
                    case "<Begin_Before_statement>":
                        result = new Rule_Begin_Before_Statement(pContext, NT);
                        break;
                    case "<Begin_After_statement>":
                        result = new Rule_Begin_After_Statement(pContext, NT);
                        break;
                    case "<Begin_Click_statement>":
                        result = new Rule_Begin_Click_Statement(pContext, NT);
                        break;
                    case "<CheckCodeBlock>":
                        result = new Rule_CheckCodeBlock(pContext, NT);
                        break;
                    case "<CheckCodeBlocks>":
                        result = new Rule_CheckCodeBlocks(pContext, NT);
                        break;
                    case "<Simple_Run_Statement>":
                        break;
                    case "<Statements>":
                        result = new Rule_Statements(pContext, NT);
                        break;
                    case "<Statement>":
                        result = new Rule_Statement(pContext, NT);
                        break;
                    case "<Define_Statement_Group>":
                        result = new Rule_Define_Statement_Group(pContext, NT);
                        break;
                    case "<Define_Statement_Type>":
                        result = new Rule_Define_Statement_Type(pContext, NT);
                        break;
                    case "<Highlight_Statement>":
                        result = new Rule_Highlight(pContext, NT);
                        break;
                    case "<UnHighlight_Statement>":
                        result = new Rule_UnHighlight(pContext, NT);
                        break;
                    case "<Enable_Statement>":
                        result = new Rule_Enable(pContext, NT);
                        break;
                    case "<Disable_Statement>":
                        result = new Rule_Disable(pContext, NT);
                        break;
                    case "<Set_Required_Statement>":
                        result = new Rule_SetRequired(pContext, NT);
                        break;
                    case "<Set_Not_Required_Statement>":
                        result = new Rule_SetNOTRequired(pContext, NT);
                        break;
                    case "<Value>":
                    default:
                        result = new Rule_Value(pContext, NT);
                        break;

                        //result = new Rule_Value(pContext, NT);
                        //throw new Exception("Missing rule in EnterRule.BuildStatments " + NT.Symbol.ToString());

                }

            }
            else // terminal token
            {
                TerminalToken TT = (TerminalToken)pToken;

                switch (TT.Symbol.ToString())
                {
                    case "<Value>":
                    default:
                        result = new Rule_Value(pContext, TT);
                        break;
                }
            }

            return result;
        }
Beispiel #8
0
 private void FillTreeViewRecursive(TreeView tree, TreeNode parentNode, Token token)
 {
     if (token is TerminalToken)
     {
         TerminalToken t = (TerminalToken)token;
         TreeNode node = new TreeNode(StringUtil.ShowEscapeChars(t.Text),0,0);
         parentNode.Nodes.Add(node);
     }
     else if (token is NonterminalToken)
     {
         NonterminalToken t = (NonterminalToken)token;
         TreeNode node = new TreeNode(t.Rule.ToString(),1,1);
         parentNode.Nodes.Add(node);
         foreach (Token childToken in t.Tokens)
         {
             FillTreeViewRecursive(tree,node,childToken);
         }
     }
 }
Beispiel #9
0
        public static List<EnterRule> GetFunctionParameters(Rule_Context pContext, Token pToken)
        {
            List<EnterRule> result = new List<EnterRule>();

            if (pToken is NonterminalToken)
            {

                NonterminalToken NT = (NonterminalToken)pToken;

                switch (NT.Symbol.ToString())
                {
                    case "<NonEmptyFunctionParameterList>":

                        //this.paramList.Push(new Rule_NonEmptyFunctionParameterList(T, this.paramList));
                        result.AddRange(EnterRule.GetFunctionParameters(pContext, NT));
                        break;
                    case "<SingleFunctionParameterList>":

                        result.AddRange(EnterRule.GetFunctionParameters(pContext, NT));
                        break;
                    case "<EmptyFunctionParameterList>":
                        //this.paramList = new Rule_EmptyFunctionParameterList(T);
                        // do nothing the parameterlist is empty
                        break;
                    case "<MultipleFunctionParameterList>":

                        //this.MultipleParameterList = new Rule_MultipleFunctionParameterList(pToken);
                        //<NonEmptyFunctionParameterList> ',' <Expression>
                        //result.Add(AnalysisRule.BuildStatments(pContext, NT.Tokens[0]));
                        result.AddRange(EnterRule.GetFunctionParameters(pContext, NT.Tokens[0]));
                        result.Add(EnterRule.BuildStatments(pContext, NT.Tokens[2]));
                        break;
                    case "<FuncName2>":
                    case "<Expression>":
                    case "<expression>":
                    case "<FunctionCall>":
                    default:
                        result.Add(EnterRule.BuildStatments(pContext, NT));
                        break;
                }
            }
            else
            {
                TerminalToken TT = (TerminalToken)pToken;
                if (TT.Text != ",")
                {
                    result.Add(new Rule_Value(pContext, pToken));
                }
            }

            /*
                <FunctionCall> ::= Identifier '(' <FunctionParameterList> ')'
                   | FORMAT '(' <FunctionParameterList> ')'
                    | <FuncName2>
                !           | <FuncName1> '(' <FunctionCall> ')'
                <FunctionParameterList> ::= <EmptyFunctionParameterList> | <NonEmptyFunctionParameterList>
                <NonEmptyFunctionParameterList> ::= <MultipleFunctionParameterList> | <SingleFunctionParameterList>

                <MultipleFunctionParameterList> ::= <NonEmptyFunctionParameterList> ',' <Expression>
                <SingleFunctionParameterList> ::= <expression>
                <EmptyFunctionParameterList> ::=
             */
            /*
            foreach (Token T in pToken.Tokens)
            {
                if (T is NonterminalToken)
                {

                    NonterminalToken NT = (NonterminalToken)T;

                    switch (NT.Rule.Lhs.ToString())
                    {
                        case "<NonEmptyFunctionParameterList>":

                            //this.paramList.Push(new Rule_NonEmptyFunctionParameterList(T, this.paramList));
                            result.AddRange(EnterRule.GetFunctionParameters(pContext, NT));
                            break;
                        case "<SingleFunctionParameterList>":

                            result.AddRange(EnterRule.GetFunctionParameters(pContext, NT));
                            break;
                        case "<EmptyFunctionParameterList>":
                            //this.paramList = new Rule_EmptyFunctionParameterList(T);
                            // do nothing the parameterlist is empty
                            break;
                        case "<MultipleFunctionParameterList>":

                            //this.MultipleParameterList = new Rule_MultipleFunctionParameterList(pToken);
                            result.AddRange(EnterRule.GetFunctionParameters(pContext, NT));
                            break;
                        case "<FuncName2>":
                        case "<Expression>":
                        case "<expression>":
                        case "<FunctionCall>":

                            result.Add(EnterRule.BuildStatments(pContext, NT));
                            break;
                        default:
                            result.Add(new Rule_Value(pContext, T));
                            break;
                    }
                }
                else
                {
                    TerminalToken TT = (TerminalToken)T;
                    if (TT.Text != ",")
                    {
                        result.Add(new Rule_Value(pContext, TT));
                    }
                }
            }*/

            return result;
        }
Beispiel #10
0
		private bool ProcessCommenStart(Token token)
		{
			return SkipAfterCommentEnd();
		}
Beispiel #11
0
        Token token; // node is derived from which token?

        #endregion Fields

        #region Constructors

        public cAST(Token token)
        {
            this.token = token;
        }
		public static Symbols GetSymbol(Token tok)
		{
			if(tok is TerminalToken)
				return (Symbols)(((TerminalToken)tok).Symbol.Id);
			else
				return (Symbols)(((NonterminalToken)tok).Rule.Id + ToolScriptParserBase.RulesOffset);
		}
Beispiel #13
0
		private void DoReduce(Token token, ReduceAction action)
		{
			int reduceLength = action.Rule.Rhs.Length;

			State currentState;
			// Do not reduce if the rule is single nonterminal and TrimReductions is on
			bool skipReduce = ((TrimReductions) &&
				(reduceLength == 1) && ( action.Rule.Rhs[0] is SymbolNonterminal));
			if (skipReduce)
			{
				stateStack.Pop();
				currentState = stateStack.Peek();
			}
			else
			{
				Token[] tokens = new Token[reduceLength];
				for (int i = 0; i < reduceLength; i++)
				{
					stateStack.Pop();
					tokens[reduceLength-i-1] = tokenStack.Pop();
				}
				NonterminalToken nttoken = new NonterminalToken(action.Rule,tokens);
				tokenStack.Push(nttoken);
				currentState = stateStack.Peek();

				if (OnReduce != null)
				{
					ReduceEventArgs args = new ReduceEventArgs(action.Rule,
						                                       nttoken,
						                                       currentState);
					OnReduce(this,args);
					DoReleaseTokens(args.Token);

					continueParsing = args.Continue;
				}
			}
			Action gotoAction = currentState.Actions.Get(action.Rule.Lhs);

			if (gotoAction is GotoAction)
			{
				DoGoto(token,(GotoAction)gotoAction);
			}
			else
			{
				throw new ParserException("Invalid action table in state");
			}
		}
Beispiel #14
0
 protected string ExtractToken(Token[] tokens)
 {
     string tokensInTree = ""; int max = tokens.GetUpperBound(0);
     for (int i = tokens.GetLowerBound(0); i <= max; i++)
     {
         if (tokens[i] is NonterminalToken)
         {
             if (tokens[i].ToString().Contains("<Qualified ID>"))
                 tokensInTree += ExtractToken(((NonterminalToken)tokens[i]).Tokens);
         }
         else
         {
             if (((com.calitha.goldparser.TerminalToken)(tokens[i])).Symbol.ToString() == "Identifier")
             {
                 if (tokens[i].ToString() != "false" & tokens[i].ToString() != "true")
                     tokensInTree += tokens[i].ToString() + " ";
             }
         }
     }
     return tokensInTree;
 }
Beispiel #15
0
 protected string GetFieldnames(Token[] tokens, int index)
 {
     if (tokens[index] is NonterminalToken)
     {
         return ExtractToken(((NonterminalToken)tokens[index]).Tokens).Trim();
     }
     else
     {
         return (tokens[index]).ToString();
     }
 }
Beispiel #16
0
 public VecMathNode(Token token)
     : base(token)
 {
 }
Beispiel #17
0
 public StatementNode(Token token)
     : base(token)
 {
 }
Beispiel #18
0
 public HeteroAST(Token token)
 {
     this.token = token;
 }
Beispiel #19
0
		private void DoGoto(Token token, GotoAction action)
		{
			stateStack.Push(action.State);
			if (OnGoto != null)
			{
				OnGoto(this,new GotoEventArgs(action.Symbol,stateStack.Peek()));
			}
		}
Beispiel #20
0
        public static AnalysisRule BuildStatments(Rule_Context context, Token token)
        {
            AnalysisRule result = null;
            if (token is NonterminalToken)
            {
                NonterminalToken nonterminal = (NonterminalToken)token;
                switch (nonterminal.Symbol.ToString())
                {
                    case "<Statements>":
                        result = new Rule_Statements(context, nonterminal);
                        break;
                    case "<Statement>":
                        result = new Rule_Statement(context, nonterminal);
                        break;
                    case "<Always_Statement>":
                        result = new Rule_Always(context, nonterminal);
                        break;
                    case "<Simple_Assign_Statement>":
                    case "<Let_Statement>":
                    case "<Assign_Statement>":
                        result = new Rule_Assign(context, nonterminal);
                        break;
                    case "<Assign_DLL_Statement>":
                        result = new Rule_Assign_DLL_Statement(context, nonterminal);
                        break;
                    case "<If_Statement>":
                    case "<If_Else_Statement>":
                        result = new Rule_If_Then_Else_End(context, nonterminal);
                        break;
                    case "<Define_Variable_Statement>":
                        result = new Rule_Define(context, nonterminal);
                        break;
                    case "<FuncName2>":
                    case "<FunctionCall>":
                        result = new Rule_FunctionCall(context, nonterminal);
                        break;
                    case "<Simple_Dialog_Statement>":
                    case "<Numeric_Dialog_Implicit_Statement>":
                    case "<Numeric_Dialog_Explicit_Statement>":
                    case "<TextBox_Dialog_Statement>":
                    case "<Db_Values_Dialog_Statement>":
                    case "<YN_Dialog_Statement>":
                    case "<Db_Views_Dialog_Statement>":
                    case "<Databases_Dialog_Statement>":
                    case "<Db_Variables_Dialog_Statement>":
                    case "<Multiple_Choice_Dialog_Statement>":
                    case "<Dialog_Read_Statement>":
                    case "<Dialog_Write_Statement>":
                    case "<Dialog_Read_Filter_Statement>":
                    case "<Dialog_Write_Filter_Statement>":
                    case "<Dialog_Date_Statement>":
                    case "<Dialog_Date_Mask_Statement>":
                        result = new Rule_Dialog(context, nonterminal);
                        break;
                    case "<Read_Epi_Statement>":
                    case "<Simple_Read_Statement>":
                    case "<Read_Epi_File_Spec_Statement>":
                    case "<Read_Sql_Statement>":
                    case "<Read_Excel_File_Statement>":
                    case "<Read_Db_Table_Statement>":
                        result = new Rule_Read(context, nonterminal);
                        break;
                    case "<Merge_Table_Statement>":
                    case "<Merge_Db_Table_Statement>":
                    case "<Merge_File_Statement>":
                    case "<Merge_Excel_File_Statement>":
                        result = new Rule_Merge(context, nonterminal);
                        break;
                    case "<Write_All_Statement>":
                    case "<Write_Some_Statement>":
                    case "<Write_Except_Statement>":
                        result = new Rule_Write(context, nonterminal);
                        break;
                    case "<Select_Statement>":
                    case "<Cancel_Select_By_Selecting_Statement>":
                    case "<Cancel_Select_Statement>":
                        result = new Rule_Select(context, nonterminal);
                        break;
                    case "<Recode_Statement>":
                        result = new Rule_Recode(context, nonterminal);
                        break;
                    case "<Comment_Line>":
                        result = new Rule_CommentLine(context, nonterminal);
                        break;
                    case "<Execute_Statement>":
                        result = new Rule_Execute(context, nonterminal);
                        break;
                    case "<Report_Display_Statement>":
                    case "<Report_File_Statement>":
                    case "<Report_Print_Statement>":
                        result = new Rule_Report(context, nonterminal);
                        break;
                    case "<List_Statement>":
                        result = new Rule_List(context, nonterminal);
                        break;
                    case "<Simple_Tables_Statement>":
                    case "<Tables_One_Variable_Statement>":
                    case "<Row_All_Tables_Statement>":
                    case "<Row_Except_Tables_Statement>":
                    case "<Column_All_Tables_Statement>":
                    case "<Column_Except_Tables_Statement>":
                    case "<Row_Column_Tables_Statement>":
                        result = new Rule_Tables(context, nonterminal);
                        break;
                    case "<Freq_All_Statement>":
                    case "<Freq_Columns_Statement>":
                    case "<Freq_All_Except_Statement>":
                        result = new Rule_Freq(context, nonterminal);
                        break;
                    case "<Cancel_Sort_By_Sorting_Statement>":
                    case "<Cancel_Sort_Statement>":
                    case "<Sort_Statement>":
                        result = new Rule_Sort(context, nonterminal);
                        break;
                    case "<Means_Statement>":
                        result = new Rule_Means(context, nonterminal);
                        break;
                    case "<Relate_Epi_Table_Statement>":
                    case "<Relate_Table_Statement>":
                    case "<Relate_Db_Table_With_Identifier_Statement>":
                    case "<Relate_Db_Table_Statement>":
                    case "<Relate_File_Statement>":
                    case "<Relate_Excel_File_Statement>":
                        result = new Rule_Relate(context, nonterminal);
                        break;
                    case "<Beep_Statement>":
                        result = new Rule_Beep(context, nonterminal);
                        break;
                    case "<Quit_Statement>":
                        result = new Rule_Quit(context, nonterminal);
                        break;
                    case "<Delete_Table_Long_Statement>":
                        result = new Rule_Delete_Table_Long(context, nonterminal);
                        break;
                    case "<Delete_File_Statement>":
                        result = new Rule_Delete_File(context, nonterminal);
                        break;
                    case "<Delete_Table_Statement>":
                        result = new Rule_Delete_Table(context, nonterminal);
                        break;
                    case "<Type_Out_String_Statement>":
                    case "<Type_Out_File_Statement>":
                    case "<Type_Out_String_With_Font_Statement>":
                    case "<Type_Out_File_With_Font_Statement>":
                        result = new Rule_Typeout(context, nonterminal);
                        break;
                    case "<Simple_Routeout_Statement>":
                    case "<Replace_Routeout_Statement>":
                    case "<Append_Routeout_Statement>":
                        result = new Rule_RouteOut(context, nonterminal);
                        break;
                    case "<Close_Out_Statement>":
                        result = new Rule_CloseOut(context, nonterminal);
                        break;
                    case "<Variables_Display_Statement>":
                    case "<Views_Display_Statement>":
                    case "<Tables_Display_Statement>":
                        result = new Rule_Display(context, nonterminal);
                        break;
                    case "<Header_Title_String_Statement>":
                    case "<Header_Title_Font_Statement>":
                    case "<Header_Title_String_And_Font_Statement>":
                        result = new Rule_Header(context, nonterminal);
                        break;
                    case "<Simple_Undefine_Statement>":
                        result = new Rule_Undefine(context, nonterminal);
                        break;
                    case "<Run_File_PGM_Statement>":
                        result = new Rule_Run_File_PGM_Statement(context, nonterminal);
                        break;
                    case "<Run_String_Statement>":
                        result = new Rule_Run_String_Statement(context, nonterminal);
                        break;
                    case "<Run_PGM_In_Db_Statement>":
                        result = new Rule_Run_PGM_In_Db_Statement(context, nonterminal);
                        break;
                    case "<Delete_Records_All_Statement>":
                        result = new Rule_Delete_Records_All_Statement(context, nonterminal);
                        break;
                    case "<Delete_Records_Selected_Statement>":
                        result = new Rule_Delete_Records_Selected_Statement(context, nonterminal);
                        break;
                    case "<Simple_Print_Out_Statement>":
                    case "<File_Print_Out_Statement>":
                        result = new Rule_Printout(context, nonterminal);
                        break;
                    case "<SQL_Execute_Command>":
                        result = new Rule_SQLExec(context, nonterminal);
                        break;
                    case "<RecordSet_Command>":
                        result = new Rule_RecordSet(context, nonterminal);
                        break;
                    case "<Define_Connection_Command>":
                        result = new Rule_Define_Connection(context, nonterminal);
                        break;
                    case "<Regress_Statement>":
                        result = new Rule_LinearRegression(context, nonterminal);
                        break;
                    case "<Logistic_Statement>":
                        result = new Rule_LogisticRegression(context, nonterminal);
                        break;
                    case "<CoxPH_Statement>":
                        result = new Rule_CoxPH(context, nonterminal);
                        break;
                    case "<KM_Survival_Statement>":
                        result = new Rule_KMSurvival(context, nonterminal);
                        break;
                    case "<Define_Dll_Statement>":
                        result = new Rule_DLL_Statement(context, nonterminal);
                        break;
                    case "<Define_Group_Statement>":
                        result = new Rule_Define_Group(context, nonterminal);
                        break;
                    case "<Summarize_Statement>":
                        result = new Rule_Summarize(context, nonterminal);
                        break;
                    case "<Set_Statement>":
                        result = new Rule_Set(context, nonterminal);
                        break;
                    case "<Match_Row_All_Statement>":
                    case "<Match_Row_Except_Statement>":
                    case "<Match_Column_All_Statement>":
                    case "<Match_Column_Except_Statement>":
                    case "<Match_Row_Column_Statement>":
                        result = new Rule_Match(context, nonterminal);
                        break;
                    case "<Graph_Statement>":
                    case "<Simple_Graph_Statement>":
                    case "<Strata_Var_Graph_Statement>":
                    case "<Weight_Var_Graph_Statement>":
                    case "<Stra_Wei_Var_Graph_Statement>":
                    case "<Graph_Opt_1_Statement>":
                    case "<Graph_Opt_2_Statement>":
                    case "<Graph_Opt_3_Statement>":
                    case "<Graph_Opt_4_Statement>":
                    case "<Graph_Opt_5_Statement>":
                    case "<Graph_Generic_Opt_Statement>":
                        result = new Rule_Graph(context, nonterminal);
                        break;
                    case "<Expr List>":
                        result = new Rule_ExprList(context, nonterminal);
                        break;
                    case "<Expression>":
                        result = new Rule_Expression(context, nonterminal);
                        break;
                    case "<And Exp>":
                        result = new Rule_AndExp(context, nonterminal);
                        break;
                    case "<Not Exp>":
                        result = new Rule_NotExp(context, nonterminal);
                        break;
                    case "<Compare Exp>":
                        result = new Rule_CompareExp(context, nonterminal);
                        break;
                    case "<Concat Exp>":
                        result = new Rule_ConcatExp(context, nonterminal);
                        break;
                    case "<Add Exp>":
                        result = new Rule_AddExp(context, nonterminal);
                        break;
                    case "<Mult Exp>":
                        result = new Rule_MultExp(context, nonterminal);
                        break;
                    case "<Pow Exp>":
                        result = new Rule_PowExp(context, nonterminal);
                        break;
                    case "<Negate Exp>":
                        result = new Rule_NegateExp(context, nonterminal);
                        break;
                    default:
                    case "<Value>":
                        result = new Rule_Value(context, nonterminal);
                        break;
                    case "<Undelete_All_Statement>":
                        result = new Rule_UnDelete(context, nonterminal);
                        break;
                    case "<QualifiedIdList>":
                        result = new Rule_QualifiedIdList(context, nonterminal);
                        break;
                    case "<Subroutine_Statement>":
                        result = new Rule_Subroutine_Statement(context, nonterminal);
                        break;

                    //**these are not yet implemented; move up when completed
                    //**these are not yet implemented; move up when completed
                    //**these are not yet implemented; move up when completed
                    //**these are not yet implemented; move up when completed
                    //**these are not yet implemented; move up when completed

                    case "<Simple_Run_Statement>":
                    case "<About_Statement>":
                    case "<Browser_Statement>":
                    case "<Browser_Size_Statement>":
                    case "<Button_Offset_Size_1_Statement>":
                    case "<Button_Offset_Size_2_Statement>":
                    case "<Button_Offset_1_Statement>":
                    case "<Button_Offset_2_Statement>":
                    case "<Call_Statement>":
                    case "<Simple_CMD_Statement>":
                    case "<CMD_Line_Statement>":
                    case "<Delete_Table_Short_Statement>":
                    case "<Exit_Statement>":
                    case "<File_Dialog_Statement>":
                    case "<Get_Path_Statement>":
                    case "<Help_File_Statement>":
                    case "<Simple_Help_Statement>":
                    case "<Link_Statement>":
                    case "<Link_Remove_Statement>":
                    case "<Map_AVG_Statement>":
                    case "<Map_Case_Statement>":
                    case "<Map_Sum_Statement>":
                    case "<Map_Count_Statement>":
                    case "<Map_Min_Statement>":
                    case "<Map_Max_Statement>":
                    case "<Map_Opt_1_Statement>":
                    case "<Map_Opt_2_Statement>":
                    case "<Map_Opt_3_Statement>":
                    case "<Map_Opt_4_Statement>":
                    case "<Map_Opt_5_Statement>":
                    case "<Menu_Statement>":
                    case "<Menu_Command_Statement>":
                    case "<Menu_Dialog_Statement>":
                    case "<Menu_Execute_Statement>":
                    case "<Menu_Item_Block_Name_Statement>":
                    case "<Menu_Item_Separator_Statement>":
                    case "<Menu_Replace_Statement>":
                    case "<Move_Buttons_Statement>":
                    case "<New_Page_Statement>":
                    case "<On_Browser_Exit_Block>":
                    case "<Picture_Statement>":
                    case "<Picture_Size_Statement>":
                    case "<Popup_Statement>":
                    case "<Repeat_Statement>":
                    case "<Screen_Text_Statement>":
                    case "<Set_Buttons_Statement>":
                    case "<Set_DB_Version_Statement>":
                    case "<Set_DOS_Win_Statement>":
                    case "<Set_Import_Year_Statement>":
                    case "<Set_Ini_Dir_Statement>":
                    case "<Set_Language_Statement>":
                    case "<Set_Picture_Statement>":
                    case "<Set_Work_Dir_Statement>":
                    case "<ShutDown_Block>":
                    case "<Startup_Block>":
                    case "<Sys_Info_Statement>":
                    case "<All_Standard_Undefine_Statement>":
                    case "<All_Global_Undefine_Statement>":
                    case "<Wait_For_Statement>":
                    case "<Wait_For_Exit_Statement>":
                    case "<Wait_For_File_Exists_Statement>":
                    case "<Command_Block>":
                    case "<On_Browser_Exit_Empty_Block>":
                    case "<Startup_Empty_Block>":
                    case "<ShutDown_Empty_Block>":
                    case "<Menu_Empty_Block>":
                    case "<Popup_Empty_Block>":
                    case "<Empty_Command_Block>":
                        break;
                }
            }
            else // terminal token
            {
                TerminalToken terminal = (TerminalToken)token;

                switch (terminal.Symbol.ToString())
                {
                    case "<Value>":
                    default:
                        result = new Rule_Value(context, terminal);
                        break;
                }
            }

            return result;
        }
Beispiel #21
0
		private bool ProcessCommentLine(Token token)
		{
			return SkipToEndOfLine();
		}
Beispiel #22
0
        public string SetQualifiedId(Token token)
        {
            string result = null;

            if (token is NonterminalToken)
            {
                NonterminalToken nonterminal = (NonterminalToken)token;
                switch (nonterminal.Symbol.ToString())
                {
                    case "<Fully_Qualified_Id>":
                        result = this.SetFully_Qualified_Id(nonterminal);
                        break;
                    default:
                        result = this.GetCommandElement(nonterminal.Tokens, 0).Trim(new char[] { '[', ']' });
                        break;
                }
            }
            else
            {
                TerminalToken terminal = (TerminalToken)token;
                result = terminal.Text.Trim(new char[] { '[', ']' });
            }

            return result;
        }
Beispiel #23
0
		private bool ProcessWhiteSpace(Token token)
		{
			return true;
		}
Beispiel #24
0
        public Rule_Value(Rule_Context pContext, Token pToken)
            : base(pContext)
        {
            /* ::= Identifier	| <Literal> | Boolean | '(' <Expr List> ')' */

            if (pToken is NonterminalToken)
            {
                NonterminalToken T = (NonterminalToken)pToken;
                if (T.Tokens.Length == 1)
                {
                    DateTime dateTime_temp;
                    switch (T.Rule.Rhs[0].ToString())
                    {
                        case "<Qualified ID>":
                            this.Id = this.SetQualifiedId(T.Tokens[0]);
                            break;
                        case "Identifier":
                            this.Id = this.GetCommandElement(T.Tokens, 0).Trim(new char[] {'[',']'});
                            break;
                        case "(":
                        case "<FunctionCall>":
                            this.value = new Rule_FunctionCall(pContext, (NonterminalToken)T.Tokens[1]);
                            break;
                        case "<Literal>":
                            this.value = this.GetCommandElement(T.Tokens, 0).Trim('"');
                            break;
                        case "<Literal_String>":
                        case "String":
                            this.value = this.GetCommandElement(T.Tokens, 0).Trim('"');
                            break;
                        case "<Literal_Char>":
                        case "CharLiteral":
                            this.value = this.GetCommandElement(T.Tokens, 0).Trim('\'');
                            break;
                        case "Boolean":
                            string string_temp = this.GetCommandElement(T.Tokens, 0);
                            if (string_temp == "(+)" || string_temp.ToLower() == "true" || string_temp.ToLower() == "yes")
                            {
                                this.value = true;
                            }
                            else if (string_temp == "(-)" || string_temp.ToLower() == "false" || string_temp.ToLower() == "no")
                            {
                                this.value = false;
                            }
                            else if (string_temp == "(.)")
                            {
                                this.value = null;
                            }
                            break;
                        case "<Decimal_Number>":
                        case "<Number>":
                        case "<Real_Number>":
                        case "<Hex_Number>":
                        case "DecLiteral":
                        case "RealLiteral":
                        case "HexLiteral":
                            double Decimal_temp;
                            if (double.TryParse(this.GetCommandElement(T.Tokens, 0), out Decimal_temp))
                            {
                                this.value = Decimal_temp;
                            }
                            break;
                        case "<Literal_Date>":
                            case "Date":
                            if (DateTime.TryParse(this.GetCommandElement(T.Tokens, 0), out dateTime_temp))
                            {
                                DateTime dt = new DateTime(dateTime_temp.Year, dateTime_temp.Month, dateTime_temp.Day);
                                this.value = dt;
                            }
                            else
                            {
                                this.value = null;
                            }
                            break;
                        case "<Literal_Time>":
                        case "<Literal_Date_Time>":
                        case "Time":
                        case "Date Time":
                            if (DateTime.TryParse(this.GetCommandElement(T.Tokens, 0), out dateTime_temp))
                            {
                                this.value = dateTime_temp;
                            }
                            break;

                        case "<Value>":
                            this.value = new Rule_Value(this.Context, T.Tokens[0]);
                            break;
                        default:
                            this.value = this.GetCommandElement(T.Tokens, 0).Trim('"');;
                            break;
                    }
                }
                else
                {
                    //this.value = new Rule_ExprList(pContext, (NonterminalToken)T.Tokens[1]);
                    //this.value = AnalysisRule.BuildStatments(pContext, T.Tokens[1]);
                    if (T.Tokens.Length == 0)
                    {
                        this.value = AnalysisRule.BuildStatments(pContext, T);

                    }
                    else
                    {
                        this.value = AnalysisRule.BuildStatments(pContext, T.Tokens[1]);
                    }
                }
            }
            else
            {
                TerminalToken TT = (TerminalToken)pToken;
                DateTime dateTime_temp;
                switch (TT.Symbol.ToString())
                {
                    case "Identifier":
                        this.Id = TT.Text;
                        break;
                    case "<Literal>":
                        this.value = TT.Text.Trim('"');
                        break;
                    case "<Literal_String>":
                    case "String":
                        this.value = TT.Text.Trim('"');
                        break;
                    case "<Literal_Char>":
                    case "CharLiteral":
                        this.value = TT.Text.Trim('\'');
                        break;
                    case "Boolean":
                        string string_temp = TT.Text;
                        if (string_temp == "(+)" || string_temp.ToLower() == "true" || string_temp.ToLower() == "yes")
                        {
                            this.value = true;
                        }
                        else if (string_temp == "(-)" || string_temp.ToLower() == "false" || string_temp.ToLower() == "no")
                        {
                            this.value = false;
                        }
                        else if (string_temp == "(.)")
                        {
                            this.value = null;
                        }
                        break;
                    case "<Decimal_Number>":
                    case "<Number>":
                    case "<Real_Number>":
                    case "<Hex_Number>":
                    case "DecLiteral":
                    case "RealLiteral":
                    case "HexLiteral":
                        double Decimal_temp;
                        if (double.TryParse(TT.Text, out Decimal_temp))
                        {
                            this.value = Decimal_temp;
                        }
                        break;
                    case "<Literal_Date>":
                    case "Date":
                        if (DateTime.TryParse(TT.Text, out dateTime_temp))
                        {
                            DateTime dt = new DateTime(dateTime_temp.Year, dateTime_temp.Month, dateTime_temp.Day);
                            this.value = dt;
                        }
                        else
                        {
                            this.value = null;
                        }
                        break;
                    case "<Literal_Time>":
                    case "<Literal_Date_Time>":
                    case "Time":
                    case "Date Time":
                        if (DateTime.TryParse(TT.Text, out dateTime_temp))
                        {
                            this.value = dateTime_temp;
                        }
                        break;
                    default:
                        this.value = TT.Text.Trim('"');;
                        break;
                }
            }

            if (this.Id == null && this.value == null)
            {

            }
        }
Beispiel #25
0
        public static List<AnalysisRule> GetFunctionParameters(Rule_Context context, Token token)
        {
            List<AnalysisRule> result = new List<AnalysisRule>();

            if (token is NonterminalToken)
            {
                NonterminalToken nonterminal = (NonterminalToken)token;

                switch (nonterminal.Symbol.ToString())
                {
                    case "<NonEmptyFunctionParameterList>":
                        result.AddRange(AnalysisRule.GetFunctionParameters(context, nonterminal));
                        break;
                    case "<SingleFunctionParameterList>":
                        result.AddRange(AnalysisRule.GetFunctionParameters(context, nonterminal));
                        break;
                    case "<EmptyFunctionParameterList>":
                        break;
                    case "<MultipleFunctionParameterList>":
                        result.AddRange(AnalysisRule.GetFunctionParameters(context, nonterminal.Tokens[0]));
                        result.Add(AnalysisRule.BuildStatments(context, nonterminal.Tokens[2]));
                        break;
                    case "<FuncName2>":
                    case "<Expression>":
                    case "<expression>":
                    case "<FunctionCall>":
                    default:
                        result.Add(AnalysisRule.BuildStatments(context, nonterminal));
                        break;
                }
            }
            else
            {
                TerminalToken terminal = (TerminalToken)token;
                if (terminal.Text != ",")
                {
                    result.Add(new Rule_Value(context, token));
                }
            }

            return result;
        }
Beispiel #26
0
 private Object CreateObject(Token token)
 {
     if (token is TerminalToken)
         return CreateObjectFromTerminal((TerminalToken)token);
     else
         return CreateObjectFromNonterminal((NonterminalToken)token);
 }
Beispiel #27
0
 /// <summary>
 /// creates a negateexp from a token
 /// </summary>
 /// <returns>Rule_NegateExp</returns>
 public string CreateNegateRecode(Token token)
 {
     NonterminalToken nonterminal = (NonterminalToken)((NonterminalToken)token).Tokens[0];
     Rule_NegateExp result = new Rule_NegateExp(Context, nonterminal);
     return result.Execute().ToString();
 }
Beispiel #28
0
 /// <summary>
 /// Pushes an item on the stack.
 /// </summary>
 /// <param name="token">The items that will be pushed.</param>
 public virtual void Push(Token token)
 {
     stack.Push(token);
 }
Beispiel #29
0
 /// <summary>
 /// Developer can get Command parameter element without parsing tokens
 /// </summary>
 /// <param name="tokens">tokens parameter from the parser</param>
 /// <param name="index">Element Index in the command</param>
 /// <returns></returns>
 protected string GetCommandElement(Token[] tokens, int index)
 {
     if (tokens[0] is NonterminalToken)
     {
         if (((NonterminalToken)tokens[0]).Tokens[index] is NonterminalToken)
         {
             return ExtractTokens(((NonterminalToken)((NonterminalToken)tokens[0]).Tokens[index]).Tokens).Trim();
         }
         else
         {
             return (((NonterminalToken)tokens[0]).Tokens[index]).ToString();
         }
     }
     else
     {
         if (tokens[index] is NonterminalToken)
         {
             return ExtractTokens(((NonterminalToken)tokens[index]).Tokens).Trim();
         }
         else
         {
             return (tokens[index]).ToString();
         }
     }
 }
Beispiel #30
0
		/// <summary>
		/// Creates a new nonterminal token.
		/// </summary>
		/// <param name="rule">The reduction rule.</param>
		/// <param name="tokens">The tokens that are reduced.</param>
		public NonterminalToken(Rule rule, Token[] tokens)
		{
			this.rule = rule;
			this.tokens = tokens;			
		}