语法符号
生产格式left hand side :右手边
:应该被看作“被定义为”。
一个生产的右手端被一个终止。
italics 中的一个字代表制作的名称(左侧)
手边生产)。
很少有运算符用于描述FreeBASIC语法。
| 操作者 | 含义 |
| . | 任何角色 |
| * | 0或以上(重复) |
| + | 1个以上(重复) |
| ? | 可选(选择) |
| () | 分组 |
| | | 分离器(分离替代品) |
| 分号 | 生产结束 |
出现在生产的右侧的任何符号
这不是一个运算符并且不出现在
italics 代表自己并出现
胆大.
规则右侧的符号可以指生产。
这些参考文献是
italics .
对于导航目的,参考是生产的链接
被引用。
阅读语法时请注意FreeBASIC是不区分大小写的
语言。
所提供的语法不是FreeBASIC语言的精确语句。
直接去:
program
expression
令牌
white :
\t |
any_char &NBSP&NBSP&NBSP
任何有效的字符;
eol :    
\n|
\r|
\n\r;
statement_separator : (
: |
eol )+;
dot :&NBSP&NBSP&NBSP&NBSP&NBSP&NBSP&NBSP&NBSP&NBSP
.;
sign :&NBSP&NBSP&NBSP&NBSP&NBSP&NBSP&NBSP&NBSP
+|
-;
alpha :&NBSP&NBSP&NBSP&NBSP&NBSP&NBSP
a|
b|
c|
d|
e|
f|
g|
h|
i|
j|
k|
l|
m|
n|
p|
q|
r|
s|
t|
v|
w|
x|
y|
z;
digit :&NBSP&NBSP&NBSP&NBSP&NBSP&NBSP&NBSP
0|
1|
2|
3|
4|
5|
6|
7|
8|
9;
hexdigit &NBSP&NBSP&NBSP
a|
b|
c|
d|
e|
f|
digit ;
octdigit &NBSP&NBSP&NBSP
0|
1|
2|
3|
4|
5|
6|
7;
bindigit :   
0|
1;
alphadigit :  
alpha |
digit ;
integer_suffix &NBSP&NBSP&NBSP&NBSP&NBSP
%|
&|
l|
u|
ul|
ll|
ULL;
floating_point_suffix :     
!|
#|
f;
suffix :&NBSP&NBSP&NBSP&NBSP&NBSP&NBSP
integer_suffix |
floating_point_suffix |
$;
expchar :  
d|
e;
operator
:
= |
< |
> |
<> |
+ |
- |
* |
@
& | -> | / | \ | ^ | 并且
否则别指望no | 和 | or | XOR | 当量 | 恶魔
+= | -= | *= | /= | \= | ^= | &= |
和= | or= | XOR = | 当量= | 小鬼=
新 | 删除 | delete[] | 投 | procptr
varptr | Srptr | 的sizeof | [] | ()
;
binary_operator
:
= |
< |
> |
<> |
+ |
- |
& | -> | / | \ | ^
+= | -= | *= | /= | \= | ^= | &= |
和= | or= | XOR = | 当量= | 小鬼=
并且 | 否则别指望no
;
identifier
:&NBSP&NBSP(
alpha )(
alphadigit |
_)*
NBSP&NBSP _({989 796 039}| {989 796 692})+
;
literal
integer_literal
decimal_integer :
digit +;
hexadecimal integer :
&hhexdigit +;
octal_integer :
&ooctdigit +;
binary_integer :
&bbindigit +;
floating_literal
string_literal
escape_sequence
simple_escape_sequence
: \a|\b|\f|\l|\n|\r|\t|\v|\\|\'|\\"
;
unicode_escape_sequence
decimal_escape_sequence
hexadecimal_escape_sequence
octal_escape_sequence
binary_escape_sequence
评论
comment
: ( ' | REM) (($directive ) | (any_char_but_eol*))
;
multiline_nested_comment
Toplevel的
program
line
label statement
(
declaration |
procedure_call_or_assign |
compound_statement |
quirk_statement |
assembler_block |
assignment )?
(
statement_separator statement )*
;
declaration
procedure_call_or_assign
compound_statement
namespace_statement
scope_statement :
范围 statement_separator statement *
结束 范围
;
if_statement
short_if_statement
其他 statement_separator statement *
(
eol |
万一 |
万一)
;
long_if_statement
statement *
elseif_block *
(
其他 statement_separator statement *)?
(
结束 if|
万一)
;
elseif_block
for_statement
(
statement |
退出(
, 对于)* |
继续 (
, 对于)*)*
下一个 identifier (
, identifier )*
statement_separator
;
do_statement
while_statement
(
statement |
退出时 (
, 而)* |
继续 (
, 而)*)*
WEND
;
select_statement
case_statement
case_expression
assembler_block
assignment
variable
const_declaration
:
常量 (
as symbol_type )?
const_assign (
, const_assign )*
;
type_or_union_declaration
type_declaration
union_declaration
type_member_declaration
variable_declaration
symbol_type
:
常量?
无符号?
(
scalar
)(
常量? (
PTR|
指针))*
;
scalar
:
字节
UBYTE
短
USHORT
整数
uinteger
Longint型
ulongint
长
ULONGen
单
双
;
parameters
parameter
user_defined_type
procedure_declaration
procedure_parameter_list
procedure_parameter
表达式
expression
boolean_expression
logical_expression
logical_or_expression
logical_and_expression
relational_expression
concatenation_expression
add_expression)*
;