From ee74d95aa851af3680d827239ef61e4e0e8fcd94 Mon Sep 17 00:00:00 2001
From: Philipp Paulweber
Date: Mon, 3 Apr 2017 12:02:37 +0200
Subject: [PATCH] Grammar
* implemented the missing TODO for the default program initialization,
which lead to a error state in the new symbol resolver pass from ref
casm-lang/casm#22
- fixes casm-lang/casm#24
---
src/GrammarParser.yy | 13 +-
src/various/GrammarParser.cpp | 663 +++++++++++++++++-----------------
2 files changed, 349 insertions(+), 327 deletions(-)
diff --git a/src/GrammarParser.yy b/src/GrammarParser.yy
index 1027e041a..c29e3d79a 100644
--- a/src/GrammarParser.yy
+++ b/src/GrammarParser.yy
@@ -112,6 +112,13 @@
return libcasm_fe::Ast::make< FunctionDefinition >( sourceLocation, program, argTypes, ruleRefType );
}
+ static DirectCallExpression::Ptr createSelfBuiltinCall( Location& sourceLocation )
+ {
+ const auto self = libcasm_fe::Ast::make< IdentifierNode >( sourceLocation, "self" );
+ const auto arguments = libcasm_fe::Ast::make< Expressions >( sourceLocation );
+ return libcasm_fe::Ast::make< DirectCallExpression >( sourceLocation, self, arguments );
+ }
+
static Rule::Ptr wrapInBlockRule( const Rule::Ptr& rule )
{
if( (rule->id() == Node::ID::BLOCK_RULE )
@@ -382,7 +389,11 @@ ProgramFunctionDefinition
auto programDefinition = createProgramFunction( @$ );
auto arguments = libcasm_fe::Ast::make< Expressions >( @$ );
- // TODO add `default` agent to arguments
+
+ // single execution agent case, use 'self' built-in!
+ const auto self = createSelfBuiltinCall( @$ );
+ arguments->add( self );
+
const auto program = libcasm_fe::Ast::make< DirectCallExpression >(
@$, programDefinition->identifier(), arguments );
diff --git a/src/various/GrammarParser.cpp b/src/various/GrammarParser.cpp
index e89d10e9a..a89976a12 100644
--- a/src/various/GrammarParser.cpp
+++ b/src/various/GrammarParser.cpp
@@ -98,6 +98,13 @@
return libcasm_fe::Ast::make< FunctionDefinition >( sourceLocation, program, argTypes, ruleRefType );
}
+ static DirectCallExpression::Ptr createSelfBuiltinCall( Location& sourceLocation )
+ {
+ const auto self = libcasm_fe::Ast::make< IdentifierNode >( sourceLocation, "self" );
+ const auto arguments = libcasm_fe::Ast::make< Expressions >( sourceLocation );
+ return libcasm_fe::Ast::make< DirectCallExpression >( sourceLocation, self, arguments );
+ }
+
static Rule::Ptr wrapInBlockRule( const Rule::Ptr& rule )
{
if( (rule->id() == Node::ID::BLOCK_RULE )
@@ -112,7 +119,7 @@
return libcasm_fe::Ast::make< BlockRule >( sourceLocation, rules );
}
-#line 116 "GrammarParser.cpp" // lalr1.cc:413
+#line 123 "GrammarParser.cpp" // lalr1.cc:413
#ifndef YY_
@@ -198,7 +205,7 @@
#line 31 "../../obj/src/GrammarParser.yy" // lalr1.cc:479
namespace libcasm_fe {
-#line 202 "GrammarParser.cpp" // lalr1.cc:479
+#line 209 "GrammarParser.cpp" // lalr1.cc:479
/* Return YYSTR after stripping away unnecessary quotes and
backslashes, so that it's suitable for yyerror. The heuristic is
@@ -1231,7 +1238,7 @@ namespace libcasm_fe {
switch (yyn)
{
case 2:
-#line 321 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 328 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const std::string& fileName = filePath.substr( filePath.find_last_of( "/\\" ) + 1 );
const std::string& name = fileName.substr( 0, fileName.rfind( "." ) );
@@ -1239,81 +1246,81 @@ namespace libcasm_fe {
const auto specificationName = make< IdentifierNode >( yylhs.location, name );
result = libcasm_fe::Ast::make< Specification >( yylhs.location, specificationName, yystack_[0].value.as< Definitions::Ptr > () );
}
-#line 1243 "GrammarParser.cpp" // lalr1.cc:859
+#line 1250 "GrammarParser.cpp" // lalr1.cc:859
break;
case 3:
-#line 333 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 340 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Definition::Ptr > () = yystack_[0].value.as< FunctionDefinition::Ptr > ();
}
-#line 1251 "GrammarParser.cpp" // lalr1.cc:859
+#line 1258 "GrammarParser.cpp" // lalr1.cc:859
break;
case 4:
-#line 337 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 344 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Definition::Ptr > () = yystack_[0].value.as< DerivedDefinition::Ptr > ();
}
-#line 1259 "GrammarParser.cpp" // lalr1.cc:859
+#line 1266 "GrammarParser.cpp" // lalr1.cc:859
break;
case 5:
-#line 341 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 348 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Definition::Ptr > () = yystack_[0].value.as< RuleDefinition::Ptr > ();
}
-#line 1267 "GrammarParser.cpp" // lalr1.cc:859
+#line 1274 "GrammarParser.cpp" // lalr1.cc:859
break;
case 6:
-#line 345 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 352 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Definition::Ptr > () = yystack_[0].value.as< EnumerationDefinition::Ptr > ();
}
-#line 1275 "GrammarParser.cpp" // lalr1.cc:859
+#line 1282 "GrammarParser.cpp" // lalr1.cc:859
break;
case 7:
-#line 353 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 360 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto definition = yystack_[0].value.as< Definition::Ptr > ();
definition->setAttributes( yystack_[2].value.as< Attributes::Ptr > () );
yylhs.value.as< Definition::Ptr > () = definition;
}
-#line 1285 "GrammarParser.cpp" // lalr1.cc:859
+#line 1292 "GrammarParser.cpp" // lalr1.cc:859
break;
case 8:
-#line 359 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 366 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Definition::Ptr > () = yystack_[0].value.as< Definition::Ptr > ();
}
-#line 1293 "GrammarParser.cpp" // lalr1.cc:859
+#line 1300 "GrammarParser.cpp" // lalr1.cc:859
break;
case 9:
-#line 367 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 374 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto definitions = yystack_[1].value.as< Definitions::Ptr > ();
definitions->add( yystack_[0].value.as< Definition::Ptr > () );
yylhs.value.as< Definitions::Ptr > () = definitions;
}
-#line 1303 "GrammarParser.cpp" // lalr1.cc:859
+#line 1310 "GrammarParser.cpp" // lalr1.cc:859
break;
case 10:
-#line 373 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 380 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto definitions = libcasm_fe::Ast::make< Definitions >( yylhs.location );
definitions->add( yystack_[0].value.as< Definition::Ptr > () );
yylhs.value.as< Definitions::Ptr > () = definitions;
}
-#line 1313 "GrammarParser.cpp" // lalr1.cc:859
+#line 1320 "GrammarParser.cpp" // lalr1.cc:859
break;
case 11:
-#line 383 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 390 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const auto identifier = yystack_[6].value.as< IdentifierNode::Ptr > ();
@@ -1329,92 +1336,96 @@ namespace libcasm_fe {
yylhs.value.as< FunctionDefinition::Ptr > () = function;
}
-#line 1333 "GrammarParser.cpp" // lalr1.cc:859
+#line 1340 "GrammarParser.cpp" // lalr1.cc:859
break;
case 12:
-#line 399 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 406 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< FunctionDefinition::Ptr > () = yystack_[0].value.as< FunctionDefinition::Ptr > (); // `init` special case
}
-#line 1341 "GrammarParser.cpp" // lalr1.cc:859
+#line 1348 "GrammarParser.cpp" // lalr1.cc:859
break;
case 13:
-#line 407 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 414 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< NodeList< UpdateRule >::Ptr > () = yystack_[1].value.as< NodeList< UpdateRule >::Ptr > ();
}
-#line 1349 "GrammarParser.cpp" // lalr1.cc:859
+#line 1356 "GrammarParser.cpp" // lalr1.cc:859
break;
case 14:
-#line 411 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 418 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< NodeList< UpdateRule >::Ptr > () = libcasm_fe::Ast::make< NodeList< UpdateRule > >( yylhs.location );
}
-#line 1357 "GrammarParser.cpp" // lalr1.cc:859
+#line 1364 "GrammarParser.cpp" // lalr1.cc:859
break;
case 15:
-#line 419 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 426 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[1].value.as< Expression::Ptr > ();
}
-#line 1365 "GrammarParser.cpp" // lalr1.cc:859
+#line 1372 "GrammarParser.cpp" // lalr1.cc:859
break;
case 16:
-#line 423 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 430 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = libcasm_fe::Ast::make< UndefAtom >( yylhs.location );
}
-#line 1373 "GrammarParser.cpp" // lalr1.cc:859
+#line 1380 "GrammarParser.cpp" // lalr1.cc:859
break;
case 17:
-#line 431 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 438 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto types = yystack_[2].value.as< Types::Ptr > ();
types->add( yystack_[0].value.as< Type::Ptr > () );
yylhs.value.as< Types::Ptr > () = types;
}
-#line 1383 "GrammarParser.cpp" // lalr1.cc:859
+#line 1390 "GrammarParser.cpp" // lalr1.cc:859
break;
case 18:
-#line 437 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 444 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto types = libcasm_fe::Ast::make< Types >( yylhs.location );
types->add( yystack_[0].value.as< Type::Ptr > () );
yylhs.value.as< Types::Ptr > () = types;
}
-#line 1393 "GrammarParser.cpp" // lalr1.cc:859
+#line 1400 "GrammarParser.cpp" // lalr1.cc:859
break;
case 19:
-#line 447 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 454 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Types::Ptr > () = yystack_[0].value.as< Types::Ptr > ();
}
-#line 1401 "GrammarParser.cpp" // lalr1.cc:859
+#line 1408 "GrammarParser.cpp" // lalr1.cc:859
break;
case 20:
-#line 451 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 458 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Types::Ptr > () = libcasm_fe::Ast::make< Types >( yylhs.location );
}
-#line 1409 "GrammarParser.cpp" // lalr1.cc:859
+#line 1416 "GrammarParser.cpp" // lalr1.cc:859
break;
case 21:
-#line 459 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 466 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto programDefinition = createProgramFunction( yylhs.location );
auto arguments = libcasm_fe::Ast::make< Expressions >( yylhs.location );
- // TODO add `default` agent to arguments
+
+ // single execution agent case, use 'self' built-in!
+ const auto self = createSelfBuiltinCall( yylhs.location );
+ arguments->add( self );
+
const auto program = libcasm_fe::Ast::make< DirectCallExpression >(
yylhs.location, programDefinition->identifier(), arguments );
@@ -1426,11 +1437,11 @@ namespace libcasm_fe {
yylhs.value.as< FunctionDefinition::Ptr > () = programDefinition;
}
-#line 1430 "GrammarParser.cpp" // lalr1.cc:859
+#line 1441 "GrammarParser.cpp" // lalr1.cc:859
break;
case 22:
-#line 476 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 487 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto programDefinition = createProgramFunction( yylhs.location );
@@ -1443,11 +1454,11 @@ namespace libcasm_fe {
yylhs.value.as< FunctionDefinition::Ptr > () = programDefinition;
}
-#line 1447 "GrammarParser.cpp" // lalr1.cc:859
+#line 1458 "GrammarParser.cpp" // lalr1.cc:859
break;
case 23:
-#line 493 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 504 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
// the unknown function identifier will be replaced in FunctionDefinition
const auto unknown = libcasm_fe::Ast::make< IdentifierNode >( yylhs.location, std::string() );
@@ -1456,11 +1467,11 @@ namespace libcasm_fe {
yylhs.value.as< UpdateRule::Ptr > () = libcasm_fe::Ast::make< UpdateRule >( yylhs.location, function, yystack_[0].value.as< Expression::Ptr > () );
}
-#line 1460 "GrammarParser.cpp" // lalr1.cc:859
+#line 1471 "GrammarParser.cpp" // lalr1.cc:859
break;
case 24:
-#line 502 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 513 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto arguments = libcasm_fe::Ast::make< Expressions >( yylhs.location );
arguments->add( yystack_[2].value.as< Expression::Ptr > () );
@@ -1471,11 +1482,11 @@ namespace libcasm_fe {
yylhs.value.as< UpdateRule::Ptr > () = libcasm_fe::Ast::make< UpdateRule >( yylhs.location, function, yystack_[0].value.as< Expression::Ptr > () );
}
-#line 1475 "GrammarParser.cpp" // lalr1.cc:859
+#line 1486 "GrammarParser.cpp" // lalr1.cc:859
break;
case 25:
-#line 513 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 524 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
// the unknown function identifier will be replaced in FunctionDefinition
const auto unknown = libcasm_fe::Ast::make< IdentifierNode >( yylhs.location, std::string() );
@@ -1483,1094 +1494,1094 @@ namespace libcasm_fe {
yylhs.value.as< UpdateRule::Ptr > () = libcasm_fe::Ast::make< UpdateRule >( yylhs.location, function, yystack_[0].value.as< Expression::Ptr > () );
}
-#line 1487 "GrammarParser.cpp" // lalr1.cc:859
+#line 1498 "GrammarParser.cpp" // lalr1.cc:859
break;
case 26:
-#line 525 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 536 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto initializers = yystack_[2].value.as< NodeList< UpdateRule >::Ptr > ();
initializers->add( yystack_[0].value.as< UpdateRule::Ptr > () );
yylhs.value.as< NodeList< UpdateRule >::Ptr > () = initializers;
}
-#line 1497 "GrammarParser.cpp" // lalr1.cc:859
+#line 1508 "GrammarParser.cpp" // lalr1.cc:859
break;
case 27:
-#line 531 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 542 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto initializers = libcasm_fe::Ast::make< NodeList< UpdateRule > >( yylhs.location );
initializers->add( yystack_[0].value.as< UpdateRule::Ptr > () );
yylhs.value.as< NodeList< UpdateRule >::Ptr > () = initializers;
}
-#line 1507 "GrammarParser.cpp" // lalr1.cc:859
+#line 1518 "GrammarParser.cpp" // lalr1.cc:859
break;
case 28:
-#line 541 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 552 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< NodeList< UpdateRule >::Ptr > () = yystack_[0].value.as< NodeList< UpdateRule >::Ptr > ();
}
-#line 1515 "GrammarParser.cpp" // lalr1.cc:859
+#line 1526 "GrammarParser.cpp" // lalr1.cc:859
break;
case 29:
-#line 545 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 556 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< NodeList< UpdateRule >::Ptr > () = libcasm_fe::Ast::make< NodeList< UpdateRule > >( yylhs.location );
}
-#line 1523 "GrammarParser.cpp" // lalr1.cc:859
+#line 1534 "GrammarParser.cpp" // lalr1.cc:859
break;
case 30:
-#line 553 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 564 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< DerivedDefinition::Ptr > () = libcasm_fe::Ast::make< DerivedDefinition >( yylhs.location, yystack_[5].value.as< IdentifierNode::Ptr > (), yystack_[4].value.as< NodeList< VariableDefinition >::Ptr > (), yystack_[2].value.as< Type::Ptr > (), yystack_[0].value.as< Expression::Ptr > () );
}
-#line 1531 "GrammarParser.cpp" // lalr1.cc:859
+#line 1542 "GrammarParser.cpp" // lalr1.cc:859
break;
case 31:
-#line 561 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 572 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< EnumerationDefinition::Ptr > () = libcasm_fe::Ast::make< EnumerationDefinition >( yylhs.location, yystack_[4].value.as< IdentifierNode::Ptr > (), yystack_[1].value.as< NodeList< IdentifierNode >::Ptr > () );
}
-#line 1539 "GrammarParser.cpp" // lalr1.cc:859
+#line 1550 "GrammarParser.cpp" // lalr1.cc:859
break;
case 32:
-#line 569 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 580 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< IdentifierNode::Ptr > () = libcasm_fe::Ast::make< IdentifierNode >( yylhs.location, yystack_[0].value.as< std::string > () );
}
-#line 1547 "GrammarParser.cpp" // lalr1.cc:859
+#line 1558 "GrammarParser.cpp" // lalr1.cc:859
break;
case 33:
-#line 577 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 588 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto identifiers = yystack_[2].value.as< NodeList< IdentifierNode >::Ptr > ();
identifiers->add( yystack_[0].value.as< IdentifierNode::Ptr > () );
yylhs.value.as< NodeList< IdentifierNode >::Ptr > () = identifiers;
}
-#line 1557 "GrammarParser.cpp" // lalr1.cc:859
+#line 1568 "GrammarParser.cpp" // lalr1.cc:859
break;
case 34:
-#line 583 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 594 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto identifiers = libcasm_fe::Ast::make< NodeList< IdentifierNode > >( yylhs.location );
identifiers->add( yystack_[0].value.as< IdentifierNode::Ptr > () );
yylhs.value.as< NodeList< IdentifierNode >::Ptr > () = identifiers;
}
-#line 1567 "GrammarParser.cpp" // lalr1.cc:859
+#line 1578 "GrammarParser.cpp" // lalr1.cc:859
break;
case 35:
-#line 593 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 604 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< VariableDefinition::Ptr > () = libcasm_fe::Ast::make< VariableDefinition >( yylhs.location, yystack_[2].value.as< IdentifierNode::Ptr > (), yystack_[0].value.as< Type::Ptr > () );
}
-#line 1575 "GrammarParser.cpp" // lalr1.cc:859
+#line 1586 "GrammarParser.cpp" // lalr1.cc:859
break;
case 36:
-#line 597 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 608 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const auto unresolvedType = libcasm_fe::Ast::make< UnresolvedType >( yylhs.location );
yylhs.value.as< VariableDefinition::Ptr > () = libcasm_fe::Ast::make< VariableDefinition >( yylhs.location, yystack_[0].value.as< IdentifierNode::Ptr > (), unresolvedType );
}
-#line 1584 "GrammarParser.cpp" // lalr1.cc:859
+#line 1595 "GrammarParser.cpp" // lalr1.cc:859
break;
case 37:
-#line 606 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 617 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto parameters = yystack_[2].value.as< NodeList< VariableDefinition >::Ptr > ();
parameters->add( yystack_[0].value.as< VariableDefinition::Ptr > () );
yylhs.value.as< NodeList< VariableDefinition >::Ptr > () = parameters;
}
-#line 1594 "GrammarParser.cpp" // lalr1.cc:859
+#line 1605 "GrammarParser.cpp" // lalr1.cc:859
break;
case 38:
-#line 612 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 623 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto parameters = libcasm_fe::Ast::make< NodeList< VariableDefinition > >( yylhs.location );
parameters->add( yystack_[0].value.as< VariableDefinition::Ptr > () );
yylhs.value.as< NodeList< VariableDefinition >::Ptr > () = parameters;
}
-#line 1604 "GrammarParser.cpp" // lalr1.cc:859
+#line 1615 "GrammarParser.cpp" // lalr1.cc:859
break;
case 39:
-#line 622 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 633 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< NodeList< VariableDefinition >::Ptr > () = yystack_[1].value.as< NodeList< VariableDefinition >::Ptr > ();
}
-#line 1612 "GrammarParser.cpp" // lalr1.cc:859
+#line 1623 "GrammarParser.cpp" // lalr1.cc:859
break;
case 40:
-#line 626 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 637 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< NodeList< VariableDefinition >::Ptr > () = libcasm_fe::Ast::make< NodeList< VariableDefinition > >( yylhs.location );
}
-#line 1620 "GrammarParser.cpp" // lalr1.cc:859
+#line 1631 "GrammarParser.cpp" // lalr1.cc:859
break;
case 41:
-#line 634 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 645 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Type::Ptr > () = yystack_[0].value.as< BasicType::Ptr > ();
}
-#line 1628 "GrammarParser.cpp" // lalr1.cc:859
+#line 1639 "GrammarParser.cpp" // lalr1.cc:859
break;
case 42:
-#line 638 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 649 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Type::Ptr > () = yystack_[0].value.as< ComposedType::Ptr > ();
}
-#line 1636 "GrammarParser.cpp" // lalr1.cc:859
+#line 1647 "GrammarParser.cpp" // lalr1.cc:859
break;
case 43:
-#line 642 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 653 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Type::Ptr > () = yystack_[0].value.as< FixedSizedType::Ptr > ();
}
-#line 1644 "GrammarParser.cpp" // lalr1.cc:859
+#line 1655 "GrammarParser.cpp" // lalr1.cc:859
break;
case 44:
-#line 646 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 657 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Type::Ptr > () = yystack_[0].value.as< RangedType::Ptr > ();
}
-#line 1652 "GrammarParser.cpp" // lalr1.cc:859
+#line 1663 "GrammarParser.cpp" // lalr1.cc:859
break;
case 45:
-#line 654 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 665 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< BasicType::Ptr > () = libcasm_fe::Ast::make< BasicType >( yylhs.location, yystack_[0].value.as< IdentifierNode::Ptr > () );
}
-#line 1660 "GrammarParser.cpp" // lalr1.cc:859
+#line 1671 "GrammarParser.cpp" // lalr1.cc:859
break;
case 46:
-#line 662 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 673 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< ComposedType::Ptr > () = libcasm_fe::Ast::make< ComposedType >( yylhs.location, yystack_[3].value.as< IdentifierNode::Ptr > (), yystack_[1].value.as< Types::Ptr > () );
}
-#line 1668 "GrammarParser.cpp" // lalr1.cc:859
+#line 1679 "GrammarParser.cpp" // lalr1.cc:859
break;
case 47:
-#line 670 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 681 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< FixedSizedType::Ptr > () = libcasm_fe::Ast::make< FixedSizedType >( yylhs.location, yystack_[3].value.as< IdentifierNode::Ptr > (), yystack_[1].value.as< Expression::Ptr > () );
}
-#line 1676 "GrammarParser.cpp" // lalr1.cc:859
+#line 1687 "GrammarParser.cpp" // lalr1.cc:859
break;
case 48:
-#line 678 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 689 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< RangedType::Ptr > () = libcasm_fe::Ast::make< RangedType >( yylhs.location, yystack_[5].value.as< IdentifierNode::Ptr > (), yystack_[3].value.as< Expression::Ptr > (), yystack_[1].value.as< Expression::Ptr > () );
}
-#line 1684 "GrammarParser.cpp" // lalr1.cc:859
+#line 1695 "GrammarParser.cpp" // lalr1.cc:859
break;
case 49:
-#line 686 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 697 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto types = yystack_[2].value.as< Types::Ptr > ();
types->add( yystack_[0].value.as< Type::Ptr > () );
yylhs.value.as< Types::Ptr > () = types;
}
-#line 1694 "GrammarParser.cpp" // lalr1.cc:859
+#line 1705 "GrammarParser.cpp" // lalr1.cc:859
break;
case 50:
-#line 692 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 703 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto types = libcasm_fe::Ast::make< Types >( yylhs.location );
types->add( yystack_[0].value.as< Type::Ptr > () );
yylhs.value.as< Types::Ptr > () = types;
}
-#line 1704 "GrammarParser.cpp" // lalr1.cc:859
+#line 1715 "GrammarParser.cpp" // lalr1.cc:859
break;
case 51:
-#line 702 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 713 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< RuleReferenceAtom::Ptr > ();
}
-#line 1712 "GrammarParser.cpp" // lalr1.cc:859
+#line 1723 "GrammarParser.cpp" // lalr1.cc:859
break;
case 52:
-#line 706 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 717 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< ValueAtom::Ptr > ();
}
-#line 1720 "GrammarParser.cpp" // lalr1.cc:859
+#line 1731 "GrammarParser.cpp" // lalr1.cc:859
break;
case 53:
-#line 710 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 721 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< ValueAtom::Ptr > ();
}
-#line 1728 "GrammarParser.cpp" // lalr1.cc:859
+#line 1739 "GrammarParser.cpp" // lalr1.cc:859
break;
case 54:
-#line 714 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 725 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< ValueAtom::Ptr > ();
}
-#line 1736 "GrammarParser.cpp" // lalr1.cc:859
+#line 1747 "GrammarParser.cpp" // lalr1.cc:859
break;
case 55:
-#line 718 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 729 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< ValueAtom::Ptr > ();
}
-#line 1744 "GrammarParser.cpp" // lalr1.cc:859
+#line 1755 "GrammarParser.cpp" // lalr1.cc:859
break;
case 56:
-#line 722 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 733 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< ValueAtom::Ptr > ();
}
-#line 1752 "GrammarParser.cpp" // lalr1.cc:859
+#line 1763 "GrammarParser.cpp" // lalr1.cc:859
break;
case 57:
-#line 726 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 737 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< UndefAtom::Ptr > ();
}
-#line 1760 "GrammarParser.cpp" // lalr1.cc:859
+#line 1771 "GrammarParser.cpp" // lalr1.cc:859
break;
case 58:
-#line 730 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 741 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< ValueAtom::Ptr > ();
}
-#line 1768 "GrammarParser.cpp" // lalr1.cc:859
+#line 1779 "GrammarParser.cpp" // lalr1.cc:859
break;
case 59:
-#line 738 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 749 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< UndefAtom::Ptr > () = libcasm_fe::Ast::make< UndefAtom >( yylhs.location );
}
-#line 1776 "GrammarParser.cpp" // lalr1.cc:859
+#line 1787 "GrammarParser.cpp" // lalr1.cc:859
break;
case 60:
-#line 746 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 757 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const auto value = libstdhl::get< libcasm_ir::BooleanConstant >( true );
yylhs.value.as< ValueAtom::Ptr > () = libcasm_fe::Ast::make< ValueAtom >( yylhs.location, value );
}
-#line 1785 "GrammarParser.cpp" // lalr1.cc:859
+#line 1796 "GrammarParser.cpp" // lalr1.cc:859
break;
case 61:
-#line 751 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 762 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const auto value = libstdhl::get< libcasm_ir::BooleanConstant >( false );
yylhs.value.as< ValueAtom::Ptr > () = libcasm_fe::Ast::make< ValueAtom >( yylhs.location, value );
}
-#line 1794 "GrammarParser.cpp" // lalr1.cc:859
+#line 1805 "GrammarParser.cpp" // lalr1.cc:859
break;
case 62:
-#line 760 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 771 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const auto value = libstdhl::get< libcasm_ir::StringConstant >( yystack_[0].value.as< std::string > () );
yylhs.value.as< ValueAtom::Ptr > () = libcasm_fe::Ast::make< ValueAtom >( yylhs.location, value );
}
-#line 1803 "GrammarParser.cpp" // lalr1.cc:859
+#line 1814 "GrammarParser.cpp" // lalr1.cc:859
break;
case 63:
-#line 769 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 780 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const auto value = libstdhl::get< libcasm_ir::BitConstant >( yystack_[0].value.as< std::string > (), libstdhl::Type::BINARY );
yylhs.value.as< ValueAtom::Ptr > () = libcasm_fe::Ast::make< ValueAtom >( yylhs.location, value );
}
-#line 1812 "GrammarParser.cpp" // lalr1.cc:859
+#line 1823 "GrammarParser.cpp" // lalr1.cc:859
break;
case 64:
-#line 774 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 785 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const auto value = libstdhl::get< libcasm_ir::BitConstant >( yystack_[0].value.as< std::string > (), libstdhl::Type::HEXADECIMAL );
yylhs.value.as< ValueAtom::Ptr > () = libcasm_fe::Ast::make< ValueAtom >( yylhs.location, value );
}
-#line 1821 "GrammarParser.cpp" // lalr1.cc:859
+#line 1832 "GrammarParser.cpp" // lalr1.cc:859
break;
case 65:
-#line 783 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 794 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const auto value = libstdhl::get< libcasm_ir::IntegerConstant >( yystack_[0].value.as< std::string > (), libstdhl::Type::DECIMAL );
yylhs.value.as< ValueAtom::Ptr > () = libcasm_fe::Ast::make< ValueAtom >( yylhs.location, value );
}
-#line 1830 "GrammarParser.cpp" // lalr1.cc:859
+#line 1841 "GrammarParser.cpp" // lalr1.cc:859
break;
case 66:
-#line 792 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 803 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const auto value = libstdhl::get< libcasm_ir::FloatingConstant >( yystack_[0].value.as< std::string > () );
yylhs.value.as< ValueAtom::Ptr > () = libcasm_fe::Ast::make< ValueAtom >( yylhs.location, value );
}
-#line 1839 "GrammarParser.cpp" // lalr1.cc:859
+#line 1850 "GrammarParser.cpp" // lalr1.cc:859
break;
case 67:
-#line 801 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 812 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const auto value = libstdhl::get< libcasm_ir::RationalConstant >( yystack_[0].value.as< std::string > () );
yylhs.value.as< ValueAtom::Ptr > () = libcasm_fe::Ast::make< ValueAtom >( yylhs.location, value );
}
-#line 1848 "GrammarParser.cpp" // lalr1.cc:859
+#line 1859 "GrammarParser.cpp" // lalr1.cc:859
break;
case 68:
-#line 810 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 821 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const auto ruleName = libcasm_fe::Ast::make< IdentifierNode >( yylhs.location, yystack_[0].value.as< std::string > () );
yylhs.value.as< RuleReferenceAtom::Ptr > () = libcasm_fe::Ast::make< RuleReferenceAtom >( yylhs.location, ruleName );
}
-#line 1857 "GrammarParser.cpp" // lalr1.cc:859
+#line 1868 "GrammarParser.cpp" // lalr1.cc:859
break;
case 69:
-#line 819 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 830 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< DirectCallExpression::Ptr > ();
}
-#line 1865 "GrammarParser.cpp" // lalr1.cc:859
+#line 1876 "GrammarParser.cpp" // lalr1.cc:859
break;
case 70:
-#line 823 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 834 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< IndirectCallExpression::Ptr > ();
}
-#line 1873 "GrammarParser.cpp" // lalr1.cc:859
+#line 1884 "GrammarParser.cpp" // lalr1.cc:859
break;
case 71:
-#line 827 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 838 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< ConditionalExpression::Ptr > ();
}
-#line 1881 "GrammarParser.cpp" // lalr1.cc:859
+#line 1892 "GrammarParser.cpp" // lalr1.cc:859
break;
case 72:
-#line 831 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 842 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< UniversalQuantifierExpression::Ptr > ();
}
-#line 1889 "GrammarParser.cpp" // lalr1.cc:859
+#line 1900 "GrammarParser.cpp" // lalr1.cc:859
break;
case 73:
-#line 835 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 846 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< ExistentialQuantifierExpression::Ptr > ();
}
-#line 1897 "GrammarParser.cpp" // lalr1.cc:859
+#line 1908 "GrammarParser.cpp" // lalr1.cc:859
break;
case 74:
-#line 839 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 850 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< Expression::Ptr > ();
}
-#line 1905 "GrammarParser.cpp" // lalr1.cc:859
+#line 1916 "GrammarParser.cpp" // lalr1.cc:859
break;
case 75:
-#line 843 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 854 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< ListExpression::Ptr > ();
}
-#line 1913 "GrammarParser.cpp" // lalr1.cc:859
+#line 1924 "GrammarParser.cpp" // lalr1.cc:859
break;
case 76:
-#line 847 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 858 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< RangeExpression::Ptr > ();
}
-#line 1921 "GrammarParser.cpp" // lalr1.cc:859
+#line 1932 "GrammarParser.cpp" // lalr1.cc:859
break;
case 77:
-#line 851 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 862 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< Expression::Ptr > ();
}
-#line 1929 "GrammarParser.cpp" // lalr1.cc:859
+#line 1940 "GrammarParser.cpp" // lalr1.cc:859
break;
case 78:
-#line 859 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 870 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[1].value.as< Expression::Ptr > ();
}
-#line 1937 "GrammarParser.cpp" // lalr1.cc:859
+#line 1948 "GrammarParser.cpp" // lalr1.cc:859
break;
case 79:
-#line 863 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 874 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[0].value.as< Expression::Ptr > ();
}
-#line 1945 "GrammarParser.cpp" // lalr1.cc:859
+#line 1956 "GrammarParser.cpp" // lalr1.cc:859
break;
case 80:
-#line 867 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 878 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = yystack_[1].value.as< Expression::Ptr > ();
}
-#line 1953 "GrammarParser.cpp" // lalr1.cc:859
+#line 1964 "GrammarParser.cpp" // lalr1.cc:859
break;
case 81:
-#line 871 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 882 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = libcasm_fe::Ast::make< UnaryExpression >( yylhs.location, yystack_[0].value.as< Expression::Ptr > (), libcasm_ir::Value::INV_INSTRUCTION );
}
-#line 1961 "GrammarParser.cpp" // lalr1.cc:859
+#line 1972 "GrammarParser.cpp" // lalr1.cc:859
break;
case 82:
-#line 875 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 886 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = libcasm_fe::Ast::make< BinaryExpression >( yylhs.location, yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expression::Ptr > (), libcasm_ir::Value::ADD_INSTRUCTION );
}
-#line 1969 "GrammarParser.cpp" // lalr1.cc:859
+#line 1980 "GrammarParser.cpp" // lalr1.cc:859
break;
case 83:
-#line 879 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 890 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = libcasm_fe::Ast::make< BinaryExpression >( yylhs.location, yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expression::Ptr > (), libcasm_ir::Value::SUB_INSTRUCTION );
}
-#line 1977 "GrammarParser.cpp" // lalr1.cc:859
+#line 1988 "GrammarParser.cpp" // lalr1.cc:859
break;
case 84:
-#line 883 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 894 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = libcasm_fe::Ast::make< BinaryExpression >( yylhs.location, yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expression::Ptr > (), libcasm_ir::Value::MUL_INSTRUCTION );
}
-#line 1985 "GrammarParser.cpp" // lalr1.cc:859
+#line 1996 "GrammarParser.cpp" // lalr1.cc:859
break;
case 85:
-#line 887 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 898 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = libcasm_fe::Ast::make< BinaryExpression >( yylhs.location, yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expression::Ptr > (), libcasm_ir::Value::DIV_INSTRUCTION );
}
-#line 1993 "GrammarParser.cpp" // lalr1.cc:859
+#line 2004 "GrammarParser.cpp" // lalr1.cc:859
break;
case 86:
-#line 891 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 902 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = libcasm_fe::Ast::make< BinaryExpression >( yylhs.location, yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expression::Ptr > (), libcasm_ir::Value::MOD_INSTRUCTION );
}
-#line 2001 "GrammarParser.cpp" // lalr1.cc:859
+#line 2012 "GrammarParser.cpp" // lalr1.cc:859
break;
case 87:
-#line 895 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 906 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
// TODO call power builtin
}
-#line 2009 "GrammarParser.cpp" // lalr1.cc:859
+#line 2020 "GrammarParser.cpp" // lalr1.cc:859
break;
case 88:
-#line 899 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 910 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = libcasm_fe::Ast::make< BinaryExpression >( yylhs.location, yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expression::Ptr > (), libcasm_ir::Value::NEQ_INSTRUCTION );
}
-#line 2017 "GrammarParser.cpp" // lalr1.cc:859
+#line 2028 "GrammarParser.cpp" // lalr1.cc:859
break;
case 89:
-#line 903 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 914 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = libcasm_fe::Ast::make< BinaryExpression >( yylhs.location, yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expression::Ptr > (), libcasm_ir::Value::EQU_INSTRUCTION );
}
-#line 2025 "GrammarParser.cpp" // lalr1.cc:859
+#line 2036 "GrammarParser.cpp" // lalr1.cc:859
break;
case 90:
-#line 907 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 918 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = libcasm_fe::Ast::make< BinaryExpression >( yylhs.location, yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expression::Ptr > (), libcasm_ir::Value::LTH_INSTRUCTION );
}
-#line 2033 "GrammarParser.cpp" // lalr1.cc:859
+#line 2044 "GrammarParser.cpp" // lalr1.cc:859
break;
case 91:
-#line 911 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 922 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = libcasm_fe::Ast::make< BinaryExpression >( yylhs.location, yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expression::Ptr > (), libcasm_ir::Value::GTH_INSTRUCTION );
}
-#line 2041 "GrammarParser.cpp" // lalr1.cc:859
+#line 2052 "GrammarParser.cpp" // lalr1.cc:859
break;
case 92:
-#line 915 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 926 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = libcasm_fe::Ast::make< BinaryExpression >( yylhs.location, yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expression::Ptr > (), libcasm_ir::Value::LEQ_INSTRUCTION );
}
-#line 2049 "GrammarParser.cpp" // lalr1.cc:859
+#line 2060 "GrammarParser.cpp" // lalr1.cc:859
break;
case 93:
-#line 919 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 930 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = libcasm_fe::Ast::make< BinaryExpression >( yylhs.location, yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expression::Ptr > (), libcasm_ir::Value::GEQ_INSTRUCTION );
}
-#line 2057 "GrammarParser.cpp" // lalr1.cc:859
+#line 2068 "GrammarParser.cpp" // lalr1.cc:859
break;
case 94:
-#line 923 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 934 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = libcasm_fe::Ast::make< BinaryExpression >( yylhs.location, yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expression::Ptr > (), libcasm_ir::Value::OR_INSTRUCTION );
}
-#line 2065 "GrammarParser.cpp" // lalr1.cc:859
+#line 2076 "GrammarParser.cpp" // lalr1.cc:859
break;
case 95:
-#line 927 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 938 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = libcasm_fe::Ast::make< BinaryExpression >( yylhs.location, yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expression::Ptr > (), libcasm_ir::Value::XOR_INSTRUCTION );
}
-#line 2073 "GrammarParser.cpp" // lalr1.cc:859
+#line 2084 "GrammarParser.cpp" // lalr1.cc:859
break;
case 96:
-#line 931 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 942 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = libcasm_fe::Ast::make< BinaryExpression >( yylhs.location, yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expression::Ptr > (), libcasm_ir::Value::AND_INSTRUCTION );
}
-#line 2081 "GrammarParser.cpp" // lalr1.cc:859
+#line 2092 "GrammarParser.cpp" // lalr1.cc:859
break;
case 97:
-#line 935 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 946 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
// TODO add implies instruction
}
-#line 2089 "GrammarParser.cpp" // lalr1.cc:859
+#line 2100 "GrammarParser.cpp" // lalr1.cc:859
break;
case 98:
-#line 939 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 950 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expression::Ptr > () = libcasm_fe::Ast::make< UnaryExpression >( yylhs.location, yystack_[0].value.as< Expression::Ptr > (), libcasm_ir::Value::NOT_INSTRUCTION );
}
-#line 2097 "GrammarParser.cpp" // lalr1.cc:859
+#line 2108 "GrammarParser.cpp" // lalr1.cc:859
break;
case 99:
-#line 948 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 959 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< RangeExpression::Ptr > () = libcasm_fe::Ast::make< RangeExpression >( yylhs.location, yystack_[3].value.as< Expression::Ptr > (), yystack_[1].value.as< Expression::Ptr > () );
}
-#line 2105 "GrammarParser.cpp" // lalr1.cc:859
+#line 2116 "GrammarParser.cpp" // lalr1.cc:859
break;
case 100:
-#line 956 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 967 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const auto expressions = libcasm_fe::Ast::make< Expressions >( yylhs.location );
yylhs.value.as< ListExpression::Ptr > () = libcasm_fe::Ast::make< ListExpression >( yylhs.location, expressions );
}
-#line 2114 "GrammarParser.cpp" // lalr1.cc:859
+#line 2125 "GrammarParser.cpp" // lalr1.cc:859
break;
case 101:
-#line 961 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 972 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto expressions = libcasm_fe::Ast::make< Expressions >( yylhs.location );
expressions->add( yystack_[1].value.as< Expression::Ptr > () );
yylhs.value.as< ListExpression::Ptr > () = libcasm_fe::Ast::make< ListExpression >( yylhs.location, expressions );
}
-#line 2124 "GrammarParser.cpp" // lalr1.cc:859
+#line 2135 "GrammarParser.cpp" // lalr1.cc:859
break;
case 102:
-#line 967 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 978 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< ListExpression::Ptr > () = libcasm_fe::Ast::make< ListExpression >( yylhs.location, yystack_[1].value.as< Expressions::Ptr > () );
}
-#line 2132 "GrammarParser.cpp" // lalr1.cc:859
+#line 2143 "GrammarParser.cpp" // lalr1.cc:859
break;
case 103:
-#line 974 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 985 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto expressions = yystack_[2].value.as< Expressions::Ptr > ();
expressions->add( yystack_[0].value.as< Expression::Ptr > () );
yylhs.value.as< Expressions::Ptr > () = expressions;
}
-#line 2142 "GrammarParser.cpp" // lalr1.cc:859
+#line 2153 "GrammarParser.cpp" // lalr1.cc:859
break;
case 104:
-#line 980 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 991 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const auto expressions = libcasm_fe::Ast::make< Expressions >( yylhs.location );
expressions->add( yystack_[0].value.as< Expression::Ptr > () );
yylhs.value.as< Expressions::Ptr > () = expressions;
}
-#line 2152 "GrammarParser.cpp" // lalr1.cc:859
+#line 2163 "GrammarParser.cpp" // lalr1.cc:859
break;
case 105:
-#line 990 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1001 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Expressions::Ptr > () = yystack_[1].value.as< Expressions::Ptr > ();
}
-#line 2160 "GrammarParser.cpp" // lalr1.cc:859
+#line 2171 "GrammarParser.cpp" // lalr1.cc:859
break;
case 106:
-#line 994 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1005 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const auto expressions = libcasm_fe::Ast::make< Expressions >( yylhs.location );
yylhs.value.as< Expressions::Ptr > () = expressions;
}
-#line 2169 "GrammarParser.cpp" // lalr1.cc:859
+#line 2180 "GrammarParser.cpp" // lalr1.cc:859
break;
case 107:
-#line 1003 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1014 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const auto arguments = libcasm_fe::Ast::make< Expressions >( yylhs.location );
yylhs.value.as< DirectCallExpression::Ptr > () = libcasm_fe::Ast::make< DirectCallExpression >( yylhs.location, yystack_[0].value.as< IdentifierNode::Ptr > (), arguments );
}
-#line 2178 "GrammarParser.cpp" // lalr1.cc:859
+#line 2189 "GrammarParser.cpp" // lalr1.cc:859
break;
case 108:
-#line 1008 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1019 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< DirectCallExpression::Ptr > () = libcasm_fe::Ast::make< DirectCallExpression >( yylhs.location, yystack_[1].value.as< IdentifierNode::Ptr > (), yystack_[0].value.as< Expressions::Ptr > () );
}
-#line 2186 "GrammarParser.cpp" // lalr1.cc:859
+#line 2197 "GrammarParser.cpp" // lalr1.cc:859
break;
case 109:
-#line 1016 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1027 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< IndirectCallExpression::Ptr > () = libcasm_fe::Ast::make< IndirectCallExpression >( yylhs.location, yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expressions::Ptr > () );
}
-#line 2194 "GrammarParser.cpp" // lalr1.cc:859
+#line 2205 "GrammarParser.cpp" // lalr1.cc:859
break;
case 110:
-#line 1024 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1035 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< ConditionalExpression::Ptr > () = libcasm_fe::Ast::make< ConditionalExpression >( yylhs.location, yystack_[4].value.as< Expression::Ptr > (), yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expression::Ptr > () );
}
-#line 2202 "GrammarParser.cpp" // lalr1.cc:859
+#line 2213 "GrammarParser.cpp" // lalr1.cc:859
break;
case 111:
-#line 1032 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1043 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< UniversalQuantifierExpression::Ptr > () = libcasm_fe::Ast::make< UniversalQuantifierExpression >( yylhs.location, yystack_[4].value.as< VariableDefinition::Ptr > (), yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expression::Ptr > () );
}
-#line 2210 "GrammarParser.cpp" // lalr1.cc:859
+#line 2221 "GrammarParser.cpp" // lalr1.cc:859
break;
case 112:
-#line 1040 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1051 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< ExistentialQuantifierExpression::Ptr > () = libcasm_fe::Ast::make< ExistentialQuantifierExpression >( yylhs.location, yystack_[4].value.as< VariableDefinition::Ptr > (), yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Expression::Ptr > () );
}
-#line 2218 "GrammarParser.cpp" // lalr1.cc:859
+#line 2229 "GrammarParser.cpp" // lalr1.cc:859
break;
case 113:
-#line 1048 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1059 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< RuleDefinition::Ptr > () = libcasm_fe::Ast::make< RuleDefinition >( yylhs.location, yystack_[3].value.as< IdentifierNode::Ptr > (), yystack_[2].value.as< NodeList< VariableDefinition >::Ptr > (), createVoidType( yylhs.location ),
wrapInBlockRule( yystack_[0].value.as< Rule::Ptr > () ) );
}
-#line 2227 "GrammarParser.cpp" // lalr1.cc:859
+#line 2238 "GrammarParser.cpp" // lalr1.cc:859
break;
case 114:
-#line 1053 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1064 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< RuleDefinition::Ptr > () = libcasm_fe::Ast::make< RuleDefinition >( yylhs.location, yystack_[5].value.as< IdentifierNode::Ptr > (), yystack_[4].value.as< NodeList< VariableDefinition >::Ptr > (), yystack_[2].value.as< Type::Ptr > (),
wrapInBlockRule( yystack_[0].value.as< Rule::Ptr > () ) );
}
-#line 2236 "GrammarParser.cpp" // lalr1.cc:859
+#line 2247 "GrammarParser.cpp" // lalr1.cc:859
break;
case 115:
-#line 1062 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1073 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Rule::Ptr > () = yystack_[0].value.as< SkipRule::Ptr > ();
}
-#line 2244 "GrammarParser.cpp" // lalr1.cc:859
+#line 2255 "GrammarParser.cpp" // lalr1.cc:859
break;
case 116:
-#line 1066 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1077 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Rule::Ptr > () = yystack_[0].value.as< ConditionalRule::Ptr > ();
}
-#line 2252 "GrammarParser.cpp" // lalr1.cc:859
+#line 2263 "GrammarParser.cpp" // lalr1.cc:859
break;
case 117:
-#line 1070 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1081 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Rule::Ptr > () = yystack_[0].value.as< CaseRule::Ptr > ();
}
-#line 2260 "GrammarParser.cpp" // lalr1.cc:859
+#line 2271 "GrammarParser.cpp" // lalr1.cc:859
break;
case 118:
-#line 1074 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1085 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Rule::Ptr > () = yystack_[0].value.as< LetRule::Ptr > ();
}
-#line 2268 "GrammarParser.cpp" // lalr1.cc:859
+#line 2279 "GrammarParser.cpp" // lalr1.cc:859
break;
case 119:
-#line 1078 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1089 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Rule::Ptr > () = yystack_[0].value.as< ForallRule::Ptr > ();
}
-#line 2276 "GrammarParser.cpp" // lalr1.cc:859
+#line 2287 "GrammarParser.cpp" // lalr1.cc:859
break;
case 120:
-#line 1082 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1093 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Rule::Ptr > () = yystack_[0].value.as< IterateRule::Ptr > ();
}
-#line 2284 "GrammarParser.cpp" // lalr1.cc:859
+#line 2295 "GrammarParser.cpp" // lalr1.cc:859
break;
case 121:
-#line 1086 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1097 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Rule::Ptr > () = yystack_[0].value.as< BlockRule::Ptr > ();
}
-#line 2292 "GrammarParser.cpp" // lalr1.cc:859
+#line 2303 "GrammarParser.cpp" // lalr1.cc:859
break;
case 122:
-#line 1090 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1101 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Rule::Ptr > () = yystack_[0].value.as< SequenceRule::Ptr > ();
}
-#line 2300 "GrammarParser.cpp" // lalr1.cc:859
+#line 2311 "GrammarParser.cpp" // lalr1.cc:859
break;
case 123:
-#line 1094 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1105 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Rule::Ptr > () = yystack_[0].value.as< UpdateRule::Ptr > ();
}
-#line 2308 "GrammarParser.cpp" // lalr1.cc:859
+#line 2319 "GrammarParser.cpp" // lalr1.cc:859
break;
case 124:
-#line 1098 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1109 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Rule::Ptr > () = yystack_[0].value.as< CallRule::Ptr > ();
}
-#line 2316 "GrammarParser.cpp" // lalr1.cc:859
+#line 2327 "GrammarParser.cpp" // lalr1.cc:859
break;
case 125:
-#line 1106 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1117 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto rules = yystack_[1].value.as< Rules::Ptr > ();
rules->add( yystack_[0].value.as< Rule::Ptr > () );
yylhs.value.as< Rules::Ptr > () = rules;
}
-#line 2326 "GrammarParser.cpp" // lalr1.cc:859
+#line 2337 "GrammarParser.cpp" // lalr1.cc:859
break;
case 126:
-#line 1112 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1123 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto rules = libcasm_fe::Ast::make< Rules >( yylhs.location );
rules->add( yystack_[0].value.as< Rule::Ptr > () );
yylhs.value.as< Rules::Ptr > () = rules;
}
-#line 2336 "GrammarParser.cpp" // lalr1.cc:859
+#line 2347 "GrammarParser.cpp" // lalr1.cc:859
break;
case 127:
-#line 1122 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1133 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< SkipRule::Ptr > () = libcasm_fe::Ast::make< SkipRule >( yylhs.location );
}
-#line 2344 "GrammarParser.cpp" // lalr1.cc:859
+#line 2355 "GrammarParser.cpp" // lalr1.cc:859
break;
case 128:
-#line 1130 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1141 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< ConditionalRule::Ptr > () = libcasm_fe::Ast::make< ConditionalRule >( yylhs.location, yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Rule::Ptr > () );
}
-#line 2352 "GrammarParser.cpp" // lalr1.cc:859
+#line 2363 "GrammarParser.cpp" // lalr1.cc:859
break;
case 129:
-#line 1134 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1145 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< ConditionalRule::Ptr > () = libcasm_fe::Ast::make< ConditionalRule >( yylhs.location, yystack_[4].value.as< Expression::Ptr > (), yystack_[2].value.as< Rule::Ptr > (), yystack_[0].value.as< Rule::Ptr > () );
}
-#line 2360 "GrammarParser.cpp" // lalr1.cc:859
+#line 2371 "GrammarParser.cpp" // lalr1.cc:859
break;
case 130:
-#line 1142 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1153 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< CaseRule::Ptr > () = libcasm_fe::Ast::make< CaseRule >( yylhs.location, yystack_[4].value.as< Expression::Ptr > (), yystack_[1].value.as< Cases::Ptr > () );
}
-#line 2368 "GrammarParser.cpp" // lalr1.cc:859
+#line 2379 "GrammarParser.cpp" // lalr1.cc:859
break;
case 131:
-#line 1150 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1161 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Case::Ptr > () = libcasm_fe::Ast::make< DefaultCase >( yylhs.location, yystack_[0].value.as< Rule::Ptr > () );
}
-#line 2376 "GrammarParser.cpp" // lalr1.cc:859
+#line 2387 "GrammarParser.cpp" // lalr1.cc:859
break;
case 132:
-#line 1154 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1165 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Case::Ptr > () = libcasm_fe::Ast::make< DefaultCase >( yylhs.location, yystack_[0].value.as< Rule::Ptr > () );
}
-#line 2384 "GrammarParser.cpp" // lalr1.cc:859
+#line 2395 "GrammarParser.cpp" // lalr1.cc:859
break;
case 133:
-#line 1158 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1169 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Case::Ptr > () = libcasm_fe::Ast::make< ExpressionCase >( yylhs.location, yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Rule::Ptr > () );
}
-#line 2392 "GrammarParser.cpp" // lalr1.cc:859
+#line 2403 "GrammarParser.cpp" // lalr1.cc:859
break;
case 134:
-#line 1166 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1177 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto cases = yystack_[0].value.as< Cases::Ptr > ();
cases->add( yystack_[1].value.as< Case::Ptr > () );
yylhs.value.as< Cases::Ptr > () = cases;
}
-#line 2402 "GrammarParser.cpp" // lalr1.cc:859
+#line 2413 "GrammarParser.cpp" // lalr1.cc:859
break;
case 135:
-#line 1172 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1183 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto cases = libcasm_fe::Ast::make< Cases >( yylhs.location );
cases->add( yystack_[0].value.as< Case::Ptr > () );
yylhs.value.as< Cases::Ptr > () = cases;
}
-#line 2412 "GrammarParser.cpp" // lalr1.cc:859
+#line 2423 "GrammarParser.cpp" // lalr1.cc:859
break;
case 136:
-#line 1182 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1193 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< LetRule::Ptr > () = libcasm_fe::Ast::make< LetRule >( yylhs.location, yystack_[4].value.as< VariableDefinition::Ptr > (), yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Rule::Ptr > () );
}
-#line 2420 "GrammarParser.cpp" // lalr1.cc:859
+#line 2431 "GrammarParser.cpp" // lalr1.cc:859
break;
case 137:
-#line 1190 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1201 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< ForallRule::Ptr > () = libcasm_fe::Ast::make< ForallRule >( yylhs.location, yystack_[4].value.as< VariableDefinition::Ptr > (), yystack_[2].value.as< Expression::Ptr > (), yystack_[0].value.as< Rule::Ptr > () );
}
-#line 2428 "GrammarParser.cpp" // lalr1.cc:859
+#line 2439 "GrammarParser.cpp" // lalr1.cc:859
break;
case 138:
-#line 1198 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1209 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< IterateRule::Ptr > () = libcasm_fe::Ast::make< IterateRule >( yylhs.location, yystack_[0].value.as< Rule::Ptr > () );
}
-#line 2436 "GrammarParser.cpp" // lalr1.cc:859
+#line 2447 "GrammarParser.cpp" // lalr1.cc:859
break;
case 139:
-#line 1206 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1217 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< BlockRule::Ptr > () = libcasm_fe::Ast::make< BlockRule >( yylhs.location, yystack_[1].value.as< Rules::Ptr > () );
}
-#line 2444 "GrammarParser.cpp" // lalr1.cc:859
+#line 2455 "GrammarParser.cpp" // lalr1.cc:859
break;
case 140:
-#line 1210 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1221 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< BlockRule::Ptr > () = libcasm_fe::Ast::make< BlockRule >( yylhs.location, yystack_[1].value.as< Rules::Ptr > () );
}
-#line 2452 "GrammarParser.cpp" // lalr1.cc:859
+#line 2463 "GrammarParser.cpp" // lalr1.cc:859
break;
case 141:
-#line 1218 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1229 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< SequenceRule::Ptr > () = libcasm_fe::Ast::make< SequenceRule >( yylhs.location, yystack_[1].value.as< Rules::Ptr > () );
}
-#line 2460 "GrammarParser.cpp" // lalr1.cc:859
+#line 2471 "GrammarParser.cpp" // lalr1.cc:859
break;
case 142:
-#line 1222 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1233 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< SequenceRule::Ptr > () = libcasm_fe::Ast::make< SequenceRule >( yylhs.location, yystack_[1].value.as< Rules::Ptr > () );
}
-#line 2468 "GrammarParser.cpp" // lalr1.cc:859
+#line 2479 "GrammarParser.cpp" // lalr1.cc:859
break;
case 143:
-#line 1230 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1241 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< UpdateRule::Ptr > () = libcasm_fe::Ast::make< UpdateRule >( yylhs.location, yystack_[2].value.as< DirectCallExpression::Ptr > (), yystack_[0].value.as< Expression::Ptr > () );
}
-#line 2476 "GrammarParser.cpp" // lalr1.cc:859
+#line 2487 "GrammarParser.cpp" // lalr1.cc:859
break;
case 144:
-#line 1238 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1249 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const std::set< CallExpression::TargetType >
allowedCallTargetTypes{ CallExpression::TargetType::RULE };
yylhs.value.as< CallRule::Ptr > () = libcasm_fe::Ast::make< CallRule >( yylhs.location, yystack_[0].value.as< DirectCallExpression::Ptr > (), allowedCallTargetTypes );
}
-#line 2486 "GrammarParser.cpp" // lalr1.cc:859
+#line 2497 "GrammarParser.cpp" // lalr1.cc:859
break;
case 145:
-#line 1244 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1255 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const std::set< CallExpression::TargetType >
allowedCallTargetTypes{ CallExpression::TargetType::DERIVED,
CallExpression::TargetType::BUILTIN };
yylhs.value.as< CallRule::Ptr > () = libcasm_fe::Ast::make< CallRule >( yylhs.location, yystack_[0].value.as< DirectCallExpression::Ptr > (), allowedCallTargetTypes );
}
-#line 2497 "GrammarParser.cpp" // lalr1.cc:859
+#line 2508 "GrammarParser.cpp" // lalr1.cc:859
break;
case 146:
-#line 1251 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1262 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const std::set< CallExpression::TargetType >
allowedCallTargetTypes{ CallExpression::TargetType::RULE };
yylhs.value.as< CallRule::Ptr > () = libcasm_fe::Ast::make< CallRule >( yylhs.location, yystack_[0].value.as< IndirectCallExpression::Ptr > (), allowedCallTargetTypes );
}
-#line 2507 "GrammarParser.cpp" // lalr1.cc:859
+#line 2518 "GrammarParser.cpp" // lalr1.cc:859
break;
case 147:
-#line 1257 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1268 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
const std::set< CallExpression::TargetType >
allowedCallTargetTypes{ CallExpression::TargetType::DERIVED,
CallExpression::TargetType::BUILTIN };
yylhs.value.as< CallRule::Ptr > () = libcasm_fe::Ast::make< CallRule >( yylhs.location, yystack_[0].value.as< IndirectCallExpression::Ptr > (), allowedCallTargetTypes );
}
-#line 2518 "GrammarParser.cpp" // lalr1.cc:859
+#line 2529 "GrammarParser.cpp" // lalr1.cc:859
break;
case 148:
-#line 1268 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1279 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Attribute::Ptr > () = yystack_[0].value.as< BasicAttribute::Ptr > ();
}
-#line 2526 "GrammarParser.cpp" // lalr1.cc:859
+#line 2537 "GrammarParser.cpp" // lalr1.cc:859
break;
case 149:
-#line 1272 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1283 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< Attribute::Ptr > () = yystack_[0].value.as< ExpressionAttribute::Ptr > ();
}
-#line 2534 "GrammarParser.cpp" // lalr1.cc:859
+#line 2545 "GrammarParser.cpp" // lalr1.cc:859
break;
case 150:
-#line 1280 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1291 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto attributes = yystack_[2].value.as< Attributes::Ptr > ();
attributes->add( yystack_[0].value.as< Attribute::Ptr > () );
yylhs.value.as< Attributes::Ptr > () = attributes;
}
-#line 2544 "GrammarParser.cpp" // lalr1.cc:859
+#line 2555 "GrammarParser.cpp" // lalr1.cc:859
break;
case 151:
-#line 1286 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1297 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
auto attributes = libcasm_fe::Ast::make< Attributes >( yylhs.location );
attributes->add( yystack_[0].value.as< Attribute::Ptr > () );
yylhs.value.as< Attributes::Ptr > () = attributes;
}
-#line 2554 "GrammarParser.cpp" // lalr1.cc:859
+#line 2565 "GrammarParser.cpp" // lalr1.cc:859
break;
case 152:
-#line 1296 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1307 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< BasicAttribute::Ptr > () = libcasm_fe::Ast::make< BasicAttribute >( yylhs.location, yystack_[0].value.as< IdentifierNode::Ptr > () );
}
-#line 2562 "GrammarParser.cpp" // lalr1.cc:859
+#line 2573 "GrammarParser.cpp" // lalr1.cc:859
break;
case 153:
-#line 1304 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
+#line 1315 "../../obj/src/GrammarParser.yy" // lalr1.cc:859
{
yylhs.value.as< ExpressionAttribute::Ptr > () = libcasm_fe::Ast::make< ExpressionAttribute >( yylhs.location, yystack_[1].value.as< IdentifierNode::Ptr > (), yystack_[0].value.as< Expression::Ptr > () );
}
-#line 2570 "GrammarParser.cpp" // lalr1.cc:859
+#line 2581 "GrammarParser.cpp" // lalr1.cc:859
break;
-#line 2574 "GrammarParser.cpp" // lalr1.cc:859
+#line 2585 "GrammarParser.cpp" // lalr1.cc:859
default:
break;
}
@@ -3349,22 +3360,22 @@ namespace libcasm_fe {
const unsigned short int
Parser::yyrline_[] =
{
- 0, 320, 320, 332, 336, 340, 344, 352, 358, 366,
- 372, 382, 398, 406, 410, 418, 422, 430, 436, 446,
- 450, 458, 475, 492, 501, 512, 524, 530, 540, 544,
- 552, 560, 568, 576, 582, 592, 596, 605, 611, 621,
- 625, 633, 637, 641, 645, 653, 661, 669, 677, 685,
- 691, 701, 705, 709, 713, 717, 721, 725, 729, 737,
- 745, 750, 759, 768, 773, 782, 791, 800, 809, 818,
- 822, 826, 830, 834, 838, 842, 846, 850, 858, 862,
- 866, 870, 874, 878, 882, 886, 890, 894, 898, 902,
- 906, 910, 914, 918, 922, 926, 930, 934, 938, 947,
- 955, 960, 966, 973, 979, 989, 993, 1002, 1007, 1015,
- 1023, 1031, 1039, 1047, 1052, 1061, 1065, 1069, 1073, 1077,
- 1081, 1085, 1089, 1093, 1097, 1105, 1111, 1121, 1129, 1133,
- 1141, 1149, 1153, 1157, 1165, 1171, 1181, 1189, 1197, 1205,
- 1209, 1217, 1221, 1229, 1237, 1243, 1250, 1256, 1267, 1271,
- 1279, 1285, 1295, 1303
+ 0, 327, 327, 339, 343, 347, 351, 359, 365, 373,
+ 379, 389, 405, 413, 417, 425, 429, 437, 443, 453,
+ 457, 465, 486, 503, 512, 523, 535, 541, 551, 555,
+ 563, 571, 579, 587, 593, 603, 607, 616, 622, 632,
+ 636, 644, 648, 652, 656, 664, 672, 680, 688, 696,
+ 702, 712, 716, 720, 724, 728, 732, 736, 740, 748,
+ 756, 761, 770, 779, 784, 793, 802, 811, 820, 829,
+ 833, 837, 841, 845, 849, 853, 857, 861, 869, 873,
+ 877, 881, 885, 889, 893, 897, 901, 905, 909, 913,
+ 917, 921, 925, 929, 933, 937, 941, 945, 949, 958,
+ 966, 971, 977, 984, 990, 1000, 1004, 1013, 1018, 1026,
+ 1034, 1042, 1050, 1058, 1063, 1072, 1076, 1080, 1084, 1088,
+ 1092, 1096, 1100, 1104, 1108, 1116, 1122, 1132, 1140, 1144,
+ 1152, 1160, 1164, 1168, 1176, 1182, 1192, 1200, 1208, 1216,
+ 1220, 1228, 1232, 1240, 1248, 1254, 1261, 1267, 1278, 1282,
+ 1290, 1296, 1306, 1314
};
// Print the state stack on the debug stream.
@@ -3399,8 +3410,8 @@ namespace libcasm_fe {
#line 31 "../../obj/src/GrammarParser.yy" // lalr1.cc:1167
} // libcasm_fe
-#line 3403 "GrammarParser.cpp" // lalr1.cc:1167
-#line 1309 "../../obj/src/GrammarParser.yy" // lalr1.cc:1168
+#line 3414 "GrammarParser.cpp" // lalr1.cc:1167
+#line 1320 "../../obj/src/GrammarParser.yy" // lalr1.cc:1168
void Parser::error( const Location& location, const std::string& message )