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

AUTHOR

Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout