<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Extending Message Handlers with Pattern Matching in the Jadescript Programming Language</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Giuseppe Petrosino</string-name>
          <email>giuseppe.petrosino@studenti.unipr.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Fisiche e Informatiche</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Universita` degli Studi di Parma 43124 Parma</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2019</year>
      </pub-date>
      <fpage>113</fpage>
      <lpage>118</lpage>
      <abstract>
        <p>-Software agents are characterized by sophisticated messaging capabilities that support distributed problem solving and that provide the basic ingredients for interoperability in open agent-based systems. Jadescript is an agent-oriented programming language that has been recently proposed to offer programmers the abstractions that characterize agents to concretely and effectively support the implementation of complex agentbased systems. As expected, the abstractions that Jadescript provides include native support for the advanced messaging capabilities that characterize agents. This paper describes a recent development of Jadescript that extends the language with a native support for pattern matching designed to simplify the reception of structured messages and to ease the management of complex conversations. The proposed support for pattern matching is intimately correlated with the type system of the language, and it can be used to effectively associate inbound messages with specific handlers. From the point of view of programmers, the proposed support for pattern matching allows clearly expressing the intended scope of message handlers, and it contributes to raise the level of abstraction of the language. Index Terms-Jadescript, JADE, agent-oriented programming, software agents</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Since the introduction of software agents (e.g., [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]), the
interest in AOP (Agent-Oriented Programming) (e.g., [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]) has
been constantly increasing mainly because AOP is expected
to deliver effective tools to design and implement complex
agent-based systems. AOP languages shield programmers from
many fine-grained details related, for example, to the routing
of messages or to the deployment of agents to network hosts.
AOP languages promote high-level views of agent-based
systems that allow programmers to concentrate on the problems
at hand, rather than focusing on fine-grained details that tend
to distract attention from problems. All things considered,
AOP languages allow programmers to reason on agents at
a high level of abstraction because they provide support for
the abstractions that characterize the agent-oriented view of
software systems promoted, for example, by the IEEE FIPA
Standards Committee (www.fipa.org) or by the literature on
AOSE (Agent-Oriented Software Engineering) [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        The main objective of this paper is to summarize the current
state of the development of Jadescript [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], an AOP language
whose main purpose is to help programmers to deal with the
complexity of building real-world agent-based systems using
JADE (Java Agent DEvelopment framework) (e.g., [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]). In
particular, this paper details one of the latest features of the
language that has been recently included to ease the reception
of structured messages and to support the management of
complex conversations among agents. Jadescript now provides
a specific support for pattern matching that was carefully
integrated with the type system of the language to readily
state the conditions used to route messages to proper message
handlers. The use of the new support for pattern matching, as
described in Section IV, allows programmers to clearly state
the intended scope of message handlers, and it ultimately helps
to further raise the level of abstraction of the language with
respect to previous versions (e.g., [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]).
      </p>
      <p>
        Even if the early JADE prototypes date back more than
twenty years, JADE is still one of the most popular agent
platforms [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], and it is still used for academic and industrial
projects [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. In addition, JADE is the solid base for other
software platforms like WADE (Workflows and Agents
Development Environment) [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], which supports agent-based business
process management, AMUSE (Agent-based Multi-User Social
Environment) [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], which focuses on agent-based multi-player
games (e.g., [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]), and WANTS (Workflows and AgeNTS) [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ],
which routinely participates in the management of a
nationwide telecommunication network. Jadescript has been recently
added to the list of projects that use JADE in order to offer a
new way to reduce the complexity of building JADE systems,
and to provide concrete support for the adoption of the
abstractions that most substantially characterize JADE, namely,
agents, behaviours [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], and ontologies [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Jadescript is
intended to bring the power of JADE to programmers that
are not interested in directly using an agent platform, but that
are interested in taking advantage of the beneficial features of
software agents. Jadescript is meant to enable the effective use
of agents as software components (e.g., [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]), and it is already
planned that it would allow the adoption of a high-level agent
model (e.g., [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]) in the near future.
      </p>
      <p>This paper is organized as follows. Section II provides a
brief survey of some of the most relevant languages proposed
to support the development of software agents and agent-based
systems. Section III describes the major features of Jadescript,
and it lists the elements of the language provided to support
message passing. Section IV describes the new support for
pattern matching. Finally, Section V concludes the paper and
outlines major future developments of the discussed research.</p>
    </sec>
    <sec id="sec-2">
      <title>II. RELATED WORK</title>
      <p>Several AOP languages have been already proposed in
the literature, and for some of them, the needed tools, like
interpreters and compilers, have also been implemented.
Documented experiments on such languages often show that
programming languages specifically designed for AOP are
convenient for the development of complex agent-based systems.
However, most of the languages in use to program software
agents and agent-based systems are general-purpose OOP
(Object-Oriented Programming) languages, even if agents and
objects differ in important ways, which include, most notably,
the degree of autonomy. Objects directly and inevitably invoke
methods on other objects, while agents express their intentions
to delegate some of their goals to other agents.</p>
      <p>
        AOP languages are based on specific agent models, and
they provide linguistic constructs to ease the adoption of
such models at a high level of abstraction. Ease of use and
expressivity are common characteristics of AOP languages.
However, AOP languages differ significantly in terms of the
selected agent mental attitudes (if any), of the integration with
an agent platform (if any), and of the underlying programming
paradigm and implementation language. The literature
provides multiple classifications of AOP languages that consider
such a diversified landscape. A recent survey [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] proposes
a classification of AOP languages that is based on mental
attitudes. It identifies the following classes of languages: AOP
languages, BDI (Belief-Desire-Intention) languages, hybrid
languages, and other languages. Such a classification
acknowledges that BDI languages follow the AOP paradigm, but, for
their notable relevance in literature, it reserves special attention
to them by listing BDI languages in a separate category.
Another appreciated survey [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] proposes a classification
in which languages are divided into imperative, declarative,
and hybrid. It is worth noting that, in both classifications,
the languages that adhere to the declarative programming
paradigm are the most numerous because they are natively
well-suited to implement automated reasoning. On the
contrary, the languages that adopt the imperative programming
paradigm are just a minority, and they are frequently obtained
by extending procedural programming languages with specific
linguistic constructs to support agents and related abstractions.
In the rest of this section, some of the most relevant AOP
languages are briefly described. Only the languages that share
features with Jadescript are considered.
      </p>
      <p>
        The acronym AOP was first introduced by Shoham [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]
together with AGENT-0, a first example of the application of
the AOP paradigm. In AGENT-0, a computation is represented
by a sequence of collaborative and/or competitive interactions
among agents. Each agent has a mental state that is composed
of beliefs and commitments. The mental state of an agent
changes over time, which is represented as a sequence of
discrete steps. Agents share a sense/act cycle in which incoming
messages are processed, beliefs and commitments are updated,
and actions are executed. An AGENT-0 program is written by
enumerating initial states for beliefs and commitments, and
by listing commitment rules that refer to future actions. The
communication among agents is accomplished by exchanging
simple messages, which are classified into three types: inform
of a belief, request to perform an action, and unrequest of a
previously requested action.
      </p>
      <p>
        PLAnning Communicating Agents (PLACA) [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] is a direct
descendant of AGENT-0, and it extends the capabilities of
AGENT-0 by providing new linguistic constructs and new
mental categories. The major improvement with respect to
AGENT-0 is that agents do not need to request for specific
actions to call for cooperation, but they can refer to
highlevel goals. Such an improvement has two major benefits.
First, agent communication is lighter because the number of
messages is possibly reduced. Second, it allows agents to focus
on the desired results of actions, thus easily adding cooperative
planning capabilities to agents.
      </p>
      <p>
        Concurrent METATEM [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] is an AOP language based
on temporal logics. In this language, sets of rules are used
to describe the lifecycle of agents and the execution of
actions. Such rules can be grouped into temporal rules and
non-temporal rules. Non-temporal rules are used to support
application-specific reasoning, while temporal rules are used
to govern agents and they are classified into three categories:
start rules, step rules and sometimes rules. In Concurrent
METATEM, agents act asynchronously and they interact by
message passing. The language does not mandate a structure
for messages, and messages are nothing but typed events.
      </p>
      <p>
        AgentSpeak [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] is an important example of a declarative
AOP language. In AgentSpeak, an agent program is described
as a tuple that collects beliefs, events (internal and
external), actions, plans, and intentions. The approach adopted by
AgentSpeak allows to declaratively program agents based on
the BDI model. Jason [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] can be considered the first usable
implementation of AgentSpeak. Jason is tightly integrated with
Java, and it extends AgentSpeak by providing all features
needed to effectively adopt it for the implementation of
complex agent-based systems. Jason is currently one of the most
popular tools to adopt the declarative programming paradigm
for the implementation of agent-based systems.
      </p>
      <p>
        3APL (An Abstract Agent Programming Language) [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]
is an AOP language that includes abstractions from both
declarative and imperative programming paradigms. Agents
in 3APL are based on the BDI model and for this reason the
language provides a set of abstractions to implement agents
with reasoning capabilities. The mental states of agents consist
of sets of goals and beliefs, while sets of practical reasoning
rules are used to modify mental states and to generate plans to
achieve goals. There are two official implementations of the
support tools for 3APL, one in Java and one in Haskell.
      </p>
      <p>
        JACK [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ] is an agent platform commercialized by AOS
(www.aosgrp.com). It supports the development of
agentbased systems composed of agents that are programmed in
terms of the BDI model. One of the main elements of the
JACK platform is JAL (JACK Agent Language), an AOP
language that is defined as a superset of Java. JAL extends Java
by introducing features borrowed from logic languages, and it
provides statements to allow the construction of plans. One
of the most relevant features of JAL is the native support for
organizations and teams, which is provided to enable effective
distributed problem solving.
      </p>
      <p>
        SEA L (Semantic web-Enabled Agent Language) [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ], [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]
is a DSL (Domain-Specific Language) to program agent-based
systems for the Semantic Web. SEA L addresses some of
the limitations of other development frameworks intended
to implement agent-based systems for the Semantic Web. A
specific modeling language, called SEA ML (Semantic
webEnabled Agent Modeling Language) [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ], is available for the
graphical modeling of agent-based systems.
      </p>
      <p>
        CLAIM (A Computational Language for Autonomous
Intelligent and Mobile Agents) [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ] is an AOP language designed
with a focus on agent mobility. CLAIM supports holarchies
because agents can be built by hierarchically composing other
agents. CLAIM agents have two types of reasoning
capabilities: forward reasoning, for reactive tasks, and backward
reasoning, for goal-driven tasks. Agent communication is
performed by message passing, and the underlying agent platform
uses a set of specific messages to support agent mobility.
      </p>
      <p>
        Jadex [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ] is a framework to implement agent-based
systems originally designed to work on top of JADE. A Jadex
agent is equipped with a BDI reasoning engine, and it is
programmed in terms of beliefs, goals, and plans. Jadex combines
the imperative and the declarative paradigms because it uses
ADFs (Agent Definition Files) to define beliefs, goals and
plans, while it uses Java to procedurally define plans. Note
that, even if it does not introduce a specific syntax, Jadex
underpins an AOP language, and for this reason it is often
treated as such. Jadex is intended for practical and commercial
use, and a number of real-world applications that use it are
documented in the literature. Besides its name, the framework
is no longer tightly linked with JADE because now it provides
the needed tools to interface various agent platforms.
      </p>
      <p>
        SARL [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ] is an AOP language that follows the imperative
programming paradigm. It can be considered as an extension
of the Xtend language [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ], which is a dialect of Java that
it is used to implement the procedural parts of SARL agents.
SARL is platform-agnostic, even if it is commonly used with a
dedicated agent platform called Janus. One of its most peculiar
features is the support for holarchies by means of specific
linguistic constructs. SARL compiler is implemented using
Xtext [
        <xref ref-type="bibr" rid="ref32">32</xref>
        ], which the same development framework used for
the Jadescript compiler.
      </p>
      <p>
        JADEL [
        <xref ref-type="bibr" rid="ref33">33</xref>
        ]–[
        <xref ref-type="bibr" rid="ref35">35</xref>
        ] is the direct predecessor of Jadescript. It is
an AOP language that targets the Java virtual machine, and it is
intended to support the construction of agents and agent-based
systems using JADE. JADEL provides specific constructs for
message passing, for event handling, and for the definition of
agents, behaviours, and ontologies. It has direct support for
FIPA interaction protocols [
        <xref ref-type="bibr" rid="ref36">36</xref>
        ], and its operational semantics
is formalized [
        <xref ref-type="bibr" rid="ref37">37</xref>
        ]. Finally, its procedural parts are based on
the Xtend language, and its major support tools are a compiler
and an Eclipse plugin, both built using Xtext.
      </p>
    </sec>
    <sec id="sec-3">
      <title>III. JADESCRIPT IN BRIEF</title>
      <p>This paper introduces a new feature of Jadescript intended
to embed pattern matching in the core of the language. Such a
new feature represents a first attempt at supporting the
declarative programming paradigm in Jadescript, and it is designed
to make the aims and scope of message handlers explicit. The
remaining of this section briefly describes Jadescript and, in
particular, it highlights the elements of the language provided
to send and receive messages.</p>
      <p>Jadescript is a novel programming language designed with
the explicit intent to make agent-oriented code similar to
semantically-equivalent pseudocode. It supports the
development of JADE agents and agent-based systems, and it is
characterized by distinctive features designed to make the language
very expressive. Notably, the language shares characteristics
with popular scripting languages like, for example, the use of
semantically-relevant indentation and collection types.</p>
      <p>Every Jadescript source code is intended to be compiled
into one or more Java source codes, which are then compiled
into Java bytecode using any off-the-shelf Java compiler. Such
a design choice was taken primarily to grant interoperability
with Java, and to enable Jadescript agents to directly use
libraries and frameworks already available for the Java virtual
machine. Despite the close relationship with Java, Jadescript
is not an OOP language, rather it is an AOP language that
follows the path originally traced by AGENT-0. The minimal
interface to Java, which is still present in Jadescript to support
integration with the features of the underlying Java virtual
machine, is considered low-level and its use is discouraged.</p>
      <p>Jadescript is a statically-typed language, and its type system
comprises the following data types:
• Primitive types;
• Collection types;
• Ontology types;
• Agent types; and
• Behaviour types.</p>
      <p>Jadescript provides the following primitive types that are
immediately mapped to corresponding Java types: boolean,
double, float, integer, and text. It provides
collection types in terms of lists and maps of typed values. It
supports structured types in terms of ontology types, which
can be declared in the scope of ontology declarations
using concept, action, predicate, and proposition
declarations. Ontology types are declared (with the exception
of proposition declarations) in terms of sets of typed
properties, and they can include properties inherited from
other ontology types. Finally, agent and behaviour types are
provided for the manipulation of agents and behaviours. Values
of such types cannot be used freely in expressions, and they
can be used only in the scope of a limited number of linguistic
constructs. The restrictions on the use of agent and behaviour
types ensure that programmers cannot freely manipulate agents
and behaviours, and they are coherent with the underlying
management of the same abstractions in JADE.
In order to improve readability, Jadescript is designed to
support a limited form of type inference. The Jadescript
compiler can identify when new variables are declared, and
it can infer the types of new variables in correspondence of
assignment statements. Similarly, the Jadescript compiler can
infer the types of properties from the types of expressions used
as initializers. Even if the supported form of type inference is
sufficient to improve readability, it is worth noting that it is
limited with respect to the form of type inference that other
languages provide. Actually, the types of some of the elements
referenced in source codes like, for example, the types of
the formal parameters of procedures, need to be explicitly
stated because the language does not provide to the compiler
sufficient information to infer them.</p>
      <p>
        Agents are the core abstractions used to build Jadescript
agent-based systems, and they depend completely on JADE
agents. Each Jadescript agent operates within a JADE
container, it is identified by a unique AID (Agent IDentifier), and
it can be in one of several lifecycle states. Agents operate
by engaging one or more behaviours. For each agent, active
behaviours are executed following the characteristic
nonpreemptive scheduling mechanisms of JADE behaviours [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
Currently, Jadescript supports two types of behaviour: one
shot behaviours and cyclic behaviours. Interested readers
should consult the official JADE documentation [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] for
detailed descriptions of the behaviour scheduling mechanisms
and of possible agent-lifecycle states.
      </p>
      <p>The runtime state of agents and behaviours is stored in
properties, which are declared using the keyword property
in the scope of agent and behaviour declarations. Similarly,
ontology types are also declared in terms of properties.
Properties can be accessed in expressions using the of operator,
which mimics how the preposition of is used in English as a
synonym of belonging to. Agent and behaviour declarations
can also include parameterized blocks of procedural code in
the scope of function and procedure declarations.</p>
      <p>
        Jadescript agents are fully interoperable with JADE agents,
and they communicate by exchanging FIPA ACL (Agent
Communication Language) messages. Jadescript provides a set
of linguistic constructs to send and receive messages, with
message reception expressed in terms of a specific type of
event. Jadescript agents can react to events using dedicated
linguistic constructs. Future versions of the language are
planned to support application-specific types of events, for
example, to let agents easily interface with the physical world
(e.g. [
        <xref ref-type="bibr" rid="ref38">38</xref>
        ]) through the underlying agent container. For the time
being, Jadescript supports only three types of events:
• Agent-lifecycle events, handled by the on create and
the on destroy constructs in agent declarations, to
allow agents to react to changes of their lifecycle states;
• Behaviour-activation events, handled by the on create
construct in behaviour declarations, to support the
initialization of the internal state of behaviours; and
• Message events, handled by the on message construct
and its variants in behaviour declarations, to allow the
reception of messages with specific characteristics.
on inform m
when content of m is sample do
s = content of m
if value of s &lt; 0 do
send inform negative
      </p>
      <p>to sender of m
else do</p>
      <p>send inform s to aid of agent
Event handlers, just like functions and procedures, have a body
where procedural code is included by means of statements
and expressions. Moreover, message handlers can specify a
when clause that is used to state a condition that interesting
messages are required to satisfy. In detail, Jadescript allows
the use of an expression after the optional keyword when in
the declaration of a message handler to allow programmers
to state a condition that messages must satisfy in order to
be extracted from the message queue of the agent. Such
expressions are not arbitrary Boolean expressions, but they
are conditions, which can be composed using the ordinary
logical connectives, on the performative, the ontology, and the
type of the content of messages. For the sake of readability, a
condition on the performative of messages can also be declared
by stating the accepted performative after the keyword on
so that, for example, on inform can be used to declare a
message handler that processes inform messages. Fig. 1 shows
an example of the use of the discussed mechanism to route
inbound messages to appropriate message handlers. Note that
the described mechanism also provides valuable compile-time
information about handled messages that is used to infer types.
1 ontology TemperatureSensor
proposition nonnegative
proposition negative
concept sample(value as double)
2
3
4
5
6 cyclic behaviour ReceiveNonNegative
uses ontology TemperatureSensor
on inform m
when content of m is sample do
s = content of m
if value of s &gt;= 0 do
send inform nonnegative</p>
      <p>to sender of m
else do</p>
      <p>send inform s to aid of agent</p>
    </sec>
    <sec id="sec-4">
      <title>IV. PATTERN MATCHING IN MESSAGE HANDLERS</title>
      <p>The urge to extend Jadescript with an improved mechanism
to declare message handlers is mainly motivated by the need
to provide more expressive linguistic constructs to associate
inbound messages with appropriate handlers. In particular, the
major weakness of the described support for message
dispatching becomes evident when several behaviours work on similar
messages. Consider, for example, the behaviours shown in
Fig. 1. If the two behaviours are activated by the same agent,
then they would work on the same message queue, and they
would handle messages with the same ontology, the same
performative, and the same content type. However, behavior
ReceiveNonNegative is designed to handle messages for
which the property value is nonnegative, while behaviour
ReceiveNegative has the opposite requirement on the
same property. In this example, both behaviours reinsert the
received message into the message queue of the agent when
the message does not meet the intended requirements. Even if
the reinsertion into the message queue ensures that messages
are eventually processed by appropriated handlers, the example
emphasizes that the current support for message dispatching
is probably too limited.</p>
      <p>A simple solution to the mentioned weakness of the support
for message dispatching that Jadescript has been providing
since its early releases could be based on the possibility of
allowing generic Boolean expressions to guard the activation
of handlers. However, such a solution is not fully satisfactory
because generic Boolean expressions could have
uncontrollable side effects. This is the reason why Jadescript has been
recently extended to allow the use of pattern matching in the
guard expressions of message handlers. In particular, the new
support for pattern matching in message handlers is made
available to programmers by means of a new binary operator
called matches that allows to compare a value against a
specified pattern. Such an operator evaluates to true when
the value matches to the provided pattern, and it evaluates to
false otherwise. Currently, Jadescript supports the following
four types of patterns:
• Ontology patterns, used to check a value of an ontology
type against a pattern;
• List patterns, used to check a list against a pattern;
• Map patterns, used to check a map against a pattern; and
• Regular-expression patterns, used to check if a text
satisfies a regular expression.</p>
      <p>Ontology, list, and map patterns are called composite patterns
because they are defined as sequences of terms. Each term in
a composite pattern can be:
• A text, integer, float, double, or boolean
literal;
• A variable identifier, possibly not yet declared in the
current scope;
• An underscore placeholder symbol (_), which acts as a
dummy variable; or
• A pattern, which acts as a sub-pattern.
1 cyclic behaviour ReceiveNonNegative
uses ontology TemperatureSensor
on inform m
when
content of m matches sample(v) and
v &gt;= 0 do
send inform nonnegative</p>
      <p>to sender of m
on inform m
when
content of m matches sample(v) and
v &lt; 0 do
send inform negative</p>
      <p>to sender of m</p>
      <p>The pattern matching mechanism for composite patterns
works by comparing each term of the pattern, from left to
right, to the corresponding value at the left-hand side of the
matches operator. In the case of a literal term, the value
represented by the literal is simply compared for equality.
The same sort of comparison is performed for identifier terms
that refer to variables already present in the current scope.
However, if the pattern refers to an identifier that cannot
be resolved to a declared variable in the current scope, the
matches operator binds the identifier to the corresponding
values in the left-hand side operand. Such bindings are then
treated as if they were declared variables. In particular, when
the checking of a pattern results in the implicit declaration of a
variable, such a new variable becomes accessible in the current
scope. Similarly, if the term to be checked is an underscore
placeholder, any value is considered to be a valid match
because the pattern is treated as a dummy variable. Finally,
when the term to be checked is a sub-pattern, the described
matching mechanism is performed recursively. Fig. 2 shows
an example of the use of ontology patterns.</p>
      <p>List and map patterns are similar to list and map literals,
with the addition of the possibility of using the Prolog-inspired
optional pipe symbol to separate the head from the tail (also
known as rest) of the collection. Note that the optional pipe
symbol is particularly relevant because it is used to express
patterns that match lists and maps of unknown size.</p>
      <p>Regular expression patterns, as the name suggests, are
regular expressions for strings of characters. The matches
operator checks if the value at the left-hand side of the operator
is a text, and if it is, returns true if the text matches the
pattern. The syntax of this type of patterns is inspired from
the syntax of regular-expression literals in Javascript.</p>
    </sec>
    <sec id="sec-5">
      <title>V. CONCLUSION</title>
      <p>This paper described a recent development of Jadescript that
extends the language with a native support for pattern
matching. The proposed support for pattern matching is intimately
related with the type system of the language, and it can be
used to effectively associate inbound messages with specific
handlers. From the point of view of programmers, such a
new feature of the language allows clearly expressing the
intended aims and scope of message handlers, and it ultimately
contributes to raise the level of abstraction of the language.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>J.</given-names>
            <surname>Bradshaw</surname>
          </string-name>
          , Software Agents. MIT Press,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Shoham</surname>
          </string-name>
          , “
          <article-title>An overview of agent-oriented programming,” in Software Agents</article-title>
          , J. Bradshaw, Ed.,
          <source>vol. 4</source>
          . MIT Press,
          <year>1997</year>
          , pp.
          <fpage>271</fpage>
          -
          <lpage>290</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.-P.</given-names>
            <surname>Gleizes</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Zambonelli</surname>
          </string-name>
          , Eds.,
          <source>Methodologies and Software Engineering for Agent Systems: The Agent-Oriented Software Engineering Handbook</source>
          . Springer,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          , and G. Petrosino, “
          <article-title>A scripting language for practical agent-oriented programming,”</article-title>
          <source>in Proc. 8th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control (AGERE</source>
          <year>2018</year>
          )
          <article-title>at ACM SIGPLAN Conference Systems, Programming, Languages and Applications: Software for Humanity (SPLASH 2018)</article-title>
          . ACM Press,
          <year>2018</year>
          , pp.
          <fpage>62</fpage>
          -
          <lpage>71</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bellifemine</surname>
          </string-name>
          , G. Caire, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Greenwood</surname>
          </string-name>
          ,
          <article-title>Developing multi-agent systems with JADE, ser</article-title>
          . Wiley Series in Agent Technology. John Wiley &amp; Sons,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          and G. Petrosino, “
          <article-title>Overview of a scripting language for JADE-based multi-agent systems,”</article-title>
          <source>in Proc. 19th Workshop “</source>
          From Objects to Agents”
          <article-title>(WOA 2018), ser</article-title>
          .
          <source>CEUR Workshop Proceedings</source>
          , vol.
          <volume>2215</volume>
          . RWTH Aachen,
          <year>2018</year>
          , pp.
          <fpage>57</fpage>
          -
          <lpage>62</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>G.</given-names>
            <surname>Petrosino</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , “
          <article-title>An introduction to the major features of a scripting language for JADE agents</article-title>
          ,”
          <source>in Proc. 17th Conference of the Italian Association for Artificial Intelligence (AI*IA</source>
          <year>2018</year>
          ),
          <source>ser. Lecture Notes in Artificial Intelligence</source>
          , vol.
          <volume>11298</volume>
          . Springer,
          <year>2018</year>
          , pp.
          <fpage>3</fpage>
          -
          <lpage>14</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>K.</given-names>
            <surname>Kravari</surname>
          </string-name>
          and
          <string-name>
            <given-names>N.</given-names>
            <surname>Bassiliades</surname>
          </string-name>
          , “
          <article-title>A survey of agent platforms</article-title>
          ,
          <source>” Journal of Artificial Societies and Social Simulation</source>
          , vol.
          <volume>18</volume>
          , no.
          <issue>1</issue>
          , p.
          <fpage>11</fpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , G. Caire, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Gotta</surname>
          </string-name>
          , “
          <article-title>Interactive workflows with WADE,”</article-title>
          <source>in Proc. 21st IEEE International Conference on Collaboration Technologies and Infrastructures (WETICE</source>
          <year>2012</year>
          ). IEEE,
          <year>2012</year>
          , pp.
          <fpage>10</fpage>
          -
          <lpage>15</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , G. Caire, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Gotta</surname>
          </string-name>
          , “
          <article-title>An overview of the AMUSE social gaming platform,”</article-title>
          <source>in Proc. Workshop “</source>
          From Objects to Agents”
          <article-title>(WOA 2013), ser</article-title>
          .
          <source>CEUR Workshop Proceedings</source>
          , vol.
          <volume>1099</volume>
          . RWTH Aachen,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          , “
          <article-title>Location-aware social gaming with AMUSE,” in Advances in Practical Applications of Scalable Multiagent Systems</article-title>
          .
          <source>The PAAMS Collection: 14th International Conference, PAAMS</source>
          <year>2016</year>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Demazeau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Ito</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Bajo</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M. J.</given-names>
            <surname>Escalona</surname>
          </string-name>
          , Eds. Springer International Publishing,
          <year>2016</year>
          , pp.
          <fpage>36</fpage>
          -
          <lpage>47</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , G. Caire, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Gotta</surname>
          </string-name>
          , “
          <article-title>Large-scale network and service management with WANTS,” in Industrial Agents: Emerging Applications of Software Agents in Industry</article-title>
          . Elsevier,
          <year>2015</year>
          , pp.
          <fpage>231</fpage>
          -
          <lpage>246</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bellifemine</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Caire, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>JADE - A Java agent development framework,” in Multi-Agent Programming: Languages, Platforms and Applications</article-title>
          ,
          <string-name>
            <given-names>R. H.</given-names>
            <surname>Bordini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Dastani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Dix</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>El Fallah</surname>
          </string-name>
          Seghrouchni, Eds. Springer,
          <year>2005</year>
          , pp.
          <fpage>125</fpage>
          -
          <lpage>147</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>M.</given-names>
            <surname>Tomaiuolo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Turci</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>An ontology support for semantic aware agents,”</article-title>
          <source>in Proc. International Workshop on Agent-Oriented Information Systems (AOIS</source>
          <year>2005</year>
          )
          <article-title>, ser</article-title>
          .
          <source>LNAI</source>
          , vol.
          <volume>3529</volume>
          . Springer,
          <year>2006</year>
          , pp.
          <fpage>140</fpage>
          -
          <lpage>153</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , “
          <article-title>A discussion of two major benefits of using agents in software development,” in Engineering Societies in the Agents</article-title>
          <source>World III: 3rd International Workshop ESAW</source>
          <year>2002</year>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Petta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Tolksdorf</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Zambonelli</surname>
          </string-name>
          , Eds. Springer,
          <year>2003</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>12</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>A development toolkit to realize autonomous and inter-operable agents,”</article-title>
          <source>in Proc. 5th International Conference on Autonomous Agents</source>
          ,
          <year>2001</year>
          , pp.
          <fpage>632</fpage>
          -
          <lpage>639</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>C.</given-names>
            <surname>Ba</surname>
          </string-name>
          ˘dica˘,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Budimac</surname>
          </string-name>
          , H.
          <string-name>
            <surname>-D. Burkhard</surname>
            , and
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Ivanovic</surname>
          </string-name>
          , “
          <article-title>Software agents: Languages, tools</article-title>
          , platforms,”
          <source>Computer Science and Information Systems</source>
          , vol.
          <volume>8</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>255</fpage>
          -
          <lpage>298</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>R. H.</given-names>
            <surname>Bordini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Braubach</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Dastani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>El Fallah Seghrouchni</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. J.</given-names>
            <surname>Gomez-Sanz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Leite</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. O</given-names>
            <surname>'Hare</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pokahr</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Ricci</surname>
          </string-name>
          , “
          <article-title>A survey of programming languages and platforms for multi-agent systems</article-title>
          ,” Informatica, vol.
          <volume>30</volume>
          , no.
          <issue>1</issue>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Shoham</surname>
          </string-name>
          , “
          <article-title>AGENT-0: A simple agent language and its interpreter,”</article-title>
          <source>in Proc. 9th National Conference on Artificial Intelligence (AAAI)</source>
          , vol.
          <volume>91</volume>
          ,
          <year>1991</year>
          , pp.
          <fpage>704</fpage>
          -
          <lpage>709</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20] M. Fisher, “
          <article-title>A survey of concurrent MetateM - The language</article-title>
          and its applications,” in Temporal Logic. Springer,
          <year>1994</year>
          , pp.
          <fpage>480</fpage>
          -
          <lpage>505</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>A. S.</given-names>
            <surname>Rao</surname>
          </string-name>
          , “
          <string-name>
            <surname>AgentSpeak</surname>
          </string-name>
          (L):
          <article-title>BDI agents speak out in a logical computable language,” in MAAMAW 1996: Agents Breaking Away</article-title>
          . Springer,
          <year>1996</year>
          , pp.
          <fpage>42</fpage>
          -
          <lpage>55</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>R. H.</given-names>
            <surname>Bordini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. F.</given-names>
            <surname>Hu</surname>
          </string-name>
          <article-title>¨bner, and M. Wooldridge, Programming multiagent systems in AgentSpeak using Jason</article-title>
          . John Wiley &amp; Sons,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>K. V.</given-names>
            <surname>Hindriks</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F. S.</given-names>
            <surname>De Boer</surname>
          </string-name>
          , W. Van der Hoek, and J.-J. C. Meyer, “
          <article-title>Agent programming in 3APL,” Autonomous Agents and Multi-Agent Systems</article-title>
          , vol.
          <volume>2</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>357</fpage>
          -
          <lpage>401</lpage>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>M.</given-names>
            <surname>Winikoff</surname>
          </string-name>
          , “
          <article-title>JACK intelligent agents: An industrial strength platform,” in Multi-Agent Programming</article-title>
          . Springer,
          <year>2005</year>
          , pp.
          <fpage>175</fpage>
          -
          <lpage>193</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>S.</given-names>
            <surname>Demirkol</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Challenger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Getir</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Kosar</surname>
          </string-name>
          , G. Kardas, and
          <string-name>
            <given-names>M.</given-names>
            <surname>Mernik</surname>
          </string-name>
          , “SEA L:
          <article-title>A domain-specific language for Semantic Web enabled multi-agent systems,”</article-title>
          <source>in Proc. Federated Conference on Computer Science and Information Systems (FedCSIS</source>
          <year>2012</year>
          ),
          <year>2012</year>
          , pp.
          <fpage>1373</fpage>
          -
          <lpage>1380</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>M.</given-names>
            <surname>Challenger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Mernik</surname>
          </string-name>
          , G. Kardas, and T. Kosar, “
          <article-title>Declarative specifications for the development of multi-agent systems</article-title>
          ,”
          <source>Computer Standards &amp; Interfaces</source>
          , vol.
          <volume>43</volume>
          , pp.
          <fpage>91</fpage>
          -
          <lpage>115</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>M.</given-names>
            <surname>Challenger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Demirkol</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Getir</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Mernik</surname>
          </string-name>
          , G. Kardas, and T. Kosar, “
          <article-title>On the use of a domain-specific modeling language in the development of multiagent systems</article-title>
          ,
          <source>” Engineering Applications of Artificial Intelligence</source>
          , vol.
          <volume>28</volume>
          , pp.
          <fpage>111</fpage>
          -
          <lpage>141</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>A.</given-names>
            <surname>El Fallah-Seghrouchni</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Suna</surname>
          </string-name>
          , “
          <article-title>Claim: A computational language for autonomous, intelligent and mobile agents,”</article-title>
          <source>in Proc. International Workshop Programming Multi-Agent Systems (ProMAS</source>
          <year>2003</year>
          ). Springer,
          <year>2003</year>
          , pp.
          <fpage>90</fpage>
          -
          <lpage>110</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>L.</given-names>
            <surname>Braubach</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pokahr</surname>
          </string-name>
          , and W. Lamersdorf, “
          <article-title>Jadex: A BDI-agent system combining middleware and reasoning,” in Software Agent-Based Applications</article-title>
          , Platforms and
          <string-name>
            <given-names>Development</given-names>
            <surname>Kits</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Unland</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Calisti</surname>
          </string-name>
          , and M. Klusch, Eds. Birkha¨user,
          <year>2005</year>
          , pp.
          <fpage>143</fpage>
          -
          <lpage>168</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>S.</given-names>
            <surname>Rodriguez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Gaud</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Galland</surname>
          </string-name>
          , “
          <article-title>SARL: A general-purpose agent-oriented programming language,”</article-title>
          <source>in Proc. IEEE/WIC/ACM International Joint Conferences of Web Intelligence (WI</source>
          <year>2014</year>
          )
          <article-title>and Intelligent Agent Technologies (IAT</article-title>
          <year>2014</year>
          ), vol.
          <volume>3</volume>
          . IEEE,
          <year>2014</year>
          , pp.
          <fpage>103</fpage>
          -
          <lpage>110</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>L.</given-names>
            <surname>Bettini</surname>
          </string-name>
          ,
          <article-title>Implementing Domain-Specific Languages with Xtext and Xtend</article-title>
          .
          <source>Packt Publishing</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>M.</given-names>
            <surname>Eysholdt</surname>
          </string-name>
          and
          <string-name>
            <given-names>H.</given-names>
            <surname>Behrens</surname>
          </string-name>
          , “Xtext:
          <article-title>Implement your language faster than the quick and dirty way,”</article-title>
          <source>in Proc. ACM International Conference on Object Oriented Programming Systems Languages and Applications companion (OOPSLA</source>
          <year>2010</year>
          ). ACM,
          <year>2010</year>
          , pp.
          <fpage>307</fpage>
          -
          <lpage>309</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , “
          <article-title>An introduction to the JADEL programming language,”</article-title>
          <source>in Proc. IEEE 26th International Conference on Tools with Artificial Intelligence (ICTAI)</source>
          . IEEE Press,
          <year>2014</year>
          , pp.
          <fpage>974</fpage>
          -
          <lpage>978</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , E. Iotti,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>Core features of an agent-oriented domain-specific language for JADE agents,” in Trends in Practical Applications of Scalable Multi-Agent Systems</article-title>
          ,
          <source>the PAAMS Collection</source>
          . Springer International Publishing,
          <year>2016</year>
          , pp.
          <fpage>213</fpage>
          -
          <lpage>224</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Iotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>Agent-oriented modeldriven development for JADE with the JADEL programming language</article-title>
          ,”
          <source>Computer Languages, Systems &amp; Structures</source>
          , vol.
          <volume>50</volume>
          , pp.
          <fpage>142</fpage>
          -
          <lpage>158</lpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [36]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Iotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>Interaction protocols in the JADEL programming language,”</article-title>
          <source>in Proc. 6th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control (AGERE</source>
          <year>2016</year>
          )
          <article-title>at ACM SIGPLAN Conference Systems, Programming, Languages and Applications: Software for Humanity (SPLASH 2016)</article-title>
          . ACM Press,
          <year>2016</year>
          , pp.
          <fpage>11</fpage>
          -
          <lpage>20</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          [37]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Iotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>Overview of a formal semantics for the JADEL programming language,”</article-title>
          <source>in Proc. 18th Workshop “</source>
          From Objects to Agents”,
          <source>ser. CEUR Workshop Proceedings</source>
          , vol.
          <year>1867</year>
          . RWTH Aachen,
          <year>2017</year>
          , pp.
          <fpage>55</fpage>
          -
          <lpage>60</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          [38]
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , “
          <article-title>Location-aware JADE agents in indoor scenarios,”</article-title>
          <source>in Proc. 16th Workshop “</source>
          From Objects to Agents”,
          <source>ser. CEUR Workshop Proceedings</source>
          , vol.
          <volume>1382</volume>
          . RWTH Aachen,
          <year>2015</year>
          , pp.
          <fpage>103</fpage>
          -
          <lpage>108</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>