From 7f7a1eab4521c676c48dacfc205ae040d69521ca Mon Sep 17 00:00:00 2001 From: Adrian Pop Date: Sun, 16 Mar 2008 03:44:50 +0000 Subject: [PATCH] - Modelica 3.0 grammar updates! + added constrainedby to the grammar + now the entire Modelica Standard Library 3.0 can be parsed. git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@3383 f25d12d1-65f4-0310-ae8a-bbce733d8d8e --- Compiler/absyn_builder/walker.g | 18 ++++++++++++++++-- flat_modelica_parser/src/flat_modelica_lexer.g | 1 + .../src/flat_modelica_parser.g | 2 +- modelica_parser/src/modelica_lexer.g | 3 ++- modelica_parser/src/modelica_parser.g | 2 +- 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/Compiler/absyn_builder/walker.g b/Compiler/absyn_builder/walker.g index a0176fae274..57a7a47957c 100644 --- a/Compiler/absyn_builder/walker.g +++ b/Compiler/absyn_builder/walker.g @@ -856,8 +856,22 @@ extends_clause returns [void* ast] ) ; -constraining_clause returns [void *ast] : - (ast = extends_clause) +constraining_clause returns [void *ast] +{ + void* path; + void* mod = 0; +} + : + (ast = extends_clause) + | (#(e:CONSTRAINEDBY + path = name_path + ( mod = class_modification )? + ) + { + if (!mod) mod = mk_nil(); + ast = Absyn__EXTENDS(path,mod); + } + ) ; // returns datatype ElementSpec diff --git a/flat_modelica_parser/src/flat_modelica_lexer.g b/flat_modelica_parser/src/flat_modelica_lexer.g index e6d5f81d21e..724e4677519 100644 --- a/flat_modelica_parser/src/flat_modelica_lexer.g +++ b/flat_modelica_parser/src/flat_modelica_lexer.g @@ -69,6 +69,7 @@ tokens { ENCAPSULATED = "encapsulated"; EXPANDABLE = "expandable"; EXTENDS = "extends" ; + CONSTRAINEDBY = "constrainedby" ; EXTERNAL = "external" ; FALSE = "false" ; FINAL = "final" ; diff --git a/flat_modelica_parser/src/flat_modelica_parser.g b/flat_modelica_parser/src/flat_modelica_parser.g index d5c91d08da5..d24b4c956f7 100644 --- a/flat_modelica_parser/src/flat_modelica_parser.g +++ b/flat_modelica_parser/src/flat_modelica_parser.g @@ -408,7 +408,7 @@ extends_clause : ; constraining_clause : - extends_clause + extends_clause | CONSTRAINEDBY^ name_path ( class_modification )? ; /* diff --git a/modelica_parser/src/modelica_lexer.g b/modelica_parser/src/modelica_lexer.g index 5fdcb41f61b..7776b71109f 100644 --- a/modelica_parser/src/modelica_lexer.g +++ b/modelica_parser/src/modelica_lexer.g @@ -68,7 +68,8 @@ tokens { EQUATION = "equation" ; ENCAPSULATED = "encapsulated"; EXPANDABLE = "expandable"; - EXTENDS = "extends" ; + EXTENDS = "extends" ; + CONSTRAINEDBY = "constrainedby" ; EXTERNAL = "external" ; FALSE = "false" ; FINAL = "final" ; diff --git a/modelica_parser/src/modelica_parser.g b/modelica_parser/src/modelica_parser.g index a038e9c1b1b..9b5d6111a9c 100644 --- a/modelica_parser/src/modelica_parser.g +++ b/modelica_parser/src/modelica_parser.g @@ -408,7 +408,7 @@ extends_clause : ; constraining_clause : - extends_clause + extends_clause | CONSTRAINEDBY^ name_path ( class_modification )? ; /*