[fpc-pascal] More syntax questions (and more to follow)
Adriaan van Os
adriaan at adriaan.biz
Sat Dec 16 11:53:25 CET 2023
More questions about the FreePascal Language Reference (version 3.2.0)
1. Section 17.1 defines a rule <raise-statement> and <exception-address>
raise-statement = "raise" [ exception-instance [ exception-address ] ] .
exception-address = "at" exception-address [ "," address-expression ] .
a) Is it correct that <exception-address> defines itself recursively ?
b) I can't find the rule that defines <address-expression>. What is it ?
c) I can't find the rule that defines <exception-instance>. What is it ?
2. Section 12.1 refers to a rule <address-factor>
factor = "(" expression ")" | variable-reference | function-call | unsigned-constant| "NOT" factor
| "sign" factor | set-constructor | value-typecast | address-factor .
I can't find the rule <address-factor> but it may be the same as the rule <addressfactor> given in
section 12.7 ?
addressfactor = "@" ( variable-reference | procedure-identifier | function-identifier |
qualified-method-identifier ) .
3. Section 2.2 refers to a rule <address-constant>
typed-constant = constant | address-constant | array-constant | record-constant |
procedural-constant .
I can't find the rule <address-constant>. What is it ?
4. Section 2.2 also refers to a rule <array-constant>
typed-constant = constant | address-constant | array-constant | record-constant |
procedural-constant .
I can't find the rule <array-constant>. What is it ?
5. Section 2.2 also refers to a rule <record-constant>
typed-constant = constant | address-constant | array-constant | record-constant |
procedural-constant .
I can't find the rule <record-constant>. What is it ?
6. Section 2.2 also refers to a rule <procedural-constant>
typed-constant = constant | address-constant | array-constant | record-constant |
procedural-constant .
I can't find the rule <procedural-constant>. What is it ?
7. Section 13.3 refers to a rule <assembler code>
asm-statement = "asm" assembler-code "END" [ registerlist ] .
I can't find a rule for <assembler code> What is it, from the point of view of parsing Pascal ?
8. Section 10.1 refers to a rule <basehelper>
helper-type = ( "CLASS" | "RECORD" | "TYPE" ) "helper" [ "(" basehelper ")" ] "FOR" identifier {
helper-component-list } "END" hint-modifiers .
I can't find a rule for <basehelper>. What is it ?
9. Sections 17.2 and 6.1 refer to a rule <class-type-identifier>
exception-handler = "ON" [ identifier ":" ] class-type-identifier "DO" statement .
class-heritage = "(" class-type-identifier [ class-implemented-interfaces ] ")" .
I can assume ?
class-type-identifier = identifier .
10. Section 11.2 refers to a rule <objective-Cclass-type-identifier>
objc-class-heritage = "(" [ objective-Cclass-type-identifier ] [ objc-implemented-protocols ] ")" .
I can assume ?
objective-Cclass-type-identifier = identifier .
11. Section 6.1 refers to a rule <classtype>
class-reference-type = "CLASS" "OF" classtype .
I can't find a rule for <classtype>. What is it ?
12. Section 13.2 refers to a rule <conditional-statement>
structured-statement = compound-statement | conditional-statement | repetitive-statement |
with-statement | exception-statement .
I can't find a rule for <conditional-statement>. What is it ?
13. Section 6.1 referes to a rule <const-declaration-part>
component-list = [ visibility-specifier ] { field-definition } { const-declaration-part |
type-declaration-part | variable-declaration-part | class-variable-declaration-part |
method-definition | property-definition } .
I can assume ?
const-declaration-part = constant-declaration-part .
14. Sections 2.2, 3.1.1, 3.3.2, 4.7 and 13.2.2 refer to a rule <constant>
typed-constant = constant | address-constant | array-constant | record-constant |
procedural-constant .
subrange-type = constant ".." constant .
variant = constant { "," constant } ":" "(" [ field-list ] ")" .
default-specifier = "default" [ constant ] | "nodefault" .
stored-specifier = "stored" ( constant | identifier ) .
case = constant [ ".." constant ] { "," constant [ ".." constant ] } ":" statement .
I can't find a rule for <constant>. What is it ?
15. Sections 5.1 and 6.6.1 refer to a rule <constant-expression>
const-definition = "CONST" identifier "=" constant-expression ";" .
class-method-directives = ( ( "virtual" | "dynamic" ) [ ";" "abstract" ] | "reintroduce" ";" |
"override" ";" | "message" constant-expression ) [ call-modifiers ";" ] .
I can assume ?
constant-expression = expression .
16. Section 12.1 refers to a rule <constant-identifier>
unsigned-constant = unsigned-number | character-string | constant-identifier | "NIL" .
I can assume ?
constant-identifier = identifier .
(more to follow)
Regards,
Adriaan van Os
More information about the fpc-pascal
mailing list