This is an old revision of the document!
Grammar
This is the formal definition of XC=BASIC's grammar.
::= '-'? ( '$' | '%' )? [0-9A-F]+ 'd'? ( '.' [0-9]+ )? ( 'E' [0-9]+ )?
referenced by:
::= "'" . "'"
referenced by:
Number ::= CharLiteral
referenced by:
::= '"' [^"]* '"'
referenced by:
::= [a-zA-Z_] [a-zA-Z0-9_]* '$'?
referenced by:
Factor ::= StringLiteral
| ( '-' | 'NOT' )? Number
| ( '-' | 'NOT' )? Parenthesis
| ( '-' | 'NOT' )? Address
| ( '-' | 'NOT' )? Expression
referenced by:
referenced by:
referenced by:
referenced by:
referenced by:
- Factor
- Parenthesis
- Subscript
- _DO
- _ERROR
- _FOR
- _GENERIC
- _GET
- _IF
- _INPUT
- _LET
- _LOOP
- _ON
- _PRINT
- _READ
- _RETURN
- _SWAP
- _SYS
- _WRITE
::= '(' Expression ')'
referenced by:
::= '(' Expression? ( ',' Expression )* ')'
referenced by:
referenced by:
referenced by:
::= [a-zA-Z_] [a-zA-Z_0-9]*
referenced by:
Label ::= LabelReference ':'
referenced by:
referenced by:
referenced by:
::= 'CONTINUE' ( 'DO' | 'FOR' )?
referenced by:
_DATA ::= 'SHARED'? 'DATA AS' Identifier ( Number | StringLiteral ) ( ',' ( Number | StringLiteral ) )*
referenced by:
referenced by:
_DIM ::= ( 'DIM' | 'STATIC' ) ( 'FAST' | 'SHARED' )* Identifier 'AS' Identifier ( '@' ( Number | LabelReference ) )? ( 'FAST' | 'SHARED' )*
referenced by:
_DO ::= 'DO' ( ( 'WHILE' | 'UNTIL' ) Expression )?
referenced by:
referenced by:
_END ::= 'END' ( 'ASM' | 'IF' | 'FUNCTION' | 'SUB' | 'TYPE' )?
referenced by:
_EXIT ::= 'EXIT' ( 'DO' | 'FOR' )
referenced by:
_ERROR ::= 'ERROR' Expression
referenced by:
referenced by:
_FOR ::= 'FOR' Identifier ( 'AS' Identifier )? '=' Expression 'TO' Expression ( 'STEP' Expression )?
referenced by:
::= 'FUNCTION' Identifier AS Identifier '(' ( Identifier AS Identifier ( ',' Identifier AS Identifier )* )? ')' ( 'PRIVATE' | 'SHARED' | 'STATIC' | 'OVERLOAD' | 'INLINE' )*
referenced by:
_GENERIC ::= ( 'CHARAT' | 'CLOSE' | 'LOAD' | 'LOCATE' | 'MEMCPY' | 'MEMSET' | 'MEMSHIFT' |
'OPEN' | 'POKE' | 'RANDOMIZE' | 'SAVE' | 'SCREEN' | 'TEXTAT' | 'WAIT' ) Expression ( ',' Expression )*
referenced by:
referenced by:
_GOTO ::= 'GOTO' LabelReference
referenced by:
_GOSUB ::= 'GOSUB' LabelReference
referenced by:
referenced by:
_INCBIN ::= 'INCBIN' StringLiteral
referenced by:
_INCLUDE ::= 'INCLUDE' StringLiteral
referenced by:
referenced by:
_LOOP ::= 'LOOP' ( ( 'WHILE' | 'UNTIL' ) Expression )?
referenced by:
_NEXT ::= 'NEXT' Identifier?
referenced by:
referenced by:
referenced by:
referenced by:
referenced by:
_REM ::= ( "'" | 'REM' ) [^EOL]*
referenced by:
_RETURN ::= 'RETURN' Expression?
referenced by:
_SUB ::= 'SUB' Identifier '(' ( Identifier AS Identifier ( ',' Identifier AS Identifier )* )? ')' ( 'PRIVATE' | 'SHARED' | 'STATIC' | 'OVERLOAD' | 'INLINE' )*
referenced by:
referenced by:
_SYS ::= 'SYS' Expression 'FAST'?
referenced by:
_TYPE ::= 'TYPE' Identifier
referenced by:
referenced by:
::= 'ASM'
| _CALL
| _CONST
| _DATA
| _DIM
| _DO
| _LET
| _END
| _EXIT
| _ERROR
| 'ELSE'
| _FIELD
| _FOR
| _GENERIC
| _GET
| _GOTO
| _GOSUB
| _INCBIN
| _INCLUDE
| _IF
| _INPUT
| _LOOP
| _NEXT
| _ON
| _ORIGIN
| _PRINT
| _READ
| _REM
| _RETURN
| _SUB
| _SWAP
| _SYS
| _TYPE
| _WRITE
referenced by:
referenced by:
no references
|