YaccConstructor
YaccConstructor is a modular tool for parser construction and grammars processing. It is also a framework for research and development of parser generators, compilers compilers and other grammarware for .NET. YaccConstructor is mostly implemented in F#.
Participants
Publications

Logic, Language, Information, and Computation,
The BarHillel theorem states that contextfree languages are closed under intersection with a regular set. This theorem has a constructive proof and thus provides a formal justification of correctness of the algorithms for applications mentioned above. Mechanization of the BarHillel theorem, therefore, is both a fundamental result of formal language theory and a basis for the certified implementation of the algorithms for applications. In this work, we present the mechanized proof of the BarHillel theorem in Coq.

Recently proposed matrix multiplication based algorithm for contextfree path querying (CFPQ) offloads the most performancecritical parts onto boolean matrices multiplication. Thus, it is possible to achieve high performance of CFPQ by means of modern parallel hardware and software. In this paper, we provide results of empirical performance comparison of different implementations of this algorithm on both realworld data and synthetic data for the worst cases.Proceedings of the 2nd Joint International Workshop on Graph Data Management Experiences & Systems (GRADES) and Network Data Analytics (NDA),

Proceedings of the 12th International Joint Conference on Biomedical Engineering Systems and Technologies  BIOINFORMATICS,
We propose a way to combine formal grammars and artificial neural networks for biological sequences processing. Formal grammars encode the secondary structure of the sequence and neural networks deal with mutations and noise. In contrast to the classical way, when probabilistic grammars are used for secondary structure modeling, we propose to use arbitrary (not probabilistic) grammars which simplifies grammar creation. Instead of modeling the structure of the whole sequence, we create a grammar which only describes features of the secondary structure. Then we use matrixbased parsing to extract features: the fact that some substring can be derived from some nonterminal is a feature. After that, we use a dense neural network to process features.

Proceedings of the Institute for System Programming,
One of the problems in graph data analysis is querying for specific paths. Such queries are usually performed by means of a formal grammar that describes the allowed edgelabeling of the paths. Path query is said to be calculated using relational query semantics if it is evaluated to triple ((A,v1,v2), such that there is a path from v1 to v2 such that the labels on the edges of this path form a string derivable from the nonterminal A. We focus on the Boolean languages that use Boolean grammars to describe the labeling of paths. Although path querying using relational query semantics and Boolean grammars is known to be undecidable, in this work we propose a path querying algorithm on acyclic graphs which uses relational query semantics and Boolean grammars and approximates the exact solution. To achieve better performance in compare with the naive algorithm, considered classes of graphs were limited to acyclic graphs.

Proceedings of the 9th ACM SIGPLAN International Symposium on Scala,
Transparent integration of a domainspecific language for specification of contextfree path queries (CFPQs) into a generalpurpose programming language as well as static checking of errors in queries may greatly simplify the development of applications using CFPQs. LINQ and ORM can be used for the integration, but they have issues with flexibility: query decomposition and reusing of subqueries are a challenge. Adaptation of parser combinators technique for paths querying may solve these problems. Conventional parser combinators process linear input, and only the Trails library is known to apply this technique for path querying. We demonstrate that it is possible to create general parser combinators for CFPQ which support arbitrary contextfree grammars and arbitrary input graphs. We implement a library of such parser combinators and show that it is applicable for realistic tasks.
 GRADESNDA '18 Proceedings of the 1st ACM SIGMOD Joint International Workshop on Graph Data Management Experiences & Systems (GRADES) and Network Data Analytics (NDA),

Proceedings of the 13th Central & Eastern European Software Engineering Conference in Russia (CEESECR '17),
There are several solutions for CFPQ, but how to provide structural representation of query result which is practical for answer processing and debugging is still an open problem. In this paper we propose a graph parsing technique which allows one to build such representation with respect to given grammar in polynomial time and space for arbitrary contextfree grammar and graph. Proposed algorithm is based on generalized LL parsing algorithm, while previous solutions are based mostly on CYK or Earley algorithms, which reduces time complexity in some cases.
 arXiv,
 Proceedings of the Institute for System Programming,

Perspectives of System Informatics,
We present a technique for syntax analysis of a regular set of input strings. This problem is relevant for the analysis of stringembedded languages when a host program generates clauses of embedded language at run time. Our technique is based on a generalization of RNGLR algorithm, which, inherently, allows us to construct a finite representation of parse forest for regularly approximated set of input strings. This representation can be further utilized for semantic analysis and transformations in the context of reengineering, code maintenance, program understanding etc. The approach in question implements relaxed parsing: nonrecognized strings in approximation set are ignored with no error detection.
 Systems and Means of Informatics,
 Systems and Means of Informatics,
 Proceedings of 10th International Andrei Ershov Memorial Conference on Perspectives of System Informatics,
 Proceedings of the 11th Central & Eastern European Software Engineering Conference in Russia,
 Proceedings of the 10th Central and Eastern European Software Engineering Conference in Russia 2014,
 Proceedings of the 9th Central & Eastern European Software Engineering Conference in Russia,