felix grammar(1)
NAME
Felix grammar summary.
Grammar
- Array| PROCEDURE lambda_fun_args compound
| PROCEDURE compound - dollar_apply:
- | tuple DOLLAR dollar_apply
| tuple - tuple:
- | or_condition tuple_suffix
| or_condition - tuple_suffix:
- | COMMA or_condition tuple_suffix
| COMMA or_condition - /*orop:
- | OR
- or_condition:
- | or_condition orop and_condition
| and_condition - */
/* oring formation is 'psuedo-associative' */ - or_condition:
- | and_condition OR or_list
| and_condition - or_list:
- | and_condition OR or_list
| and_condition - /* oring formation is 'psuedo-associative' */
- and_condition:
- | not_condition AND and_list
| not_condition - and_list:
- | not_condition AND and_list
| not_condition - /*
- andop:
- | AND
- and_condition:
- | and_condition andop not_condition
| not_condition - */
- notop:
- | NOT
- not_condition:
- | notop not_condition
| comparison - chain_cmp_op:
- | ANDEQEQUAL
| ANDNOTEQUAL
| ANDLESS
| ANDGREATER
| ANDLESSEQUAL
| ANDGREATEREQUAL - cmp_item:
- | chain_cmp_op sum
- cmp_item_list:
- | cmp_item cmp_item_list
| cmp_item - cmp_op:
- | EQEQUAL
| NOTEQUAL
| LESS
| GREATER
| LESSEQUAL
| GREATEREQUAL
| ISIN - /* hack */
- comparison:
- | sum cmp_op sum cmp_item_list
| sum cmp_op sum
| as_expr - as_expr:
- | as_expr AS NAME
| setunion - setunion:
- | user10 VBARVBAR setunion_list
| user10 - setunion_list:
- | user10 VBARVBAR setunion_list
| user10 - user10:
- | user10 USER10 setintersection
| setintersection - setintersection:
- | arrow AMPERAMPER setintersection_list
| arrow - setintersection_list:
- | arrow AMPERAMPER setintersection_list
| arrow - arrow:
- | case_literal RIGHTARROW arrow
| case_literal - case_literal:
- | CASE INTEGER
| CASE INTEGER OF sum
| bor - bor:
- | bor SLOSHVBAR bxor
| bxor - bxor:
- | bxor SLOSHCIRCUMFLEX band
| band - band:
- | band SLOSHAMPER shift
| shift - shift:
- | shift LEFTSHIFT sum
| shift RIGHTSHIFT sum
| sum - /* sum formation is 'psuedo-associative' */
- sum:
- | subtraction PLUS sum_list
| subtraction - sum_list:
- | subtraction PLUS sum_list
| subtraction - subtraction:
- | subtraction MINUS product
| product - /* product formation is 'psuedo-associative' */
- product:
- | term STAR product_list
| term - product_list:
- | term STAR product_list
| term - /* division is left associative: note higher precedence
the product, so that
a * b/c * d -> a * (b/c) * d
*/ - term:
- | term SLASH power
| term PERCENT power
| prefixed - /* note weird recursion here: we need to support
-x ** -x = -(x**(-x))
*/ - prefixed:
- | LVAL power
| PLUS power
| MINUS power
| TILDE power
| power - /* exponentiation is right associative */
- power:
- | superscript STARSTAR prefixed
| superscript - superscript:
- | superscript CIRCUMFLEX refr
| refr - refr:
- | AMPER refr
| STAR refr
| application - /* applications is left associative */
- application:
- | application coercion
- /*
- | MAP coercion coercion
- */
- | CASENO coercion
| coercion - coercion:
- | coercion COLON factor
| suffixed_name
| factor - factor:
- | dollar_name
| factor DOT LSQB expr RSQB
| factor DOT LSQB expr TO expr RSQB
| factor DOT LSQB expr TO RSQB
| factor DOT LSQB TO expr RSQB
| factor DOT NAME
| factor DOT LPAR INTEGER RPAR - dollar_name:
- | NOEXPAND qualified_name
| THE qualified_name
| qualified_name
| atom - qualified_name:
- | qualified_name COLONCOLON simple_name_parts
| simple_name_parts - elif:
- | ELIF expr THEN expr
- elifs:
- | elifs elif
| elif - else_part:
- | elifs ELSE expr
| ELSE expr - cond:
- | IF expr THEN expr else_part ENDIF
- expr_code_prefix:
- | CODE LSQB expr RSQB
- atom:
- | DOTDOTDOT
| type_match_expr
| expr_code_prefix NAME
| expr_code_prefix STRING
| LSQBAR expr RSQBAR
| LBRACE expr RBRACE
| glr_parse
| match_expr
| regmatch_expr
| compound
| LPAR expr RPAR
| LPAR RPAR
| literal
| cond
| USERLB expr USERRB - literal:
- | INTEGER
| FLOAT
| STRING
| CSTRING - simple_name_parts:
- | NAME LSQB expr RSQB
| NAME - suffixed_name:
- | qualified_name OF LPAR expr RPAR
VERSION
1.1.1_rc1
SEE ALSO
felix(1) for a language introduction and man page index
flx(1) for a list of the tools.
flxcc(1) for a description of the wrapper generator tool.
flx_lit(1) for a description of literals
flx_op(1) for a list of operators
flx_cop(1) for a list of C operator precedence names
flx_key(1) for a list of keywords
flx_grammar(1) for a grammar summary
flx_lib_typ(1) for a list of library types
flx_dir(1) for a list of directives
flx_exec(1) for a list of executable statements
flx_decl(1) for a list of declarative statements
flx_bind(1) for a list of binding statements
WEB SITE
See http://felix.sourceforge.net