diff options
Diffstat (limited to 'bnfc')
-rw-r--r-- | bnfc/modelica33r1_spec.txt | 347 |
1 files changed, 0 insertions, 347 deletions
diff --git a/bnfc/modelica33r1_spec.txt b/bnfc/modelica33r1_spec.txt deleted file mode 100644 index 2df42dd..0000000 --- a/bnfc/modelica33r1_spec.txt +++ /dev/null @@ -1,347 +0,0 @@ -# These come directly the Modelica 3.3 Spec, Appendix B - -## B.1 Lexical Convetions - -IDENT = NONDIGIT { DIGIT | NONDIGIT } | Q-IDENT -Q-IDENT = "’" ( Q-CHAR | S-ESCAPE ) { Q-CHAR | S-ESCAPE } "’" -NONDIGIT = "_" | letters "a" to "z" | letters "A" to "Z" -STRING = """ { S-CHAR | S-ESCAPE } """ -S-CHAR = any member of the Unicode character set (http://www.unicode.org; see Section 13.2.2 for storing as UTF-8 on files) except double-quote """, and backslash "\" -Q-CHAR = NONDIGIT | DIGIT | "!" | "#" | "$" | "%" | "&" | "(" | ")" | "*" | "+" | "," | "-" | "." | "/" | ":" | ";" | "<" | ">" | "=" | "?" | "@" | "[" | "]" | "^" | "{" | "}" | "|" | "~" | " " -S-ESCAPE = "\’" | "\"" | "\?" | "\\" | "\a" | "\b" | "\f" | "\n" | "\r" | "\t" | "\v" -DIGIT = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" -UNSIGNED_INTEGER = DIGIT { DIGIT } -UNSIGNED_NUMBER = UNSIGNED_INTEGER [ "." [ UNSIGNED_INTEGER ] ] [ ( "e" | "E" ) [ "+" | "-" ] UNSIGNED_INTEGER ] - -## B.2 Grammar - -### B.2.1 - -stored_definition: - [ within [ name ] ";" ] - { [ final ] class_definition ";" } - -### B.2.2 Class Definition - -class_definition : - [ encapsulated ] class_prefixes - class_specifier - -class_prefixes : - [ partial ] - ( class | model | [ operator ] record | block | [ expandable ] connector | type | - package | [ ( pure | impure ) ] [ operator ] function | operator ) - -class_specifier : - long_class_specifier | short_class_specifier | der_class_specifier - -long_class_specifier : - IDENT string_comment composition end IDENT - | extends IDENT [ class_modification ] string_comment composition - end IDENT - -short_class_specifier : - IDENT "=" base_prefix name [ array_subscripts ] - [ class_modification ] comment - | IDENT "=" enumeration "(" ( [enum_list] | ":" ) ")" comment - -der_class_specifier : - IDENT "=" der "(" name "," IDENT { "," IDENT } ")" comment - -base_prefix : - type_prefix - -enum_list : - enumeration_literal { "," enumeration_literal} - -enumeration_literal : - IDENT comment - -composition : - element_list - { public element_list | - protected element_list | - equation_section | - algorithm_section - } - [ external [ language_specification ] - [ external_function_call ] [ annotation ] ";" ] - [ annotation ";" ] - -language_specification : - STRING - -external_function_call : - [ component_reference "=" ] - IDENT "(" [ expression_list ] ")" - -element_list : - { element ";" } - -element : - import_clause | - extends_clause | - [ redeclare ] - [ final ] - [ inner ] [ outer ] - ( ( class_definition | component_clause) | - replaceable ( class_definition | component_clause) - [constraining_clause comment]) - -import_clause : - import ( IDENT "=" name | name ["." ( "*" | "{" import_list "}" ) ] ) comment - -import_list : - IDENT { "," IDENT } - -### B.2.3 Extends - -extends_clause : - extends name [ class_modification ] [annotation] - -constraining_clause : - constrainedby name [ class_modification ] - -### B.2.4 Component Clause - -component_clause: - type_prefix type_specifier [ array_subscripts ] component_list - type_prefix : - [ flow | stream ] - [ discrete | parameter | constant ] [ input | output ] - -type_specifier : - name - -component_list : - component_declaration { "," component_declaration } - -component_declaration : - declaration [ condition_attribute ] comment - -condition_attribute: - if expression - -declaration : - IDENT [ array_subscripts ] [ modification ] - -### B.2.5 Modification - -modification : - class_modification [ "=" expression ] - | "=" expression - | ":=" expression - -class_modification : - "(" [ argument_list ] ")" - -argument_list : - argument { "," argument } - -argument : - element_modification_or_replaceable - | element_redeclaration - element_modification_or_replaceable: - [ each ] [ final ] ( element_modification | element_replaceable) - -element_modification : - name [ modification ] string_comment - -element_redeclaration : - redeclare [ each ] [ final ] - ( ( short_class_definition | component_clause1) | element_replaceable ) - -element_replaceable: - replaceable ( short_class_definition | component_clause1) - [constraining_clause] - -component_clause1 : - type_prefix type_specifier component_declaration1 - -component_declaration1 : - declaration comment - -short_class_definition : - class_prefixes short_class_specifier - -### B.2.6 Equations - -equation_section : - [ initial ] equation { equation ";" } - -algorithm_section : - [ initial ] algorithm { statement ";" } - -equation : - ( simple_expression "=" expression - | if_equation - | for_equation - | connect_clause - | when_equation - | name function_call_args ) - comment - -statement : - ( component_reference ( ":=" expression | function_call_args ) - | "(" output_expression_list ")" ":=" component_reference function_call_args - | break - | return - | if_statement - | for_statement - | while_statement - | when_statement ) - comment - -if_equation : - if expression then - { equation ";" } - { elseif expression then - { equation ";" } - } - [ else - { equation ";" } - ] - end if - -if_statement : - if expression then - { statement ";" } - { elseif expression then - { statement ";" } - } - [ else - { statement ";" } - ] - end if - -for_equation : - for for_indices loop - { equation ";" } - end for - -for_statement : - for for_indices loop - { statement ";" } - end for - -for_indices : - for_index {"," for_index} - -for_index: - IDENT [ in expression ] - while_statement : - while expression loop - { statement ";" } - end while - -when_equation : - when expression then - { equation ";" } - { elsewhen expression then - { equation ";" } } - end when - -when_statement : - when expression then - { statement ";" } - { elsewhen expression then - { statement ";" } } - end when - -connect_clause : - connect "(" component_reference "," component_reference ")" - -### B.2.7 Expressions - -expression : - simple_expression - | if expression then expression { elseif expression then expression } - else expression - -simple_expression : - logical_expression [ ":" logical_expression [ ":" logical_expression ] ] - -logical_expression : - logical_term { or logical_term } - -logical_term : - logical_factor { and logical_factor } - -logical_factor : - [ not ] relation - -relation : - arithmetic_expression [ rel_op arithmetic_expression ] - -rel_op : - "<" | "<=" | ">" | ">=" | "==" | "<>" - -arithmetic_expression : - [ add_op ] term { add_op term } - -add_op : - "+" | "-" | ".+" | ".-" - -term : - factor { mul_op factor } - -mul_op : - "*" | "/" | ".*" | "./" - -factor : - primary [ ("^" | ".^") primary ] - -primary : - UNSIGNED_NUMBER - | STRING - | false - | true - | ( name | der | initial ) function_call_args - | component_reference - | "(" output_expression_list ")" - | "[" expression_list { ";" expression_list } "]" - | "{" function_arguments "}" - | end - -name : - [ "." ] IDENT { "." IDENT } - -component_reference : - [ "." ] IDENT [ array_subscripts ] { "." IDENT [ array_subscripts ] } - -function_call_args : - "(" [ function_arguments ] ")" - function_arguments : - function_argument [ "," function_arguments | for for_indices ] - | named_arguments - -named_arguments: - named_argument [ "," named_arguments ] - -named_argument: - IDENT "=" function_argument - -function_argument : - function name "(" [ named_arguments ] ")" | expression - -output_expression_list: - [ expression ] { "," [ expression ] } - -expression_list : - expression { "," expression } - -array_subscripts : - "[" subscript { "," subscript } "]" - -subscript : - ":" | expression - -comment : - string_comment [ annotation ] - -string_comment : - [ STRING { "+" STRING } ] - -annotation : - annotation class_modification - |