Loading ...
Sorry, an error occurred while loading the content.

Re:Re: infinite recursion

Expand Messages
  • lazimolur2@yahoo.com
    ... with ... X | Y ... on the ... Thanks for answer. Sorry, there is a few translation error in my question. I m sending real question and errors
    Message 1 of 3 , Apr 11, 2001
    • 0 Attachment
      --- In antlr-interest@y..., Sinan <sinan.karasu@b...> wrote:
      > lazimolmaz wrote:
      > >
      > > Hi,
      > >
      > > How do I arrangement following rules for antlr ?
      > >
      > > a: b | c ;
      > >
      > > b: K a ;
      > >
      > > c: a b
      > > | a X b
      > > | a Y b
      > > | a Z b
      > > ;
      > >
      >
      > I can't see a finite sentence satisfying the above productions.
      >
      > Any sentence must start with K ( there is no other reduction.)
      >
      > And once you see a K then it MUST be followed with an 'a' .
      > But the only way a an 'a' can be a follow is that , it must start
      with
      > a K. So the recursion never ends.
      >
      > However the rules could be contracted as:
      >
      > a : K a | K a ( X | Y | Z )? K a ;
      >
      > or
      >
      > a : K a ( X | Y | Z )? K a ;
      >
      > which will parse a countably infinite K's possibly followed by a (
      X | Y
      > | Z )?
      > and another countably infinite K's , countably infinite times, which
      > still leaves it as only countably infinite, but nevertheless hard
      on the
      > computing resources, if not your patience.
      >
      > Maybe you meant
      >
      > c: /* empty */
      > | a b
      > | a X b
      > | a Y b
      > | a Z b
      > ;
      >
      > Or
      >
      > a: b | c | ;
      >
      > Or
      >
      > b: K
      > | K a
      > ;
      >
      > Or maybe I am wrong....
      >
      > Sinan

      Thanks for answer.

      Sorry, there is a few translation error in my question.

      I'm sending real question and errors

      table_reference
      : table_primary
      | joined_table
      ;

      table_primary
      : table_or_query_name
      ( ( "as" )? correlation_name ( LPAREN
      derived_column_list RPAREN )? )?
      | derived_table
      ( "as" )? correlation_name ( LPAREN
      derived_column_list RPAREN )?
      | lateral_derived_table ( "AS" )? correlation_name
      ( LPAREN derived_column_list RPAREN )?
      | collection_derived_table ( "AS" )? correlation_name
      ( LPAREN derived_column_list RPAREN )?
      | only_spec
      ( ( "AS" )? correlation_name
      ( LPAREN derived_column_list RPAREN )? )?
      | LPAREN joined_table RPAREN
      ;

      only_spec
      : "ONLY" LPAREN table_or_query_name RPAREN
      ;

      lateral_derived_table
      : "LATERAL" LPAREN query_expression RPAREN
      ;

      collection_derived_table
      : "UNNEST" LPAREN collection_value_expression RPAREN
      ( "WITH" "ORDINALITY" )?
      ;

      derived_table
      : table_subquery
      ;

      table_or_query_name
      : table_name
      | query_name
      ;

      derived_column_list
      : column_name_list
      ;

      column_name_list
      : column_name ( COMMA column_name )*
      ;

      //---7.7--------------------------------------------------------------
      ---------

      joined_table
      : cross_join
      | qualified_join
      | natural_join
      | union_join
      ;

      cross_join
      : table_reference "CROSS" "JOIN" table_primary
      ;

      qualified_join
      : table_reference ( join_type )? "JOIN" table_reference
      join_specification
      ;

      natural_join
      : table_reference "NATURAL" ( join_type )? "JOIN"
      table_primary
      ;

      union_join
      : table_reference "UNION" "JOIN" table_primary
      ;

      join_specification
      : join_condition
      | named_columns_join
      ;

      join_condition
      : "ON" search_condition
      ;

      named_columns_join
      : "USING" LPAREN join_column_list RPAREN
      ;

      join_type
      : "INNER"
      | outer_join_type ( "OUTER" )?
      ;

      outer_join_type
      : "LEFT"
      | "RIGHT"
      | "FULL"
      ;

      join_column_list
      : column_name_list
      ;



      infinite recursion to rule joined_table from rule table_reference
      infinite recursion to rule joined_table from rule cross_join
      infinite recursion to rule joined_table from rule joined_table
      infinite recursion to rule joined_table from rule qualified_join
      infinite recursion to rule joined_table from rule joined_table
      infinite recursion to rule joined_table from rule natural_join
      infinite recursion to rule joined_table from rule joined_table
      infinite recursion to rule joined_table from rule union_join
      infinite recursion to rule joined_table from rule joined_table
      infinite recursion to rule joined_table from rule non_join_query_term
      infinite recursion to rule joined_table from rule
      non_join_query_expression
      infinite recursion to rule joined_table from rule
      non_join_query_expression
      infinite recursion to rule joined_table from rule
      query_expression_body
      infinite recursion to rule joined_table from rule
      query_expression_body
      infinite recursion to rule joined_table from rule query_expression
      infinite recursion to rule joined_table from rule from_subquery
      infinite recursion to rule joined_table from rule
      insert_columns_and_source
      infinite recursion to rule joined_table from rule insert_statement
      infinite recursion to rule joined_table from rule query_expression
    Your message has been successfully submitted and would be delivered to recipients shortly.