<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Static type-checking for programs developed on the platform 1C:Enterprise</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Alexander</forename><forename type="middle">S</forename><surname>Balyuk</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Irkutsk State University</orgName>
								<address>
									<addrLine>1, K. Marx st</addrLine>
									<postCode>664003</postCode>
									<settlement>Irkutsk</settlement>
									<country key="RU">Russian Federation</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Victoria</forename><forename type="middle">A</forename><surname>Popova</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Irkutsk State University</orgName>
								<address>
									<addrLine>1, K. Marx st</addrLine>
									<postCode>664003</postCode>
									<settlement>Irkutsk</settlement>
									<country key="RU">Russian Federation</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Static type-checking for programs developed on the platform 1C:Enterprise</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">B8A0C025213A09FA328B386DA29A6E7B</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T02:14+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>static type-checking</term>
					<term>dynamic type-checking</term>
					<term>type system of 1C:Enterprise</term>
					<term>format Configuration Types Tree</term>
					<term>static type-checking tool</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>To improve the quality of software systems, tools are currently being created to eliminate a large number of errors at the development stage. One of the problems that affects the quality of the programs being created is the occurrence of type mismatch errors. Such errors can occur in all programming languages. But for programming languages with static type-checking problems of type inconsistencies are detected even at the stage of compiling the program, whereas for languages with dynamic type-checking, errors of this kind can be detected only during the execution of the program code. For some programming languages with dynamic type-checking, for example, JavaScript and Python, there are already tools for tracking errors. But to date, there is no such tool for the programming language of 1C:Enterprise. The article describes the process of creating a software package for finding type mismatch errors in programs written in the programming language of 1C:Enterprise. The composition of the type system of 1C:Enterprise is described. The types of errors that were found using the developed static verification tool are listed.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introduction</head><p>The rapid development of information technologies makes it possible to automate various production processes more and more every year. Due to the need to constantly introduce new functionality into software products, the risk of errors increases, which is due by the complexity of program code, which becomes more difficult for developers to maintain. Often defects are not detected at the development stage and therefore are present in the released versions of software products. In this case, errors occur when users use the program, which can violate the integrity of the data and suspend work for processes indefinitely.</p><p>To improve the quality of programs, tools are currently being created that allow you to eliminate a large number of errors even at the stage of creating software systems. Such systems include configurations developed on the platform 1C:Enterprise, in which a significant part of the errors are associated with dynamic type-checking.</p><p>Tools for detecting type mismatch errors have already been developed for some programming languages with dynamic dynamic type-checking. For example, Google has created such a type Information Technologies: Algorithms, Models, Systems (ITAMS) 2021 sacha@hotmail.ru (A. S. Balyuk); victorypopova1@gmail.com (V. A. Popova) 0000-0001-9483-7108 (A. S. Balyuk); 0000-0002-7764-1995 (V. A. <ref type="bibr">Popova)</ref> checking tool for the programming language of JavaScript as part of the Closure Compiler project.</p><p>The process of developing a static type-checking tool for 1C:Enterprise is characterized by complexity due to a sufficiently large number of data types and methods that are provided as a built-in tool of the platform 1C:Enterprise. It should also be borne in mind that in any configuration, developers create objects that are also part of the type system.</p><p>Thus, the idea came up to create a tool for tracking type mismatch errors for the programming language of 1C:Enterprise. To achieve the goal, it was necessary to perform the following tasks:</p><p>1. Analyze the type system of 1C:Enterprise. 2. Develop a program develop a program that extracts information about types used in configurations of 1C:Enterprise. 3. Create an application for static type-checking in programs written in the programming language of 1C:Enterprise.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Principle of static type-checking</head><p>To solve problems in languages with dynamic type-checking, developers can use methods of static analysis of program code. The use of such tools in the development process allows you to identify areas where type mismatch errors occur before launching the program <ref type="bibr" target="#b0">[1]</ref>. Static code analyzers check the correctness of using language constructs by examining the abstract syntax tree, and also determine method calls to simulate the behavior of objects at a certain point the execution of the program <ref type="bibr" target="#b1">[2]</ref>.</p><p>Abstract Syntax Tree (AST) -representation of the program code as a graph <ref type="bibr" target="#b2">[3]</ref>, in which:</p><p>• non-leaf vertices -expressions or composite instructions;</p><p>• leaves -operands or simple instructions.</p><p>For example, an arithmetic expression of the form 11 + (5 * 2) will be displayed as an AST as shown in Figure <ref type="figure" target="#fig_0">1</ref>. To build an AST, a lexical and syntactic analysis of the program is performed <ref type="bibr" target="#b3">[4]</ref>. The purpose of lexical analysis is to identify lexemes in the program code, which include keywords, operation signs, some fixed values (literals) , etc.</p><p>After defining the lexemes, a syntactic analysis is performed, the essence of which is to match the lexemes in accordance with the grammar defined for the programming language used. Based on the results of the parsing, you can build an AST.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Type system of 1C:Enterprise</head><p>The complexity of developing a static analysis tool for the programming language of 1C:Enterprise is caused by the complexity of the type system in 1C, which consists of platform types, as well as types of configuration objects that are created by configuration developers and belong to one of the metadata types <ref type="bibr" target="#b4">[5]</ref>:</p><p>1. Common objects: Subsystem, Common Module, Role, etc. 2. Applied objects: Catalog, Document, Enum, Information register, Charts of characteristic types, etc.</p><p>Each type of metadata has a basic functionality that is defined in the platform 1C:Enterprise. When creating a configuration, developers create common and application objects that inherit all the functionality of the corresponding metadata types. This functionality can be redefined and supplemented to meet the needs of the business processes of the system being created.</p><p>It is important to note that some objects inherit functionality not from one, but from several types <ref type="bibr" target="#b5">[6]</ref> that are defined in the platform 1C:Enterprise.</p><p>For example, an application object of the Catalogs metadata type inherits the functionality of the following platform types:</p><p>1. CatalogObject -provides the ability to read and change the elements of the Catalog. 2. CatalogRef -used to store a link to the Catalog item. It can be used to read the data of the Catalog item. 3. CatalogSelection -provided for traversing Catalog items. 4. CatalogList -intended for managing the list of Catalog items in the tabular field of the form. 5. CatalogManager -used to perform operations with the Catalog, for example, to search for an item by name or to add a new item.</p><p>All types of configuration objects have properties, the types of which can be both application configuration objects and data types of the built-in language of platform 1C:Enterprise. Information about such types is contained in the built-in 1C help, called Syntax Assistant, and is also available on the 1C:ITS portal <ref type="bibr" target="#b6">[7]</ref>.</p><p>Thus, for the analysis of the AST describing the configuration structure based on 1C:Enterprise, it is necessary to use information not only about the configuration objects, but also about the types of the built-in language.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Development of the Configuration Types Tree format</head><p>To develop a static type-checking tool, it is necessary to use information about configuration objects, as well as about the types provided by the platform 1C:Enterprise, to determine what types a property can have, as well as parameters or return values of methods. Therefore, it was necessary to generate a document describing all types of configuration and platform in order to apply this information when performing a static analysis.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1.">Representation of the 1C:Enterprise configuration in XML format</head><p>Any configuration developed on the platform 1C:Enterprise can be uploaded to XML-format files in the form of a hierarchical structure in which all configuration objects are distributed in directories with a name corresponding to the common or application object.</p><p>After downloading the 1C:Enterprise configuration, the structure of the XML files of each configuration object differs due to their specifics. For example, for objects of the metadata types Catalog, Document, DataProcessors and Report, details and tables are defined, and all registers (information, accumulation, accounting and calculation) do not have tabular parts, and, in addition to the details, there are dimensions and resources.</p><p>For example, in the XML file for uploading an application object of the Catalog metadata type, the information is presented as follows: The elements denote the following:</p><p>• InternalInfo -contains an enumeration of the types that were created in 1C:Enterprise for this configuration object; • Properties -defines the standard properties of the configuration object: Name (name)</p><p>and StandardAttributes (standard details); • Attribute -indicates the details of the configuration object, the acceptable types of the details are listed in the Type element; • TabularSection -describes the data of the tabular part of the configuration object, which includes information about standard properties and details; • Command -provides information about the configuration object command.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2.">Complexity of the configuration representation format</head><p>Configuration upload XML files have a rather complex and redundant structure because they contain, in addition to the basic properties, behavior settings and display configuration data that do not carry information for the type matching task.</p><p>The complex structure of XML configuration upload is also due to the fact that the conversion works both ways: the configuration is not only uploaded to XML, but also completely restored from the uploaded files. Therefore, uploading a configuration to XML is a representation of objects without losing information, and only part of the data is enough to form a document that will contain a description of the types of configuration objects and the platform.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.3.">Format for representing platform types and configuration objects</head><p>Since the XML representation of the 1C:Enterprise configuration is redundant for using it as a type description when performing static analysis, the idea of presenting the configuration in a simplified format arose.</p><p>The simplified format for describing configuration objects and platform types in this work is called the "Configuration Type Tree" (CTT). This name is due to the fact that each configuration object inherits the functionality of one or more types defined in the platform 1C:Enterprise.</p><p>Thus, the CTT file should consist of:</p><p>• platform types (tree branches) -serve as the basis for configuration objects;</p><p>• configuration objects (tree leaves) -inherit the functionality of platform types.</p><p>The process of forming the CTT file consists of the following stages:</p><p>1. Defining the format and schema for storing data of configuration objects and platform types. 2. Implementation of configuration data parsing. 3. Creating a file consisting of data from configuration objects and platform types.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.4.">Configuration Types Tree in XML format</head><p>The XML format is selected for storing types and methods <ref type="bibr" target="#b7">[8]</ref>. This choice is due to the fact that for XML documents there are strict markup rules, due to which a single document structure is observed <ref type="bibr" target="#b8">[9,</ref><ref type="bibr" target="#b9">10]</ref>. It is also possible to use links between elements in XML, which was also an important criterion when choosing a format, since configuration objects can be linked together <ref type="bibr" target="#b10">[11]</ref> and with platform types.</p><p>To represent the 1C:Enterprise configuration in CTT format, an XSD schema <ref type="bibr" target="#b11">[12]</ref> has been created that describes the rules for forming an XML document. The description of this scheme in XML format is published in <ref type="bibr" target="#b12">[13]</ref>, and the structure is shown in Figure <ref type="figure" target="#fig_1">2</ref>. The elements denote the following data:</p><p>• contexts -root element of the XML document; • context -description of a configuration object:</p><p>-ruName and enName -name of the object in Russian and English; id -identifier of the object that is used to specify references if the object is a type for a property; extends -identifier of the context element from which the functionality is inherited; parent -a reference to the element of which the current context is a component (specified only for table parts, forms, layouts, and commands of application objects).</p><p>• method -defining the method of object that can contain both mandatory and optional parameters; • paramSet -sets of method parameter types, within which the parameters (param) are listed, where the attributes of each of them are the name (name) and the type (type); • returnSet -set of possible types of the return value, that lists the return elements with the type attribute.</p><p>It is important to note that Russian and English names for some elements have been added due to the fact that in addition to configuration data, information about platform types, where objects, properties and methods have names in two languages, should also be converted into the CTT format. Information in English may be required when performing a static analysis, since it is permissible to use built-in 1C constructs in this language when English is selected as the interface language for working with the platform.</p><p>To automatically generate an XML description of the configuration in the CTT format, a program is written in the programming language of 1C:Enterprise. Parsing the source XML files with configuration data is performed using XPath queries, and the generation of an XML description in the CTT format is implemented using the XDTO tool.</p><p>Thus, all the types defined in the configuration are placed in CTT format file. A file of the same format was also created, in which all the types from the reference information of the platform 1C:Enterprise were added.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Static type-checking tool</head><p>To create a static type checking tool, it was necessary to get a representation of the configuration program code in the AST format, and then perform an analysis of the correspondence of types to language constructs, using information from the CTT format document.</p><p>Reading the code of 1C configuration modules was previously implemented in the programming language of C++ by the author of this work Alexander S. Balyuk. This task was performed to identify unused procedures and functions in an arbitrary configuration of 1C:Enterprises by constructing and analyzing a graph of method calls.</p><p>Thus, by the beginning of the research on the topic of this work, the foundation of the software package for the implementation of static analysis was already laid.</p><p>In order to search for type mismatch errors in 1C:Enterprise configurations, it was necessary to perform the following:</p><p>1. Implement the transformation of the method structure into an AST representation. 2. Design a static type-checking tool. 3. Organize the loading of the DTC format file into a program for static type-checking. 4. Write rules for calculating the types of each construct of the programming language of 1C:Enterprise.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.1.">Converting methods to an AST representation</head><p>In the developed program for identifying unused methods, which is the basis for implementing static analysis, the lexical analyzer generation tool -Flex (Fast Lexical Analyzer) <ref type="bibr" target="#b13">[14]</ref> was used to determine language designs (lexical analysis), and GNU Bison <ref type="bibr" target="#b14">[15]</ref> was used for syntactic analysis.</p><p>As part of this work, all the constructs of the programming language of 1C:Enterprise were defined and their transformation into AST fragments was implemented. For each configuration method, a separate AST is constructed in which constructs can have child vertices. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.4.">Project development</head><p>According to the project development plans, firstly, it is planned to implement a search for errors in the use of user interface elements, since at the moment the structure of elements on user forms is not processed.</p><p>As part of the project, to perform static type checking of 1C:Enterprise configurations, which currently checks the correspondence of types to language constructs, in the future it is planned to implement a static analysis of the 1C:Enterprise query language, which is used to obtain information from the database.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6.">Conclusion</head><p>As a result of the work, a mechanism was created that allows you to find type mismatch errors in programs written in the programming language of 1C:Enterprise.</p><p>The developed software package can become a necessary tool in the process of creating configurations on the platform 1C:Enterprise, since it will find a significant number of errors in programs before transmitting them to users. It is also important that the tools for static code analysis of 1C:Enterprise configuration modules can be further developed and improved.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Expression AST 11 + (5 * 2)</figDesc><graphic coords="2,254.72,477.48,83.34,83.34" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: CTT in XML format</figDesc><graphic coords="6,202.64,225.09,187.52,154.77" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 3 :</head><label>3</label><figDesc>Figure 3: Program for static type-checking</figDesc><graphic coords="10,160.97,84.19,270.85,337.49" type="bitmap" /></figure>
		</body>
		<back>
			<div type="annex">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>For example, the return_instruction construct may have a child vertex that denotes the return value: virtual node* return_instruction(node* _nd = 0) { auto nd = new ::tree::return_instruction; if (_nd) nd-&gt;childNodes.push_back(tree::node_ptr(_nd)); return nd; } For example, the function construct, unlike return_instruction, has 3 child vertices that define parameters, variables, and an execution block for the method: According to the same principle, the formation of vertices is performed for all constructions of the programming language of 1C:Enterprise.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.2.">AST analysis</head><p>To perform static type checking, it is necessary to define the types that the construction can accept, that is, a vertex or a leaf of an AST. Therefore, it is necessary to process each construction, taking into account that it can have nested data structures (child vertices).</p><p>First of all, an abstract TreeNodeBase class was created, which contains the basic implementation of methods for parsing AST fragments. For all constructs (method, parameter list, return value, conditional operator, etc.), when writing static type checking rules, classes are created that are inheritors of the TreeNodeBase class. In this case, all or only some methods can be overridden. This approach is due to the different order of parsing structures from each other.</p><p>The childNodes attribute in TreeNodeBase is a set of child vertices. The operations of the class have the following purpose:</p><p>• str() -describes the string representation of an AST vertex or leaf;</p><p>• parse(...) -checks that the types match the language constructs and determines the possible return types of the function; • types(...) -defines the set of valid types of the expression corresponding to the AST subtree with the root at this vertex; • getContextItems(...) -returns a set of properties and methods corresponding to the AST subtree with the root at this vertex.</p><p>Implementation of the basic functionality of methods in an abstract class: Also, in the developing tool for static type-checking of program code, the load of the CTT format file received as part of this work was implemented. Thus, the sequence of operations performed in the program for static type-checking is shown in Figure <ref type="figure">3</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.3.">Testing</head><p>The functionality of the developed static type-checking tool was checked on the "1C:Standard Subsystem Library" configuration. At the time of testing, version 3.1.3 was current.</p><p>As a result of test runs of the program the following errors were detected in the configuration "1C:Standard Subsystem Library":</p><p>• incorrect parameter passing to a method; • access to a non-existent property of an object; • treating a variable of simple type as a collection.</p><p>For example, a value of the Number type will be passed to the method of the built-in StrReplace(&lt;String&gt;, &lt;String&gt;, &lt;String&gt;) language containing three parameters of the String type, then the program will output the following message: incorrect parameters were passed to the StrReplace() method.</p></div>			</div>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Methods of automated static analysis of program code</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">Y</forename><surname>Tokarenko</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><forename type="middle">F</forename><surname>Bukanov</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Theory and practice of using software and hardware: Materials of the X All-Russian Scientific and Technical Conference</title>
				<meeting><address><addrLine>Samara; Samara</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2017">March 21-22, 2017. 2017</date>
			<biblScope unit="page" from="138" to="142" />
		</imprint>
		<respStmt>
			<orgName>Samara State Technical University</orgName>
		</respStmt>
	</monogr>
	<note>Actual problems of information security</note>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Dynamic analysis of arm elf shared libraries using static binary instrumentation</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">K</forename><surname>Ermakov</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">P</forename><surname>Vartanov</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Proceedings of the Institute of System Programming of the Russian Academy of Sciences</title>
		<imprint>
			<biblScope unit="volume">27</biblScope>
			<biblScope unit="page" from="5" to="24" />
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<author>
			<persName><forename type="first">J</forename><surname>Jones</surname></persName>
		</author>
		<ptr target="https://www.bibsonomy.org/bibtex/2a86095c92a9801ab24d2196d334abe46/gwpl" />
		<title level="m">Abstract syntax tree implementation idioms, Pattern Languages of Program Design</title>
				<imprint>
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Theoretical aspects of developing of compiler for learning the basics of translation</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">A</forename><surname>Kuznetsov</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">V</forename><surname>Khorolskiy</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Modern problems of science and education</title>
		<imprint>
			<biblScope unit="page" from="52" to="59" />
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<ptr target="https://its.1c.eu/db/metod8dev/content/2579/hdoc" />
		<title level="m">1C:Enterprise configuration objects</title>
				<imprint>
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<title level="m" type="main">Working with application objects using the built-in language</title>
		<ptr target="https://its.1c.ru/db/metod8dev/content/2698/hdoc" />
		<imprint>
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<title level="m" type="main">Information and technological support of 1C</title>
		<ptr target="https://its.1c.ru/" />
		<imprint>
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<ptr target="https://www.w3.org/TR/xml/" />
		<title level="m">Extensible Markup Language (XML) 1.0</title>
				<imprint>
			<date type="published" when="2008">2008</date>
		</imprint>
	</monogr>
	<note>W3C Recommendation 26 November 2008</note>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<ptr target="http://citforum.ru/internet/xml/harold/" />
		<title level="m">XML Data Management: Approaches to defining XML documents</title>
				<imprint>
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">An overview on xml similarity: Background, current trends and future directions</title>
		<author>
			<persName><forename type="first">J</forename><surname>Tekli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Chbeir</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Yetongnon</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Computer Science Review</title>
		<imprint>
			<biblScope unit="volume">3</biblScope>
			<biblScope unit="page" from="151" to="173" />
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Static type-checking for programs developed on the platform 1c:enterprise</title>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">S</forename><surname>Balyuk</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><forename type="middle">A</forename><surname>Popova</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Bulletin of the Irkutsk University</title>
		<imprint>
			<biblScope unit="page" from="54" to="55" />
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">W3C XML Schema Definition Language 1.1 Part 1: Structures</title>
		<ptr target="https://www.w3.org/TR/xmlschema11-1/" />
	</analytic>
	<monogr>
		<title level="m">W3C Recommendation 5</title>
				<imprint>
			<date type="published" when="2012-04">April 2012, 2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<monogr>
		<title level="m" type="main">A software package for converting the 1c:enterprise configuration into a uml model</title>
		<author>
			<persName><forename type="first">V</forename><forename type="middle">A</forename><surname>Popova</surname></persName>
		</author>
		<ptr target="https://gitlab.com/converting-1c-to-uml/software-package" />
		<imprint>
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<monogr>
		<title level="m" type="main">Lexical Analysis With Flex</title>
		<ptr target="https://westes.github.io/flex/manual/" />
		<imprint>
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<monogr>
		<title level="m" type="main">GNU Bison -The Yacc-compatible Parser Generator</title>
		<ptr target="https://www.gnu.org/software/bison/manual/" />
		<imprint>
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
