aboutsummaryrefslogtreecommitdiffstats
path: root/bnfc
diff options
context:
space:
mode:
Diffstat (limited to 'bnfc')
-rw-r--r--bnfc/modelica33r1_spec.txt347
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
-